Advertisement
Guest User

Untitled

a guest
Dec 4th, 2024
63
0
198 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.76 KB | None | 0 0
  1. # Category = Lights
  2. #@Lighting controls and events
  3.  
  4. $MQTT_insteon = new mqtt('mqtt_insteon', $config_parms{MQTT_Host}, $config_parms{MQTT_Port}, 'insteon/#', "mh-insteon", "XXXXXXXXXXXXXXXXX", 120);
  5. $MQTTobj_mrhouse = new mqtt('mqtt_mrhouse', $config_parms{MQTT_Host}, $config_parms{MQTT_Port}, 'mrhouse/#', 'mh-insteon', 'XXXXXXXXXXXXXXXXX', 120);
  6. $MQTTobj_house = new mqtt('mqtt_house', $config_parms{MQTT_Host}, $config_parms{MQTT_Port}, 'house/#', 'mh-insteon', 'XXXXXXXXXXXXXXXXX', 120);
  7.  
  8. ################################################
  9. sub mqtt_discovery_sensor_send {
  10. my ( $mqtt_device_type, $mqtt_device_class, $mqtt_prefix, $mqtt_id, $mqtt_name, $mqtt_short_name ) = @_;
  11. my $device_class_json = '';
  12. $device_class_json = '"device_class":"'.$mqtt_device_class.'",' if $mqtt_device_class ne '';
  13. my $mqtt_template_sensor = '{
  14. "~":"'.$mqtt_prefix.'/'.$mqtt_id.'",
  15. "name":"'.$mqtt_short_name.'",
  16. "unique_id":"mh_'.$mqtt_id.'",
  17. "payload_on":"on",
  18. "payload_off":"off",
  19. "state_topic":"~/state",
  20. '.$device_class_json.'
  21. "device":{"name":"'.$mqtt_name.'",
  22. "identifiers":"mh_'.$mqtt_id.'",
  23. "manufacturer":"Mister House",
  24. "model":"'.$mqtt_device_type.'"
  25. }
  26. }';
  27.  
  28. $MQTT_insteon->publish_mqtt_message('homeassistant/'.$mqtt_device_type.'/'.$mqtt_id.'/config', $mqtt_template_sensor, 1);
  29. }
  30.  
  31. sub mqtt_discovery_switch_send {
  32. my ( $mqtt_device_type, $mqtt_device_class, $mqtt_prefix, $mqtt_id, $mqtt_name, $mqtt_short_name, $mqtt_dimable ) = @_;
  33. my $additional_json = '';
  34. $mqtt_dimable = false unless $mqtt_dimable;
  35. #print_log($mqtt_name.' dimable: '.$mqtt_dimable);
  36. $additional_json .= '"device_class":"'.$mqtt_device_class.'",' if $mqtt_device_class ne '';
  37.  
  38. $additional_json .= '
  39. "brightness_scale":"100",
  40. "brightness_state_topic":"~/brightness/state",
  41. "brightness_command_topic":"~/brightness",' if $mqtt_dimable;
  42.  
  43. my $mqtt_template_sensor = '{
  44. "~":"'.$mqtt_prefix.'/'.$mqtt_id.'",
  45. "name":"'.$mqtt_short_name.'",
  46. "unique_id":"mh_'.$mqtt_id.'",
  47. "payload_on":"on",
  48. "payload_off":"off",
  49. "state_topic":"~/state",
  50. "command_topic":"~",
  51. '.$additional_json.'
  52. "device":{
  53. "name":"'.$mqtt_name.'",
  54. "identifiers":"mh_'.$mqtt_id.'",
  55. "manufacturer":"Mister House",
  56. "model":"'.$mqtt_device_type.'"
  57. }
  58. }';
  59.  
  60. $MQTT_insteon->publish_mqtt_message('homeassistant/'.$mqtt_device_type.'/'.$mqtt_id.'/config', $mqtt_template_sensor, 1);
  61. }
  62.  
  63. sub mqtt_discovery_fan_send {
  64. my ( $mqtt_device_type, $mqtt_device_class, $mqtt_prefix, $mqtt_id, $mqtt_name, $mqtt_short_name ) = @_;
  65. my $device_class_json = '';
  66. $device_class_json = '"device_class":"'.$mqtt_device_class.'",' if $mqtt_device_class ne '';
  67. my $mqtt_template_sensor = '{
  68. "~":"'.$mqtt_prefix.'/'.$mqtt_id.'",
  69. "name":"'.$mqtt_short_name.'",
  70. "unique_id":"mh_'.$mqtt_id.'",
  71. "payload_on":"on",
  72. "payload_off":"off",
  73. "state_topic":"~/state",
  74. "command_topic":"~",
  75. "percentage_state_topic":"~/percentage/state",
  76. "percentage_command_topic":"~/percentage",
  77. "percentage_command_template": "{{ iif(value == 0, \'off\', value) }}",
  78. "speed_range_min":1,
  79. "speed_range_max":3,
  80. '.$device_class_json.'
  81. "icon":"mdi:ceiling-fan",
  82. "device":{
  83. "name":"'.$mqtt_name.'",
  84. "identifiers":"mh_'.$mqtt_id.'",
  85. "manufacturer":"Mister House",
  86. "model":"'.$mqtt_device_type.'"
  87. }
  88. }';
  89.  
  90. $MQTT_insteon->publish_mqtt_message('homeassistant/'.$mqtt_device_type.'/'.$mqtt_id.'/config', $mqtt_template_sensor, 1);
  91. }
  92.  
  93. ################################################
  94. # Example payloads from other objects which advertise
  95.  
  96. =begin
  97. homeassistant/cover/GarageDoor/config {
  98. "~":"home/garage/GarageDoor",
  99. "name":"Door",
  100. "unique_id":"GarageDoor_XXXXXXXXXXXXXXXXXXX",
  101. "availability_topic":"~/status/availability",
  102. "device_class":"garage",
  103. "command_topic":"~/command/door",
  104. "payload_open":"open",
  105. "payload_close":"close",
  106. "payload_stop":"stop",
  107. "state_topic":"~/status/door",
  108. "device":{
  109. "name":"GarageDoor",
  110. "identifiers":"GarageDoor_XXXXXXXXXXXXXXXXXXX",
  111. "manufacturer":"Paul Wieland",
  112. "model":"ratgdo",
  113. "sw_version":"2.53",
  114. "configuration_url":"http://192.168.299.431/"
  115. }
  116. }
  117.  
  118. homeassistant/light/GarageDoor/config {
  119. "~":"home/garage/GarageDoor",
  120. "name":"Light",
  121. "unique_id":"GarageDoor_08:3A:8D:FA:DB:30_light",
  122. "availability_topic":"~/status/availability",
  123. "command_topic":"~/command/light",
  124. "payload_on":"on",
  125. "payload_off":"off",
  126. "state_topic":"~/status/light",
  127. "device":{
  128. "name":"GarageDoor",
  129. "identifiers":"GarageDoor_XXXXXXXXXXXXXXXXXXX",
  130. "manufacturer":"Paul Wieland",
  131. "model":"ratgdo",
  132. "sw_version":"2.53",
  133. "configuration_url":"http://192.168.299.431/"
  134. }
  135. }
  136.  
  137. homeassistant/binary_sensor/GarageDoor/config {
  138. "~":"home/garage/GarageDoor",
  139. "name":"Obstruction",
  140. "unique_id":"GarageDoor_08:3A:8D:FA:DB:30_obs",
  141. "availability_topic":"~/status/availability",uh
  142. "device_class":"motion",
  143. "state_topic":"~/status/obstruction",
  144. "payload_on":"obstructed",
  145. "payload_off":"clear",
  146. "device":{
  147. "name":"GarageDoor",
  148. "identifiers":"GarageDoor_XXXXXXXXXXXXXXXXXXX",
  149. "manufacturer":"Paul Wieland",
  150. "model":"ratgdo",
  151. "sw_version":"2.53",
  152. "configuration_url":"http://192.168.299.431/"
  153. }
  154. }
  155. =cut
  156.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement