Closed jeffgregx2 closed 1 year ago
Pls keep in mind that HomeKit has an optional hierarchical naming structure, where in this particular context, this.name is the service name, and context.name is the accessory name.
What the code is doing, is checking if the service is named, and if it is using that as the name, if not defaults to the accessory name.
I tried your recommendation
else if (context.name != null && context.name.trim() != "" && !context.name.includes(this.name)) {
// Since we have two names, let them stand
fullName = context.name;
And in my setup it broke all my devices with hierarchical naming
So am recommending that this be implemented for your issue
else if (context.manufacturer === "Mitsubishi" && !fullName.includes(this.name)) {
fullName = context.name + " - " + this.name;
Any chance you can send me an example of the hierarchical naming? I don’t have any other devices so I’m trying to come up to speed. Given the number of issues around naming that exists it would be nice to find a more general solution if it exists. What you propose may in fact be the more general solution but I’d love to at least understand it more fully.
Thanks, -Jeff
On Jan 8, 2023, at 11:44 AM, Northern Man @.***> wrote:
Pls keep in mind that HomeKit has an optional hierarchical naming structure, where in this particular context, this.name is the service name, and context.name is the accessory name.
What the code is doing, is checking if the service is named, and if it is using that as the name, if not defaults to the accessory name.
I tried your recommendation
else if (context.name != null && context.name.trim() != "" && !context.name.includes(this.name)) { // Since we have two names, let them stand fullName = context.name; And in my setup it broke all my devices with hierarchical naming
So am recommending that this be implemented for your issue
else if (context.manufacturer === "Mitsubishi" && !fullName.includes(this.name)) { fullName = context.name + " - " + this.name; — Reply to this email directly, view it on GitHub https://github.com/NorthernMan54/node-red-contrib-homebridge-automation/issues/109#issuecomment-1374878036, or unsubscribe https://github.com/notifications/unsubscribe-auth/A5ENRBZGN7HBKT27WP7I57TWRLVGZANCNFSM6AAAAAATUTGPBI. You are receiving this because you authored the thread.
This is the discovery object from my Dryer - which is a problematic use case
Accessory Name - Dryer Power
Service 1 - Dryer Power ENERGY Total History Service 2 - Dryer Power ENERGY Total Service 3 - Dryer Power
{
"aid": 29,
"services": [
{
"type": "3E",
"iid": 1,
"characteristics": [
{
"type": "14",
"iid": 2,
"perms": [
"pw"
],
"description": "Identify",
"format": "bool"
},
{
"type": "20",
"iid": 3,
"value": "Tasmota",
"perms": [
"pr"
],
"description": "Manufacturer",
"format": "string",
"maxLen": 64
},
{
"type": "21",
"iid": 4,
"value": "Tuya MCU",
"perms": [
"pr"
],
"description": "Model",
"format": "string",
"maxLen": 64
},
{
"type": "23",
"iid": 5,
"value": "Dryer Power",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "30",
"iid": 6,
"value": "130C86-jesse",
"perms": [
"pr"
],
"description": "Serial Number",
"format": "string",
"maxLen": 64
},
{
"type": "52",
"iid": 7,
"value": "9.5.0tasmota",
"perms": [
"pr"
],
"description": "Firmware Revision",
"format": "string"
}
]
},
{
"type": "49",
"iid": 8,
"characteristics": [
{
"type": "23",
"iid": 9,
"value": "Dryer Power ENERGY Total",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "25",
"iid": 10,
"value": 0,
"perms": [
"ev",
"pr",
"pw"
],
"description": "On",
"format": "bool"
},
{
"type": "E863F10C-079E-48FF-8F27-9C2605A29F52",
"iid": 11,
"value": 0,
"perms": [
"pr",
"ev"
],
"description": "Total Consumption",
"format": "float",
"unit": "kWh"
},
{
"type": "E3",
"iid": 12,
"value": "Dryer Power ENERGY Total",
"perms": [
"ev",
"pr",
"pw"
],
"description": "Configured Name",
"format": "string"
},
{
"type": "E863F10D-079E-48FF-8F27-9C2605A29F52",
"iid": 13,
"value": 0,
"perms": [
"pr",
"ev"
],
"description": "Current Consumption",
"format": "float",
"unit": "W"
}
]
},
{
"type": "E863F007-079E-48FF-8F27-9C2605A29F52",
"iid": 14,
"characteristics": [
{
"type": "E863F11C-079E-48FF-8F27-9C2605A29F52",
"iid": 18,
"perms": [
"pw",
"hd"
],
"description": "S2W1",
"format": "data"
},
{
"type": "E863F121-079E-48FF-8F27-9C2605A29F52",
"iid": 19,
"perms": [
"pw",
"hd"
],
"description": "S2W2",
"format": "data"
},
{
"type": "23",
"iid": 15,
"value": "Dryer Power ENERGY Total History",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "E863F116-079E-48FF-8F27-9C2605A29F52",
"iid": 16,
"value": "0yA3AQAAAAC3SjEoAwcCDgEOAcAPwA/adAAAAAAAAAEB",
"perms": [
"pr",
"ev",
"hd"
],
"description": "S2R1",
"format": "data"
},
{
"type": "E863F117-079E-48FF-8F27-9C2605A29F52",
"iid": 17,
"value": "AA==",
"perms": [
"pr",
"ev",
"hd"
],
"description": "S2R2",
"format": "data"
}
]
},
{
"type": "49",
"iid": 24,
"characteristics": [
{
"type": "23",
"iid": 25,
"value": "Dryer Power",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "25",
"iid": 26,
"value": 0,
"perms": [
"ev",
"pr",
"pw"
],
"description": "On",
"format": "bool"
},
{
"type": "E3",
"iid": 27,
"value": "",
"perms": [
"ev",
"pr",
"pw"
],
"description": "Configured Name",
"format": "string"
}
]
}
]
},
FYI - The latest version includes this for your issue
else if (context.manufacturer === "Mitsubishi" && !fullName.includes(this.name)) {
fullName = context.name + " - " + this.name;
If you have a better suggestion we can look at this further
I really appreciate it. FYI - I am looking at this at the moment - I needed to build an environment hence the delay since I didn’t have a way to examine while running.
In any case, as I examine the code it appears that context is the Accessory Information (3E) object associated with the Service array. In the examples I have I see one per Service array (I assume they are optional).
This yields what looks like the following:
Dryer Power Accessories: Accessory, AID: 29
Please note the previously attached JSON output was only partial - I am assuming it was from the Accessory array contents.
Mitsubishi AC Accessories: Accessory, AID: 1
and so forth.
For the Mitsubishi services it appears the proper name is:
Accessory Info.name “-“ Service.name
This would yield:
Loft Bedroom - Heater Cooler
Loft Bedroom - Fan
Loft Bedroom - Dehumidifier
etc within the toList() code.
The same logic yields:
Dryer Power - Dryer Power ENERGY Total
Dryer Power - Dryer Power ENERGY Total History
Dryer Power - Dryer Power
While this seems totally reasonable the current code in toList() I think yields:
Dryer Power ENERGY Total - Dryer Power ENERGY Total
Dryer Power ENERGY Total History - Dryer Power ENERGY Total History
Dryer Power - Dryer Power
I’m not sure why this is the desired state - I must be missing something. With a sample size of 2 (not good) it appears the Accessory Information.name is the group name to ensure uniqueness to the naming (although probably doesn’t). Part of the issue is the lack of uniqueness - I see that each accessory should have an AID associated with it. I’m assuming it’s an internally generated ID? According to the Apple specs, there is supposed to be a “uniqueIdentifier” (UUID) but I don’t see it in the objects I have access to (perhaps I need to go further upstream). Having some form of a unique ID that we could use to help select from the list would help prevent duplicate names (which are just attributes) from causing failure.
Is there a relatively inexpensive device that causes this issue? I’d love to help figure out what the right solution is (and then what we need if that is not doable), it would be easier to debug if I could reproduce the problem and then sit back and think.
-Jeff
P.S. - I have the Accessory information for Mitsubishi in JSON output is that helps. P.P.S - If you would like to take this offline I am happy to do so :-)
On Jan 11, 2023, at 11:34 AM, Northern Man @.***> wrote:
FYI - The latest version includes this for your issue
else if (context.manufacturer === "Mitsubishi" && !fullName.includes(this.name)) { fullName = context.name + " - " + this.name; If you have a better suggestion we can look at this further
— Reply to this email directly, view it on GitHub https://github.com/NorthernMan54/node-red-contrib-homebridge-automation/issues/109#issuecomment-1379108282, or unsubscribe https://github.com/notifications/unsubscribe-auth/A5ENRBYD2AP7E5GID45RJW3WR3OJPANCNFSM6AAAAAATUTGPBI. You are receiving this because you authored the thread.
A couple of comments for background:
1 - For this I'm using the HAP interface which is documented in 'HomeKit Accessory Protocol Specification'. If you look UUID is not used in the spec.
2 - AID and IID unfortunately are not long lived and can change in some scenarios when a homebridge configuration is changed or restarted. ( You can see this by your devices moving to the 'default room' in the Home App )
When I pulled this together, my thought on node naming was a combination of Accessory / Device Name and Device Type. With the device type being based on the individual characteristic type. So for example a weather sensor device would have the ability to select temperature or humidity data
ie
This was also driven by the event / notification model within the HAP interface being at the characteristic level.
To recreate the issue, no need to purchase a device, just grab an accessory dump from your homebridge instance and put it through the device parser. If you look in the tools directory there is a file called parseAccessories.js which runs the device parser against an accessory dump file.
ie
node parseAccessories.js ~/Desktop/tasmota.json
And you can collect an accessory dump with this
curl -X PUT http://192.168.1.11:33615/accessories --header "Content-Type:Application/json" --header "authorization: 031-45-154" > ~/Desktop/tasmota.json
Just change the IP address and port to be your problematic homebridge instance.
This allows you to quickly try things without restarting node-red etc
PS - An Accessory Dump from one of my instances
{
"accessories": [
{
"aid": 1,
"services": [
{
"type": "3E",
"iid": 1,
"characteristics": [
{
"type": "14",
"iid": 2,
"perms": [
"pw"
],
"description": "Identify",
"format": "bool"
},
{
"type": "20",
"iid": 3,
"value": "homebridge.io",
"perms": [
"pr"
],
"description": "Manufacturer",
"format": "string",
"maxLen": 64
},
{
"type": "21",
"iid": 4,
"value": "homebridge",
"perms": [
"pr"
],
"description": "Model",
"format": "string",
"maxLen": 64
},
{
"type": "23",
"iid": 5,
"value": "Tasmota 5019",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "30",
"iid": 6,
"value": "CC:22:3D:E3:CF:34",
"perms": [
"pr"
],
"description": "Serial Number",
"format": "string",
"maxLen": 64
},
{
"type": "52",
"iid": 7,
"value": "1.6.0",
"perms": [
"pr"
],
"description": "Firmware Revision",
"format": "string"
}
]
},
{
"type": "A2",
"iid": 2000000008,
"characteristics": [
{
"type": "37",
"iid": 9,
"value": "1.1.0",
"perms": [
"pr"
],
"description": "Version",
"format": "string",
"maxLen": 64
}
]
}
]
},
{
"aid": 34,
"services": [
{
"type": "3E",
"iid": 1,
"characteristics": [
{
"type": "14",
"iid": 2,
"perms": [
"pw"
],
"description": "Identify",
"format": "bool"
},
{
"type": "20",
"iid": 3,
"value": "Tasmota",
"perms": [
"pr"
],
"description": "Manufacturer",
"format": "string",
"maxLen": 64
},
{
"type": "21",
"iid": 4,
"value": "SmartValve",
"perms": [
"pr"
],
"description": "Model",
"format": "string",
"maxLen": 64
},
{
"type": "23",
"iid": 5,
"value": "Water",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "30",
"iid": 6,
"value": "6BAFD7-jesse",
"perms": [
"pr"
],
"description": "Serial Number",
"format": "string",
"maxLen": 64
},
{
"type": "52",
"iid": 7,
"value": "9.5.0tasmota",
"perms": [
"pr"
],
"description": "Firmware Revision",
"format": "string"
}
]
},
{
"type": "49",
"iid": 8,
"characteristics": [
{
"type": "23",
"iid": 9,
"value": "Water",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "25",
"iid": 10,
"value": 1,
"perms": [
"ev",
"pr",
"pw"
],
"description": "On",
"format": "bool"
},
{
"type": "E3",
"iid": 11,
"value": "",
"perms": [
"ev",
"pr",
"pw"
],
"description": "Configured Name",
"format": "string"
}
]
}
]
},
{
"aid": 36,
"services": [
{
"type": "3E",
"iid": 1,
"characteristics": [
{
"type": "14",
"iid": 2,
"perms": [
"pw"
],
"description": "Identify",
"format": "bool"
},
{
"type": "20",
"iid": 3,
"value": "Tasmota",
"perms": [
"pr"
],
"description": "Manufacturer",
"format": "string",
"maxLen": 64
},
{
"type": "21",
"iid": 4,
"value": "BME Leak",
"perms": [
"pr"
],
"description": "Model",
"format": "string",
"maxLen": 64
},
{
"type": "23",
"iid": 5,
"value": "Water Meter",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "30",
"iid": 6,
"value": "860695-jesse",
"perms": [
"pr"
],
"description": "Serial Number",
"format": "string",
"maxLen": 64
},
{
"type": "52",
"iid": 7,
"value": "9.5.0sensors",
"perms": [
"pr"
],
"description": "Firmware Revision",
"format": "string"
}
]
},
{
"type": "82",
"iid": 8,
"characteristics": [
{
"type": "23",
"iid": 9,
"value": "Water Meter ANALOG Moisture",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "10",
"iid": 10,
"value": 21,
"perms": [
"ev",
"pr"
],
"description": "Current Relative Humidity",
"format": "float",
"unit": "percentage",
"minValue": 0,
"maxValue": 100,
"minStep": 1
},
{
"type": "E3",
"iid": 11,
"value": "",
"perms": [
"ev",
"pr",
"pw"
],
"description": "Configured Name",
"format": "string"
}
]
},
{
"type": "8A",
"iid": 12,
"characteristics": [
{
"type": "23",
"iid": 13,
"value": "Water Meter Temperature",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "11",
"iid": 14,
"value": 22.3,
"perms": [
"ev",
"pr"
],
"description": "Current Temperature",
"format": "float",
"unit": "celsius",
"minValue": -100,
"maxValue": 100,
"minStep": 0.1
},
{
"type": "E3",
"iid": 15,
"value": "Water Meter Temperature",
"perms": [
"ev",
"pr",
"pw"
],
"description": "Configured Name",
"format": "string"
}
]
},
{
"type": "E863F007-079E-48FF-8F27-9C2605A29F52",
"iid": 16,
"characteristics": [
{
"type": "E863F11C-079E-48FF-8F27-9C2605A29F52",
"iid": 20,
"perms": [
"pw",
"hd"
],
"description": "S2W1",
"format": "data"
},
{
"type": "E863F121-079E-48FF-8F27-9C2605A29F52",
"iid": 21,
"perms": [
"pw",
"hd"
],
"description": "S2W2",
"format": "data"
},
{
"type": "23",
"iid": 17,
"value": "Water Meter ANALOG Moisture History",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "E863F116-079E-48FF-8F27-9C2605A29F52",
"iid": 18,
"value": "wDT0AQAAAAD0V3snBQECAQICAgICAwLAD8AP2MwAAAAAAAABAQ==",
"perms": [
"pr",
"ev",
"hd"
],
"description": "S2R1",
"format": "data"
},
{
"type": "E863F117-079E-48FF-8F27-9C2605A29F52",
"iid": 19,
"value": "AA==",
"perms": [
"pr",
"ev",
"hd"
],
"description": "S2R2",
"format": "data"
}
]
},
{
"type": "82",
"iid": 22,
"characteristics": [
{
"type": "23",
"iid": 23,
"value": "Water Meter BME280 Humidity",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "10",
"iid": 24,
"value": 33,
"perms": [
"ev",
"pr"
],
"description": "Current Relative Humidity",
"format": "float",
"unit": "percentage",
"minValue": 0,
"maxValue": 100,
"minStep": 1
},
{
"type": "E3",
"iid": 25,
"value": "",
"perms": [
"ev",
"pr",
"pw"
],
"description": "Configured Name",
"format": "string"
}
]
},
{
"type": "B77831FD-D66A-46A4-B66D-FD7EE8DFE3CE",
"iid": 26,
"characteristics": [
{
"type": "23",
"iid": 27,
"value": "Water Meter BME280 Pressure",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "E863F10F-079E-48FF-8F27-9C2605A29F52",
"iid": 28,
"value": 994,
"perms": [
"pr",
"ev"
],
"description": "Air Pressure",
"format": "uint16",
"unit": "hPa",
"minValue": 300,
"maxValue": 1100,
"minStep": 1
},
{
"type": "E3",
"iid": 29,
"value": "",
"perms": [
"ev",
"pr",
"pw"
],
"description": "Configured Name",
"format": "string"
}
]
},
{
"type": "8A",
"iid": 30,
"characteristics": [
{
"type": "23",
"iid": 31,
"value": "Water Meter DewPoint",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "11",
"iid": 32,
"value": 5.2,
"perms": [
"ev",
"pr"
],
"description": "Current Temperature",
"format": "float",
"unit": "celsius",
"minValue": -100,
"maxValue": 100,
"minStep": 0.1
},
{
"type": "E3",
"iid": 33,
"value": "Water Meter DewPoint",
"perms": [
"ev",
"pr",
"pw"
],
"description": "Configured Name",
"format": "string"
}
]
}
]
},
{
"aid": 40,
"services": [
{
"type": "3E",
"iid": 1,
"characteristics": [
{
"type": "14",
"iid": 2,
"perms": [
"pw"
],
"description": "Identify",
"format": "bool"
},
{
"type": "20",
"iid": 3,
"value": "Tasmota",
"perms": [
"pr"
],
"description": "Manufacturer",
"format": "string",
"maxLen": 64
},
{
"type": "21",
"iid": 4,
"value": "Tuya MCU",
"perms": [
"pr"
],
"description": "Model",
"format": "string",
"maxLen": 64
},
{
"type": "23",
"iid": 5,
"value": "Dining Room Chandelier",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "30",
"iid": 6,
"value": "A97667-jesse",
"perms": [
"pr"
],
"description": "Serial Number",
"format": "string",
"maxLen": 64
},
{
"type": "52",
"iid": 7,
"value": "9.5.0tasmota",
"perms": [
"pr"
],
"description": "Firmware Revision",
"format": "string"
}
]
},
{
"type": "43",
"iid": 8,
"characteristics": [
{
"type": "23",
"iid": 9,
"value": "Dining Room Chandelier",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "25",
"iid": 10,
"value": 0,
"perms": [
"ev",
"pr",
"pw"
],
"description": "On",
"format": "bool"
},
{
"type": "8",
"iid": 11,
"value": 50,
"perms": [
"ev",
"pr",
"pw"
],
"description": "Brightness",
"format": "int",
"unit": "percentage",
"minValue": 0,
"maxValue": 100,
"minStep": 1
},
{
"type": "E3",
"iid": 12,
"value": "",
"perms": [
"ev",
"pr",
"pw"
],
"description": "Configured Name",
"format": "string"
}
]
}
]
},
{
"aid": 41,
"services": [
{
"type": "3E",
"iid": 1,
"characteristics": [
{
"type": "14",
"iid": 2,
"perms": [
"pw"
],
"description": "Identify",
"format": "bool"
},
{
"type": "20",
"iid": 3,
"value": "Tasmota",
"perms": [
"pr"
],
"description": "Manufacturer",
"format": "string",
"maxLen": 64
},
{
"type": "21",
"iid": 4,
"value": "Garage Door",
"perms": [
"pr"
],
"description": "Model",
"format": "string",
"maxLen": 64
},
{
"type": "23",
"iid": 5,
"value": "Garage Door",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "30",
"iid": 6,
"value": "FB6A07-jesse",
"perms": [
"pr"
],
"description": "Serial Number",
"format": "string",
"maxLen": 64
},
{
"type": "52",
"iid": 7,
"value": "9.5.0tasmota",
"perms": [
"pr"
],
"description": "Firmware Revision",
"format": "string"
}
]
},
{
"type": "41",
"iid": 8,
"characteristics": [
{
"type": "23",
"iid": 9,
"value": "Garage Door",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "E",
"iid": 10,
"value": 1,
"perms": [
"ev",
"pr"
],
"description": "Current Door State",
"format": "uint8",
"minValue": 0,
"maxValue": 4,
"minStep": 1,
"valid-values": [
0,
1,
2,
3,
4
]
},
{
"type": "32",
"iid": 11,
"value": 1,
"perms": [
"ev",
"pr",
"pw"
],
"description": "Target Door State",
"format": "uint8",
"minValue": 0,
"maxValue": 1,
"minStep": 1,
"valid-values": [
0,
1
]
},
{
"type": "24",
"iid": 12,
"value": 0,
"perms": [
"ev",
"pr"
],
"description": "Obstruction Detected",
"format": "bool"
},
{
"type": "E3",
"iid": 13,
"value": "",
"perms": [
"ev",
"pr",
"pw"
],
"description": "Configured Name",
"format": "string"
}
]
}
]
},
{
"aid": 44,
"services": [
{
"type": "3E",
"iid": 1,
"characteristics": [
{
"type": "14",
"iid": 2,
"perms": [
"pw"
],
"description": "Identify",
"format": "bool"
},
{
"type": "20",
"iid": 3,
"value": "Tasmota",
"perms": [
"pr"
],
"description": "Manufacturer",
"format": "string",
"maxLen": 64
},
{
"type": "21",
"iid": 4,
"value": "WiOn",
"perms": [
"pr"
],
"description": "Model",
"format": "string",
"maxLen": 64
},
{
"type": "23",
"iid": 5,
"value": "Dehumidifier",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "30",
"iid": 6,
"value": "0073C8-jesse",
"perms": [
"pr"
],
"description": "Serial Number",
"format": "string",
"maxLen": 64
},
{
"type": "52",
"iid": 7,
"value": "9.5.0tasmota",
"perms": [
"pr"
],
"description": "Firmware Revision",
"format": "string"
}
]
},
{
"type": "49",
"iid": 8,
"characteristics": [
{
"type": "23",
"iid": 9,
"value": "Dehumidifier",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "25",
"iid": 10,
"value": 0,
"perms": [
"ev",
"pr",
"pw"
],
"description": "On",
"format": "bool"
},
{
"type": "E3",
"iid": 11,
"value": "",
"perms": [
"ev",
"pr",
"pw"
],
"description": "Configured Name",
"format": "string"
}
]
}
]
},
{
"aid": 50,
"services": [
{
"type": "3E",
"iid": 1,
"characteristics": [
{
"type": "14",
"iid": 2,
"perms": [
"pw"
],
"description": "Identify",
"format": "bool"
},
{
"type": "20",
"iid": 3,
"value": "Tasmota",
"perms": [
"pr"
],
"description": "Manufacturer",
"format": "string",
"maxLen": 64
},
{
"type": "21",
"iid": 4,
"value": "WiOn",
"perms": [
"pr"
],
"description": "Model",
"format": "string",
"maxLen": 64
},
{
"type": "23",
"iid": 5,
"value": "Bathroom Fan",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "30",
"iid": 6,
"value": "01F87E-jesse",
"perms": [
"pr"
],
"description": "Serial Number",
"format": "string",
"maxLen": 64
},
{
"type": "52",
"iid": 7,
"value": "9.5.0tasmota",
"perms": [
"pr"
],
"description": "Firmware Revision",
"format": "string"
}
]
},
{
"type": "49",
"iid": 8,
"characteristics": [
{
"type": "23",
"iid": 9,
"value": "Bathroom Fan",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "25",
"iid": 10,
"value": 0,
"perms": [
"ev",
"pr",
"pw"
],
"description": "On",
"format": "bool"
},
{
"type": "E3",
"iid": 11,
"value": "",
"perms": [
"ev",
"pr",
"pw"
],
"description": "Configured Name",
"format": "string"
}
]
}
]
},
{
"aid": 53,
"services": [
{
"type": "3E",
"iid": 1,
"characteristics": [
{
"type": "14",
"iid": 2,
"perms": [
"pw"
],
"description": "Identify",
"format": "bool"
},
{
"type": "20",
"iid": 3,
"value": "Tasmota",
"perms": [
"pr"
],
"description": "Manufacturer",
"format": "string",
"maxLen": 64
},
{
"type": "21",
"iid": 4,
"value": "Sonoff iFan03",
"perms": [
"pr"
],
"description": "Model",
"format": "string",
"maxLen": 64
},
{
"type": "23",
"iid": 5,
"value": "Master Light",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "30",
"iid": 6,
"value": "2D9EB5-jesse",
"perms": [
"pr"
],
"description": "Serial Number",
"format": "string",
"maxLen": 64
},
{
"type": "52",
"iid": 7,
"value": "9.5.0tasmota",
"perms": [
"pr"
],
"description": "Firmware Revision",
"format": "string"
}
]
},
{
"type": "43",
"iid": 8,
"characteristics": [
{
"type": "23",
"iid": 9,
"value": "Master Light",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "25",
"iid": 10,
"value": 0,
"perms": [
"ev",
"pr",
"pw"
],
"description": "On",
"format": "bool"
},
{
"type": "E3",
"iid": 11,
"value": "",
"perms": [
"ev",
"pr",
"pw"
],
"description": "Configured Name",
"format": "string"
}
]
},
{
"type": "40",
"iid": 12,
"characteristics": [
{
"type": "23",
"iid": 13,
"value": "Master Fan",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "25",
"iid": 14,
"value": 0,
"perms": [
"ev",
"pr",
"pw"
],
"description": "On",
"format": "bool"
},
{
"type": "29",
"iid": 15,
"value": 0,
"perms": [
"ev",
"pr",
"pw"
],
"description": "Rotation Speed",
"format": "float",
"unit": "percentage",
"minValue": 0,
"maxValue": 100,
"minStep": 1
},
{
"type": "E3",
"iid": 16,
"value": "Master Fan",
"perms": [
"ev",
"pr",
"pw"
],
"description": "Configured Name",
"format": "string"
}
]
}
]
},
{
"aid": 58,
"services": [
{
"type": "3E",
"iid": 1,
"characteristics": [
{
"type": "14",
"iid": 2,
"perms": [
"pw"
],
"description": "Identify",
"format": "bool"
},
{
"type": "20",
"iid": 3,
"value": "Tasmota",
"perms": [
"pr"
],
"description": "Manufacturer",
"format": "string",
"maxLen": 64
},
{
"type": "21",
"iid": 4,
"value": "CE-WF500D",
"perms": [
"pr"
],
"description": "Model",
"format": "string",
"maxLen": 64
},
{
"type": "23",
"iid": 5,
"value": "Deck Light",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "30",
"iid": 6,
"value": "EF159D-jesse",
"perms": [
"pr"
],
"description": "Serial Number",
"format": "string",
"maxLen": 64
},
{
"type": "52",
"iid": 7,
"value": "9.5.0tasmota",
"perms": [
"pr"
],
"description": "Firmware Revision",
"format": "string"
}
]
},
{
"type": "43",
"iid": 8,
"characteristics": [
{
"type": "23",
"iid": 9,
"value": "Deck Light",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "25",
"iid": 10,
"value": 0,
"perms": [
"ev",
"pr",
"pw"
],
"description": "On",
"format": "bool"
},
{
"type": "8",
"iid": 11,
"value": 99,
"perms": [
"ev",
"pr",
"pw"
],
"description": "Brightness",
"format": "int",
"unit": "percentage",
"minValue": 0,
"maxValue": 100,
"minStep": 1
},
{
"type": "E3",
"iid": 12,
"value": "",
"perms": [
"ev",
"pr",
"pw"
],
"description": "Configured Name",
"format": "string"
}
]
}
]
},
{
"aid": 59,
"services": [
{
"type": "3E",
"iid": 1,
"characteristics": [
{
"type": "14",
"iid": 2,
"perms": [
"pw"
],
"description": "Identify",
"format": "bool"
},
{
"type": "20",
"iid": 3,
"value": "Tasmota",
"perms": [
"pr"
],
"description": "Manufacturer",
"format": "string",
"maxLen": 64
},
{
"type": "21",
"iid": 4,
"value": "CE-WF500D",
"perms": [
"pr"
],
"description": "Model",
"format": "string",
"maxLen": 64
},
{
"type": "23",
"iid": 5,
"value": "Firepit light",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "30",
"iid": 6,
"value": "3A62AD-jesse",
"perms": [
"pr"
],
"description": "Serial Number",
"format": "string",
"maxLen": 64
},
{
"type": "52",
"iid": 7,
"value": "9.5.0tasmota",
"perms": [
"pr"
],
"description": "Firmware Revision",
"format": "string"
}
]
},
{
"type": "43",
"iid": 8,
"characteristics": [
{
"type": "23",
"iid": 9,
"value": "Firepit light",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "25",
"iid": 10,
"value": 0,
"perms": [
"ev",
"pr",
"pw"
],
"description": "On",
"format": "bool"
},
{
"type": "8",
"iid": 11,
"value": 100,
"perms": [
"ev",
"pr",
"pw"
],
"description": "Brightness",
"format": "int",
"unit": "percentage",
"minValue": 0,
"maxValue": 100,
"minStep": 1
},
{
"type": "E3",
"iid": 12,
"value": "",
"perms": [
"ev",
"pr",
"pw"
],
"description": "Configured Name",
"format": "string"
}
]
}
]
},
{
"aid": 63,
"services": [
{
"type": "3E",
"iid": 1,
"characteristics": [
{
"type": "14",
"iid": 2,
"perms": [
"pw"
],
"description": "Identify",
"format": "bool"
},
{
"type": "20",
"iid": 3,
"value": "Tasmota",
"perms": [
"pr"
],
"description": "Manufacturer",
"format": "string",
"maxLen": 64
},
{
"type": "21",
"iid": 4,
"value": "Sonoff iFan03",
"perms": [
"pr"
],
"description": "Model",
"format": "string",
"maxLen": 64
},
{
"type": "23",
"iid": 5,
"value": "East Bedroom",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "30",
"iid": 6,
"value": "303057-jesse",
"perms": [
"pr"
],
"description": "Serial Number",
"format": "string",
"maxLen": 64
},
{
"type": "52",
"iid": 7,
"value": "9.5.0tasmota",
"perms": [
"pr"
],
"description": "Firmware Revision",
"format": "string"
}
]
},
{
"type": "43",
"iid": 8,
"characteristics": [
{
"type": "23",
"iid": 9,
"value": "East Bedroom",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "25",
"iid": 10,
"value": 0,
"perms": [
"ev",
"pr",
"pw"
],
"description": "On",
"format": "bool"
},
{
"type": "E3",
"iid": 11,
"value": "",
"perms": [
"ev",
"pr",
"pw"
],
"description": "Configured Name",
"format": "string"
}
]
},
{
"type": "40",
"iid": 12,
"characteristics": [
{
"type": "23",
"iid": 13,
"value": "East Bedroom Fan",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "25",
"iid": 14,
"value": 0,
"perms": [
"ev",
"pr",
"pw"
],
"description": "On",
"format": "bool"
},
{
"type": "29",
"iid": 15,
"value": 0,
"perms": [
"ev",
"pr",
"pw"
],
"description": "Rotation Speed",
"format": "float",
"unit": "percentage",
"minValue": 0,
"maxValue": 100,
"minStep": 1
},
{
"type": "E3",
"iid": 16,
"value": "",
"perms": [
"ev",
"pr",
"pw"
],
"description": "Configured Name",
"format": "string"
}
]
}
]
},
{
"aid": 66,
"services": [
{
"type": "3E",
"iid": 1,
"characteristics": [
{
"type": "14",
"iid": 2,
"perms": [
"pw"
],
"description": "Identify",
"format": "bool"
},
{
"type": "20",
"iid": 3,
"value": "Tasmota",
"perms": [
"pr"
],
"description": "Manufacturer",
"format": "string",
"maxLen": 64
},
{
"type": "21",
"iid": 4,
"value": "WiOn",
"perms": [
"pr"
],
"description": "Model",
"format": "string",
"maxLen": 64
},
{
"type": "23",
"iid": 5,
"value": "Door Power",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "30",
"iid": 6,
"value": "0086F2-jesse",
"perms": [
"pr"
],
"description": "Serial Number",
"format": "string",
"maxLen": 64
},
{
"type": "52",
"iid": 7,
"value": "9.5.0tasmota",
"perms": [
"pr"
],
"description": "Firmware Revision",
"format": "string"
}
]
},
{
"type": "49",
"iid": 8,
"characteristics": [
{
"type": "23",
"iid": 9,
"value": "Door Power",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "25",
"iid": 10,
"value": 1,
"perms": [
"ev",
"pr",
"pw"
],
"description": "On",
"format": "bool"
},
{
"type": "E3",
"iid": 11,
"value": "",
"perms": [
"ev",
"pr",
"pw"
],
"description": "Configured Name",
"format": "string"
}
]
}
]
},
{
"aid": 68,
"services": [
{
"type": "3E",
"iid": 1,
"characteristics": [
{
"type": "14",
"iid": 2,
"perms": [
"pw"
],
"description": "Identify",
"format": "bool"
},
{
"type": "20",
"iid": 3,
"value": "Tasmota",
"perms": [
"pr"
],
"description": "Manufacturer",
"format": "string",
"maxLen": 64
},
{
"type": "21",
"iid": 4,
"value": "Tuya MCU",
"perms": [
"pr"
],
"description": "Model",
"format": "string",
"maxLen": 64
},
{
"type": "23",
"iid": 5,
"value": "Front Soffit",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "30",
"iid": 6,
"value": "0DCAD4-jesse",
"perms": [
"pr"
],
"description": "Serial Number",
"format": "string",
"maxLen": 64
},
{
"type": "52",
"iid": 7,
"value": "9.5.0tasmota",
"perms": [
"pr"
],
"description": "Firmware Revision",
"format": "string"
}
]
},
{
"type": "43",
"iid": 8,
"characteristics": [
{
"type": "23",
"iid": 9,
"value": "Front Soffit",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "25",
"iid": 10,
"value": 0,
"perms": [
"ev",
"pr",
"pw"
],
"description": "On",
"format": "bool"
},
{
"type": "8",
"iid": 11,
"value": 100,
"perms": [
"ev",
"pr",
"pw"
],
"description": "Brightness",
"format": "int",
"unit": "percentage",
"minValue": 0,
"maxValue": 100,
"minStep": 1
},
{
"type": "E3",
"iid": 12,
"value": "",
"perms": [
"ev",
"pr",
"pw"
],
"description": "Configured Name",
"format": "string"
}
]
}
]
},
{
"aid": 69,
"services": [
{
"type": "3E",
"iid": 1,
"characteristics": [
{
"type": "14",
"iid": 2,
"perms": [
"pw"
],
"description": "Identify",
"format": "bool"
},
{
"type": "20",
"iid": 3,
"value": "Tasmota",
"perms": [
"pr"
],
"description": "Manufacturer",
"format": "string",
"maxLen": 64
},
{
"type": "21",
"iid": 4,
"value": "Tuya MCU",
"perms": [
"pr"
],
"description": "Model",
"format": "string",
"maxLen": 64
},
{
"type": "23",
"iid": 5,
"value": "Front Hall",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "30",
"iid": 6,
"value": "23CAC5-jesse",
"perms": [
"pr"
],
"description": "Serial Number",
"format": "string",
"maxLen": 64
},
{
"type": "52",
"iid": 7,
"value": "9.5.0tasmota",
"perms": [
"pr"
],
"description": "Firmware Revision",
"format": "string"
}
]
},
{
"type": "43",
"iid": 8,
"characteristics": [
{
"type": "23",
"iid": 9,
"value": "Front Hall",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "25",
"iid": 10,
"value": 0,
"perms": [
"ev",
"pr",
"pw"
],
"description": "On",
"format": "bool"
},
{
"type": "8",
"iid": 11,
"value": 100,
"perms": [
"ev",
"pr",
"pw"
],
"description": "Brightness",
"format": "int",
"unit": "percentage",
"minValue": 0,
"maxValue": 100,
"minStep": 1
},
{
"type": "E3",
"iid": 12,
"value": "",
"perms": [
"ev",
"pr",
"pw"
],
"description": "Configured Name",
"format": "string"
}
]
}
]
},
{
"aid": 70,
"services": [
{
"type": "3E",
"iid": 1,
"characteristics": [
{
"type": "14",
"iid": 2,
"perms": [
"pw"
],
"description": "Identify",
"format": "bool"
},
{
"type": "20",
"iid": 3,
"value": "Tasmota",
"perms": [
"pr"
],
"description": "Manufacturer",
"format": "string",
"maxLen": 64
},
{
"type": "21",
"iid": 4,
"value": "Tuya MCU",
"perms": [
"pr"
],
"description": "Model",
"format": "string",
"maxLen": 64
},
{
"type": "23",
"iid": 5,
"value": "Garage Soffit",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "30",
"iid": 6,
"value": "0B3CC4-jesse",
"perms": [
"pr"
],
"description": "Serial Number",
"format": "string",
"maxLen": 64
},
{
"type": "52",
"iid": 7,
"value": "9.5.0tasmota",
"perms": [
"pr"
],
"description": "Firmware Revision",
"format": "string"
}
]
},
{
"type": "43",
"iid": 8,
"characteristics": [
{
"type": "23",
"iid": 9,
"value": "Garage Soffit",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "25",
"iid": 10,
"value": 0,
"perms": [
"ev",
"pr",
"pw"
],
"description": "On",
"format": "bool"
},
{
"type": "8",
"iid": 11,
"value": 45,
"perms": [
"ev",
"pr",
"pw"
],
"description": "Brightness",
"format": "int",
"unit": "percentage",
"minValue": 0,
"maxValue": 100,
"minStep": 1
},
{
"type": "E3",
"iid": 12,
"value": "",
"perms": [
"ev",
"pr",
"pw"
],
"description": "Configured Name",
"format": "string"
}
]
}
]
},
{
"aid": 75,
"services": [
{
"type": "3E",
"iid": 1,
"characteristics": [
{
"type": "14",
"iid": 2,
"perms": [
"pw"
],
"description": "Identify",
"format": "bool"
},
{
"type": "20",
"iid": 3,
"value": "Tasmota",
"perms": [
"pr"
],
"description": "Manufacturer",
"format": "string",
"maxLen": 64
},
{
"type": "21",
"iid": 4,
"value": "WiOn",
"perms": [
"pr"
],
"description": "Model",
"format": "string",
"maxLen": 64
},
{
"type": "23",
"iid": 5,
"value": "Shed Light",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "30",
"iid": 6,
"value": "02231D-jesse",
"perms": [
"pr"
],
"description": "Serial Number",
"format": "string",
"maxLen": 64
},
{
"type": "52",
"iid": 7,
"value": "9.5.0tasmota",
"perms": [
"pr"
],
"description": "Firmware Revision",
"format": "string"
}
]
},
{
"type": "43",
"iid": 8,
"characteristics": [
{
"type": "23",
"iid": 9,
"value": "Shed Light",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "25",
"iid": 10,
"value": 0,
"perms": [
"ev",
"pr",
"pw"
],
"description": "On",
"format": "bool"
},
{
"type": "E3",
"iid": 11,
"value": "",
"perms": [
"ev",
"pr",
"pw"
],
"description": "Configured Name",
"format": "string"
}
]
}
]
},
{
"aid": 86,
"services": [
{
"type": "3E",
"iid": 1,
"characteristics": [
{
"type": "14",
"iid": 2,
"perms": [
"pw"
],
"description": "Identify",
"format": "bool"
},
{
"type": "20",
"iid": 3,
"value": "Tasmota",
"perms": [
"pr"
],
"description": "Manufacturer",
"format": "string",
"maxLen": 64
},
{
"type": "21",
"iid": 4,
"value": "MCULED",
"perms": [
"pr"
],
"description": "Model",
"format": "string",
"maxLen": 64
},
{
"type": "23",
"iid": 5,
"value": "Side Counter",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "30",
"iid": 6,
"value": "AC545F-jesse",
"perms": [
"pr"
],
"description": "Serial Number",
"format": "string",
"maxLen": 64
},
{
"type": "52",
"iid": 7,
"value": "9.5.0tasmota",
"perms": [
"pr"
],
"description": "Firmware Revision",
"format": "string"
}
]
},
{
"type": "43",
"iid": 8,
"characteristics": [
{
"type": "23",
"iid": 9,
"value": "Side Counter",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "25",
"iid": 10,
"value": 0,
"perms": [
"ev",
"pr",
"pw"
],
"description": "On",
"format": "bool"
},
{
"type": "8",
"iid": 11,
"value": 100,
"perms": [
"ev",
"pr",
"pw"
],
"description": "Brightness",
"format": "int",
"unit": "percentage",
"minValue": 0,
"maxValue": 100,
"minStep": 1
},
{
"type": "13",
"iid": 12,
"value": 65,
"perms": [
"ev",
"pr",
"pw"
],
"description": "Hue",
"format": "float",
"unit": "arcdegrees",
"minValue": 0,
"maxValue": 360,
"minStep": 1
},
{
"type": "2F",
"iid": 13,
"value": 100,
"perms": [
"ev",
"pr",
"pw"
],
"description": "Saturation",
"format": "float",
"unit": "percentage",
"minValue": 0,
"maxValue": 100,
"minStep": 1
},
{
"type": "E3",
"iid": 14,
"value": "",
"perms": [
"ev",
"pr",
"pw"
],
"description": "Configured Name",
"format": "string"
}
]
},
{
"type": "49",
"iid": 15,
"characteristics": [
{
"type": "23",
"iid": 16,
"value": "Side Counter",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "25",
"iid": 17,
"value": 0,
"perms": [
"ev",
"pr",
"pw"
],
"description": "On",
"format": "bool"
},
{
"type": "E3",
"iid": 18,
"value": "",
"perms": [
"ev",
"pr",
"pw"
],
"description": "Configured Name",
"format": "string"
}
]
}
]
},
{
"aid": 89,
"services": [
{
"type": "3E",
"iid": 1,
"characteristics": [
{
"type": "14",
"iid": 2,
"perms": [
"pw"
],
"description": "Identify",
"format": "bool"
},
{
"type": "20",
"iid": 3,
"value": "Tasmota",
"perms": [
"pr"
],
"description": "Manufacturer",
"format": "string",
"maxLen": 64
},
{
"type": "21",
"iid": 4,
"value": "WiOn",
"perms": [
"pr"
],
"description": "Model",
"format": "string",
"maxLen": 64
},
{
"type": "23",
"iid": 5,
"value": "Router Power",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "30",
"iid": 6,
"value": "00FF8D-jesse",
"perms": [
"pr"
],
"description": "Serial Number",
"format": "string",
"maxLen": 64
},
{
"type": "52",
"iid": 7,
"value": "9.5.0tasmota",
"perms": [
"pr"
],
"description": "Firmware Revision",
"format": "string"
}
]
},
{
"type": "49",
"iid": 8,
"characteristics": [
{
"type": "23",
"iid": 9,
"value": "Router Power",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "25",
"iid": 10,
"value": 1,
"perms": [
"ev",
"pr",
"pw"
],
"description": "On",
"format": "bool"
},
{
"type": "E3",
"iid": 11,
"value": "",
"perms": [
"ev",
"pr",
"pw"
],
"description": "Configured Name",
"format": "string"
}
]
}
]
},
{
"aid": 93,
"services": [
{
"type": "3E",
"iid": 1,
"characteristics": [
{
"type": "14",
"iid": 2,
"perms": [
"pw"
],
"description": "Identify",
"format": "bool"
},
{
"type": "20",
"iid": 3,
"value": "Tasmota",
"perms": [
"pr"
],
"description": "Manufacturer",
"format": "string",
"maxLen": 64
},
{
"type": "21",
"iid": 4,
"value": "Tuya MCU",
"perms": [
"pr"
],
"description": "Model",
"format": "string",
"maxLen": 64
},
{
"type": "23",
"iid": 5,
"value": "Trailer Power",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "30",
"iid": 6,
"value": "139827-jesse",
"perms": [
"pr"
],
"description": "Serial Number",
"format": "string",
"maxLen": 64
},
{
"type": "52",
"iid": 7,
"value": "9.5.0tasmota",
"perms": [
"pr"
],
"description": "Firmware Revision",
"format": "string"
}
]
},
{
"type": "49",
"iid": 8,
"characteristics": [
{
"type": "23",
"iid": 9,
"value": "Trailer Power ENERGY Total",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "25",
"iid": 10,
"value": 0,
"perms": [
"ev",
"pr",
"pw"
],
"description": "On",
"format": "bool"
},
{
"type": "E863F10C-079E-48FF-8F27-9C2605A29F52",
"iid": 11,
"value": 0,
"perms": [
"pr",
"ev"
],
"description": "Total Consumption",
"format": "float",
"unit": "kWh"
},
{
"type": "E3",
"iid": 12,
"value": "",
"perms": [
"ev",
"pr",
"pw"
],
"description": "Configured Name",
"format": "string"
},
{
"type": "E863F10D-079E-48FF-8F27-9C2605A29F52",
"iid": 13,
"value": 0,
"perms": [
"pr",
"ev"
],
"description": "Current Consumption",
"format": "float",
"unit": "W"
}
]
},
{
"type": "E863F007-079E-48FF-8F27-9C2605A29F52",
"iid": 14,
"characteristics": [
{
"type": "E863F11C-079E-48FF-8F27-9C2605A29F52",
"iid": 18,
"perms": [
"pw",
"hd"
],
"description": "S2W1",
"format": "data"
},
{
"type": "E863F121-079E-48FF-8F27-9C2605A29F52",
"iid": 19,
"perms": [
"pw",
"hd"
],
"description": "S2W2",
"format": "data"
},
{
"type": "23",
"iid": 15,
"value": "Trailer Power ENERGY Total History",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "E863F116-079E-48FF-8F27-9C2605A29F52",
"iid": 16,
"value": "82Y/AQAAAADBJTAoAwcCDgEOAcAPwA8OeAAAAAAAAAEB",
"perms": [
"pr",
"ev",
"hd"
],
"description": "S2R1",
"format": "data"
},
{
"type": "E863F117-079E-48FF-8F27-9C2605A29F52",
"iid": 17,
"value": "AA==",
"perms": [
"pr",
"ev",
"hd"
],
"description": "S2R2",
"format": "data"
}
]
},
{
"type": "49",
"iid": 20,
"characteristics": [
{
"type": "23",
"iid": 21,
"value": "Trailer Power",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "25",
"iid": 22,
"value": 0,
"perms": [
"ev",
"pr",
"pw"
],
"description": "On",
"format": "bool"
},
{
"type": "E3",
"iid": 23,
"value": "",
"perms": [
"ev",
"pr",
"pw"
],
"description": "Configured Name",
"format": "string"
}
]
}
]
},
{
"aid": 105,
"services": [
{
"type": "3E",
"iid": 1,
"characteristics": [
{
"type": "14",
"iid": 2,
"perms": [
"pw"
],
"description": "Identify",
"format": "bool"
},
{
"type": "20",
"iid": 3,
"value": "Tasmota",
"perms": [
"pr"
],
"description": "Manufacturer",
"format": "string",
"maxLen": 64
},
{
"type": "21",
"iid": 4,
"value": "Tuya MCU",
"perms": [
"pr"
],
"description": "Model",
"format": "string",
"maxLen": 64
},
{
"type": "23",
"iid": 5,
"value": "Washer Power",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "30",
"iid": 6,
"value": "F52066-jesse",
"perms": [
"pr"
],
"description": "Serial Number",
"format": "string",
"maxLen": 64
},
{
"type": "52",
"iid": 7,
"value": "9.5.0tasmota",
"perms": [
"pr"
],
"description": "Firmware Revision",
"format": "string"
}
]
},
{
"type": "49",
"iid": 8,
"characteristics": [
{
"type": "23",
"iid": 9,
"value": "Washer Power ENERGY Total",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "25",
"iid": 10,
"value": 0,
"perms": [
"ev",
"pr",
"pw"
],
"description": "On",
"format": "bool"
},
{
"type": "E863F10C-079E-48FF-8F27-9C2605A29F52",
"iid": 11,
"value": 0,
"perms": [
"pr",
"ev"
],
"description": "Total Consumption",
"format": "float",
"unit": "kWh"
},
{
"type": "E3",
"iid": 12,
"value": "",
"perms": [
"ev",
"pr",
"pw"
],
"description": "Configured Name",
"format": "string"
},
{
"type": "E863F10D-079E-48FF-8F27-9C2605A29F52",
"iid": 13,
"value": 0,
"perms": [
"pr",
"ev"
],
"description": "Current Consumption",
"format": "float",
"unit": "W"
}
]
},
{
"type": "E863F007-079E-48FF-8F27-9C2605A29F52",
"iid": 14,
"characteristics": [
{
"type": "E863F11C-079E-48FF-8F27-9C2605A29F52",
"iid": 18,
"perms": [
"pw",
"hd"
],
"description": "S2W1",
"format": "data"
},
{
"type": "E863F121-079E-48FF-8F27-9C2605A29F52",
"iid": 19,
"perms": [
"pw",
"hd"
],
"description": "S2W2",
"format": "data"
},
{
"type": "23",
"iid": 15,
"value": "Washer Power ENERGY Total History",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "E863F116-079E-48FF-8F27-9C2605A29F52",
"iid": 16,
"value": "2vk+AQAAAAA8KzAoAwcCDgEOAcAPwA9PeAAAAAAAAAEB",
"perms": [
"pr",
"ev",
"hd"
],
"description": "S2R1",
"format": "data"
},
{
"type": "E863F117-079E-48FF-8F27-9C2605A29F52",
"iid": 17,
"value": "AA==",
"perms": [
"pr",
"ev",
"hd"
],
"description": "S2R2",
"format": "data"
}
]
},
{
"type": "49",
"iid": 20,
"characteristics": [
{
"type": "23",
"iid": 21,
"value": "Washer Power",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "25",
"iid": 22,
"value": 0,
"perms": [
"ev",
"pr",
"pw"
],
"description": "On",
"format": "bool"
},
{
"type": "E3",
"iid": 23,
"value": "",
"perms": [
"ev",
"pr",
"pw"
],
"description": "Configured Name",
"format": "string"
}
]
}
]
},
{
"aid": 106,
"services": [
{
"type": "3E",
"iid": 1,
"characteristics": [
{
"type": "14",
"iid": 2,
"perms": [
"pw"
],
"description": "Identify",
"format": "bool"
},
{
"type": "20",
"iid": 3,
"value": "Tasmota",
"perms": [
"pr"
],
"description": "Manufacturer",
"format": "string",
"maxLen": 64
},
{
"type": "21",
"iid": 4,
"value": "Sonoff iFan03",
"perms": [
"pr"
],
"description": "Model",
"format": "string",
"maxLen": 64
},
{
"type": "23",
"iid": 5,
"value": "West Bedroom Light",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "30",
"iid": 6,
"value": "302F1B-jesse",
"perms": [
"pr"
],
"description": "Serial Number",
"format": "string",
"maxLen": 64
},
{
"type": "52",
"iid": 7,
"value": "9.5.0tasmota",
"perms": [
"pr"
],
"description": "Firmware Revision",
"format": "string"
}
]
},
{
"type": "43",
"iid": 8,
"characteristics": [
{
"type": "23",
"iid": 9,
"value": "West Bedroom Light",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "25",
"iid": 10,
"value": 0,
"perms": [
"ev",
"pr",
"pw"
],
"description": "On",
"format": "bool"
},
{
"type": "E3",
"iid": 11,
"value": "",
"perms": [
"ev",
"pr",
"pw"
],
"description": "Configured Name",
"format": "string"
}
]
},
{
"type": "40",
"iid": 12,
"characteristics": [
{
"type": "23",
"iid": 13,
"value": "West Bedroom Fan",
"perms": [
"pr"
],
"description": "Name",
"format": "string",
"maxLen": 64
},
{
"type": "25",
"iid": 14,
"value": 0,
"perms": [
"ev",
"pr",
"pw"
],
"description": "On",
"format": "bool"
},
{
"type": "29",
"iid": 15,
"value": 0,
"perms": [
"ev",
"pr",
"pw"
],
"description": "Rotation Speed",
"format": "float",
"unit": "percentage",
"minValue": 0,
"maxValue": 100,
"minStep": 1
},
{
"type": "E3",
"iid": 16,
"value": "",
"perms": [
"ev",
"pr",
"pw"
],
"description": "Configured Name",
"format": "string"
}
]
}
]
}
]
}
I don't not want to hijack this issue, but I see everything coming from zigbee2mqtt as duplicate, accessories from other plugins show up properly with a single entry.
Is there an "easy" remedy for this ?
edit - restarted my system (running zigbee2mqtt/homebridge/nr) and all good again.
spoke too soon :(
@bakman2 Can you open a new issue, and include an accessory dump. If you look up this issue, instructions are included.
Is there a chance that your zigbee2mqtt is unstable and restarting on a regular basis ? And the duplicates are old versions/instances ?
Is there a chance that your zigbee2mqtt is unstable and restarting on a regular basis ? And the duplicates are old versions/instances ?
Yes, all of the above (trying to migrate to a new server). Still need for a new issue or is there a quick answer ?
Am thinking you need to stabilize zigbee2mqtt, then the problem will be resolved.
Am thinking you need to stabilize zigbee2mqtt, then the problem will be resolved.
Hmm I cleared the zigbee2mqtt topic from the broker, restarted everything (i am using homebridge does that matter?), everything came back duplicated :(
Okay, back to what I asked for earlier, a homebridge accessory dump. Likely two of them.
one when you restart everything and it is not duplicate, and one once the duplicates appear.
Okay, back to what I asked for earlier, a homebridge accessory dump. Likely two of them.
one when you restart everything and it is not duplicate, and one once the duplicates appear.
Ok perhaps it is very helpful if I stop all my leftover homebridge instances....pffff sorry for the confusion, all good now.
Glad to hear you solved this
Hi,
I've been trying to use the homebridge-automation plugin to access devices created by a second plugin - homebridge-kumo (Mitsubishi Kumo Cloud devices - i.e., Heating/Cooling devices). This is essentially the same problem reported by #30 .
As part of #30, support for Nest was added with the following changes in Service.js:
A simple workaround to fix this issue is as follows:
however I'm not sure I totally understand why the else clause is arranged the way it is. I would like to propose a "fix" as follows which attempts to preserve context.name if different from this.name and only do the final else clause as a final gasp. Perhaps I'm missing something though.
In my testing this seems to result in the desired output:![image](https://user-images.githubusercontent.com/122214535/211201384-498180fe-0fe5-4776-8101-3a0c4a5e8645.png)
Thanks, -Jeff