Integreer SmartThings en Domoticz

Gepubliceerd door Robot One op

Aeotec Smart Hub

Ervaringen met de nieuwe Aeotec Smart Hub

Domoticz is een geweldig systeem waarop je allerlei apparaten en sensoren kunt aansluiten, maar na een paar jaar op deze manier werken hangt er steeds meer hardware aan. Na een reboot en zeker na het uitvallen van de stroom of het crashen van het apparaat kan het nodig zijn veel instellingen handmatig te controleren en opnieuw in te stellen. Dat kan eenvoudiger. Het SmartThings systeem biedt uitkomst.

Er zijn eigenlijk meerdere aanleidingen om op zoek te gaan naar een alternatief:

  • ergernis over de Aeotec Z-wave stick die niet zomaar door de Raspberry Pi 4B wordt herkend (tenzij je er een USB 2.0 hub tussen zet)
  • ervaringen met een Conbee II Zigbee stick die na iedere reboot al zijn instellingen verliest
  • het commercieel gaan van IFTTT, waardoor je nu maandelijks moet betalen om apparaten aan Domoticz te kunnen koppelen via IFTTT die anders niet toegankelijk zijn (plus de enorme vertraging in de gegevensoverdracht die dit systeem veroorzaakt)
  • het besef van je met de Philips Hue Bridge alleen lampen kunt besturen en niet sensoren kunt uitlezen (omdat alleen het Zigbee ZLL protocol wordt ondersteund en niet het ZHA – Home Automation – protocol)
  • de plotselinge opkomst van een reeks goedkope Zigbee hardware van goede kwaliteit bij de Lidl, waarvoor je ander nog een extra Silvercrest gateway moet aanschaffen (die weer niet werkt met Domoticz)
  • mislukte tests met de Mi Home (Aqara) Zigbee/WiFi gateway waarvan de nieuwere versie niet aan Domoticz is te koppelen
  • gegevens van de Ring deurbel die zijn afgeschermd en dus al evenmin zijn te gebruiken in Domoticz.

Stel je nou eens voor dat je al deze problemen in één klap kunt oplossen door het installeren van een enkele nieuwe hub. Dat was mijn motivatie om hiermee aan de slag te gaan.

Aeotec Smart Hub

De Aeotec Smart Hub is de opvolger van de Samsung SmartThings gateway. Vervangt allerlei beperkte Zigbee hubs (zoals Philips Hue of Ikea Trädfri) en Z-wave sticks door één enkel, open smarthome systeem. Gemakkelijk zelf te programmeren en te koppelen aan Domoticz.

Koop op Bol.com Koop op Amazon.nl

Open systeem

Het loont natuurlijk om een open systeem te hebben, waarmee je zelf naar hartelust kunt experimenteren. Een hub of gateway van een commerciële fabrikant lijkt dan niet de eerste logische keuze. Samsung heeft zich echter verbonden aan het ontwikkelen van een ‘open en royalty-free’ protocol voor smart homes () en voegt de daad bij het woord door het zelfbedachte SmartThings systeem wijd open te zetten voor mensen die zelf uitbreidingen of aanpassingen willen ontwikkelen. Een developers-account is gratis en zo aangevraagd!

SmartThings kan vrij eenvoudig werken en is daardoor ook voor leken toegankelijk. Maar het biedt ook voldoende mogelijkheden om flink de diepte in te gaan en eigen sensoren en smart apps te ontwikkelen. En dat betekent dat je zelf ondersteuning kunt programmeren van apparaten die (nog) niet standaard worden herkend in SmartThings. En je kunt een koppeling maken met Domoticz via NodeRED of MQTT.

Wat je hiervoor nodig hebt is de Samsung SmartThings Gateway. Samsung levert deze niet meer zelf. De opvolger is de Aeotec Smart Hub. Aeotec is in de smarthome-wereld bekend van de Z-Wave USB sticks en sensoren en het feit dat deze de levering van de SmartThings hubs op zich heeft genomen, is goed nieuws. Om te beginnen is deze hub namelijk bijna de helft goedkoper dan de oorspronkelijke Samsung gateway. Bovendien is er ondersteuning voor de Europese markt, wat voorheen niet officieel het geval was.

