As minhas desculpas por ser muito básico, mas estou com um enorme problema, para mim.
Desde ontem o Zigbee2MQTT actualizou para a versão 2 e isso fez com que os meus 32 interruptores do IKEA deixassem de funcionar.
Eu uso os interruptores através do Node-RED para ligarem luzes da Tuya ou de outras marcas através de um passo intermédio de MQTT.
Tudo tem funcionado bem há uns anos, mas desde ontem, tudo morreu, tirando duas lâmpadas do IKEA que também estão em Zigbee.
Já procurei soluções nos vários fóruns onde encontrei milhares de explicações, pois há muitos utilizadores na mesma situação que eu, mas as explicações são demasiado técnicas de conversas entre programadores, que em nada ajuda quem tem conhecimentos básicos.
Apenas os génios da informática estão a conseguir solucionar a situação.
Por esse motivo venho solicitar ajuda porque não consigo entender ou encontrar a solução.
Obrigado desde já pela vossa disponibilidade e ajuda.
Boas.
pelo que percebo a ti o zigbee2mqtt está a funcionar só as automações em node red é que deixaram de funcionar ? Tenho visto muita gente com o problema de o z2m não arancar mesmo por não terem lido/percebido as breaking changes.
Não percebi isso do “passo intermédio de MQTT”. Usas os nodes mqtt no node red para fazer as automações? Podes mostrar como tens as automações que agoram não funcionam ?
No meu caso, que uso o dongle da sonoff, só fui a configurações do zigbee2mqtt e uma linha abaixo do endereço usb coloquei o seguinte, adapter: zstack.
Este update do Z2M deu “água pelas barbas”…
Eu com o dongle da sonoff ZBDongle-E não funcionou de todo com a v 2.0.0-2 é que funcionou.
No entanto, tive que fazer uma limpeza no ficheiro /homeassistant/zigbee2mqtt/configuration.yaml que tinha muita tralha. Ficou assim:
homeassistant:
enabled: true
base_topic: zigbee2mqtt
force_disable_retain: false
include_device_information: false
keepalive: 60
maximum_packet_size: 1048576
reject_unauthorized: true
server: mqtt://xxx.xxx.xxx.xxx:1883
user: mqttuser
version: 4
mqtt:
server: mqtt://xxx.xxx.xxx.xxx:1883
user: mqttuser
password: xxxxxxxxxxxx
base_topic: zigbee2mqtt
keepalive: 60
reject_unauthorized: true
version: 4
serial:
port: /dev/ttyACM0
adapter: ember
rtscts: false
baudrate: 115200
frontend:
enabled: true
port: 8099
device_options: {}
devices:
.................................
Depois do update, tive também que ir ao interface web do Z2M, “roda dentada” > settings > MQTT e reescrever a password e Submeter.
No separador HomeAssistant verificar se está Enable e Submeter.
Depois disto, fiz restart ao Z2M (no botão vermelho em Tools) e já ficou a funcionar.
Obrigado Ricardo,
É exactamente isso.
O zigbee2mqtt está a funcionar bem e tenho todos os devices a aparecer no mapa e a responderem.
No node red é que os interruptores do IKEA deixaram de funcionar, excepto 2 que comandam lampadas do IKEA.
Não sei como colocar só os nodes, por isso coloco o código, deste que funciona.
[
{
"id": "e661bd09edf39f2c",
"type": "mqtt out",
"z": "dd03271087cc52af",
"name": "Light IKEA 01",
"topic": "zigbee2mqtt/Generic Dimmable Light IKEA 01/set",
"qos": "",
"retain": "",
"respTopic": "",
"contentType": "",
"userProps": "",
"correl": "",
"expiry": "",
"broker": "eca6af44.5297b",
"x": 700,
"y": 940,
"wires": []
},
{
"id": "5b3be5ae528e42e8",
"type": "mqtt in",
"z": "dd03271087cc52af",
"name": "switch 01",
"topic": "zigbee2mqtt/IKEA switch 01",
"qos": "2",
"datatype": "json",
"broker": "eca6af44.5297b",
"nl": false,
"rap": false,
"inputs": 0,
"x": 80,
"y": 940,
"wires": [
[
"35f317525a529ef2"
]
]
},
{
"id": "35f317525a529ef2",
"type": "function",
"z": "dd03271087cc52af",
"name": "Dimmer",
"func": "/*\n This function currently works with IKEA models:\n E1743 TRADFRI On/Off Switch\n E1810 TRADFRI Remote\n\n\n msg.payload.action:\n \n From E1743 TRADFRI On/Off Switch\n on\n off\n brightness_move_down\n brightness_move_up\n brightness_stop\n \n From E1810 TRADFRI Remote \n toggle (there is no on/off)\n brightness_up_click\n brightness_up_hold\n brightness_up_release\n brightness_down_click\n brightness_down_hold\n brightness_down_release\n\n\n*/\n\nvar step = 16; // change in brightness for each step.\nvar loopLimit = 30; // max number of loops. Safety in case we don't get a brightness_stop action.\n\nvar brightness = context.get(\"brightness\") || 128;\nvar repeating = context.get(\"repeating\") || 0;\nvar out = null; // output #1, to zigbee2mqtt\nvar outLoop = null; // output #2, to a delay, and back to the input.\n\n\nfunction setBrightness(dir) {\n if(dir > 0) {\n brightness += step;\n } else {\n brightness -= step;\n }\n if(brightness <= 2) {brightness = 2;} // 1 and 0 are off\n if(brightness >=255) {brightness = 255;}\n out = {\"payload\": {\"state\": \"on\", \"brightness\": brightness}};\n}\n\nif(msg.payload.action == \"on\") {\n out = {\"payload\": {\"state\": \"on\"}};\n} else if(msg.payload.action == \"off\") {\n out = {\"payload\": {\"state\": \"off\"}};\n} else if(msg.payload.action == \"toggle\") {\n out = {\"payload\": {\"state\": \"toggle\"}};\n\n} else if(msg.payload.action == \"brightness_up_click\") {\n setBrightness(+1);\n} else if(msg.payload.action == \"brightness_down_click\") {\n setBrightness(-1);\n\n} else if(msg.payload.action == \"brightness_move_up\" ||\n msg.payload.action == \"brightness_up_hold\" ||\n (msg.payload.action == \"brightness_up_rep\" && repeating) ) {\n setBrightness(+1);\n outLoop = {\"payload\": {\"action\": \"brightness_up_rep\"}};\n repeating++;\n} else if(msg.payload.action == \"brightness_move_down\" ||\n msg.payload.action == \"brightness_down_hold\" ||\n (msg.payload.action == \"brightness_down_rep\" && repeating) ) {\n setBrightness(-1);\n outLoop = {\"payload\": {\"action\": \"brightness_down_rep\"}};\n repeating++;\n \n} else if(msg.payload.action == \"brightness_stop\" ||\n msg.payload.action == \"brightness_up_release\" ||\n msg.payload.action == \"brightness_down_release\" ||\n repeating > loopLimit) {\n repeating = 0;\n\n}\n\ncontext.set(\"brightness\", brightness);\ncontext.set(\"repeating\", repeating);\nnode.status({text:brightness});\n\nreturn [out, outLoop];\n",
"outputs": 2,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 440,
"y": 940,
"wires": [
[
"e661bd09edf39f2c"
],
[
"435f8d57cec39f3f"
]
]
},
{
"id": "435f8d57cec39f3f",
"type": "delay",
"z": "dd03271087cc52af",
"name": "",
"pauseType": "delay",
"timeout": "250",
"timeoutUnits": "milliseconds",
"rate": "1",
"nbRateUnits": "1",
"rateUnits": "second",
"randomFirst": "1",
"randomLast": "5",
"randomUnits": "seconds",
"drop": false,
"outputs": 1,
"x": 430,
"y": 1000,
"wires": [
[
"35f317525a529ef2"
]
]
},
{
"id": "eca6af44.5297b",
"type": "mqtt-broker",
"name": "MQTT",
"broker": "localhost",
"port": "1883",
"clientid": "",
"autoConnect": true,
"usetls": false,
"protocolVersion": "5",
"keepalive": "60",
"cleansession": true,
"birthTopic": "",
"birthQos": "0",
"birthPayload": "",
"birthMsg": {},
"closeTopic": "",
"closeQos": "0",
"closePayload": "",
"closeMsg": {},
"willTopic": "",
"willQos": "0",
"willPayload": "",
"willMsg": {},
"sessionExpiry": ""
}
]
Depois os que deixaram de funcionar:
[
{
"id": "bf1d2b2ebad93f37",
"type": "api-call-service",
"z": "dd03271087cc52af",
"name": "Bancada OFF",
"server": "d22d5bec.97b5d8",
"version": 7,
"debugenabled": false,
"action": "switch.turn_off",
"floorId": [],
"areaId": [],
"deviceId": [
"8579fb3281baca3954aa42857efed5d5"
],
"entityId": [],
"labelId": [],
"data": "",
"dataType": "jsonata",
"mergeContext": "",
"mustacheAltTags": false,
"outputProperties": [],
"queue": "none",
"blockInputOverrides": false,
"domain": "switch",
"service": "turn_off",
"x": 520,
"y": 1400,
"wires": [
[]
]
},
{
"id": "e3c617b903402b5a",
"type": "api-call-service",
"z": "dd03271087cc52af",
"name": "Bancada ON",
"server": "d22d5bec.97b5d8",
"version": 7,
"debugenabled": false,
"action": "switch.turn_on",
"floorId": [],
"areaId": [],
"deviceId": [
"8579fb3281baca3954aa42857efed5d5"
],
"entityId": [],
"labelId": [],
"data": "",
"dataType": "jsonata",
"mergeContext": "",
"mustacheAltTags": false,
"outputProperties": [],
"queue": "none",
"blockInputOverrides": false,
"domain": "switch",
"service": "turn_on",
"x": 510,
"y": 1360,
"wires": [
[]
]
},
{
"id": "36909836e33edfc3",
"type": "switch",
"z": "dd03271087cc52af",
"name": "",
"property": "payload",
"propertyType": "msg",
"rules": [
{
"t": "eq",
"v": "on",
"vt": "str"
},
{
"t": "eq",
"v": "off",
"vt": "str"
}
],
"checkall": "true",
"repair": false,
"outputs": 2,
"x": 310,
"y": 1380,
"wires": [
[
"e3c617b903402b5a"
],
[
"bf1d2b2ebad93f37"
]
]
},
{
"id": "395bf3412623a126",
"type": "server-state-changed",
"z": "dd03271087cc52af",
"name": "Bancada",
"server": "d22d5bec.97b5d8",
"version": 6,
"outputs": 1,
"exposeAsEntityConfig": "",
"entities": {
"entity": [
"sensor.bancada_action"
],
"substring": [],
"regex": []
},
"outputInitially": false,
"stateType": "str",
"ifState": "",
"ifStateType": "str",
"ifStateOperator": "is",
"outputOnlyOnStateChange": true,
"for": 0,
"forType": "num",
"forUnits": "minutes",
"ignorePrevStateNull": false,
"ignorePrevStateUnknown": false,
"ignorePrevStateUnavailable": false,
"ignoreCurrentStateUnknown": false,
"ignoreCurrentStateUnavailable": false,
"outputProperties": [
{
"property": "payload",
"propertyType": "msg",
"value": "",
"valueType": "entityState"
},
{
"property": "data",
"propertyType": "msg",
"value": "",
"valueType": "eventData"
},
{
"property": "topic",
"propertyType": "msg",
"value": "",
"valueType": "triggerId"
}
],
"x": 80,
"y": 1380,
"wires": [
[
"36909836e33edfc3"
]
]
},
{
"id": "d22d5bec.97b5d8",
"type": "server",
"name": "Home Assistant",
"version": 5,
"addon": true,
"rejectUnauthorizedCerts": true,
"ha_boolean": "y|yes|true|on|home|open",
"connectionDelay": true,
"cacheJson": true,
"heartbeat": false,
"heartbeatInterval": "30",
"areaSelector": "friendlyName",
"deviceSelector": "friendlyName",
"entitySelector": "friendlyName",
"statusSeparator": "at: ",
"statusYear": "hidden",
"statusMonth": "short",
"statusDay": "numeric",
"statusHourCycle": "h23",
"statusTimeFormat": "h:m",
"enableGlobalContextStore": true
}
]
Eu uso o coordenador da Zigbee 3.0 USB Dongle Plus
Eu, entretanto, voltei à versao 1.42.0, para poder estar com tudo a funcionar.
A configuração do /homeassistant/zigbee2mqtt/configuration.yaml
devices:
- devices.yaml
groups:
- groups.yaml
homeassistant:
enabled: true
legacy_action_sensor: true
mqtt:
base_topic: zigbee2mqtt
user: addons
password: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
server: mqtt://core-mosquitto:1883
serial:
port: /dev/ttyUSB0
advanced:
log_level: warning
pan_id: 6754
channel: 20
network_key:
- 1
- 3
- 5
- 7
- 9
- 11
- 13
- 15
- 0
- 2
- 4
- 6
- 8
- 10
- 12
- 13
transmit_power: 20
device_options: {}
blocklist: []
passlist: []
queue: {}
frontend:
enabled: true
port: 8099
availability:
enabled: false
version: 4
As minhas desculpas pela extensão da resposta.
Grato, desde já, pela sua amável resposta e ajuda.
Obrigado António Coutinho,
Com esta sua solução todos os interruptores voltaram à vida!
De inicio só os da segunda geração, depois verifiquei que os da primeira geração tinham de ser mudados de estado para “IKEA TRÅDFRI On/Off switch Action” e a mensagem de “brightness_up” para “brightness_move_up”.
Tudo ficou a funcionar correctatente.
Muito grato pela sua ajuda
Obrigado pela sua sugestão.
Aproveitei e também fiz uma limpeza.
Grato pela sua amabilidade
Quero agradecer pelo vosso apoio, que de uma forma simples e totalmente compreensível, por uma pessoa com poucos conhecimentos, explicaram, e deram uma solução para o meu grande problema.
Passei um fim de semana inteiro às voltas a ler fóruns e não cheguei a conclusão alguma devido à enorme complexidade das respostas e soluções apresentadas.
Fico eternamente grato pela vossa preciosa ajuda.
Votos de um Bom Ano Novo com estabilidade e sucesso.
Obrigado