Zigbee2mqtt Assistant er et super godt produkt at starte ud med, fordi det giver et visuelt nemt overblik over hele dit Zigbee-netværk, men på sigt, når du har fået noget erfaring med hvordan Zigbee virker, anbefaler jeg at skifte det ud med et simpelt hjemmebygget interface i din Home Assistant – så du også lærer at forstå nogle af de ting der sker bagved de nemme “klik på knapper” i Assistenten.
Ydermere, kan vi også bygge nogle fede funktioner ind, som bl.a. at du får en notifikation når nye enheder joiner dit netværk, når batterierne er ved at være slappe, eller når noget går galt.. (bevares, alt det kan man også, selvom Assistenten er installeret, men det er nu sjovere at bygge det hele selv, fra bunden, ikke?) 🤓
Vores mål med denne guide, er at bygge et interface i vores Home Assistant, som gør det muligt at styre og administrere vores Zigbee2mqtt service direkte fra vores Home Assistant dashboard med et lille Lovelace panel.
Målet er at vi kan se vores aktuelle version af Zigbee2mqtt samt vores gateway, status for hele bridgen og firmware på vores coordinator. Vi skal også kunne skifte Log-niveau, så hvis noget driller, kan vi nemt skifte til “debug”-log.
Og sidst men måske vigtigst af alt skal også kunne åbne op for “joins” så vi kan parre nye enheder ind i vores Zigbee netværk samt omdøbe– og slette enheder.
Alt sammen direkte fra et kort i din Home Assistant. Lad os komme i gang 🙂
🗑 Deaktiver din Assistant
Ja, den har været en god hjælpende hånd, men nu er det tid til at sige farvel. Den er skrevet i .net (bvadr) og har nogle gange sit eget liv. Jeg har bl.a. oplevet, at den crashede mit Zigbee-netværk et par gange, ups! – men alt i alt en god hjælpende hånd, som vi vinker farvel til, i vores nye eventyr til at blive Zigbee-eksperter 🤓
Hop under din Supervisor i menuen til venstre, og stop og deaktiver din Zigbee2mqtt Assistant. Du kan evt. vente med at afinstallere den, til det nye setup spiller 🙂
🎸 Så er det YAML-tid
Måske har du allerede arbejdet lidt med YAML? I denne guide vil jeg vise hvordan vi kan bruge de nye “pakke”-features i Home Assistant, der gør det muligt at lave en færdig pakke med kode, som vi kan inkluderer i vores configuration.yaml fil. På den måde, kan vi nemmere opdele vores kode i selvstændige filer, så alt ikke roder rundt i én stor lang uoverskuelig fil.
Jeg bruger “File Editor” add-on til at redigere mine filer, som du kan se på skærmbilledet herover, uanset om du bruger File editor, mounter et SAMBA-share og retter herfra eller arbejder med ex. VS Code – så er det de samme steps vi skal igennem – nemlig at tilføje en linje til vores configuration.yaml fil, samt oprette en ny fil der hedder “zigbee2mqtt.yaml” hvor hele vores pakke bliver lavet.
📂 Installer File editor
Har du ikke allerede har installeret en måde at arbejde med dine config-filer på, kan jeg anbefale det simple File editor plugin, som du kan se på skærmbilledet herover. Det kan nemt installeres fra Supervisor -> Add-on Store -> File editor
Når den er installeret, kan du nemt sætte det lille add-on til at starte ved boot, automatisk opdatere samt vise et lille ikon i din sidebar hvor du nemt kan starte dit add-on fra.
🧘🏻♂️ Opsæt din nye pakke i YAML
Nu hvor vi har installere File editor add-on (eller et andet add-on der gør det muligt at rette dine config-filer) kan vi starte ud med at opsætte vores nye pakke. Allerførst opretter vi en ny mappe i vores “config”-mappe, det gøres nemt i vores nye File editor add-on:
Herinde i denne nye mappe, opretter vi en ny fil med navnet “zigbee2mqtt.yaml”:
Og nu kan vi indsætte alt vores kode, inde i vores nye pakke:
# Input select for Zigbee2mqtt debug level
input_select:
zigbee2mqtt_log_level:
name: Zigbee2mqtt Log Level
options:
- debug
- info
- warn
- error
initial: info
icon: mdi:format-list-bulleted
# Input text to input Zigbee2mqtt friendly_name for scripts
input_text:
zigbee2mqtt_old_name:
name: Zigbee2mqtt Old Name
mode: text
zigbee2mqtt_new_name:
name: Zigbee2mqtt New Name
mode: text
zigbee2mqtt_remove:
name: Zigbee2mqtt Remove
mode: text
# Scripts for renaming & removing devices
script:
zigbee2mqtt_rename:
alias: Zigbee2mqtt Rename
sequence:
service: mqtt.publish
data_template:
topic: zigbee2mqtt/bridge/config/rename
payload_template: >-
{
"old": "{{ states.input_text.zigbee2mqtt_old_name.state | string }}",
"new": "{{ states.input_text.zigbee2mqtt_new_name.state | string }}"
}
zigbee2mqtt_remove:
alias: Zigbee2mqtt Remove
sequence:
service: mqtt.publish
data_template:
topic: zigbee2mqtt/bridge/config/remove
payload_template: "{{ states.input_text.zigbee2mqtt_remove.state | string }}"
# Timer for joining time remaining (120 sec = 2 min)
timer:
zigbee_permit_join:
name: Time remaining
duration: 120
sensor:
# Sensor for monitoring the bridge state
- platform: mqtt
name: Zigbee2mqtt Bridge state
state_topic: "zigbee2mqtt/bridge/state"
icon: mdi:router-wireless
# Sensor for Showing the Zigbee2mqtt Version
- platform: mqtt
name: Zigbee2mqtt Version
state_topic: "zigbee2mqtt/bridge/config"
value_template: "{{ value_json.version }}"
icon: mdi:zigbee
# Sensor for Showing the Coordinator Version
- platform: mqtt
name: Coordinator Version
state_topic: "zigbee2mqtt/bridge/config"
value_template: "{{ value_json.coordinator }}"
icon: mdi:chip
# Switch for enabling joining
switch:
- platform: mqtt
name: "Zigbee2mqtt Main join"
state_topic: "zigbee2mqtt/bridge/config/permit_join"
command_topic: "zigbee2mqtt/bridge/config/permit_join"
payload_on: "true"
payload_off: "false"
automation:
# Automation for sending MQTT message on input select change
- alias: Zigbee2mqtt Log Level
initial_state: "on"
trigger:
platform: state
entity_id: input_select.zigbee2mqtt_log_level
action:
- service: mqtt.publish
data:
payload_template: "{{ states('input_select.zigbee2mqtt_log_level') }}"
topic: zigbee2mqtt/bridge/config/log_level
# Automation to start timer when enable join is turned on
- id: zigbee_join_enabled
alias: Zigbee Join Enabled
trigger:
platform: state
entity_id: switch.zigbee2mqtt_main_join
to: "on"
action:
service: timer.start
entity_id: timer.zigbee_permit_join
# Automation to stop timer when switch turned off and turn off switch when timer finished
- id: zigbee_join_disabled
alias: Zigbee Join Disabled
trigger:
- platform: event
event_type: timer.finished
event_data:
entity_id: timer.zigbee_permit_join
- platform: state
entity_id: switch.zigbee2mqtt_main_join
to: "off"
action:
- service: timer.cancel
data:
entity_id: timer.zigbee_permit_join
- service: switch.turn_off
entity_id: switch.zigbee2mqtt_main_join
- id: "zigbee2mqtt_create_notification_on_successfull_interview"
alias: Zigbee Device Joined Notification
trigger:
platform: mqtt
topic: 'zigbee2mqtt/bridge/log'
condition:
condition: template
value_template: '{{trigger.payload_json.type == "pairing" and trigger.payload_json.message == "interview_successful"}}'
action:
- service: persistent_notification.create
data_template:
title: Device joined the zigbee2mqtt network
message: "Name: {{trigger.payload_json.meta.friendly_name}},
Vendor: {{trigger.payload_json.meta.vendor}},
Description: {{trigger.payload_json.meta.description}}"
Code language: YAML (yaml)
🧘🏻♀️ Rediger din configuration.yaml
Nu er der kun tilbage at inkludere vores nye pakke i vores hoved-konfiguration. Det gør vi ved at redigere vores “configuration.yaml” fil i File editor, og indsætte vores nye package under homeassistant:
homeassistant:
packages:
pack_1: !include packages/zigbee2mqtt.yaml
Code language: YAML (yaml)
👋🏻 Reboot din HA
Så er der blot tilbage at genstarte dine Home Assistant for at indlæse de nye ændringer
🥰 Opsæt dit lovelace-kort
Som altid, hop ind i “Konfigurer brugerflade” og opret et nyt kort vha. (+) knappen i bunden. Herfra kan du vælge “Manuelt” kort i bunden.
Indsæt nu følgende YAML-kode i dit manuelle kort, for at oprette dit nye kort:
entities:
- entity: sensor.zigbee2mqtt_bridge_state
- entity: sensor.zigbee2mqtt_version
- entity: sensor.coordinator_version
- entity: input_select.zigbee2mqtt_log_level
- type: divider
- entity: switch.zigbee2mqtt_main_join
- entity: timer.zigbee_permit_join
- type: divider
- entity: input_text.zigbee2mqtt_old_name
- entity: input_text.zigbee2mqtt_new_name
- entity: script.zigbee2mqtt_rename
- type: divider
- entity: input_text.zigbee2mqtt_remove
- entity: script.zigbee2mqtt_remove
show_header_toggle: false
title: Zigbee2mqtt
type: entities
Code language: YAML (yaml)
📛 Sådan omdøber du dine devices
Fra vores nye kort, indtaster du ID’et og dermed også navnet på den enhed du vil omdøbe, og efterfølgende det nye navn. Du ændre værdien i felterne ved at trykke på label-teksten, ex “Zigbee2mqtt Old Name” / “Zigbee2mqtt New Name” – du kan ikke skrive direkte i feltet. Herefter trykker du UDLØS: Når du trykker på knappen SKER DER IKKE NOGET – så lad være med at trykke flere gange.
Efter du har trykker på UDLØB knappen, hop ind i din log for Zigbee2mqtt og bekræfte at din RENAME-handling er gået igennem 😎
Andre tips
Sådan opdaterer du firmware (OTA)
Start med at lytte på din enhed, for at se om der er en update
Lyt til emne: zigbee2mqtt/Plug - Labelprinter
(erstat “Plug – Labelprinter” med navnet på din enhed)
Send en OTA-update kommando afsted til din mqtt broker:
zigbee2mqtt/bridge/ota_update/update
Husk at angive navnet på den enhed du vil opdatere i “Payload”-feltet, som vist her:
Følg med i zigbee2mqtt loggen:
Det tager 10-20 minutter at opdatere et IKEA produkt: