Luligu / matterbridge-zigbee2mqtt

Matterbridge zigbee2mqtt plugin
https://github.com/Luligu/matterbridge-zigbee2mqtt/blob/main/README.md
Apache License 2.0
63 stars 8 forks source link

Error installing plugin #3

Closed khaidakin closed 5 months ago

khaidakin commented 5 months ago

I updated my version of mosquitto (2.0.11) and tried installing matterbridge-zigbee2mqtt again. While running matterbridge -add matterbridge-zigbee2mqtt I got the error:

Connection established [15:35:32.542] [Zigbee2MQTT] Started [15:35:32.544] [Zigbee2MQTT] Subscribing topic: zigbee2mqtt-1/# undefined:1 online ^

SyntaxError: Unexpected token o in JSON at position 0 at JSON.parse () at Zigbee2MQTT.messageHandler (file:///usr/local/lib/nodejs/node-v18.19.1-linux-arm64/lib/node_modules/matterbridge-zigbee2mqtt/dist/zigbee2mqtt.js:312:31) at MqttClient. (file:///usr/local/lib/nodejs/node-v18.19.1-linux-arm64/lib/node_modules/matterbridge-zigbee2mqtt/dist/zigbee2mqtt.js:164:22) at MqttClient.emit (node:events:517:28) at handlePublish (/usr/local/lib/nodejs/node-v18.19.1-linux-arm64/lib/node_modules/matterbridge-zigbee2mqtt/node_modules/mqtt/build/lib/handlers/publish.js:97:20) at handle (/usr/local/lib/nodejs/node-v18.19.1-linux-arm64/lib/node_modules/matterbridge-zigbee2mqtt/node_modules/mqtt/build/lib/handlers/index.js:28:35) at work (/usr/local/lib/nodejs/node-v18.19.1-linux-arm64/lib/node_modules/matterbridge-zigbee2mqtt/node_modules/mqtt/build/lib/client.js:225:40) at process.processTicksAndRejections (node:internal/process/task_queues:77:11)

After this, Matterbridge stopped. When I try to start it again, it gets the same error again and stops

Luligu commented 5 months ago

Hi, thank you for the message. First of all this is an error cause it should be a try catch block: I will update the code. So thank you. The cause:

khaidakin commented 5 months ago

2024-03-28_16-02-46

Luligu commented 5 months ago

Everything is good there. The coordinator revision is the old one but it doesn't change about the error. Can you copy paste all the Settings Raw page please?

khaidakin commented 5 months ago

{ "commit": "f7c0b46b", "config": { "advanced": { "adapter_concurrent": null, "adapter_delay": null, "availability_blacklist": [], "availability_blocklist": [], "availability_passlist": [], "availability_whitelist": [], "baudrate": 115200, "cache_state": true, "cache_state_persistent": true, "cache_state_send_on_startup": true, "channel": 11, "elapsed": false, "ext_pan_id": [ 221, 221, 221, 221, 221, 221, 221, 221 ], "homeassistant_legacy_entity_attributes": false, "ikea_ota_use_test_url": false, "last_seen": "ISO_8601_local", "legacy_api": true, "legacy_availability_payload": true, "log_directory": "data/", "log_file": "log.txt", "log_level": "info", "log_output": [ "console", "file" ], "log_rotation": true, "log_symlink_current": false, "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": 4567, "report": false, "rtscts": false, "soft_reset_timeout": 0, "timestamp_format": "YYYY-MM-DD HH:mm:ss" }, "blocklist": [], "device_options": { "legacy": false }, "devices": { "0xa4c1383976c75bb7": { "friendly_name": "test-relay" } }, "experimental": { "new_api": true }, "external_converters": [ "msh.AirQMon.js", "8switch.8tem.sen.js", "msh.pzem.3f.js", "ptvo_counter_2ch.js", "msh.ina226f.js", "msh.pzem.js", "msh.4ch.termo.js", "msh.s220.psm.js", "msh.pzem.dc.js", "msh.ina226.js", "msh.8ch-sw.int.js", "8switch.vent.js", "msh.8ch.str.js", "msh.ext-temp.js", "msh.4chrelay.js", "zigbee_c6.js", "msh.allpsm.js", "msh.2ch.termo.js" ], "frontend": { "port": 8081 }, "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-1", "force_disable_retain": false, "include_device_information": false, "server": "mqtt://localhost", "user": "msh" }, "ota": { "disable_automatic_update_check": false, "ikea_ota_use_test_url": false, "update_check_interval": 1440 }, "passlist": [], "permit_join": false, "serial": { "baudrate": 115200, "disable_led": false, "port": "/dev/ttyS2", "rtscts": false } }, "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" }, "disabled": { "description": "Disables the device (excludes device from network scans, availability and group state updates)", "requiresRestart": true, "title": "Disabled", "type": "boolean" }, "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" }, "filteredoptimistic": { "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 full URL link to an image (e.g. https://SOME.SITE/MODEL123.jpg) (you cannot use a path to a local file) or base64 encoded data URL (e.g. 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 members 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!", "oneOf": [ { "title": "Extended pan ID (string)", "type": "string" }, { "items": { "type": "number" }, "title": "Extended pan ID (array)", "type": "array" } ], "requiresRestart": true, "title": "Ext Pan ID" }, "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 availability 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" }, "logfile": { "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": 514, "description": "The port on the host that syslog is running on, defaults to syslogd's default port.", "title": "Port", "type": "number" }, "protocol": { "default": "udp4", "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": { "description": "Frontend binding host. Binds to a unix socket when an absolute path is given instead.", "examples": [ "127.0.0.1", "::1", "/run/zigbee2mqtt/zigbee2mqtt.sock" ], "requiresRestart": true, "title": "Bind host", "type": [ "string", "null" ] }, "port": { "default": 8080, "description": "Frontend binding port. Ignored when using a unix domain socket", "requiresRestart": true, "title": "Port", "type": "number" }, "ssl_cert": { "description": "SSL Certificate file path for exposing HTTPS. The sibling property 'ssl_key' must be set for HTTPS to be activated.", "requiresRestart": true, "title": "Certificate file path", "type": [ "string", "null" ] }, "ssl_key": { "description": "SSL key file path for exposing HTTPS. The sibling property 'ssl_cert' must be set for HTTPS to be activated.", "requiresRestart": true, "title": "key file path", "type": [ "string", "null" ] }, "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", "null" ] } }, "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", "ember" ], "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": "0x00124b00194af0d6", "meta": { "maintrel": 1, "majorrel": 2, "minorrel": 7, "product": 1, "revision": 20220302, "transportrev": 2 }, "type": "zStack3x0" }, "log_level": "info", "network": { "channel": 11, "extended_pan_id": "0x00124b00194af0d6", "pan_id": 4567 }, "permit_join": false, "restart_required": false, "version": "1.36.0-dev", "zigbee_herdsman": { "version": "0.36.1" }, "zigbee_herdsman_converters": { "version": "18.46.0" } }