Met een prijs van zo’n € 120 lijkt de Smart Hub nog steeds ietwat prijzig, maar hij maakt tegelijkertijd andere hardware voor zowel Zigbee als Z-Wave overbodig. Zelfs zelfgebouwde WiFi apparaatjes (bijvoorbeeld gebaseerd op de ESP8266/Wemos D1) zijn hieraan te koppelen, al kun je die natuurlijk ook rechtstreeks aan Domoticz hangen. Na flink in de buidel te hebben getast voor een Ikea Trädfri Gateway, een Philips Hue Bridge, een Mi Home/Aqara en een Silvercrest Zigbee Gateway, een PiZigate, een Conbee II stick en de Aeotec Gen5 Z-Wave stick, vind ik dit een verademing. Eigenlijk is het enige apparaat dat de Smart Hub niet kan vervangen de RFXCOM XL (voor sensoren die op 433.92MHz werken).

Wat je krijgt

De Smart Hub is een mooi plat wit kastje, een soort rechthoekige UFO met slechts twee aansluitingen: een voor de voeding (een meegeleverde originele Samsung USB telefoonlader) en een voor Ethernet. Wie geen bekabeld internet heeft, kan de hub ook met WiFi gebruiken.

Als de hub is aangesloten gaat na enige tijd een lampje op de voorkant beurtelings rood en groen knipperen. Dat is een teken dat de software kan worden geïnstalleerd. Dat gaat zelfs met een breedbandverbinding tergend langzaam en vereist dus behoorlijk wat geduld. We gaan nu stap voor stap verder:

STAP 1:
Om verder te kunnen, heb je allereerst de SmartThings App op je smartphone voor nodig. Die is er voor zowel Android als Iphones. Zelf had ik deze al geïnstalleerd omdat ik hiermee de beelden van Ring deurbel zichtbaar kon maken op mijn smart TV. Voor zover je nog geen Samsung Account hebt, moet je dat nu ook aanmaken om de app te kunnen gebruiken.

STAP 2:
Om de hub in de app zichtbaar te maken, klik je eerst op ‘+’ en dan op Apparaat. Kies voor het merk Aeotec en in het volgende scherm voor Wi-Fi/Hub (ook als je bekabeld internet hebt). Klik op het volgende scherm op de knop Ondersteunde apparaten en je ziet er (momenteel) één staan: de Smart Home Hub / IM6001-V3P. Kies deze.

STAP 3:
Het volgende scherm toont ‘Aan de slag met uw hub’. Daarna moet je een locatie kiezen. Bijvoorbeeld Thuis / Huiskamer. Dit is op dit moment niet heel erg belangrijk en kun je naderhand nog veranderen.

STAP 4:
Kies nu hoe je de hub wilt verbinden met internet: via Wi-Fi of Ethernet. Daarna krijg je de melding dat je de hub op de voeding mag aansluiten en op het volgende scherm moet je wachten tot de LED aan de voorkant rood/groen knippert.

STAP 5:
Scan vervolgens met je telefoon de QR-code aan de onderkant van de hub (dichtbij, want die staat er vrij klein op).

Nu gaat SmartThings software-updates installeren. Volgens de app zou dat niet meer dan 10 minuten moeten duren, maar in mijn ervaring is 30 minuten(!) meer realistisch. Tussendoor lijkt het regelmatig alsof de installatie blijft hangen, maar toch gaat er op de achtergrond iets verder. Bij mij bleef de voortgangsbalk staan op 99%, terwijl de hub wel al aangaf klaar te zijn: dat was te zien doordat er aan de voorkant een blauw lampje langzaam knipperde.

Gaat het tussendoor mis en moet je de installatie opnieuw opstarten, reset dan eerst de hub: trek de voedingsstekker eruit en steek een naald of paperclip in het kleine reset-knopje op de achterkant. Het is nogal een uitdaging om daarbij niet in je vinger te prikken, want je moet het knopje ingedrukt houden terwijl je de voedingsstekker terugsteekt. Wacht dan circa 30 seconden tot de snel knipperende gele LED op de voorkant constant geel blijft branden. Dan pas kun je de resetknop loslaten. De LED licht dan kort roze op en gaat enige tijd later weer rood/groen knipperen zodat je verder kunt met de installatie.

STAP 6:
Na de installatie wordt de hub toegevoegd aan het startscherm in je SmartThings App. Als je daarop klikt, kom je in een Spartaans scherm met instellingen. Het enige wat je kunt veranderen is de naam, locatie en ruimte (via het menu met de drie puntjes), Veilige stand (voorkom dat Zigbee apparaten automatisch opnieuw verbinding maken, deze heb ik uit staan) en Update apparaatfirmware (toestaan/toestaan behalve voor lampen/helemaal niet toestaan).

Sensoren aansluiten

Voeg nu je eerste apparaat toe. Ik heb voor de eerste pogingen een Z-Wave deurcontact en een PIR sensor van Neo Coolcam gebruikt die al waren aangesloten op Domoticz via een Z-Wave USB Stick. De eerste stap is dus het verwijderen van deze node uit het bestaande netwerk.

STAP 1:
Deze stap kun je overslaan als je een sensor wilt installeren die nog niet in een ander Z-Wave netwerk is opgenomen. Ga in Domoticz naar Hardware > OpenZwave USB / Instellingen. Klik op Node Beheer en kies Sensor verwijderen.

STAP 2:
Reset de sensor. Hoe dit werkt, is afhankelijk van je sensor. Bij mijn Neo Coolcam deursensoren gaat het door het batterijdeksel te verwijderen en 3x snel achter elkaar op het resetknopje te drukken. De LED knippert 5x snel en de sensor wordt nu uit het bestaande Z-Wave netwerk verwijderd. Bij de PIR-sensoren van Neo Coolcam die ik ook heb, moet je de resetknop een seconde of 10 vasthouden. De LED knippert dan in een patroon: 1x aan en uit, pauze, 5x snel aan en uit.

STAP 3:
Open de SmartThings App op je smartphone, klik op ‘+’ en op Apparaat.

STAP 4:
Kies op merk Neo Coolcam, en dan de keuze (voor het deurcontact) Sensor open/gesloten of (voor de PIR sensor) Bewegingssensor.

STAP 5:
In het volgende scherm kun je het merk kiezen. In dit geval Aeotec. Je krijgt nu een overzicht van beschikbare sensoren. Kies degene die je wilt (bij mij was er maar 1 optie, dus eigenlijk geen keuze.

STAP 6:
Stel eventueel de locatie in. Deze kun je achteraf nog wijzigen.

STAP 7:
Druk 3x snel op het knopje van de sensor (LED knippert 5x) en wacht.

STAP 8:
In de SmartThings App krijg je de melding dat de sensor is verbonden. Als je een wat oudere sensor hebt, kun je ook een waarschuwing krijgen dat je apparaat mogelijk niet het hoogste beveiligingsniveau ondersteunt. Niks aan te doen op dit moment, tenzij je meteen een nieuwere sensor wilt gaan bestellen. Klik dus op Ok.

STAP 9:
Klik in SmartThings op het overzicht op het NEO Coolcam blokje en verander de naam. In mijn geval Schuifdeur Sensor. Klik op Opslaan.

De sensor maakt nu deel uit van je Smartthings netwerk en je kunt er in de app automatiseringen aan toevoegen, zoals een notificatie sturen of een ander apparaat schakelen; bijvoorbeeld een lamp inschakelen zodra een deur open gaat (vooropgesteld dat je in SmartThings al een lamp hebt toegevoegd of je hele Philips Hue systeem aan SmartThings hebt gekoppeld, dat kan namelijk ook).

Onbekende sensoren toevoegen

Het toevoegen van een sensor die al door SmartThings wordt ondersteund is geen kunst. Nu begint echter het leuke werk: je hebt een goedkope Zigbee lamp van de Lidl of een sensor van AliExpress of Banggood gekocht en je wilt die gebruiken in SmartThings. Dat kan! Ik heb dit getest met drie Zigbee apparaten: een Lidl RGWB lamp, een Aqara deur/raamcontact en een BW-IS5 watersensor van het Duits klinkende Chinese merk BlitzWolf.

De lamp zou zonder meer ook bruikbaar zijn in een Philips of Ikea netwerk, maar voor de beide sensoren geldt dat niet, omdat zij gebruik maken van het Zigbee HA (=Home Automation) protocol, dat ontbreekt in de Hue en Trädfri gateways, maar niet in de SmartThings hub.

Lidl RGBW lamp koppelen

Allereerst de slimme LED lamp van het Lidl huismerk Livarno Lux Smart Home). Om SmartThings te leren om deze te herkennen, hebben we een zogeheten Device Handler nodig. Dat is een stukje code dat ervoor zorgt dat de SmartThings hub informatie kan uitwisselen met een apparaat, in dit geval de lamp van de Lidl. Je voegt deze code toe via je SmartThings developers dashboard (‘Groovy IDE’). Dat is hier te vinden: https://graph-eu01-euwest1.api.smartthings.com/.

Dit stelt je in staat om allerlei apparaten en softwarematige uitbreidingen (‘SmartApps’) toe te voegen; in eerste instantie voor eigen gebruik, maar (na publicatie) desgewenst ook voor de hele SmartThings community.

In de Groovy IDE zie je onder My Hubs een overzicht van de gegevens van je gateway en de daarop reeds aangesloten apparaten. Meer details over die apparaten vind je onder My Devices. Onder My SmartApps vind je de eventuele softwarematige uitbreidingen. En onder My Device Handlers vind je de aangepaste code voor je sensoren. Die moeten we nu hebben.

Je kunt hier op de pagina My Device Handlers maken op diverse manieren: door een template in te laden en dat aan te passen, door rechtstreeks een stukje code in te voeren, of door uit te gaan van een voorbeeld.

Omdat er al een device handler is voor de lamp die we gaan installeren, is het een kwestie van kopiëren en plakken.

STAP1:
Ga naar de Github pagina van LAMS144ai: https://github.com/LAMS144ai/smartthings

STAP 2:
Selecteer de hele code op die pagina en kopieer hem.

STAP 3:
Ga naar de pagina My Device Handlers in de Groovy IDE en klik op Create New Device Handler, of ga rechtstreeks hiernaartoe: https://graph-eu01-euwest1.api.smartthings.com/ide/device/create.

STAP 4:
Kies From Code en plak de zojuist gekopieerde code in het tekstvak.

STAP 5:
Ga naar de onderkant van het tekstvak en klik op Create.

STAP 6:
Klik in de tweede menubalk op de volgende pagina op Publish > For Me. Daarmee wordt de code geactiveerd.

STAP 7:
Ga in de SmartThings App op je telefoon. Klik op +, op Apparaat en vervolgens op Dichtbij scannen.

STAP 8:
Schroef de lamp in een fitting, zet hem aan.

STAP 9:
De lamp wordt binnen enkele seconden herkend en maakt daarna deel uit van je SmartThings netwerk. Geef er eventueel een andere naam aan.

Als je SmartThings hebt gekoppeld aan Google Home of Alexa, kun je hem nu ook met spraak besturen. Hue of Trädfri voor je lampen is daarmee nu volledig overbodig geworden.

Op dezelfde manier kun je het Aqara deur/raamcontact of andere sensoren van Aqara en Xiaomi toevoegen. Daarvoor staat een bibliotheek op https://github.com/bspranger/Xiaomi. Een kwestie van selecteren, kopiëren, plakken, Create, Publish > For Me.

Om de deur/raamsensor te koppelen klik je op het knopje op dit apparaat en hou je het 5 seconden vast. De LED knippert 5x. Nu zijn de fabrieksinstellingen hersteld.

In de SmartThings App ga je weer naar Dichtbij scannen. Terwijl er wordt gescand, druk je een aantal keren telkens 1x kort op het knopje van de sensor, net zo lang tot deze in de app wordt ontdekt. Geef hem ook hier weer een duidelijke naam.

Tip: Geef je deursensoren de naam van de ruimte waar ze hangen. Maak in de SmartThings App een nieuwe ruimte genaamd DEUREN en sleep de sensor in de app daar naartoe. Handig en overzichtelijk voor de toegangscontrole.

Sensor toevoegen op basis van een template

Dan de Blitzwolf Watersensor. Hiervoor kon ik online geen device handler vinden, dus die moeten we zelf maken.

STAP 1:
Open je de SmartThings App op je telefoon, klik op ‘+‘, kies Apparaat en vervolgens ‘Dichtbij scannen‘.

STAP 2:
Druk op het koppelknopje van je sensor.

STAP 3:
In de SmartThings App wordt na enkele seconden een apparaat toegevoegd met de onheilspellende naam Thing. Verander dit meteen in iets zinvols, in mijn geval Watersensor.

STAP 4:
Ga nu naar de pagina My Hubs in de Groovy IDE (https://graph-eu01-euwest1.api.smartthings.com/hub/list). Hier staat een overzicht met de gegevens en status van jouw Gateway, maar ook van de aan de hub gekoppelde devices (apparaten), zoals op de afbeelding hieronder. Staat de zojuist geïnstalleerde sensor er niet bij, dan is er iets misgegaan; ga in dat geval terug naar stap 1.

STAP 5:
Klik, nog steeds in hetzelfde scherm, op List Events. Je krijgt nu een lange loglijst met in de hub geregistreerde gebeurtenissen van de laatste 7 dagen. Scroll er doorheen tot je de regels DeviceUpdate, DeviceAdd en zbjoin ziet. Klik op die laatste regel en je ziet de gegevens van het gekoppelde apparaat. In dit geval:

zbjoin: {"dni":"0E80","d":"EC1BBDFFFE87E9F8","capabilities":"80","endpoints":[{"simple":"01 0104 0402 00 05 0000 0001 0003 0500 EF01 02 0003 0019","application":"43","manufacturer":"_TYZB01_o63ssaah","model":"TS0207"}],"parent":"0000","joinType":1,"joinDurationMs":15064,"joinAttempts":1}

STAP 6:
Noteer de fabrikant (manufacturer) en model name. In het voorbeeld hierboven is de fabrikant _TYZB01_o63ssaah en de modelnaam TS0207.

STAP 7:
Maak een nieuwe Device Handler: klik op de pagina My Device Handlers op Create New Device Handler.

STAP 8:
Kies in het volgende scherm From Template en selecteer het protocol. In dit geval is dit Zigbee Home Automation (HA) or 3.0. Kies daaronder in de lijst de mogelijkheden (Tempate Capabilities) die je sensortemplate moet hebben.

STAP 9:
Ik koos Watersensor maar kreeg de melding dat er aanvullende capabilities nodig waren: Battery en Temperature. Pas toen ik die aanvinkte kreeg ik een template te zien: de SmartSense Moisture Sensor en kon ik de gegevens in het formulier rechts invullen.

STAP 10:
Vul de bij stap 6 genoteerde manufacturer en model name in het formulier in en klik onderaan op de button Create New Device Handler.

STAP 11:
Vervolgens krijg je de code van je sensor te zien. Dit laten we even voor wat het is. Klik op Publish (For Me). De code is nu voor jouw account actief.

STAP 12:
Klik nu in het dashboard op Live Logging. Als je op de sensor op het knopje klikt of de contacten in een laagje water zet (of ze met een metalen voorwerp overbrugt), zie je in het dashboard de status update waarin het belangrijkste is of er is geconstateerd of de status ‘dry’ of ‘wet’ is.

In de Smartthings App op je telefoon kun je nu ook de Watersensor zien staan en wordt de status doorgegeven. De batterijlading en temperatuur zie ik (nog) niet. Waarschijnlijk zijn hiervoor extra aanpassingen noodzakelijk, maar de belangrijkste functionaliteit is nu in ieder geval beschikbaar!

Koppelen van SmartThings en Domoticz

De volgende stap is het koppelen van SmartThings en Domoticz. We willen niet alleen dat de status van Domoticz devices aan SmartThings wordt doorgegeven, maar ook andersom.

De eenvoudigste methode om dit te realiseren is gebruik maken van NodeRED en MQTT. In NodeRED zijn namelijk standaard routines beschikbaar voor SmartThings.

Voor wie nog niet bekend is met het gebruik van NodeRED en MQTT: NodeRED is als een soort grafische blokkendoos waarin je diverse apparaten met elkaar kunt laten communiceren zonder diepgaande programmeerkennis. MQTT is een protocol dat wordt gebruikt om informatie en commando’s via een netwerkverbinding door te sturen. In het artikel ‘Koppel je Smart-TV aan Domoticz‘ heb ik de eerste stappen voor de installatie en het gebruik van beide technieken beschreven.

Om SmartThings in NodeRED te kunnen gebruiken, is de Flow https://flows.nodered.org/node/node-red-contrib-smartthings nodig.

STAP 1:
Het werkt pas als je in SmartThings een token voor dit gebruik opvraagt. Ga daarvoor naar https://account.smartthings.com/tokens, log in en klik op Generate New Token.

Geef in het volgende scherm het token een naam en vink aan tot welke gegevens je via dit token toegang wil geven.

Klik op Generate Token. Er wordt nu een token aangemaakt. Kopieer dit en houd het apart voor de volgende instellingen.

STAP 2:
Ga naar nodeRED, kies in het hamburgermenu rechtsboven Manage palette en zoek op ‘smartthings’. Installeer node-red-contrib-smartthings.

Je krijgt nu een hele reeks nodes binnen voor het inlezen en besturen van SmartThings apparaten.

STAP 3:
Maak een eenvoudige Flow met een van de SmartThings nodes, bijvoorbeeld Waterflow. Dubbelklik op het blokje en er opent een scherm met instellingen.

STAP 4:
Klik op het potloodje rechts naast Add new smartthings-config en je komt in een venster met eigenschappen (properties). Bedenk een naam voor je instellingen en vul het token in dat je in Stap 1 hebt genoteerd.

Je hebt nu via nodeRED toegang tot SmartThings en kunt flows met de zojuist geladen bibliotheek Flows gaan maken om data vanuit SmartThings naar Domoticz te sturen en andersom.

Stel je wilt bijvoorbeeld een schakelaar in Domoticz maken die laat zien of er een deur open of dicht staat.

STAP 1:
De eerste stap is dan het aanmaken van een virtuele schakelaar van het type ‘Schakelaar’ te maken in Domoticz (Instellingen > Hardware > Maak virtuele sensoren). Noteer het Idx nummer van deze schakelaar, bijvoorbeeld 620.

STAP 2:
Open het nodeRED dashboard. We gaan nu een Flow tekenen om de toestand van het deurcontact uit te lezen en te vertalen in een MQTT commando voor Domoticz. In de afbeelding hieronder worden drie deuren uitgelezen. Begin met één (1 inject node, 1 deurcontact, 1 switchnode, 2 functienodes en 1 MQTT out node):

Check of er een deur open gaat

STAP 3:
Maak een nieuwe Flow in nodeRED. Begin met het plaatsen van een inject node (‘Knopje’), dubbelklik erop en pas de eigenschappen aan:

Hiermee start je de Flow na een klik en trigger je hem vervolgens iedere 0.5 seconden.

STAP 4:
Plaats als tweede node de OpenClose node die je vindt in de SmartThings lijst en pas hem als volgt aan (geef in plaats van de naam SM de naam van het account die je zelf hebt aangemaakt en kies het juiste Device uit de dropdown lijst):

STAP 5:
Daarachter komt je switch node, om onderscheid te maken tussen ‘1’ (deur open) en ‘0’ (deur dicht):

STAP 6:
De switch heeft voor iedere toestand een uitgang. Hang achter iedere uitgang een function node om de boodschap te vertalen naar een commando dat Domoticz snapt. In de schermafbeelding hieronder staat als idx van virtuele schakelaar 629 ingevuld. Die moet je uiteraard aanpassen aan de juiste idx van de virtuele schakelaar die je zelf hebt aangemaakt in stap 1.

STAP 7:
Maak een tweede functie zoals die hierboven voor de toestand ‘Berging dicht’, maar dan met als nvalue 0 en svalue “Off”.

STAP 8:
Voeg nu de node mqqt out toe, kies de MQTT server van Domoticz en zet het kanaal op domoticz\in.

STAP 9:
Verbind de nodes volgens het schema (als je dat nog niet had gedaan) en klik op Deploy en vervolgens op de node ‘Knopje’. Statusveranderingen in de aangesloten sensor worden nu via SmartThings, nodeRED en MQTT aan Domoticz doorgegeven.

Zie ook:


1 reactie

Frank · 1 april 2021 op 11:20

Leuk artikel. Ik ben dezelfde beweging aan het maken, van Domoticz naar Smartthings. Ik zou graag vanuit Smartthings een virtuele switch in Domoticz bedienen. Deze uitleg kan me hopelijk daarbij helpen.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *