HardwareIntegrationer

Flyttedag: Skift fra deCONZ til Zigbee2MQTT


Jeg har i flere år haft mine Zigbee enheder kørende på en Conbee II USB stick og brugt deCONZ som Zigbee software. Det har længe fungeret super godt.

Men i løbet af efteråret begyndte det at blive ustabilt. Flere enheder (fra forskellige producenter) blev utilgængelige på skift – også pærer og andre router enheder. Jeg har prøvet meget forskelligt for at løse problemet, men kunne ikke finde en løsning. Jeg kunne dog se, at andre brugere havde lignende problemer.

Det giver desværre ikke ret mange point på WAF kontoen, når lyset ikke altid virker. Så jeg besluttede mig for at skifte min Conbee II og deCONZ ud.

Jeg beskriver i dette indlæg min tilgang til og erfaringer med skiftet væk fra deCONZ.

Forberedelse

Inden skiftet, havde jeg en del overvejelser og forberedelse, så flytningen kunne gøres så hurtigt og effektivt som muligt.

Overvejelser om nyt platform

Jeg har købt en SkyConnect USB stick, som jeg havde planer om at skifte til.

Efter en del research, faldt valget dog i stedet for på en SONOFF Zigbee 3.0 USB Dongle Plus. Jeg havde købt Sonoff P modellen med cc2652 chipsæt, som backup til min Conbee. Det var før SkyConnect blev frigivet.

Det virker til, at Sonoff P-modelen pt. er den mest stabile platform. Modeller med det nye Silabs EFR32MG21 baserede chipset (inkl. SkyConnect) er således endnu ikke fuldt understøttet i Zigbee2MQTT (Z2M).

Og jeg valgte netop at skifte til Z2M protokollen af to primære grunde:

  • Det virker til at understøtte flest enheder, herunder Zigbee Green Power enheder
  • Z2M kan køre uafhængigt af HA, hvis man en dag vil skifte platform (ikke så sandsynligt, men …)

Planlægning

Det er en god idé at lave en plan for selve flytningen. Og særligt at vælge et tidspunkt, hvor det giver mindst forstyrrelse, hvis der opstår problemer. Det er sjældent populært, hvis lyset ikke virker, når der er brug for det…

Så jeg valgte at starte om morgenen for at have mest tid til at få alle pærer flyttet.

Sikkerhedskopiering

Jeg tager altid en sikkerhedskopi af HA inden jeg laver større ændringer. Og denne gang tog jeg også en kopi af data i deCONZ.

Backup i deCONZ
Backup i deCONZ

Dette giver flere muligheder for at rulle tilbage, hvis det skulle blive nødvendigt.

Oversigt over enheder

Jeg har et mellem-stort Zigbee netværk bestående af:

  • Ca. 25 strømførte enheder fordelt på pærer (Hue og Ikea), , relæer (Nordtronic) og extendere (Ikea)
  • Ca. 35 batteridrevne enheder, fordelt på dør/vindue sensorer, temperatur målere, trykknapper og fjernbetjeninger
Kort over enheder og forbindelser i deCONZ
Kort over enheder og forbindelser i deCONZ


Før flytningen lavede jeg en liste over mine eksisterende enheder i deCONZ og deres placering. Listen brugte jeg undervejs til at huske alle enheder og notere de nye navne.

En liste over enheder i deCONZ kan laves ved at indtaste følgende kode under “Udviklerværktøjer” – “Skabelon”:

{{ 'ID|Friendly Name|Area|Manufactor|Model' -}} 
{%- set find_integration = 'deconz' %}  
{%- set devices = integration_entities('deconz') | map('device_id') | unique | list %} 
{%- for device in devices %} 
{{ device -}}|{{ device_attr(device, 'name') }}|{{area_name(device)}}|{{ device_attr(device, 'manufacturer')}}|{{ device_attr(device, 'model')}} 
{%- endfor %}

Og denne kode kan bruges til at lave en liste over alle entiteter:

{{ 'Name|Friendly Name|Area|Domain|Device Class|Current State' -}} 
{% for entity in integration_entities('deconz') %} 
{% set domain = entity.split('.')[0] -%} 
{{ entity -}}|{{state_attr(entity, 'friendly_name')-}}|{{area_name(entity)-}}|{{domain}}|{{state_attr(entity, 'device_class')-}}|{{states(entity)-}} 
{% endfor %}"

Efterfølgende kan listerne indsættes i f.eks. Excel og bruges under selve flytningen.

Klargøring af Zigbee2MQTT

Næste skridt er installation af Sonoff donglen og Zigbee2MQTT softwaren i HA.

Installation af Zigbee2MQTT addon

HA’s egen Zigbee software (ZHA) er som standard installeret i HA. Det er Zigbee2MQTT (Z2M) dog ikke.

Installationen er dog ikke en stor eller svær opgave. 

Jeg valgte at installere Z2M som en addon i HA. Og så skal Mosquitto broker også installeres som et addon.

Opdatering af Sonoff firmware

Jeg valgte at opdatere firmwaren på min Sonoff dongle inden jeg satte den til. Den var leveret med en firmware, der var mere end et år ældre end den seneste version.

Selve processen med opdateringen af firmwaren drillede lidt på min Windows maskine, da der først skulle installeres forskelligt software og drivere. Og guiden er ikke super god.

Det kan sikkert gøres hurtigere på en Linux maskine. Uanset hvilken metode, der anvendes, er det en god idé at sørge for at få det gjort inden dagen for selve flytningen.

Indsæt dongle i HA maskine

Efter firmware opdateringen var Sonoff donglen klar til at blive sat i min HA maskine – naturligvis med brug af forlængerkabel.

Min HA kører i en virtuel maskine på Proxmox. Det var derfor nødvendigt at lave USB passthrough og genstarte min virtuelle HA maskine inden donglen kunne ses i HA.

Når donglen er indsat skal man finde den USB port, som donglen anvender og tilføje den i Z2M konfigurationen.

Man kan se oplysninger om den anvendte port under Indstillinger → System → Hardware

Man skal klikke på de tre prikker i øverste højre hjørne og vælg “Al hardware”. Herefter kan man finde USB porten i oversigten:

Hardwareoplysninger: USB port på dongle
Hardwareoplysninger: USB port på dongle


Den anvendte port tilføjes i Z2M konfigurationen:

Konfiguration af anvendt port i Z2M
Konfiguration af anvendt port i Z2M

Start Zigbee2MQTT

Næste skridt er at starte Z2M og tjekke loggen for at se, om det virker. Det gjorde det heldigvis hos mig.

Vælg anden Zigbee kanal

Jeg valgte at have min Conbee II og deCONZ kørende samtidig med Z2M. Det gav mulighed for at flytte enhederne én ad gangen. Men det var derfor nødvendigt at sørge for at Z2M kører på en anden Zigbee kanal end 25, som mit deCONZ bruger.

Jeg valgte kanal 20, da mit Wifi kører på kanal 1 og 6, som overlapper med kanal 15:

Oversigt over Zigbee og WiFi kanaler
Oversigt over Zigbee og WiFi kanaler

Flytning af enheder

Efter klargøring af dongle og Z2M var jeg klar til den sjove del: flytningen af de enkelte enheder fra deCONZ til Z2M.

Som nævnt, valgte jeg at have deCONZ og Z2M kørende parallelt under flytningen, så jeg kunne nøjes med at flytte én enhed af gangen.

Processen i de efterfølgende afsnit er derfor gentaget for hver enhed.

Omdøb enhed i HA

Jeg ønskede at genbruge enhedsnavnene i HA.

Det mindsker nemlig behovet for rettelser i automatiseringer og dashboard kode.

Derfor startede jeg med at omdøbe de eksisterende enheder, som deCONZ integrationen havde oprettet.

Slet enhed i DeCONZ

For at gøre enhederne klar til parring med en ny coordinator, startede jeg med at slette dem i deCONZ.

Nogle enheder (f.eks. nogle IKEA pærer og Nordtronic relæer) vil automatisk gå i parringstilstand, når de slettes, mens andre skal nulstilles manuelt.

TIPS TIL NULSTILLING
Hue enheder kan nulstilles ved at bruge en Hue dimmer, der holdes tæt op pæren, mens tænd og sluk knapperne holdes inden samtidigt.

IKEA og flere andre enheder kan nulstilles ved at tænde og slukke for enheden fem gange i træk.

