zigbee2mqtt
zigbee2mqtt copied to clipboard
[New device support]: Bosch Outdoor Siren
Link
https://www.bosch-smarthome.com/uk/en/products/devices/outdoor-siren/
Database entry
{"id":66,"type":"Unknown","ieeeAddr":"0x003c84fffeeda00b","nwkAddr":29598,"epList":[],"endpoints":{},"interviewCompleted":false,"meta":{},"lastSeen":1660330204622,"defaultSendRequestWhen":"immediate"}
Comments
I would like to add support for this device, but I got stuck in the pairing phase. Although the device starts pairing, it cannot complete the interview. Pairing with the original hub was done using the QR code on the back of the siren, which contains the IEEE link key. I am not sure if it has anything to do with it or not.
I factory reset the device numerous times with no help. I also tried pairing it in both legacy and "smart home controller" modes which is set by the PIN 8 behind the siren.
Attaching the herdsman logs as well. I am not sure if the length of the log is enough, but the device more or less runs in a loop where z2m tries interviewing, interview fails and starts over again.
External converter
No response
Supported color modes
No response
Color temperature range
No response
Just to confirm, I have recently purchased this siren to try and integrate into Z2M and am experiencing the same as you. It begins to pair, then seems to fail interview.
I have purchased a used Bosch Smart Home Controller to see if I can sniff what is going on with the interview - I am wondering if a key is exchanged given that you have to scan a QR code during adding
So, I received the Smart Home Controller today and bound the siren to it. Points to note:
The app recommends that you switch off the siren and then switch it on before pairing
The light on the bottom of the siren turns Amber during interview, then green on success
The switches on the device have no effect in 'Smart Mode' apart from the actual Smart Mode switch 8
The app requires that you scan a QR code however, the device MAC address (labelled as Zigbee EUI-64) and an install code is also printed on the device - Could this be what is being searched for and exchanged during device pairing? Image below:
https://drive.google.com/file/d/1ax1r_NGis5ZkcVardm4UyZ-yIIDE22Tu/view?usp=sharing
I will sort out my sniffing setup and begin capturing device communication during adding to the controllers network
Ok, this is a weird one.
I have captured the join but cannot find a single communication within it that exchanges any sort of Network Encryption Key (only thing close is the APS: Command) yet the traffic is definitely encrypted between the devices..?
Here is the capture:
@Koenkk - any ideas how I can start picking this one apart?
Pairing behaviour may be related to #13069
@danieledwardgeorgehitchcock the Transport Key
is probably packet 23 in the sniff. It seems their gateway uses a custom link key (different the standard one). Can you provide a sniff when pairing to z2m?
Here is the sniff of the device joining Z2M. Not much to report here really, it joins the network, fails the interview, then drops off of the network and the process repeats again:
@danieledwardgeorgehitchcock I don’t have access to my device at the moment, but have you tried sniffing with PIN8 ON and OFF? I wonder if it changes how the device communicates. I remember that when PIN8 was ON, the device would continuously connect, try interviewing, fail and remove itself from z2m in an infinite loop. When the PIN8 was OFF, the device would connect, start interviewing, fail and stay in z2m database as a device that failed interview.
Interesting concept! I thought pin 8 may have been for switching it between smart I.e. wireless mode, and dumb I.e. wired and controlled with switches mode. I'll also try and do another sniff with the switch flipped this morning
I don’t know if it would help, but below is the content of the QR code of the device
RB01SG0D83101826480040000000000000000000003C84FFFEEDA00BDLKCE5D5C1E3D59D1440ABFE85251205C36ADE4
Interesting concept! I thought pin 8 may have been for switching it between smart I.e. wireless mode, and dumb I.e. wired and controlled with switches mode. I'll also try and do another sniff with the switch flipped this morning
It says so in the manual, but it still attempts connecting when you start the device up or factory reset it.
The first 6 digits are the manufacturer code, the next 16 are the product code, after that you have 20 padding digits, then the 16 digit EUI-64 MAC address and finally, the last 36 digits are the install code. The first 42 digits should be the same for all Bosch Outdoor Sirens.
@danieledwardgeorgehitchcock seems the device keeps rejoining, is it possible to pair it to the bosch gateway in legacy mode?
No - it will only pair to the bosch controller in 'smart' mode. Having the device in 'legacy' mode while attempting to pair causes discovery to fail
@danieledwardgeorgehitchcock that is a bummer, I'm not sure if Bosch would be open to helping on this but other that that I see no other way to solve this.
@Koenkk - I have just found this snippet of information:
"The ZigBee implementation of Bosch uses an advanced encryption technology with device specific link keys, which are being used for initial connection to the Controller, where individual encryption keys are being shared. Whilst other manufacturers use publicly available keys for the initial setup, the method of using device-specific encryption keys makes ZigBee a very secure wireless transmission protocol. Presumably, similar technologies are also used for the proprietary 868Mhz-protocol – these devices also have the individual device key printed on it."
Found here
Does this help with any guesses on how the device is added to the controller?
I am not sure if it would be helpful in any way, but found some documentation related to the bosch smart controller. Although this requires an existing controller, it might still be helpful.
Here is the Python library for the Rest API.
I have to say though, it is odd that the siren is neither mentioned in the documentation nor the python library they have for the Rest API.
@danieledwardgeorgehitchcock so maybe the devices pairs and expect the transport key
message to be encrypted with this custom key. This is something we do not support yet and will require some changes in the coordinator fw. I'm not sure if you were able to figure out the specific encryption key of your device already? If yes, then you should also be able to decrypt your sniff with the original gateway.
Thanks, I'll look into it. I'm guessing that it may be something to do with the install code. Hopefully, Bosch don't do anything too clever with it. Any ideas how I would go about decrypting the traffic using the 36 digit key as opposed to the standard 16? Is it as easy as plumbing it into Wireshark in the same fashion as the network key?
Any ideas how I would go about decrypting the traffic using the 36 digit key as opposed to the standard 16? Is it as easy as plumbing it into Wireshark in the same fashion as the network key?
I have no experience with that but I would expect that you can just paste it in.
That didn't work unfortunately however, I have found the documentation from the Zigbee chip manufacturer on how they implement install codes in their SDK.
I am going to do some further reading on this:
This looks promising:
To derive a link key from the installation code and store that into the key table on the Z3 Gateway, which acts as the Trust Center for the centralized network, enter:
option install-code <link key table index> {<Joining Node’s EUI64>} {<installation code + 2-byte CRC>}
For example:option install-code 0 {00 0B 57 FF FE 07 A9 E3} {88 77 66 55 44 33 22 11 11 22 33 44 55 66 77 88 D4 90}
I may be able to pick what I have apart using the chip manufacturers SDK
So,
I feel that I am dangerously close to this, but I cannot quite figure out what I am doing wrong.
Based on the documentation, the install code is a device specific little endian code where the first 16 bits (32 digits) are the network key, and the last 2 bits (4 digits) are a CRC value.
The Silicone Labs co-ordinator stores the device MAC address (labelled as EUI-64) in an ascending array from 0-254.
The MAC address is used as a lookup key for the device network key.
So, I have done the following:
Decoded my QR code which contains all of the information required:
RB01SG0D831018264800400000000000000000009035EAFFFE424783DLKAE3B287281CF16F550733A0CEC38AA31E802
Applying the logic above,
The last 4 digits are the CRC:
E802
The next 32 digits are the Network Key:
AE3B287281CF16F550733A0CEC38AA31
Then the next 4 digits are unknown (could this be of significance??):
DLKA
Then the next 16 digits are the device MAC address:
9035EAFFFE424783
After that, the next 34 digits are a 0 padded model identifier:
0D83101826480040000000000000000000
Then the remaining 6 digits are the manufacturer identifier:
RB01SG
So, all that I should need from the above to decrypt the traffic is the 32 digit network key - the MAC address is only required for storage of the network key in the lookup table, and the remaining fields are the fingerprint to tell the controller and application what the device is that you are pairing.
I am guessing the byte order should be flipped too as it is little endian but, nothing I try seems to work!
It seems the TI firmware has support for install codes. I need to check how it works, what coordinator are you using?
I have the Sonoff ZBDongle-P running Z-Stack 3
Thanks, I will check it
I've added the install code command; can you:
- Update to the latest z2m dev (https://www.zigbee2mqtt.io/advanced/more/switch-to-dev-branch.html) (wait 1 hour before doing so)
- Create a folder in the z2m data directory called
extension
and put a file in it namedinstall.js
with the following contents:
const constants = require('zigbee-herdsman/dist/adapter/z-stack/unpi/constants');
const {Buffer} = require('buffer');
console.log(Buffer);
const Subsystem = constants.Subsystem;
class MyExampleExtension {
constructor(zigbee, mqtt, state, publishEntityState, eventBus, settings, logger) {
this.zigbee = zigbee;
this.mqtt = mqtt;
this.state = state;
this.publishEntityState = publishEntityState;
this.eventBus = eventBus;
this.settings = settings;
this.logger = logger;
}
/**
* This method is called by the controller once Zigbee2MQTT has been started.
*/
async start() {
console.log('Adding install code!');
const payload = {
installCodeFormat: 1,
ieeeaddr: '0x9035EAFFFE424783',
installCode: Buffer.from([0xAE, 0x3B, 0x28, 0x72, 0x81, 0xCF, 0x16, 0xF5, 0x50, 0x73, 0x3A, 0x0C, 0xEC, 0x38, 0xAA, 0x31, 0xE8, 0x02]),
};
const k = await this.zigbee.herdsman.adapter.znp.request(Subsystem.APP_CNF, 'bdbAddInstallCode', payload);
console.log(k);
console.log('Added install code');
}
}
module.exports = MyExampleExtension;
- Start z2m and try to pair the device in the non legacy mode now
For reference, this is the docs of the install code command:

I already run the Dev branch (latest-dev) in Docker. Tried updating it just now via docker-compose but it said that it was up-to-date..?
I proceeded to add the extension and I got the following:
Zigbee2MQTT:debug 2022-08-30 04:55:57: Received MQTT message on 'zigbee2mqtt/bridge/extensions' with data '[]'
[Function: Buffer] {
poolSize: 8192,
from: [Function: from],
of: [Function: of],
alloc: [Function: alloc],
allocUnsafe: [Function: allocUnsafe],
isBuffer: [Function: isBuffer],
allocUnsafeSlow: [Function: allocUnsafeSlow],
compare: [Function: compare],
isEncoding: [Function: isEncoding],
concat: [Function: concat],
byteLength: [Function: byteLength],
[Symbol(kIsEncodingSymbol)]: [Function: isEncoding]
}
Adding install code!
Zigbee2MQTT:error 2022-08-30 04:55:57: Failed to call 'MyExampleExtension' 'start' (Error: Command 'bdbAddInstallCode' from subsystem '15' not found
at Function.createRequest (/app/node_modules/zigbee-herdsman/src/adapter/z-stack/znp/zpiObject.ts:45:19)
at Znp.request (/app/node_modules/zigbee-herdsman/src/adapter/z-stack/znp/znp.ts:299:34)
at MyExampleExtension.start (/app/dist/util/externally-loaded.js:27:58)
at Controller.callExtensions (/app/lib/controller.ts:315:40)
at Controller.addExtension (/app/lib/controller.ts:187:20)
at ExternalExtension.loadExtension (/app/lib/extension/externalExtension.ts:91:20)
at processTicksAndRejections (node:internal/process/task_queues:96:5))
Zigbee2MQTT:info 2022-08-30 04:55:57: Started frontend on port 0.0.0.0:8881
I am guessing that if you made changes to the Z2M codebase, they haven't been merged yet, or am I missing something?
I will remove my container and re-add just to make sure it isn't something on my side
So, the above was me being an idiot. I dropped the container and re-created it. The function loaded successfully and....
WE HAVE A SUCCESSFUL JOIN!!!!
[Function: Buffer] {
Zigbee2MQTT:debug 2022-08-30 05:04:02: Received MQTT message on 'zigbee2mqtt/bridge/info' with data '{"commit":"8af3ad5","config":{"advanced":{"adapter_concurrent":null,"adapter_delay":null,"availability_blacklist":[],"availability_blocklist":[],"availability_passlist":[],"availability_whitelist":[],"cache_state":true,"cache_state_persistent":true,"cache_state_send_on_startup":true,"channel":21,"elapsed":false,"ext_pan_id":[221,221,221,221,221,221,221,221],"homeassistant_legacy_entity_attributes":false,"last_seen":"disable","legacy_api":false,"legacy_availability_payload":false,"log_directory":"/app/data/log/%TIMESTAMP%","log_file":"log.txt","log_level":"debug","log_output":["console","file"],"log_rotation":true,"log_symlink_current":true,"log_syslog":{"app_name":"Zigbee2MQTT","eol":"/n","host":"localhost","localhost":"localhost","path":"/dev/log","pid":"process.pid","port":123,"protocol":"tcp4","type":"5424"},"output":"json","pan_id":6754,"report":false,"soft_reset_timeout":0,"timestamp_format":"YYYY-MM-DD HH:mm:ss"},"blocklist":[],"device_options":{"legacy":false},"devices":{"0x680ae2fffe6faf49":{"friendly_name":"0x680ae2fffe6faf49"},"0xa4c1381538445fab":{"friendly_name":"0xa4c1381538445fab"}},"external_converters":["./external_converters/vimar_iot_thermostat.js","./external_converters/tuya_4ch_relay.js"],"frontend":{"host":"0.0.0.0","port":8881},"groups":{},"homeassistant":false,"map_options":{"graphviz":{"colors":{"fill":{"coordinator":"#e04e5d","enddevice":"#fff8ce","router":"#4ea3e0"},"font":{"coordinator":"#ffffff","enddevice":"#000000","router":"#ffffff"},"line":{"active":"#009900","inactive":"#994444"}}}},"mqtt":{"base_topic":"zigbee2mqtt","force_disable_retain":false,"include_device_information":false,"server":"mqtt://mosquitto:8883"},"ota":{"disable_automatic_update_check":false,"update_check_interval":1440},"passlist":[],"permit_join":false,"serial":{"disable_led":false,"port":"/dev/ttyUSB0"}},"config_schema":{"definitions":{"device":{"properties":{"debounce":{"description":"Debounces messages of this device","title":"Debounce","type":"number"},"debounce_ignore":{"description":"Protects unique payload values of specified payload properties from overriding within debounce time","examples":["action"],"items":{"type":"string"},"title":"Ignore debounce","type":"array"},"filtered_attributes":{"description":"Filter attributes with regex from published payload.","examples":["^temperature$","^battery$","^action$"],"items":{"type":"string"},"title":"Filtered publish attributes","type":"array"},"filtered_cache":{"description":"Filter attributes with regex from being added to the cache, this prevents the attribute from being in the published payload when the value didn't change.","examples":["^input_actions$"],"items":{"type":"string"},"title":"Filtered attributes from cache","type":"array"},"filtered_optimistic":{"description":"Filter attributes with regex from optimistic publish payload when calling /set. (This has no effect if optimistic is set to false).","examples":["^color_(mode|temp)$","color"],"items":{"type":"string"},"title":"Filtered optimistic attributes","type":"array"},"friendly_name":{"description":"Used in the MQTT topic of a device. By default this is the device ID","readOnly":true,"title":"Friendly name","type":"string"},"homeassistant":{"properties":{"name":{"description":"Name of the device in Home Assistant","title":"Home Assistant name","type":"string"}},"title":"Home Assistant","type":["object","null"]},"icon":{"description":"The user-defined device icon for the frontend. It can be a link to an image (not a path to a file) or base64 encoded data URL like: image/svg+xml;base64,PHN2ZyB3aW....R0aD","title":"Icon","type":"string"},"optimistic":{"default":true,"description":"Publish optimistic state after set","title":"Optimistic","type":"boolean"},"qos":{"description":"QoS level for MQTT messages of this device","title":"QoS","type":"number"},"retain":{"description":"Retain MQTT messages of this device","title":"Retain","type":"boolean"},"retention":{"description":"Sets the MQTT Message Expiry in seconds, Make sure to set mqtt.version to 5","title":"Retention","type":"number"}},"required":["friendly_name"],"type":"object"},"group":{"properties":{"devices":{"items":{"type":"string"},"type":"array"},"filtered_attributes":{"items":{"type":"string"},"type":"array"},"friendly_name":{"type":"string"},"off_state":{"default":"auto","description":"Control when to publish state OFF for a group. 'all_members_off': only publish state OFF when all group memebers are in state OFF, 'last_member_state': publish state OFF whenever one of its members changes to OFF","enum":["all_members_off","last_member_state"],"requiresRestart":true,"title":"Group off state","type":["string"]},"optimistic":{"type":"boolean"},"qos":{"type":"number"},"retain":{"type":"boolean"}},"required":["friendly_name"],"type":"object"}},"properties":{"advanced":{"properties":{"adapter_concurrent":{"description":"Adapter concurrency (e.g. 2 for CC2531 or 16 for CC26X2R1) (default: null, uses recommended value)","requiresRestart":true,"title":"Adapter concurrency","type":["number","null"]},"adapter_delay":{"description":"Adapter delay","requiresRestart":true,"title":"Adapter delay","type":["number","null"]},"cache_state":{"default":true,"description":"MQTT message payload will contain all attributes, not only changed ones. Has to be true when integrating via Home Assistant","title":"Cache state","type":"boolean"},"cache_state_persistent":{"default":true,"description":"Persist cached state, only used when cache_state: true","title":"Persist cache state","type":"boolean"},"cache_state_send_on_startup":{"default":true,"description":"Send cached state on startup, only used when cache_state: true","title":"Send cached state on startup","type":"boolean"},"channel":{"default":11,"description":"Zigbee channel, changing requires repairing all devices! (Note: use a ZLL channel: 11, 15, 20, or 25 to avoid Problems)","examples":[15,20,25],"maximum":26,"minimum":11,"requiresRestart":true,"title":"ZigBee channel","type":"number"},"elapsed":{"default":false,"description":"Add an elapsed attribute to MQTT messages, contains milliseconds since the previous msg","title":"Elapsed","type":"boolean"},"ext_pan_id":{"description":"Zigbee extended pan ID, changing requires repairing all devices!","items":{"type":"number"},"requiresRestart":true,"title":"Ext Pan ID","type":"array"},"last_seen":{"default":"disable","description":"Add a last_seen attribute to MQTT messages, contains date/time of last Zigbee message","enum":["disable","ISO_8601","ISO_8601_local","epoch"],"title":"Last seen","type":"string"},"legacy_api":{"default":true,"description":"Disables the legacy api (false = disable)","requiresRestart":true,"title":"Legacy API","type":"boolean"},"legacy_availability_payload":{"default":true,"description":"Payload to be used for device availabilty and bridge/state topics. true = text, false = JSON","requiresRestart":true,"title":"Legacy availability payload","type":"boolean"},"log_directory":{"description":"Location of log directory","examples":["data/log/%TIMESTAMP%"],"requiresRestart":true,"title":"Log directory","type":"string"},"log_file":{"default":"log.txt","description":"Log file name, can also contain timestamp","examples":["zigbee2mqtt_%TIMESTAMP%.log"],"requiresRestart":true,"title":"Log file","type":"string"},"log_level":{"default":"info","description":"Logging level","enum":["info","warn","error","debug"],"title":"Log level","type":"string"},"log_output":{"description":"Output location of the log, leave empty to suppress logging","items":{"enum":["console","file","syslog"],"type":"string"},"requiresRestart":true,"title":"Log output","type":"array"},"log_rotation":{"default":true,"description":"Log rotation","requiresRestart":true,"title":"Log rotation","type":"boolean"},"log_symlink_current":{"default":false,"description":"Create symlink to current logs in the log directory","requiresRestart":true,"title":"Log symlink current","type":"boolean"},"log_syslog":{"properties":{"app_name":{"default":"Zigbee2MQTT","description":"The name of the application (Default: Zigbee2MQTT).","title":"Localhost","type":"string"},"eol":{"default":"/n","description":"The end of line character to be added to the end of the message (Default: Message without modifications).","title":"eol","type":"string"},"host":{"default":"localhost","description":"The host running syslogd, defaults to localhost.","title":"Host","type":"string"},"localhost":{"default":"localhost","description":"Host to indicate that log messages are coming from (Default: localhost).","title":"Localhost","type":"string"},"path":{"default":"/dev/log","description":"The path to the syslog dgram socket (i.e. /dev/log or /var/run/syslog for OS X).","examples":["/var/run/syslog"],"title":"Path","type":"string"},"pid":{"default":"process.pid","description":"PID of the process that log messages are coming from (Default process.pid).","title":"PID","type":"string"},"port":{"default":123,"description":"The port on the host that syslog is running on, defaults to syslogd's default port.","title":"Port","type":"number"},"protocol":{"default":"tcp4","description":"The network protocol to log over (e.g. tcp4, udp4, tls4, unix, unix-connect, etc).","examples":["udp4","tls4","unix","unix-connect"],"title":"Protocol","type":"string"},"type":{"default":"5424","description":"The type of the syslog protocol to use (Default: BSD, also valid: 5424).","title":"Type","type":"string"}},"title":"syslog","type":"object"},"network_key":{"description":"Network encryption key, changing requires repairing all devices!","oneOf":[{"title":"Network key(string)","type":"string"},{"items":{"type":"number"},"title":"Network key(array)","type":"array"}],"requiresRestart":true,"title":"Network key"},"output":{"description":"Examples when 'state' of a device is published json: topic: 'zigbee2mqtt/my_bulb' payload '{\"state\": \"ON\"}' attribute: topic 'zigbee2mqtt/my_bulb/state' payload 'ON' attribute_and_json: both json and attribute (see above)","enum":["attribute_and_json","attribute","json"],"title":"MQTT output type","type":"string"},"pan_id":{"description":"ZigBee pan ID, changing requires repairing all devices!","oneOf":[{"title":"Pan ID (string)","type":"string"},{"title":"Pan ID (number)","type":"number"}],"requiresRestart":true,"title":"Pan ID"},"timestamp_format":{"description":"Log timestamp format","examples":["YYYY-MM-DD HH:mm:ss"],"requiresRestart":true,"title":"Timestamp format","type":"string"},"transmit_power":{"description":"Transmit power of adapter, only available for Z-Stack (CC253*/CC2652/CC1352) adapters, CC2652 = 5dbm, CC1352 max is = 20dbm (5dbm default)","requiresRestart":true,"title":"Transmit power","type":["number","null"]}},"title":"Advanced","type":"object"},"availability":{"description":"Checks whether devices are online/offline","oneOf":[{"title":"Availability (simple)","type":"boolean"},{"properties":{"active":{"description":"Options for active devices (routers/mains powered)","properties":{"timeout":{"default":10,"description":"Time after which an active device will be marked as offline in minutes","requiresRestart":true,"title":"Timeout","type":"number"}},"requiresRestart":true,"title":"Active","type":"object"},"passive":{"description":"Options for passive devices (mostly battery powered)","properties":{"timeout":{"default":1500,"description":"Time after which an passive device will be marked as offline in minutes","requiresRestart":true,"title":"Timeout","type":"number"}},"requiresRestart":true,"title":"Passive","type":"object"}},"title":"Availability (advanced)","type":"object"}],"requiresRestart":true,"title":"Availability"},"ban":{"items":{"type":"string"},"readOnly":true,"requiresRestart":true,"title":"Ban (deprecated, use blocklist)","type":"array"},"blocklist":{"description":"Block devices from the network (by ieeeAddr)","items":{"type":"string"},"requiresRestart":true,"title":"Blocklist","type":"array"},"device_options":{"title":"Options that are applied to all devices","type":"object"},"devices":{"patternProperties":{"^.*$":{"$ref":"#/definitions/device"}},"propertyNames":{"pattern":"^0x[\\d\\w]{16}$"},"type":"object"},"external_converters":{"description":"You can define external converters to e.g. add support for a DiY device","examples":["DIYRuZ_FreePad.js"],"items":{"type":"string"},"requiresRestart":true,"title":"External converters","type":"array"},"frontend":{"oneOf":[{"title":"Frontend (simple)","type":"boolean"},{"properties":{"auth_token":{"description":"Enables authentication, disabled by default","requiresRestart":true,"title":"Auth token","type":["string","null"]},"host":{"default":"0.0.0.0","description":"Frontend binding host","requiresRestart":true,"title":"Bind host","type":"string"},"port":{"default":8080,"description":"Frontend binding port","requiresRestart":true,"title":"Port","type":"number"},"url":{"description":"URL on which the frontend can be reached, currently only used for the Home Assistant device configuration page","requiresRestart":true,"title":"URL","type":["string","null"]}},"title":"Frontend (advanced)","type":"object"}],"requiresRestart":true,"title":"Frontend"},"groups":{"patternProperties":{"^.*$":{"$ref":"#/definitions/group"}},"propertyNames":{"pattern":"^[\\w].*$"},"type":"object"},"homeassistant":{"default":false,"description":"Home Assistant integration (MQTT discovery)","oneOf":[{"title":"Home Assistant (simple)","type":"boolean"},{"properties":{"discovery_topic":{"description":"Home Assistant discovery topic","examples":["homeassistant"],"requiresRestart":true,"title":"Homeassistant discovery topic","type":"string"},"legacy_entity_attributes":{"default":true,"description":"Home Assistant legacy entity attributes, when enabled Zigbee2MQTT will add state attributes to each entity, additional to the separate entities and devices it already creates","title":"Home Assistant legacy entity attributes","type":"boolean"},"legacy_triggers":{"default":true,"description":"Home Assistant legacy triggers, when enabled Zigbee2mqt will send an empty 'action' or 'click' after one has been send. A 'sensor_action' and 'sensor_click' will be discoverd","title":"Home Assistant legacy triggers","type":"boolean"},"status_topic":{"description":"Home Assistant status topic","examples":["homeassistant/status"],"requiresRestart":true,"title":"Home Assistant status topic","type":"string"}},"title":"Home Assistant (advanced)","type":"object"}],"requiresRestart":true,"title":"Home Assistant integration"},"map_options":{"properties":{"graphviz":{"properties":{"colors":{"properties":{"fill":{"properties":{"coordinator":{"type":"string"},"enddevice":{"type":"string"},"router":{"type":"string"}},"type":"object"},"font":{"properties":{"coordinator":{"type":"string"},"enddevice":{"type":"string"},"router":{"type":"string"}},"type":"object"},"line":{"properties":{"active":{"type":"string"},"inactive":{"type":"string"}},"type":"object"}},"type":"object"}},"type":"object"}},"title":"Networkmap","type":"object"},"mqtt":{"properties":{"base_topic":{"default":"zigbee2mqtt","description":"MQTT base topic for Zigbee2MQTT MQTT messages","examples":["zigbee2mqtt"],"requiresRestart":true,"title":"Base topic","type":"string"},"ca":{"description":"Absolute path to SSL/TLS certificate of CA used to sign server and client certificates","examples":["/etc/ssl/mqtt-ca.crt"],"requiresRestart":true,"title":"Certificate authority","type":"string"},"cert":{"description":"Absolute path to SSL/TLS certificate for client-authentication","examples":["/etc/ssl/mqtt-client.crt"],"requiresRestart":true,"title":"SSL/TLS certificate","type":"string"},"client_id":{"description":"MQTT client ID","examples":["MY_CLIENT_ID"],"requiresRestart":true,"title":"Client ID","type":"string"},"force_disable_retain":{"default":false,"description":"Disable retain for all send messages. ONLY enable if you MQTT broker doesn't support retained message (e.g. AWS IoT core, Azure IoT Hub, Google Cloud IoT core, IBM Watson IoT Platform). Enabling will break the Home Assistant integration","requiresRestart":true,"title":"Force disable retain","type":"boolean"},"include_device_information":{"default":false,"description":"Include device information to mqtt messages","title":"Include device information",�"type":"boolean"},"keepalive":{"default":60,"description":"MQTT keepalive in second","requiresRestart":true,"title":"Keepalive","type":"number"},"key":{"description":"Absolute path to SSL/TLS key for client-authentication","examples":["/etc/ssl/mqtt-client.key"],"requiresRestart":true,"title":"SSL/TLS key","type":"string"},"password":{"description":"MQTT server authentication password","examples":["ILOVEPELMENI"],"requiresRestart":true,"title":"Password","type":"string"},"reject_unauthorized":{"default":true,"description":"Disable self-signed SSL certificate","requiresRestart":true,"title":"Reject unauthorized","type":"boolean"},"server":{"description":"MQTT server URL (use mqtts:// for SSL/TLS connection)","examples":["mqtt://localhost:1883"],"requiresRestart":true,"title":"MQTT server","type":"string"},"user":{"description":"MQTT server authentication user","examples":["johnnysilverhand"],"requiresRestart":true,"title":"User","type":"string"},"version":{"default":4,"description":"MQTT protocol version","examples":[5],"requiresRestart":true,"title":"Version","type":["number","null"]}},"required":["server"],"title":"MQTT","type":"object"},"ota":{"properties":{"disable_automatic_update_check":{"default":false,"description":"Zigbee devices may request a firmware update, and do so frequently, causing Zigbee2MQTT to reach out to third party servers. If you disable these device initiated checks, you can still initiate a firmware update check manually.","title":"Disable automatic update check","type":"boolean"},"ikea_ota_use_test_url":{"default":false,"description":"Use IKEA TRADFRI OTA test server, see OTA updates documentation","requiresRestart":true,"title":"IKEA TRADFRI OTA use test url","type":"boolean"},"update_check_interval":{"default":1440,"description":"Your device may request a check for a new firmware update. This value determines how frequently third party servers may actually be contacted to look for firmware updates. The value is set in minutes, and the default is 1 day.","title":"Update check interval","type":"number"},"zigbee_ota_override_index_location":{"description":"Location of override OTA index file","examples":["index.json"],"requiresRestart":true,"title":"OTA index override file name","type":"string"}},"title":"OTA updates","type":"object"},"passlist":{"description":"Allow only certain devices to join the network (by ieeeAddr). Note that all devices not on the passlist will be removed from the network!","items":{"type":"string"},"requiresRestart":true,"title":"Passlist","type":"array"},"permit_join":{"default":false,"description":"Allow new devices to join (re-applied at restart)","title":"Permit join","type":"boolean"},"serial":{"properties":{"adapter":{"default":"auto","description":"Adapter type, not needed unless you are experiencing problems","enum":["deconz","zstack","zigate","ezsp","auto"],"requiresRestart":true,"title":"Adapter","type":["string"]},"baudrate":{"description":"Baud rate speed for serial port, this can be anything firmware support but default is 115200 for Z-Stack and EZSP, 38400 for Deconz, however note that some EZSP firmware need 57600","examples":[38400,57600,115200],"requiresRestart":true,"title":"Baudrate","type":"number"},"disable_led":{"default":false,"description":"Disable LED of the adapter if supported","requiresRestart":true,"title":"Disable led","type":"boolean"},"port":{"description":"Location of the adapter. To autodetect the port, set null","examples":["/dev/ttyACM0"],"requiresRestart":true,"title":"Port","type":["string","null"]},"rtscts":{"description":"RTS / CTS Hardware Flow Control for serial port","requiresRestart":true,"title":"RTS / CTS","type":"boolean"}},"title":"Serial","type":"object"},"whitelist":{"items":{"type":"string"},"readOnly":true,"requiresRestart":true,"title":"Whitelist (deprecated, use passlist)","type":"array"}},"required":["mqtt"],"type":"object"},"coordinator":{"ieee_address":"0x00124b00257cae15","meta":{"maintrel":1,"majorrel":2,"minorrel":7,"product":1,"revision":20210708,"transportrev":2},"type":"zStack3x0"},"log_level":"debug","network":{"channel":21,"extended_pan_id":"0x00124b00257cae15","pan_id":6754},"permit_join":false,"restart_required":false,"version":"1.26.0-dev"}'
Zigbee2MQTT:debug 2022-08-30 05:04:02: Received MQTT message on 'zigbee2mqtt/bridge/devices' with data '[{"definition":null,"endpoints":{"1":{"bindings":[],"clusters":{"input":[],"output":[]},"configured_reportings":[],"scenes":[]},"10":{"bindings":[],"clusters":{"input":[],"output":[]},"configured_reportings":[],"scenes":[]},"11":{"bindings":[],"clusters":{"input":["ssIasAce","genTime"],"output":["ssIasZone","ssIasWd"]},"configured_reportings":[],"scenes":[]},"110":{"bindings":[],"clusters":{"input":[],"output":[]},"configured_reportings":[],"scenes":[]},"12":{"bindings":[],"clusters":{"input":[],"output":[]},"configured_reportings":[],"scenes":[]},"13":{"bindings":[],"clusters":{"input":["genOta"],"output":[]},"configured_reportings":[],"scenes":[]},"2":{"bindings":[],"clusters":{"input":[],"output":[]},"configured_reportings":[],"scenes":[]},"242":{"bindings":[],"clusters":{"input":[],"output":[]},"configured_reportings":[],"scenes":[]},"3":{"bindings":[],"clusters":{"input":[],"output":[]},"configured_reportings":[],"scenes":[]},"4":{"bindings":[],"clusters":{"input":[],"output":[]},"configured_reportings":[],"scenes":[]},"47":{"bindings":[],"clusters":{"input":[],"output":[]},"configured_reportings":[],"scenes":[]},"5":{"bindings":[],"clusters":{"input":[],"output":[]},"configured_reportings":[],"scenes":[]},"6":{"bindings":[],"clusters":{"input":[],"output":[]},"configured_reportings":[],"scenes":[]},"8":{"bindings":[],"clusters":{"input":[],"output":[]},"configured_reportings":[],"scenes":[]}},"friendly_name":"Coordinator","ieee_address":"0x00124b00257cae15","interview_completed":true,"interviewing":false,"network_address":0,"supported":false,"type":"Coordinator"},{"date_code":"","definition":{"description":"4Ch Din Zigbee/RF Relay Module","exposes":[{"endpoint":"l1","features":[{"access":7,"description":"On/off state of the switch","endpoint":"l1","name":"state","property":"state_l1","type":"binary","value_off":"OFF","value_on":"ON","value_toggle":"TOGGLE"}],"type":"switch"},{"access":7,"description":"Controls the behavior when the device is powered on","endpoint":"l1","name":"power_on_behavior","property":"power_on_behavior_l1","type":"enum","values":["off","previous","on"]},{"endpoint":"l2","features":[{"access":7,"description":"On/off state of the switch","endpoint":"l2","name":"state","property":"state_l2","type":"binary","value_off":"OFF","value_on":"ON","value_toggle":"TOGGLE"}],"type":"switch"},{"access":7,"description":"Controls the behavior when the device is powered on","endpoint":"l2","name":"power_on_behavior","property":"power_on_behavior_l2","type":"enum","values":["off","previous","on"]},{"endpoint":"l3","features":[{"access":7,"description":"On/off state of the switch","endpoint":"l3","name":"state","property":"state_l3","type":"binary","value_off":"OFF","value_on":"ON","value_toggle":"TOGGLE"}],"type":"switch"},{"access":7,"description":"Controls the behavior when the device is powered on","endpoint":"l3","name":"power_on_behavior","property":"power_on_behavior_l3","type":"enum","values":["off","previous","on"]},{"endpoint":"l4","features":[{"access":7,"description":"On/off state of the switch","endpoint":"l4","name":"state","property":"state_l4","type":"binary","value_off":"OFF","value_on":"ON","value_toggle":"TOGGLE"}],"type":"switch"},{"access":7,"description":"Controls the behavior when the device is powered on","endpoint":"l4","name":"power_on_behavior","property":"power_on_behavior_l4","type":"enum","values":["off","previous","on"]},{"access":1,"description":"Link quality (signal strength)","name":"linkquality","property":"linkquality","type":"numeric","unit":"lqi","value_max":255,"value_min":0}],"model":"ZG-003-RF","options":[],"supports_ota":false,"vendor":"Tuya"},"endpoints":{"1":{"bindings":[{"cluster":"genOnOff","target":{"endpoint":1,"ieee_address":"0x00124b00257cae15","type":"endpoint"}}],"clusters":{"input":["genIdentify","genGroups","genScenes","genOnOff","57344","manuSpecificTuya_3","genBasic"],"output":["genOta","genTime"]},"configured_reportings":[],"scenes":[]},"2":{"bindings":[{"cluster":"genOnOff","target":{"endpoint":1,"ieee_address":"0x00124b00257cae15","type":"endpoint"}}],"clusters":{"input":["genGroups","genScenes","genOnOff","manuSpecificTuya_3"],"output":[]},"configured_reportings":[],"scenes":[]},"242":{"bindings":[],"clusters":{"input":[],"output":["greenPower"]},"configured_reportings":[],"scenes":[]},"3":{"bindings":[{"cluster":"genOnOff","target":{"endpoint":1,"ieee_address":"0x00124b00257cae15","type":"endpoint"}}],"clusters":{"input":["genGroups","genScenes","genOnOff","manuSpecificTuya_3"],"output":[]},"configured_reportings":[],"scenes":[]},"4":{"bindings":[{"cluster":"genOnOff","target":{"endpoint":1,"ieee_address":"0x00124b00257cae15","type":"endpoint"}}],"clusters":{"input":["genGroups","genScenes","genOnOff","manuSpecificTuya_3"],"output":[]},"configured_reportings":[],"scenes":[]}},"friendly_name":"0xa4c1381538445fab","ieee_address":"0xa4c1381538445fab","interview_completed":true,"interviewing":false,"manufacturer":"_TZ3000_u3oupgdy","model_id":"TS0004","network_address":20472,"power_source":"Mains (single phase)","supported":true,"type":"Router"}]'
Zigbee2MQTT:debug 2022-08-30 05:04:02: Received MQTT message on 'zigbee2mqtt/bridge/groups' with data '[]'
Zigbee2MQTT:debug 2022-08-30 05:04:02: Received MQTT message on 'zigbee2mqtt/bridge/extensions' with data '[{"code":"const constants = require('zigbee-herdsman/dist/adapter/z-stack/unpi/constants');\nconst {Buffer} = require('buffer');\nconsole.log(Buffer);\nconst Subsystem = constants.Subsystem;\n\nclass MyExampleExtension {\n constructor(zigbee, mqtt, state, publishEntityState, eventBus, settings, logger) {\n this.zigbee = zigbee;\n this.mqtt = mqtt;\n this.state = state;\n this.publishEntityState = publishEntityState;\n this.eventBus = eventBus;\n this.settings = settings;\n this.logger = logger;\n }\n\n /**\n * This method is called by the controller once Zigbee2MQTT has been started.\n */\n async start() {\n console.log('Adding install code!');\n const payload = {\n installCodeFormat: 1,\n ieeeaddr: '0x9035EAFFFE424783',\n installCode: Buffer.from([0xAE, 0x3B, 0x28, 0x72, 0x81, 0xCF, 0x16, 0xF5, 0x50, 0x73, 0x3A, 0x0C, 0xEC, 0x38, 0xAA, 0x31, 0xE8, 0x02]),\n };\n const k = await this.zigbee.herdsman.adapter.znp.request(Subsystem.APP_CNF, 'bdbAddInstallCode', payload);\n console.log(k);\n console.log('Added install code');\n }\n}\n\nmodule.exports = MyExampleExtension;\n","name":"install_code.js"}]'
poolSize: 8192,
from: [Function: from],
of: [Function: of],
alloc: [Function: alloc],
allocUnsafe: [Function: allocUnsafe],
allocUnsafeSlow: [Function: allocUnsafeSlow],
isBuffer: [Function: isBuffer],
compare: [Function: compare],
isEncoding: [Function: isEncoding],
concat: [Function: concat],
byteLength: [Function: byteLength],
[Symbol(kIsEncodingSymbol)]: [Function: isEncoding]
}
Adding install code!
Zigbee2MQTT:info 2022-08-30 05:04:02: Started frontend on port 0.0.0.0:8881
Zigbee2MQTT:info 2022-08-30 05:04:02: MQTT publish: topic 'zigbee2mqtt/0xa4c1381538445fab', payload '{"linkquality":189,"power_on_behavior_l1":"off","power_on_behavior_l2":"off","power_on_behavior_l3":"off","power_on_behavior_l4":"off","state_l1":"OFF","state_l2":"OFF","state_l3":"OFF","state_l4":"OFF"}'
ZpiObject {
subsystem: 15,
command: 'bdbAddInstallCode',
commandID: 4,
payload: { status: 0 },
type: 3,
parameters: [ { name: 'status', parameterType: 0 } ]
Added install code
Zigbee2MQTT:debug 2022-08-30 05:05:36: Received MQTT message on 'zigbee2mqtt/bridge/request/permit_join' with data '{"device":null,"time":254,"transaction":"j7pex-1","value":true}'
Zigbee2MQTT:info 2022-08-30 05:05:36: Zigbee: allowing new devices to join.
Zigbee2MQTT:info 2022-08-30 05:05:36: MQTT publish: topic 'zigbee2mqtt/bridge/response/permit_join', payload '{"data":{"time":254,"value":true},"status":"ok","transaction":"j7pex-1"}'
Zigbee2MQTT:info 2022-08-30 05:05:39: Device '0x9035eafffe424783' joined
Zigbee2MQTT:info 2022-08-30 05:05:39: MQTT publish: topic 'zigbee2mqtt/bridge/event', payload '{"data":{"friendly_name":"0x9035eafffe424783","ieee_address":"0x9035eafffe424783"},"type":"device_joined"}'
Zigbee2MQTT:info 2022-08-30 05:05:39: Starting interview of '0x9035eafffe424783'
Zigbee2MQTT:info 2022-08-30 05:05:39: MQTT publish: topic 'zigbee2mqtt/bridge/event', payload '{"data":{"friendly_name":"0x9035eafffe424783","ieee_address":"0x9035eafffe424783","status":"started"},"type":"device_interview"}'
Zigbee2MQTT:debug 2022-08-30 05:05:39: Device '0x9035eafffe424783' announced itself
Zigbee2MQTT:info 2022-08-30 05:05:39: MQTT publish: topic 'zigbee2mqtt/bridge/event', payload '{"data":{"friendly_name":"0x9035eafffe424783","ieee_address":"0x9035eafffe424783"},"type":"device_announce"}'
Zigbee2MQTT:debug 2022-08-30 05:05:54: Received Zigbee message from '0x9035eafffe424783', type 'readResponse', cluster 'genBasic', data '{"modelId":"RBSH-OS-ZB-EU"}' from endpoint 1 with groupID 0
Zigbee2MQTT:debug 2022-08-30 05:05:54: Skipping message, definition is undefined and still interviewing
Zigbee2MQTT:debug 2022-08-30 05:05:54: Received Zigbee message from '0x9035eafffe424783', type 'readResponse', cluster 'genBasic', data '{"manufacturerName":"Bosch"}' from endpoint 1 with groupID 0
Zigbee2MQTT:debug 2022-08-30 05:05:55: Received Zigbee message from '0x9035eafffe424783', type 'readResponse', cluster 'genBasic', data '{"powerSource":132}' from endpoint 1 with groupID 0
Zigbee2MQTT:debug 2022-08-30 05:05:55: Skipping message, definition is undefined and still interviewing
Zigbee2MQTT:debug 2022-08-30 05:05:55: Received Zigbee message from '0x9035eafffe424783', type 'readResponse', cluster 'genBasic', data '{"zclVersion":3}' from endpoint 1 with groupID 0
Zigbee2MQTT:debug 2022-08-30 05:05:56: Received Zigbee message from '0x9035eafffe424783', type 'readResponse', cluster 'genBasic', data '{"appVersion":2}' from endpoint 1 with groupID 0
Zigbee2MQTT:debug 2022-08-30 05:05:56: Skipping message, definition is undefined and still interviewing
Zigbee2MQTT:debug 2022-08-30 05:05:56: Received Zigbee message from '0x9035eafffe424783', type 'readResponse', cluster 'genBasic', data '{"stackVersion":7}' from endpoint 1 with groupID 0
Zigbee2MQTT:debug 2022-08-30 05:05:57: Received Zigbee message from '0x9035eafffe424783', type 'readResponse', cluster 'genBasic', data '{"dateCode":"20211012"}' from endpoint 1 with groupID 0
Zigbee2MQTT:debug 2022-08-30 05:05:57: Skipping message, definition is undefined and still interviewing
Zigbee2MQTT:debug 2022-08-30 05:05:57: Received Zigbee message from '0x9035eafffe424783', type 'readResponse', cluster 'genBasic', data '{"hwVersion":32}' from endpoint 1 with groupID 0
Zigbee2MQTT:debug 2022-08-30 05:05:58: Received Zigbee message from '0x9035eafffe424783', type 'readResponse', cluster 'genBasic', data '{"swBuildId":"V1.19.00"}' from endpoint 1 with groupID 0
Zigbee2MQTT:debug 2022-08-30 05:05:58: Received Zigbee message from '0x9035eafffe424783', type 'readResponse', cluster 'ssIasZone', data '{"iasCieAddr":"0x0000000000000000","zoneState":0}' from endpoint 1 with groupID 0
Zigbee2MQTT:debug 2022-08-30 05:05:58: Skipping message, definition is undefined and still interviewing
Zigbee2MQTT:debug 2022-08-30 05:06:00: Received Zigbee message from '0x9035eafffe424783', type 'readResponse', cluster 'ssIasZone', data '{"iasCieAddr":"0x00124b00257cae15","zoneState":1}' from endpoint 1 with groupID 0
Zigbee2MQTT:debug 2022-08-30 05:06:00: Skipping message, definition is undefined and still interviewing
Zigbee2MQTT:debug 2022-08-30 05:06:01: Received Zigbee message from '0x9035eafffe424783', type 'readResponse', cluster 'genPollCtrl', data '{"checkinInterval":6480}' from endpoint 1 with groupID 0
Zigbee2MQTT:debug 2022-08-30 05:06:01: Skipping message, definition is undefined and still interviewing
Zigbee2MQTT:info 2022-08-30 05:06:01: Successfully interviewed '0x9035eafffe424783', device has successfully been paired
Zigbee2MQTT:warn 2022-08-30 05:06:01: Device '0x9035eafffe424783' with Zigbee model 'RBSH-OS-ZB-EU' and manufacturer name 'Bosch' is NOT supported, please follow https://www.zigbee2mqtt.io/advanced/support-new-devices/01_support_new_devices.html
Zigbee2MQTT:info 2022-08-30 05:06:01: MQTT publish: topic 'zigbee2mqtt/bridge/event', payload '{"data":{"definition":null,"friendly_name":"0x9035eafffe424783","ieee_address":"0x9035eafffe424783","status":"successful","supported":false},"type":"device_interview"}'
Zigbee2MQTT:debug 2022-08-30 05:06:02: Received Zigbee message from '0x9035eafffe424783', type 'attributeReport', cluster 'genPowerCfg', data '{"batteryPercentageRemaining":200}' from endpoint 1 with groupID 0
Zigbee2MQTT:warn 2022-08-30 05:06:02: Received message from unsupported device with Zigbee model 'RBSH-OS-ZB-EU' and manufacturer name 'Bosch'
Zigbee2MQTT:warn 2022-08-30 05:06:02: Please see: https://www.zigbee2mqtt.io/advanced/support-new-devices/01_support_new_devices.html
Zigbee2MQTT:debug 2022-08-30 05:06:02: Received Zigbee message from '0x9035eafffe424783', type 'attributeReport', cluster 'genPowerCfg', data '{"batteryAlarmState":0}' from endpoint 1 with groupID 0
Zigbee2MQTT:debug 2022-08-30 05:06:02: Received Zigbee message from '0x9035eafffe424783', type 'attributeReport', cluster 'genPowerCfg', data '{"40960":2}' from endpoint 1 with groupID 0
Zigbee2MQTT:debug 2022-08-30 05:06:02: Received Zigbee message from '0x9035eafffe424783', type 'attributeReport', cluster 'genPowerCfg', data '{"40961":1}' from endpoint 1 with groupID 0
Zigbee2MQTT:debug 2022-08-30 05:06:05: Received Zigbee message from '0x9035eafffe424783', type 'attributeReport', cluster 'genPowerCfg', data '{"batteryPercentageRemaining":200}' from endpoint 1 with groupID 0
Zigbee2MQTT:warn 2022-08-30 05:06:05: Received message from unsupported device with Zigbee model 'RBSH-OS-ZB-EU' and manufacturer name 'Bosch'
Zigbee2MQTT:warn 2022-08-30 05:06:05: Please see: https://www.zigbee2mqtt.io/advanced/support-new-devices/01_support_new_devices.html
Zigbee2MQTT:debug 2022-08-30 05:06:05: Received Zigbee message from '0x9035eafffe424783', type 'attributeReport', cluster 'genPowerCfg', data '{"batteryAlarmState":0}' from endpoint 1 with groupID 0
Zigbee2MQTT:debug 2022-08-30 05:06:05: Received Zigbee message from '0x9035eafffe424783', type 'attributeReport', cluster 'genPowerCfg', data '{"40960":2}' from endpoint 1 with groupID 0
Zigbee2MQTT:debug 2022-08-30 05:06:05: Received Zigbee message from '0x9035eafffe424783', type 'attributeReport', cluster 'genPowerCfg', data '{"40961":1}' from endpoint 1 with groupID 0
Zigbee2MQTT:debug 2022-08-30 05:06:10: Received Zigbee message from '0x9035eafffe424783', type 'commandQueryNextImageRequest', cluster 'genOta', data '{"fieldControl":1,"fileVersion":421095264,"imageType":12293,"manufacturerCode":4617}' from endpoint 1 with groupID 0
Zigbee2MQTT:warn 2022-08-30 05:06:10: Please see: https://www.zigbee2mqtt.io/advanced/support-new-devices/01_support_new_devices.html
Zigbee2MQTT:warn 2022-08-30 05:06:10: Received message from unsupported device with Zigbee model 'RBSH-OS-ZB-EU' and manufacturer name 'Bosch'
Zigbee2MQTT:debug 2022-08-30 05:06:13: Received Zigbee message from '0x9035eafffe424783', type 'commandStatusChangeNotification', cluster 'ssIasZone', data '{"extendedstatus":0,"zonestatus":160}' from endpoint 1 with groupID 0
Zigbee2MQTT:warn 2022-08-30 05:06:13: Received message from unsupported device with Zigbee model 'RBSH-OS-ZB-EU' and manufacturer name 'Bosch'
Zigbee2MQTT:warn 2022-08-30 05:06:13: Please see: https://www.zigbee2mqtt.io/advanced/support-new-devices/01_support_new_devices.html
Zigbee2MQTT:debug 2022-08-30 05:06:13: Received Zigbee message from '0x9035eafffe424783', type 'commandQueryNextImageRequest', cluster 'genOta', data '{"fieldControl":1,"fileVersion":421095264,"imageType":12293,"manufacturerCode":4617}' from endpoint 1 with groupID 0
Zigbee2MQTT:debug 2022-08-30 05:06:16: Received Zigbee message from '0x9035eafffe424783', type 'commandQueryNextImageRequest', cluster 'genOta', data '{"fieldControl":1,"fileVersion":421095264,"imageType":12293,"manufacturerCode":4617}' from endpoint 1 with groupID 0
Zigbee2MQTT:warn 2022-08-30 05:06:16: Received message from unsupported device with Zigbee model 'RBSH-OS-ZB-EU' and manufacturer name 'Bosch'
Zigbee2MQTT:debug 2022-08-30 05:06:19: Received Zigbee message from '0x9035eafffe424783', type 'commandQueryNextImageRequest', cluster 'genOta', data '{"fieldControl":1,"fileVersion":421095264,"imageType":12293,"manufacturerCode":4617}' from endpoint 1 with groupID 0
Zigbee2MQTT:warn 2022-08-30 05:06:16: Please see: https://www.zigbee2mqtt.io/advanced/support-new-devices/01_support_new_devices.html
Zigbee2MQTT:warn 2022-08-30 05:06:19: Received message from unsupported device with Zigbee model 'RBSH-OS-ZB-EU' and manufacturer name 'Bosch'
Zigbee2MQTT:warn 2022-08-30 05:06:19: Please see: https://www.zigbee2mqtt.io/advanced/support-new-devices/01_support_new_devices.html
Zigbee2MQTT:debug 2022-08-30 05:06:22: Received Zigbee message from '0x9035eafffe424783', type 'commandQueryNextImageRequest', cluster 'genOta', data '{"fieldControl":1,"fileVersion":421095264,"imageType":12293,"manufacturerCode":4617}' from endpoint 1 with groupID 0
Zigbee2MQTT:warn 2022-08-30 05:06:22: Received message from unsupported device with Zigbee model 'RBSH-OS-ZB-EU' and manufacturer name 'Bosch'
Zigbee2MQTT:warn 2022-08-30 05:06:22: Please see: https://www.zigbee2mqtt.io/advanced/support-new-devices/01_support_new_devices.html
Database Entry:
{
"id": 3,
"type": "EndDevice",
"ieeeAddr": "0x9035eafffe424783",
"nwkAddr": 17198,
"manufId": 4617,
"manufName": "Bosch",
"powerSource": "DC Source",
"modelId": "RBSH-OS-ZB-EU",
"epList": [
1
],
"endpoints": {
"1": {
"profId": 260,
"epId": 1,
"devId": 1027,
"inClustterList": [
0,
1,
3,
32,
1280,
1282,
2821
],
"outClusterList": [
25
],
"clusters": {
"genBasic": {
"attributes": {
"modelId": "RBSH-OS-ZB-EU",
"manufacturerName": "Bosch",
"powerSource": 132,
"zclVersion": 3,
"appVersion": 2,
"stackVersion": 7,
"hwVersion": 32,
"dateCode": "20211012",
"swBuildId": "V1.19.00"
}
},
"ssIasZone": {
"attributes": {
"iasCieAddr": "0x00124b00257cae15",
"zoneState": 1
}
},
"genPollCtrl": {
"attributes": {
"checkinInterval": 6480
}
}
},
"binds": [
{
"cluster": 32,
"type": "endpoint",
"deviceIeeeeAddress": "0x00124b00257cae15",
"endpointID": 1
}
],
"configuredReportings": [],
"meta": {}
}
},
"appVersion": 2,
"stackVersion": 7,
"hwVersion": 32,
"dateCode": "20211012",
"swBuildId": "V1.19.00",
"zclVersion": 3,
"interviewCompleted": true,
"meta": {},
"lastSeen": 1661835961869,
"defaultSendRequestWhen": "active"
}
I also can confirm that I managed to successfully pair the device using hass.io. I think it is important to mention for the people who will do this after us that ieeeaddr and installCode are both device specific and case sensitive in the example extension @Koenkk provided. Otherwise the device does not pair.
I am guessing the extension above is just a proof of concept to see if we could successfully join the devices to Z2M.
If I was to see this working in production, I'd probably create a new MQTT topic that accepts the IEEE MAC Adress, Install Code and Install Code Format that in turn adds an entry to the co-ordinator (and one to remove it too)