Luligu commented 5 months ago

You have enabled the Legacy API: "legacy_api": true, "legacy_availability_payload": true,

Those must not be set. They will disapper in the next releases I guess. I already added the correct code to not have a crash then I will think about how to tell the user that Legacy must not be set or how to deal with it.

Thank you so much!

By the way since you are reinstalling everything you can factoryReset Matterbridge deleting the matterbridge.json and the storage directory in the .matterbridge directory. Of couse after you have to pair everything too...

Luligu commented 5 months ago

I modified the code in a way that it can deal with legacy. And in any case I put try catch. Thanks again for your contribution! Will be in the next release.

khaidakin commented 5 months ago

I removed all lines from the zigbee2mqtt configuration file containing the word legacy. Did a factoryReset Matterbridge and tried to run matterbridge -add matterbridge-zigbee2mqtt again. I again received an error in the console with the command CLI: Matterbridge.loadInstance() called Matterbridge instance does not exists! Initializing... [17:01:57.480] [Matterbridge] Matterbridge version 1.2.2 mode running on Linux 4.4.143-69-rockchip-g8ccef796d27d linux arm64 CLI: Matterbridge.loadInstance() exited [17:01:57.524] [Matterbridge] Loading plugin matterbridge-zigbee2mqtt type MAIN: Matterbridge.loadInstance() called MAIN: Matterbridge.loadInstance() exited [17:01:59.128] [Matterbridge zigbee2mqtt plugin] Loaded zigbee2mqtt parameters from /home/msh/.matterbridge/matterbridge-zigbee2mqtt.config.json:

[17:01:59.139] [Zigbee2MQTT] Created new instance with host: localhost port: 1883 topic: zigbee2mqtt-1 username: msh password: ***** [17:01:59.146] [Zigbee2MQTT] Starting... [17:01:59.671] [Zigbee2MQTT] Data directory /home/msh/Matterbridge/matterbridge-zigbee2mqtt created successfully. [17:01:59.692] [Matterbridge] Loaded plugin matterbridge-zigbee2mqtt type DynamicPlatform (entrypoint /usr/local/lib/nodejs/node-v18.19.1-linux-arm64/lib/node_modules/matterbridge-zigbee2mqtt/dist/index.js) [17:01:59.895] [Zigbee2MQTT] Connection established [17:01:59.897] [Zigbee2MQTT] Started [17:01:59.900] [Zigbee2MQTT] Subscribing topic: zigbee2mqtt-1/# undefined:1 online ^

SyntaxError: Unexpected token o in JSON at position 0 at JSON.parse () at Zigbee2MQTT.messageHandler (file:///usr/local/lib/nodejs/node-v18.19.1-linux-arm64/lib/node_modules/matterbridge-zigbee2mqtt/dist/zigbee2mqtt.js:312:31) at MqttClient. (file:///usr/local/lib/nodejs/node-v18.19.1-linux-arm64/lib/node_modules/matterbridge-zigbee2mqtt/dist/zigbee2mqtt.js:164:22) at MqttClient.emit (node:events:517:28) at handlePublish (/usr/local/lib/nodejs/node-v18.19.1-linux-arm64/lib/node_modules/matterbridge-zigbee2mqtt/node_modules/mqtt/build/lib/handlers/publish.js:97:20) at handle (/usr/local/lib/nodejs/node-v18.19.1-linux-arm64/lib/node_modules/matterbridge-zigbee2mqtt/node_modules/mqtt/build/lib/handlers/index.js:28:35) at work (/usr/local/lib/nodejs/node-v18.19.1-linux-arm64/lib/node_modules/matterbridge-zigbee2mqtt/node_modules/mqtt/build/lib/client.js:225:40) at process.processTicksAndRejections (node:internal/process/task_queues:77:11)

In this case, Matterbridge does not stop, but does not add a plugin. I looked again at Settings - Raw and saw the lines there again: "legacy_api": true, "legacy_availability_payload": true, which are not in my config file. I think this is in zigbee2mqtt itself by default

Luligu commented 5 months ago

Hi you cannot edit the zigbee2mqtt configuration.yaml. Just use the frontend Settings Settings Advanced. Save without legacy and restart you will see that the wrong options disappered.

khaidakin commented 5 months ago

I did as you wrote - it worked. The relay appeared in Home Assistant and is controlled. This is good. I added another zigbee device to z2m - everything broke. Nothing works again. Please write how to add new devices to z2m

Luligu commented 5 months ago

In the z2m frontend turn Permit join all on. Then put your new device in pairing mode (read the instruction) and in a few seconds in the frontend you will see that it added the device.