Andre enheder (f.eks. batteridrevne enheder) skal nulstilles ved at holde en reset knap inde i 5-10 sekunder.

Par enhed i Z2M

Når enheden er nulstillet og klar til en ny parring er det simpelt at starte søgningen i Z2M.

For at få et stærkt Zigbee netværk hurtigst muligt, kan parringen gennemføres efter følgende principper:

  1. Par først alle strømtilsluttede enheder
  2. Start med enhederne tættest på din dongle og dernæst de enheder, der er
  3. Sørg for at parre batteridrevne enheder på det sted, hvor de skal sidde permanent

I modsætning til deCONZ virker Z2M rigtigt godt på en mobil. Så det var meget let at lave parringen rum for rum via mobilen.

Aktiver parring i Z2M
Aktiver parring i Z2M

Omdøb enhed i Z2M

Efter parringen omdøbte jeg enheden i Z2M og brugte så vidt muligt det tidligere navn. Det er nemt at gøre fra mobilen. Det bør gøres efter parring af hver enhed, hvis man har mange enheder af samme type.

Omdøb enhed i Z2M
Omdøb enhed i Z2M

Opdater automatiseringer, scener og dashboard kode

Næste skridt er at opdatere automatiseringer, scener og dashboard. Jeg valgte at genbruge de fleste navne på mine enheder, hvilket mindsker behovet for opdateringer.

Jeg havde dog nogle få enheder, som ikke fulgte min simple navnestandard (enhedsnavn – rum). Så de blev ændret under flytningen. Og dashboard og scener skulle så ændres med de nye navne.

Jeg bruger nemlig scener til de fleste af mine automatiseringer, der styrer lys. Så det er nemt at rette i YAML filen, hvor mine scener er oprettet.

Alle automatiseringer, der bruger trykknapper, skulle også ændres, da tryk registreres på en anden måde i Z2M end i deCONZ.

Jeg bruger NodeRED til mine automatiseringer og valgte at bruge Zigbee2MQTT noder til styringen, så styringen foregår direkte mellem MQTT og NodeRED.


Fjern Conbee og deCONZ

Efter at have kørt et stykke tid uden problemer, er det tid til at sende Conbee II og deCONZ på pension.

Det er sådan set bare at stoppe addon, slette integration og så fjerne USB sticken.

Konklusion

Hele processen forløb uden de store problemer. Forberedelsen og klargøringen tog faktisk længst tid, så det kan med fordel gøres en anden dag end selve flytningen.

Til selve flytningen, skal du regne med omkring 1 minut pr. enhed i gennemsnit. Det tager nok lidt længere tid for de første enheder, men går hurtigere, når man først finder rytmen.

Og så tager det også noget tid bagefter at få rettet automatiseringer og dashboard til – særligt, hvis alle enheder får nye navne.

Var det så hele besværet værd?

Umiddelbart er svaret et stort JA…

Jeg har i hvert fald ikke oplevet problemer med udfald siden flytningen. Og det var jo det primære formål.

Der var heller ikke nogle problemer med tilslutningen af enheder. Alle mine enheder blev fundet næsten med det samme, de blev nulstillet. Her virker deCONZ lidt mere forældet, hvor man første skal vælge hvilken type enhed man vil parre og så tager parringen ofte længere tid.

Z2M fandt også uden problemer mine Hue Smart Buttons som var holdt op med at virke i deCONZ.

Samtidigt giver Z2M mulighed for at firmware opdatere sin enheder direkte fra softwaren. Og der var faktisk en del af mine enheder, som kørte på forældet firmware.

Z2M virker også til at have en del flere muligheder end deCONZ. Det betyder til gengæld så, at det kan være lidt mere uoverskueligt at gå til end deCONZ.

Og skulle det på et tidspunkt blive nødvendigt at skifte tilbage til deCONZ eller til ZHA, så har jeg nu lært, at flytningen faktisk ikke var så besværlig, som jeg havde forestillet mig inden…

Hvor nyttigt var dette indlæg?

Gennemsnitlig bedømmelse 5 / 5. Bedømmelser: 2

Ingen stemmer indtil videre! Vær den første til at bedømme dette indlæg.

Jeg beklager, at dette indlæg ikke var nyttigt for dig!

Hvordan kan indlægget forbedres?

13 thoughts on “Flyttedag: Skift fra deCONZ til Zigbee2MQTT

  • Christian

    Sikke en fin beskrivelse af din oplevelse og forløb. Jeg er sikker på at det vil inspirere andre til at turde kaste sig ud i et sådan skift.
    Hvordan har du fået over blik over hvilke scener og automationer der skulle tilpasses efter navne skift? Jeg kan forestille mig at der let kan gemme sig noget i et hjørne, så man så først opdager når automationer fejler.

    Besvar
    • Tak Christian.

      Scener er nemt at rette. Med oversigten over enheder i Excel er det hurtigt at lave en søg og erstat på gammelt og nyt navn for de enheder, der har fået nyt navn.

      Ift. automatiseringer, så er alt mit lys styret i ét stort flow i NodeRED. Så det var det “bare” at gå alle noder igennem og ændre deCONZ noder til Z2M noder…

      Besvar
  • Tak for en brugbar guide. Tror jeg vil kaste mig ud i det i løbet af den kommende
    Et enkelt spørgsmål. Ville du i dag stadig vælge en Sonoff dongle eller ville du bruge Skyconnect.

    Besvar
    • Hej Torben,

      Tak for din kommentar.

      Jeg ville nok vælge Sonoff-P igen, da Sonoff-E og SkyConnect stadig kun er listet som eksperimentelt understøttet:
      https://www.zigbee2mqtt.io/guide/adapters/#experimental

      Og der er også en meget bedre antenne på Sonoff end SkyConnect. Fordelen er dog at SkyConnect kan firmware opdateres direkte fra HA. Men så tit bliver firmware heller ikke opdateret…

      Mvh.

      Anders

      Besvar
  • Thomas Kristensen

    Hej Anders, super guide og rigtig gode betragninger.

    Nu er vi 10 måneder længe henne – ville du stadig gå med en Sonof? Eller ville du gå efter en skyconnect og dermed også få adgang til Matter?

    Besvar
    • Hej Thomas,

      Tak for din kommentar.

      Jeg ville nok vælge Sonoff-P igen, da Sonoff-E og SkyConnect stadig kun er listet som eksperimentelt understøttet:
      https://www.zigbee2mqtt.io/guide/adapters/#experimental

      Og jeg har endnu ikke set enheder, der kun kører Matter, så jeg ser ikke rigtigt behovet for understøttelse af det endnu. Spørg mig igen om et års tid 🙂

      Mvh.

      Anders

      Besvar
  • Helge Duif

    Hej Anders, mit setup er 99% identisk med dit. Når jeg følger din vejledning og laver en liste over entiteter, virker det fint, men når jeg forsøger at lave en liste over enheder får jeg fejl. Det er når jeg skriver device_attr(device, xxx) den bliver sur (får følgende fejlbesked: TemplateError: Must provide a device or entity ID), alt det andet virker fint. Har du et bud på, hvad der kan være galt?

    Besvar
    • Hej Helge,

      Det lyder mærkeligt, hvis du har kopieret hele koden.

      Jeg bruger godt nok ikke deCONZ længere, men koden virker fint, hvis jeg skifter til at vise enheder fra MQTT integrationen i stedet for.

      Prøv evt. at slette alt andet end “{{ device -}}” i den næstesidste linje og se om det virker…

      Mvh.

      Anders

      Besvar
      • Hej Anders, det er det jeg har prøvet. Både device- og area_name(device) virker, men lige så snart jeg prøver nogen af device_attr, så giver den nævnte fejl…

        Besvar
      • Tror måske jeg har fundet fejlen: En af mine ‘device’ i ‘devices’ returnerer ‘none’ i stedet for en hex-streng. Kan det være derfor!?

        Besvar
        • Det kunne sagtens være forklaringen.

          Den kan så ikke finde yderligere info om enheden, hvis den ikke har et gyldigt id.

          Mvh.

          Anders

          Besvar
          • Jeg tilføjede et if-statement i for-løkken og så virkede det:

            {%- if device == None %}
            {{ device -}}|{{area_name(device)}}
            {%- else %}
            {{ device -}}|{{ device_attr(device, ‘name’) }}|{{area_name(device)}}|{{ device_attr(device, ‘manufacturer’)}}|{{ device_attr(device, ‘model’)}}
            {% endif %}

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *