Thanks - sorry about that!
I like the indigo.server.log trick - must use that more often. See attachment (too big to post as text on forum page really)
FYI I've just rebooted and done another MQTT cut and paste and it differs from the attachment:
23/04/2020, 23:33:27 indigo/light/1121785643/config q0 r0 i0 (518) #5 (taken just before post)
"name": "Dining Room Desk Light", "deviceId": "1121785643", "model": "Mulitlevel Switch", "address": "9", "states": { "brightnessLevel": "31", "onOffState": "True" } }, "capabilities": { "supportsAllLightsOnOff": "True", "supportsAllOff": "True", "supportsColor": "True", "supportsRGB": "True", "supportsRGBandWhiteSimultaneously": "True", "supportsStatusRequest": "True", "supportsTwoWhiteLevels": "True", "supportsTwoWhiteLevelsSimultaneously": "True", "supportsWhite": "True", "supportsWhiteTemperature": "True" } }
Home Assistant MQTT Discovery
- Hackencrash
- Posts: 251
- Joined: Wed Dec 16, 2015 7:05 am
- Location: UK
Re: Home Assistant MQTT Discovery
- Attachments
-
- light.txt
- (7.5 KiB) Downloaded 148 times
- FlyingDiver
- Posts: 7830
- Joined: Sat Jun 07, 2014 10:36 am
- Location: Southwest Florida, USA
Re: Home Assistant MQTT Discovery
Oops. My bad. I forgot that those attributes could be present with a False value. Will fix ASAP.
joe (aka FlyingDiver)
my plugins: http://forums.indigodomo.com/viewforum.php?f=177
my plugins: http://forums.indigodomo.com/viewforum.php?f=177
- FlyingDiver
- Posts: 7830
- Joined: Sat Jun 07, 2014 10:36 am
- Location: Southwest Florida, USA
Re: Home Assistant MQTT Discovery
Try 0.4.4
joe (aka FlyingDiver)
my plugins: http://forums.indigodomo.com/viewforum.php?f=177
my plugins: http://forums.indigodomo.com/viewforum.php?f=177
- Hackencrash
- Posts: 251
- Joined: Wed Dec 16, 2015 7:05 am
- Location: UK
Re: Home Assistant MQTT Discovery
Yes this is great and appears to report correctly - Perfect!
:
Did you intend to include the False values for the supportsXXX keys?
One minor thing also is that the default template you posted here earlier has a couple of squiggly brackets {} in the wrong place (missing one at start and one too many at end of states) as I was getting JSON validation errors. It should be that below I believe:
{ "name": "{{name}}",
"deviceId": "{{deviceId}}",
"model": "{{model}}",
"address": "{{address}}",
"states": { {{#states}} "{{name}}": "{{value}}", {{/states}} },
"capabilities": { {{#capabilities}} "{{name}}": "{{value}}", {{/capabilities}} } }
Code: Select all
{
"address": "9",
"capabilities": {
"supportsAllLightsOnOff": "False",
"supportsAllOff": "False",
"supportsColor": "False",
"supportsRGB": "False",
"supportsRGBandWhiteSimultaneously": "False",
"supportsStatusRequest": "True",
"supportsTwoWhiteLevels": "False",
"supportsTwoWhiteLevelsSimultaneously": "False",
"supportsWhite": "False",
"supportsWhiteTemperature": "False"
},
"deviceId": "1121785643",
"model": "Mulitlevel Switch",
"name": "Dining Room Desk Light",
"states": {
"brightnessLevel": "36",
"onOffState": "True"
}
}One minor thing also is that the default template you posted here earlier has a couple of squiggly brackets {} in the wrong place (missing one at start and one too many at end of states) as I was getting JSON validation errors. It should be that below I believe:
{ "name": "{{name}}",
"deviceId": "{{deviceId}}",
"model": "{{model}}",
"address": "{{address}}",
"states": { {{#states}} "{{name}}": "{{value}}", {{/states}} },
"capabilities": { {{#capabilities}} "{{name}}": "{{value}}", {{/capabilities}} } }
- FlyingDiver
- Posts: 7830
- Joined: Sat Jun 07, 2014 10:36 am
- Location: Southwest Florida, USA
Re: Home Assistant MQTT Discovery
Yes, the False values are intentional. Just for completeness. On the other hand, maybe it would be better to make the capabilities entry a list instead of a dict, and just include the key in the list for the values that are true. Which would get rid of the string values which really ought to be booleans. In that case, the payload would look like:
Note that there's some new fields in there that I haven't added to the template yet, but are already present in the data available.
Code: Select all
{
"name": "Dining Room Desk Light",
"address": "9",
"deviceId": "1121785643",
"deviceTypeId": "zwDimmerType",
"model": "Mulitlevel Switch",
"subModel": "",
"protocol": "ZWave",
"states": {
"brightnessLevel": "36",
"onOffState": "True"
}
"capabilities": ["supportsStatusRequest"]
}
joe (aka FlyingDiver)
my plugins: http://forums.indigodomo.com/viewforum.php?f=177
my plugins: http://forums.indigodomo.com/viewforum.php?f=177
- FlyingDiver
- Posts: 7830
- Joined: Sat Jun 07, 2014 10:36 am
- Location: Southwest Florida, USA
Re: Home Assistant MQTT Discovery
I just posted 0.4.5. The output payload now looks like:
The new default template is:
Code: Select all
{
"name": "Example Dimmer",
"address": "123456",
"deviceId": "587622500",
"deviceTypeId": "myDimmerType",
"model": "Example Dimmer Module",
"subModel": "",
"protocol": "Plugin",
"states": {
"backlightBrightness": "0",
"brightnessLevel": "51",
"onOffState": "True"
},
"capabilities": [ "supportsStatusRequest" ]
}
Code: Select all
{
"name": "{{name}}",
"address": "{{address}}",
"deviceId": "{{deviceId}}",
"deviceTypeId": "{{deviceTypeId}}",
"model": "{{model}}",
"subModel": "{{subModel}}",
"protocol": "{{protocol}}",
"states": { {{#states}} "{{name}}": "{{value}}", {{/states}} },
"capabilities": [ {{#capabilities}} "{{name}}", {{/capabilities}} ]
}
joe (aka FlyingDiver)
my plugins: http://forums.indigodomo.com/viewforum.php?f=177
my plugins: http://forums.indigodomo.com/viewforum.php?f=177
- Hackencrash
- Posts: 251
- Joined: Wed Dec 16, 2015 7:05 am
- Location: UK
Re: Home Assistant MQTT Discovery
Yeah I’ll work with whatever you come up with in order for me to create a mapping between the Indigo and Google device types.
So far I’m using your MQTT plugin with the default template unmodified, although it looks like I’ll now have to update it to work with MQTT plugin v0.4.5.
This then obviously sends lots of messages with every device update from Indigo to the MQTT server (in my case Mosquitto) but in the wrong format for Home Assistant to digest.
I have therefore modified the Home Assistant automations.yaml file so that it subscribes to this default Indigo MQTT messages topic. Each message received in Home Assistant from this topic fires an event which then republishes each message reformatted such that Home Assistant can digest it correctly.
It potentially resends 2 messages per message received from Indigo effectively back to itself in Home Assistant. The first of these 2 messages automatically creates the device in Home Assistant if it does not already exist (device with the same entity_id). This new Home Assistant device is effectively a clone of the device in Indigo. The second message to be resent formats the original message data correcxtly to set the status of this cloned device In Home Assistant so that it matches its master Indigo device.
Very simple really. Just one automations.yaml file to copy and that’s it - no other setting changes! The only thing I can’t do unfortunately is automatically place these cloned Home Assistant devices in the correct Rooms since room (folder) data is not stored as part of the device in Indigo.
So far I’m using your MQTT plugin with the default template unmodified, although it looks like I’ll now have to update it to work with MQTT plugin v0.4.5.
This then obviously sends lots of messages with every device update from Indigo to the MQTT server (in my case Mosquitto) but in the wrong format for Home Assistant to digest.
I have therefore modified the Home Assistant automations.yaml file so that it subscribes to this default Indigo MQTT messages topic. Each message received in Home Assistant from this topic fires an event which then republishes each message reformatted such that Home Assistant can digest it correctly.
It potentially resends 2 messages per message received from Indigo effectively back to itself in Home Assistant. The first of these 2 messages automatically creates the device in Home Assistant if it does not already exist (device with the same entity_id). This new Home Assistant device is effectively a clone of the device in Indigo. The second message to be resent formats the original message data correcxtly to set the status of this cloned device In Home Assistant so that it matches its master Indigo device.
Very simple really. Just one automations.yaml file to copy and that’s it - no other setting changes! The only thing I can’t do unfortunately is automatically place these cloned Home Assistant devices in the correct Rooms since room (folder) data is not stored as part of the device in Indigo.