Domotica met OpenHAB

openhab

Nadat ons huis geautomatiseerd was met Domoticz, leek het me interessant om eens een ander Domotica-systeem te gaan proberen op de Raspberry Pi. Ik kwam uit bij OpenHAB, wat staat voor Open Home Automation Bus.

OpenHAB integreert verschillende domotica-technieken in een enkelvoudige software-oplossing. Een kleine waarschuwing vooraf: het is geen kant-en-klare consumentenoplossing en en er moet best wel wat geconfigureerd worden. Daar staat tegenover dat dat het systeem heel veel oplossing biedt en behoorlijk goed uitbreidbaar is. Je kunt er veel oplossing op ‘inhaken’, er zelf uitbreidingen voor schrijven of gebruik maken van de uitbreidingen die de community beschikbaar stelt.

Na de initiële installatie van OpenHAB kun je eenvoudig uitbreidingen installeren waaronder HomeKit integratie en koppelingen met Zwave en Ikea’s Trädfri. Je hebt dan al snel al je Ikea-verlichting en Zwave devices tot je beschikking om er een geweldig domotica-systeem mee te bouwen, maar daarvoor moet je wel de concepten van OpenHAB begrijpen zoals Things, Channels, Binding en Items.

Installatie op een Raspberry Pi

De Raspberry Pi (en vooral versie 3B) leent zich uitstekend om een Domotica-systeem mee op te bouwen. Het installeren van OpenHAB is zeer eenvoudig, maar je hebt er wel een beetje geduld voor nodig.

Voor de Raspberry Pi is OpenHABian ontwikkeld: een SD-card image met een voorgeconfigureerde installatie van OpenHAB. Je hoeft alleen de laatste versie van het image-bestand te downloaden en op een SD-card te plaatsen met een applicatie zoals bijvoorbeeld Etcher.

Zodra je de image op de Sd-card hebt gezet, plaats je de SD-card in de Raspberry Pi en start hem op. De installatie wordt nu uitgevoerd. Dit kan behoorlijk lang duren. Het vervelende is dat het beeld van je Raspberry Pi tijdens de installatie op zwart gaat. Geen nood, de installatie loopt dan gewoon door. Bij mij duurde het tot wel 45 minuten alvorens er weer iets op het beeld verscheen. Je moet dus behoorlijk wat geduld hebben en de verleiding weerstaan om tussentijds de Raspberry Pi opnieuw te starten.

Zodra de installatie afgerond is, kun je de web-interface openen via http://openhabianpi:8080.

Ook heb je de mogelijkheid om in te loggen via SSH:

ssh openhabian@openhabianpi (wachtwoord = openhabian)

Wanneer je via SSH bent ingelogd, kun je de OpenHABian Configuration Tool gebruiken om de software te upgraden en backup’s te maken en terug te zetten.

WiFi instellen

Als je Raspberry Pi voorzien is van WiFi dan kun je, nadat je de image op de SD-card hebt gezet, het bestand openhabian.conf openen en daarin je WiFi-instellingen configureren:

wifi_ssid="<naam_van_je_netwerk>"
wifi_psk="<je_wifi_wachtwoord>"

Binnenkort meer over hoe je je devices configureert…

 

Domoticz koppelen met Ikea’s Trädfri

ikea domoticz

In het verleden heb ik mijn Trädfri-systeem van Ikea al eens gekoppeld met HomeBridge, zodat ik de Ikea-lampen kon koppelen met HomeKit en dus kon bedienen via mijn iPhone. Sinds enige tijd biedt Ikea ook HomeKit-ondersteuning waardoor deze koppeling niet meer nodig is.

Wanneer je een AppleTV4 of iPad met minimaal iOS10 hebt, kun je ook zaken automatiseren met scenes en dergelijke. Heb je die ApplTV of iPad niet, dan ben je aangewezen op de zeer beperkte functionaliteit van Trädfri, waarbij je bijvoorbeeld lampen kunt schakelen op basis van tijd.

Natuurlijk wil ik lampen ook kunnen schakelen op basis van sensoren, tijd en combinaties hiervan, maar met de mogelijkheden van Trädfri zelf kom je niet heel ver. In Domoticz is het mogelijk om lampen te schakelen op basis van veel verschillende factoren en daarbij ook condities te hanteren. Bijvoorbeeld: schakel een lamp in wanneer een bewegingssensor geactiveerd wordt ná zonsondergang. Dit soort logica hanteer ik al een tijdje met de Zwave-devices in mijn huis, maar helaas nog niet met de Ikea-verlichting. Het wordt dus tijd om Domoticz nu ook eens te koppelen met Trädfri.

Standaard wordt Tradfri niet ondersteund door Domoticz, maar met de installatie van wat (opensource) software wordt het toch mogelijk. Trädfri ondersteunt namelijk het COAP-protocol, waarmee het basisstation een API biedt weer te tegen kunnen praten.

Om te beginnen hebben we het IP-adres van het Trädfri basisstation nodig. Dit basisstation verkrijgt zijn IP-adres via DHCP. Het is niet mogelijk om een vast IP-adres in te stellen. De eenvoudigste manier om achter het IP-adres van het basisstation te komen is door het MAC-adres af te lezen op de achterzijde van het apparaat. Met dit MAC-adres kun je dan in je router het IP-adres van het basisstation opzoeken. Noteer het IP-adres van het basisstation om het later te gebruiken.

Om de koppeling op te bouwen, moeten we een Python plugin installeren. Op het moment dat ik dit artikel schrijf, worden plugins enkel nog in de beta-versie van Domoticz ondersteund. Dat wil zeggen: Domoticz is er in twee versies: stable en beta.

  1. Open Domoticz in je browser door te surfen naar http://<ip_adres_van_domoticz>:8080
  2. Klik vervolgens op Instellingen en daarna weer op Instellingen. De instellingen-pagina wordt nu geopend.
  3. Kies nu onder Software-updates het distributie-kanaal Bèta.
  4. Klik nu rechtsboven weer op Instellingen en vervolgens op Controleer op updates.

Wanneer Domoticz draait op de laatste Beta-versie, kunnen we de plugin voor Ikea’s Trädfri installeren. Voor de plugin is Python versie 3.5 minimaal vereist. Wanneer je Domoticz hebt draaien op een Raspberry Pi (en dus op het RaspBian OS), heb je waarschijnlijk Python versie 2.x nog draaien en zul je dus je Python moeten upgraden.

Als je Python versie 3.5 of hoger hebt draaien, kun je verder gaan met de volgende stappen:

  1. Log in op je Domoticz-machine via SSH.
  2. Installeer pytradfri.
    Dit is een Python library die wordt gebruikt door de Domoticz-plugin die we zometeen gaan installeren. Je installeert deze library met het volgende commando:

    pip3 install pytradfri
  3. Vervolgens installeer je de Twisted library. De Domoticz-plugin maakt ook hier gebruik van:
    pip3 install twisted
  4. Ga nu naar de plugins-directory van je Domoticz installatie (op mijn Raspberry Pi is dat /home/pi/domoticz/plugins) en clone de Ikea Trädfri plugin via Git:
    cd /home/pi/domoticz/plugins
    git clone https://github.com/moroen/IKEA-Tradfri-plugin.git IKEA-Tradfri
  5. Creeer een identiteit en een sleutel. Hiervoor heb je het IP-adres en de beveiligingssleutel van je basisstation nodig. Het IP-adres heb je eerder al opgezocht en de beveiligingssleutel is te vinden op de achterzijde het basisstation. Het volgende commando genereert een sleutel voor de gebruiker DOMOTICZ. Vervang <BEVEILIGINGSSLEUTEL> en <IP_ADRES_VAN_BASISSTATION> door je eigen varianten.
    coap-client -m post -u "Client_identity" -k "<BEVEILIGINGSSLEUTEL>" -e '{"9090":"DOMOTICZ"}' "coaps://<IP_ADRES_VAN_BASISSTATION>:5684/15011/9063"
  6. Wanneer het commando succesvol wordt uitgevoerd, krijg je het onderstaande terug. In dit voorbeeld is de aangemaakte sleutel: 1.2.0042. Jouw sleutel zal natuurlijk een andere waarde bevatten. Noteer deze waarde. Je kunt hem namelijk maar één keer aanmaken en hij is naderhand niet meer op te roepen.
    {"9091":"PSK","9029":"1.2.0042"}
  7. Nu gaan we de COAP-adapter activeren. Hiervoor gebruiken we systemd.
    cd IKEA_tradfri
    sudo cp ikea-tradfri.service /lib/systemd/system/
    sudo systemctl daemon-reload
    sudo systemctl start ikea-tradfri.service
  8. Om er voor te zorgen dat de ikea-tradfri service automatisch wordt opgestart wanneer je de Domoticz-machine herstart, voer je het volgende commando uit:
    sudo systemctl enable ikea-tradfri.service
  9. Ga nu weer naar Domoticz in je browser en klik op Instellingen en vervolgens op Hardware.
  10. We gaan nu nieuwe hardware toevoegen. Kies bij type de optie IKEA Tradfri. Vul het IP-adres van je basisstation in. Bij identity vul je in: DOMOTICZ. Bij PSK vul je de gegenereerde sleutel in. Klik tot slot op Toevoegen.

    tradfri-domoticz-settings

  11. De gekoppelde lampen van Ikea verschijnen nu bij Instellingen->Apparaten. Je kunt ze nu gebruiken zoals alle andere devices in Domoticz.

Ikea Trädfri nu met HomeKit ondersteuning

tradfri-homekit

Ikea heeft op 1 november 2017 de langverwachte HomeKit-ondersteuning gereleased voor hun Trädfri verlichting. De verbindingshub draait nu op software-versie 1.2.42 en de iOS-app draait op versie 1.2.0.

Om je verbindingshub te updaten, voer je het volgende uit:

  • Start je de Trädfri app.
  • Druk rechtsboven in beeld op het tandwieltje om de Instellingen te openen.
  • Daarna druk je op Trädfri versie.
  • Bij de Gateway dient minimaal software versie 1.2.42 te staan. Is dit niet het geval, druk dan op Controleer of er updates beschikbaar zijn.
  • Wanneer je Gateway de juiste software versie heeft, druk je op het pijltje linksboven om terug te gaan naar de Instellingen.
  • Op het instellingenscherm druk je op Integraties.
  • Druk vervolgens op Apple HomeKit.
  • Je krijgt nu een 8-cijferige code te zien. Noteer deze code.
  • Start nu de Woning-app.
  • Druk rechtsboven op de + en kies de optie Voeg accessoire toe.
  • Druk onderin het scherm op Heb je geen code of kun je niet scannen?
  • Kies nu de Trädfri Gateway.
  • Voer vervolgens de code in die je zojuist genoteerd hebt.
  • De Trädfri gateway wordt nu toegevoegd.
  • Allereerst wordt nu de gateway zelf toegevoegd aan HomeKit.
  • Je kunt nu de naam van de lamp aanpassen en ook de ruimte waarin de lamp zich bevindt. Ook kun je de lamp toevoegen aan je favorieten. Door op het lamp icoontje te drukken kun je zelfs het icoontje wijzigen in een ander type lamp.
  • Klik op Volgende.
  • Herhaal de vorige 2 stappen voor elke lamp die gevonden wordt.

Voila, de integratie met HomeKit is nu gereed. Je kunt je Ikea-lampen nu bedienen via de Woning app of zelfs via Siri.


Waarom kan ik die HomeKit code nergens vinden?!

Een veel voorkomende klacht is dat mensen de HomeKit-code niet kunnen vinden in de Ikea TrädFri app. Ook ik liep tegen dit probleem aan. In het instellingenscherm was nergens de optie Integraties te vinden. Ondanks dat ik de app volledig bijgewerkt had, bleek ik toch de oude te draaien. Dit bleek toen ik onderin het Instellingen-scherm keek. Wanneer je de juiste versie van de Trädfri app hebt, staat er versie 1.2.0.
Tradfri settings
Heb je ondanks het updaten vanuit de AppStore toch een lagere versie, dan kun je dit simpel oplossen door de volgende stappen te doorlopen:

  • Druk op Verbinding verbreken met de app.
  • Bevestig hierna door te drukken op Verbinding verbreken.
  • Verwijder nu de Trädfri app van je iOS-device.
  • Installeer de Tradfri app opnieuw vanuit de AppStore.
  • Start de app op en volg de instructies voor het koppelen van je verbindingshub.

Wanneer je nu naar Instellingen gaat in de Trädfri app, zul je zien dat de optie Integraties nu wel beschikbaar is.

Domotica, kleine kinderen en energie besparen

open door heat loss

Iedereen met kleine kinderen kent het probleem: Kinderen die vergeten de buitendeur dicht te doen, waardoor er onnodig gestookt wordt. Ook hier in huis hebben we dit probleem. Terwijl het buiten koud is laten de kinderen de keukendeur openstaan als ze in de tuin gaan spelen. Niet alleen loopt alle warmte uit het huis, maar de verwarming gaat ook nog eens harder stoken om het toch weer warm te krijgen.

Zo kwam ik op het idee om de verwarming eens wat slimmer te maken, waardoor hij stopt met stoken op het moment dat onze keukendeur te lang open staat. De domotica in ons huis draait op Domoticz en de verwarming wordt aangestuurd door een Nest Thermostaat. Het enige dat ik nog nodig had, was een manier om te detecteren of de keukendeur open stond. Hiervoor heb ik een zWave deursensor aangeschaft. Deze sensor werkt op een batterijtje (dat zo’n anderhalf jaar meegaat) en communiceert draadloos met het Domotica-systeem.

Ik heb gekozen voor de deursensor van Neo Coolcam. Deze is bestaat uit twee delen. Eén breng je aan op de deur en het andere deel breng je aan op het kozijn. Hiervoor kun je de meegeleverde schroefjes of dubbelzijdige tape gebruiken. Neo Coolcam door sensorBinnen 5 minuten zit de sensor op je deur en heb je hem gekoppeld aan Domoticz. Het is echt supereenvoudig!

Bij het schakelen van de verwarming wil ik ook graag rekening houden met de buitentemperatuur. Hiervoor heb ik de API van Weather Underground gebruikt. De handleiding voor hoe je deze in Domoticz integreert vindt je hier. Na de implementatie kreeg ik er in Domoticz een device bij, genaamd Buitentemperatuur.

Nu moest ik de logica gaan programmeren. Deze is als volgt:

  • Wanneer de keukendeur langer dan 2 minuten open staat en de buitentemperatuur lager is dan 20 graden, moet de Nest-thermostaat in ECO-mode gezet worden. Hierdoor stopt de verwarming met stoken.
  • Wanneer de deur weer gesloten wordt, moet de ECO-stand worden opgeheven waardoor de verwarming weer aan gaat.
  • Het opheffen van de ECO-mode moest echter alleen plaats vinden wanneer we niet thuis zijn.

Gelukkig weet onze Nest Thermostaat of we thuis zijn. Dit is door Domoticz uit te lezen; er is gewoon een sensor voor.



In eerste instantie heb ik geprobeerd de logica te programmeren in LUA, maar daarbij liep ik tegen problemen met het uitlezen van sommige sensoren. De oorzaak hiervan heb ik nog niet kunnen achterhalen. Tijdens het uitzoeken kwam ik DzEvents tegen: een nieuwe manier van LUA scripting die ik zelf veel prettiger vond en die ook ondersteund wordt door Domoticz.

Om deze LUA-scripts door Domoticz uit te laten voeren, plaats je deze in de ~/domoticz/scripts/dzVents/scripts directory. De bestandsnaam dient de extensie lua te hebben. Ik heb dus het bestand keukendeur.lua aangemaakt in deze directory. Dit is mijn code:

return {
    active = true,
    on = {
        devices = {
            'Keukendeur'
        }
    },
    execute = function(domoticz, switch)
        if (switch.state == 'Open' and domoticz.devices('Buitentemperatuur').temperature < 20) then
                domoticz.log('Timer set for 5 minutes before entering heating ECO mode')
                domoticz.devices('Thuis Family Room Manual Eco Mode').setState('On').afterMin(2)
        end

        if (switch.state == 'Closed' and domoticz.devices('Thuis Family Room Away').state == 'Off') then
            domoticz.devices('Thuis Family Room Manual Eco Mode').setState('Off')
        end

    end
}

Deze code wordt event-based uitgevoerd. Op het moment dat de status van Keukendeur wijzigt, wordt de bovenstaande code uitgevoerd. Daarbij wordt gekeken naar de status van de sensor (switch.state), de temperatuur van de Buitentemperatuur-sensor en de status van de Away-sensor in de Nest Thermostaat.

Door deze uitbreiding is ons huis weer een beetje slimmer geworden en kan het omgaan met kinderen die vergeten de deur achter zich dicht te doen.

 

Ikea’s TRÅDFRI bedienen met HomeKit en Siri

tradfri-homekit

Onlangs heb ik mijn eerste ervaring met Ikea’s TRÅDFRI gedeeld. TRÅDFRI bleek nogal beperkt te zijn in de functionaliteit en, in tegenstelling tot wat de verkoper in de vestiging in Duiven vertelde, bleek het (nog) niet te werken met Apple’s HomeKit.

Zo’n systeem met beperkte functionaliteit vormt voor mij als techneut toch wel een uitdaging. TRÅDFRI werkt met het COAP-protocol, dus ben ik eens gaan uitzoeken wat we daar mee kunnen. Na wat zoeken kwam ik een plugin tegen voor HomeBridge. Hierdoor zou het mogelijk worden om TRÅDFRI toch te koppelen aan HomeKit. Nu zijn er meerdere plugins te vinden voor TRÅDFRI, maar de door mij gebruikte plugin blijkt niet alleen het beste te werken met Siri, maar biedt ook de mogelijkheid om de lichtkleur vanuit HomeKit te wijzigen. Een andere plugin die ik getest heb deed dit niet en werkte ook niet al te best via Siri.

Ik ga er vanuit dat je HomeBridge al hebt draaien. Is dit nog niet het geval, lees dan eerst dit artikel.

Het installeren van de plugin is vrij eenvoudig:

  • Log in op je Raspberry Pi via SSH.
  • Zorg dat je als root werkt d.m.v. hete volgende commando
    sudo bash
  • We gaan nu enkele software-pakketjes installeren die we verderop nodig hebben:
    apt-get install libtool autoconf
  • Nu gaan we de COAP library installeren. Deze wordt door de plugin gebruikt om met TRÅDFRI te communiceren. Voer de onderstaande commando’s één voor één uit:
    cd /root
    git clone --recursive https://github.com/obgm/libcoap.git
    cd libcoap
    git checkout dtls
    git submodule update --init --recursive
    ./autogen.sh
    ./configure --disable-documentation --disable-shared
    make
    make install
  • Installeer de plugin
    npm install -g homebridge-tradfri-plugin
  • Tot slot moeten we de HomeBridge-configuratie nog aanpassen, zodat de plugin ingesteld is en gebruikt kan worden. Open hiervoor het configuratiebestand:
    nano /home/pi/.homebridge/config.json
  • Voeg het platform toe door de onderstaande code toe te voegen. Je hebt hierbij het IP-adres van de TRÅDFRI-gateway nodig. Deze kun je terug vinden in de DHCP-tabel van je router. Daarnaast heb je de securitycode van de gateway nodig. Deze vindt je terug op de onderkant van je gateway.
  • {
      "platform": "IkeaTradfri",
      "name": "Tradfri",
      "host": "192.168.x.x",
      "key": "<jouw beveiligingscode>"
    }
    

    Als je de bovenstaande code toevoegt, vergeet dat niet achter het laatste platform dat je eerder geconfigureerd hebt, een komma achter de sluitende accolade te plaatsen. Anders klopt het JSON-formaat van je configuratiebestand niet meer en zal HomeBridge niet starten. Natuurlijk moet je het IP-adres en de beveiligingscode vervangen door die van jouw TRÅDFRI-gateway.

  • Nu gaan we het geheel testen. Hiervoor hoeven we niet langer als root ingelogd te zijn. Met het volgende commando worden we weer de standaard “pi”-gebruiker:
    exit
  • Omdat HomeBridge in de achtergrond nog loopt, gaan we deze stoppen en handmatig opstarten. Op die manier krijgen we de output van de applicatie op ons scherm, zodat we kunnen controleren of HomeBridge goed opstart. Als er iets misgaat, kunnen we dan ook de foutmeldingen zien.
    sudo systemctl stop homebridge.service
  • Nu starten we HomeBridge handmatig op:
    homebridge
  • Als alles goed gaat, zie je nu dat HomeBridge opstart en dat je TRÅDFRI-componenten automatisch gevonden worden. Je kunt ze ook direct terugvinden in de Woning-app op je iPhone of iPad.

Omdat de verkoper van Ikea mij verzekerde dat TRÅDFRI HomeKit op dit moment al ondersteunde, heb ik voor de zekerheid nog even met de klantenservice van Ikea gebeld. Ook daar bleek men slecht geïnformeerd over hun eigen product, maar nadat ik een tijdje in de wachtrij had gezeten, kon men mij vertellen dat het in de toekomst wel ondersteund zou gaan worden. Op mijn vraag, of dit via een software-update zou gaan of dat ik een nieuwe gateway zou moeten aanschaffen, kon men mij helaas geen antwoord geven. Ook op de vraag wanneer men deze functionaliteit verwachtte, kon men geen antwoord geven.

Gelukkig hoef ik met deze oplossing via HomeBridge niet meer op Ikea te wachten.

Update: Inmiddels ondersteunt Ikea’s Trädfri ook HomeKit, waardoor deze koppeling via HomeBridge niet meer nodig is.

Bestuur je huis onderweg met Siri

HomeKit remote

Onlangs beschreef ik hoe je je huis kunt besturen met Siri. Hoewel het erg leuk is om je huis met je stem te kunnen bedienen, werkt de installatie zoals beschreven enkel wanneer je iPhone of iPad verbonden is met je lokale Wifi-netwerk. Het zou natuurlijk handiger zijn als het ook zou werken als je niet thuis bent, zodat je bijvoorbeeld alvast de verwarming hoger kunt zetten of alvast de rolluiken kunt openen.

AppleTVDe oplossing hiervoor is vrij simpel. Je hebt een iCloud-account nodig en een AppleTV of een iPad met minimaal iOS10. De AppleTV of iPad dient aangemeld te zijn op dezelfde iCloud-account als je iPhone en verbonden te zijn met je thuisnetwerk. Beide apparaten kunnen dan functioneren als HomeKit gateway waardoor HomeBridge ook bereikbaar is als je buiten de deur bent.

Het leuke van deze setup is dat je geo-fencing kunt gebruiken. Dat wil zeggen dat je apparaten of scenes kunt aansturen op basis van je lokatie. Je kunt bijvoorbeeld je rolluiken vast openen wanneer je in de buurt van je huis komt of de verwarming vast wat hoger zetten.
Helaas werkt de geo-fencing functionaliteit niet op een AppleTV versie 3. De overige functionaliteit werkt wel. Wil je gebruik maken van geo-fencing, dan zul je dus een AppleTV versie 4 moeten gebruiken of een iPad met minimaal iOS10.

Je huis besturen met Siri

Domotica met Siri en HomeBridge

In een eerdere blog heb ik beschreven hoe je met een Raspberry Pi de basis kunt leggen voor Domotica in je huis. Daarnaast heb ik uitgelegd hoe je op afstand je huis kunt besturen.

Aangezien ik een iPhone gebruik, leek het me ook aardig om een koppeling te maken met Apple’s HomeKit. Deze domotica-software zit ingebouwd in iOS, waardoor het op elke iPhone en iPad beschikbaar is. Het leuke van HomeKit is dat je het kunt besturen met Siri, waardoor je met je stem je huis kunt besturen. Helaas werken niet alle domotica-oplossingen met HomeKit en Domoticz, het open-source pakket dat ik voor mijn domotica gebruik, is daar geen uitzondering op. Ook mijn Nest-thermostaat werkt standaard niet met HomeKit.

HomeBridge

Om apparaten toch met HomeKit te laten communiceren, is er HomeBridge. Deze open-source software werkt als schakel tussen je apparaten en HomeKit. Het draait op Node.js, dus dat zul je eerst moeten installeren. In deze blog ga ik er vanuit dat je de basis met een Raspberry Pi en Domoticz reeds draaiend hebt.

Om te beginnen log je via SSH in op je Raspberry Pi. We gaan nu eerst Node.js installeren. Ik vind het zelf het gemakkelijkste om dit als root te doen. Hiervoor geef je het volgende commando:

sudo bash

Toets nu de volgende commando’s om Node.js op te halen:

wget https://nodejs.org/dist/v4.0.0/node-v4.0.0-linux-armv7l.tar.gz
tar -xvf node-v4.0.0-linux-armv7l.tar.gz
cd node-v4.0.0-linux-armv7l

Verplaats nu NodeJS naar /usr/local met het volgende commando:

cp -R * /usr/local/

Node.js is nu geïnstalleerd. Je kunt dit controleren door het onderstaande commando uit te voeren. Je krijgt dan krijgt dan als antwoord het versienummer te zien:

node -v

Voordat we HomeBridge gaan installeren, moeten we eerst Avahi installeren, omdat HomeBridge hier gebruik van maakt:

apt-get install libavahi-compat-libdnssd-dev

De voorbereidingen zijn nu gereed en we kunnen nu HomeBridge gaan installeren.Voer het volgende commando uit:

npm install -g homebridge

De installatie kan aardig wat tijd in beslag nemen. Wees niet bang als je wat errors voorbij ziet komen. Als de installatie voltooid is, kunnen we HomeBridge voor het eerst opstarten:

homebridge

Aangezien we nog niet alle onderdelen van HomeBridge geïnstalleerd hebben, zullen er nog wat foutmeldingen verschijnen, zoals “No plugins found. See the README for information on installing plugins.” De plugins waarover gesproken wordt, gaan we nu installeren. Je kunt HomeBridge stoppen door de toetsencombinatie CTRL+c.

Plugins installeren

Domoticz

Om de Domoticz-plugin te installeren, toets je het volgende commando:

npm install -g homebridge-edomoticz

Nadat de plugin geïnstalleerd is, gaan we het configuratiebestand voor HomeBridge aanmaken:

cd ~/.homebridge/
nano config.json

Kopieer de onderstaande tekst in het bestand en sluit met CTRL+x. (Het bestand wordt nu opgeslagen)

{
    "bridge": {
        "name": "Homebridge",
        "username": "CC:21:3E:E4:DE:33",
        "port": 51826,
        "pin": "031-45-154"
    },
    "description": "Configuration file for (e)xtended Domoticz platform.",
    "platforms": [
        {
            "platform": "eDomoticz",
            "name": "eDomoticz",
            "server": "127.0.0.1",
            "port": "8080",
            "ssl": 0,
            "roomid": 2,
            "mqtt": 1
        }
    ],
    "accessories": []
}

De waarde voor “roomid” is hierboven gezet op 2. Dit is het floorplan dat we in Domoticz aanmaken en waarin we alle apparaten zetten die we via HomeKit beschikbaar willen maken. In Domoticz ga je naar:
Instellingen -> Meer opties -> Ruimtes -> Kamerplan

Klik nu rechtsboven op Ruimte toevoegen. Als naam geef je bijvoorbeeld HomeBridge. Vervolgens kun je onderin kiezen welke apparaten je wilt toevoegen. Voeg één voor één al je apparaten toe.

Zodra je dit gedaan hebt, start HomeBridge op:

homebridge

Je ziet nu dat HomeBridge de apparaten via Domoticz vindt. Wanneer HomeBridge is opgestart, krijg je het volgende te zien:

Scan this code with your HomeKit App on your iOS device to pair with Homebridge:
                       
    ┌────────────┐     
    │ 031-45-154 │     
    └────────────┘     

Deze code heb je nodig om je iPhone of iPad te verbinden met HomeBridge. Start nu in iOS de HomeKit-app.

  • Druk rechtsboven op de +-knop en kies Voeg accessoire toe.
  • Je ziet nu HomeBridge verschijnen. Kies deze.
  • Je wordt nu gevraagd om een code te scannen. Dit gaat niet met HomeBridge, maar je kunt ook kiezen om de code handmatig in te voeren. Kies deze optie en voer de code in die je van HomeBridge hebt gekregen.
  • Hierna wordt je gevraagd om één voor één de apparaten in te stellen. Je kunt hun naam, functie en lokatie wijzigen. Eventueel kun je dit ook later doen, maar het is wel belangrijk omdat Siri dan bijvoorbeeld het verschil kent tussen spotjes in de keuken en spotjes in de woonkamer. Als je lampen configureert als lamp in plaats van schakelaar, dan weet Siri dat je deze apparaten wilt schakelen wanneer je het hebt over verlichting.

HomeBridge automatisch starten

We hebben HomeBridge handmatig opgestart. Echter, zodra je de SSH-sessie sluit zullen applicaties, die je gestart hebt, automatisch afsluiten, dus ook HomeBridge. Daarom moeten we de Raspberry Pi HomeBridge automatisch laten starten.

Voer het volgende commando uit:

nano /lib/systemd/system/homebridge.service

Plak de volgende tekst in het bestand en sla het op:

[Unit]
Description=HomeBridge Service
After=multi-user.target

[Service]
User=pi
Type=idle
ExecStart=/usr/local/bin/homebridge

[Install]
WantedBy=multi-user.target

Voer nu de volgende commando’s uit:

systemctl daemon-reload
systemctl enable homebridge
systemctl start homebridge

HomeBridge wordt nu in de achtergrond gestart en je krijgt geen output te zien. Als je de output toch wilt zien, kun je deze terug vinden in /var/log/daemon.log.

In de Woning-app op je iPhone of iPad kun je nu de verschillende apparaten zien:

Behalve via de app kun je je apparaten ook oproepen in Control Center door vanuit je Home Screen van onderuit het scherm naar boven te vegen en dan in Control Center naar links te vegen.

Maar het leukste is natuurlijk om het aan Siri te vragen:

Hé Siri, schakel de spots in de keuken in

 

 

Helaas werkt deze oplossing enkel wanneer je iPhone verbonden is met je thuisnetwerk. Wil je je huis ook buiten de deur kunnen bedienen, dan is hiervoor een heel simpele oplossing beschikbaar.

Tot slot nog even een kleine demonstratie van de werking op een iPhone:

Spots dimmen met de Fibaro Dimmer 2

Vandaag heb ik de spots op onze overloop maar eens aangesloten. Dat werd wel tijd want de gaten in het plafond zaten er al vier jaar…

Op de plek van de oude lichtschakelaar zat helaas alleen een fase-draad en een schakeldraad, iets wat veel voorkomend is bij lichtschakelingen. De nul-draad, om de stroomkring rond te krijgen, zit alleen bij de lamp en niet bij de schakelaar. Helaas hebben de meeste ZWave schakelaars een nul-draad nodig voor hun eigen voeding. De Fibaro Dimmer 2 heeft dit niet nodig en kan 2-draads aangesloten worden. Je zou hem zelfs als gewone schakelaar kunnen gebruiken en de dimmer-functionaliteit laten voor wat het is, maar omdat ik 4 inbouwspots gebruik, leek het me wel aardig om ze ook dimbaar te maken.

Dit is het 2-draads aansluitschema voor een enkele en een dubbele schakelaar:

Aansluitschema Fibaro Dimmer 2-draads

Op dit moment heb ik er voor gekozen om de bestaande schakelaar te gebruiken. Dat wil zeggen dat de spots met deze schakelaar alleen in- en uitgeschakeld kunnen worden. Ik heb dan ook het single switch schema gebruikt. Het dimmen gebeurt dan via Domoticz en HomeKit. In een later stadium zal ik de schakelaar vervangen door pulsdrukkers, zodat ook de dimfunctie via de schakelaar bediend kan worden.

Vanwege het lage vermogen door het gebruik van LED-spots was ik bang dat het niet helemaal vlekkeloos zou gaan, maar uiteindelijk bleek alles prima te werken. Enkel op een vermogen van lager dan 5% gaat één spotje niet aan. Binnenkort zal ik een dimmer-bypass bijschakelen of we dit hiermee kunnen verhelpen.

5% vermogen geeft namelijk prima verlichting om nét genoeg te zien als je ’s nachts naar het toilet gaat. De bedoeling is dan ook om de spots ’s nachts aan te sturen via een beweging-sensor.

Mijn ervaring met TRÅDFRI van Ikea

Vandaag zijn we naar Ikea geweest en daar heb ik een TRÅDFRI-pakketje opgepikt. Dit slimme verlichtingssysteem werd in April door Ikea geïntroduceerd en zou volgens sommigen een serieuze concurrent kunnen worden van de Philips Hue.

Het systeem omvat verschillende soorten verlichting, zoals lampen met verschillende soorten fitting, spotjes en LED-panelen. Het hart van het systeem is de verbindingshub. Deze sluit je bekabeld aan op je thuisnetwerk en zorgt voor de verbinding met je verlichting. De verlichting wordt niet geleverd in kleuren, maar wel in verschillende warmten. Zo kun je warm licht gebruiken voor de gezelligheid of overschakelen op kouder wit licht wanneer je aan het werk bent.

De schakelaars voor de verlichting zitten ingebouwd in de lampen zelf. Dit maakt de lampen wel wat duurder dan een “gewone” lamp, maar aangezien het allemaal LED-verlichting is zullen de lampen een zeer lange levensduur hebben. Daar komt bij dat alle verlichting dimbaar is. Om de lampen te handmatig te schakelen verkoopt Ikea afstandsbedieningen die je kunt koppelen aan je verlichting. Ook verkoopt Ikea bewegingsdetectoren die je aan je lampen kunt koppelen. Deze detectoren heb ik niet aangeschaft en zal ik dan ook niet bespreken.

Dit vind ik persoonlijk een nadeel van dit systeem. De oorspronkelijke schakelaars in je huis kun je nog wel gebruiken, maar als die uitgeschakeld zijn kun je de lampen niet langer schakelen via de afstandsbediening. Je oorspronkelijke schakelaars moeten dus altijd ingeschakeld zijn om de verlichting via de app of de afstandbediening te kunnen schakelen.

Uitpakken en aansluiten

ikea TRÅDFRI verpakking
Ikea heeft het uitpakken van de verbindingshub en de verlichting gemaakt tot een onvergetelijke ervaring. Niet omdat het zo geweldig is, maar omdat je verpakking met je handen nauwelijks open krijgt! Een stevige keukenschaar is bij het uitpakken echt wel een aanrader.

Ikea TRÅDFRI verbindingshubHet aansluiten van de verbindingshub is een eitje. Je sluit hem via een netwerkkabel aan op je netwerk en via de bijgeleverde USB-kabel en adapter sluit je hem op het lichtnet aan. De USB-kabel is behoorlijk lang, wat prettig is als je stopcontact wat verder weg zit. Doordat de bijgeleverde netwerkkabel slecht een meter lang is, zullen veel mensen hem vlak bij hun router plaatsen. Natuurlijk kun je een langere netwerkkabel kopen of aansluiten via een switch, maar wat mij betreft had de netwerkkabel iets langer gemogen.

De verlichting draai je eenvoudig in hun fitting, zoals je dat ook zou doen met traditionele verlichting.

Het instellen

Het instellen van het systeem is kinderlijk eenvoudig. Je downloadt eenvoudig de app voor je iPhone of Android smartphone en zodra je die opent wordt je via duidelijke instructies begeleidt bij de ingebruikname. De app koppel je eenvoudig door de QR-code te scannen die op de achterkant van de verbindingshub staat.

De afstandsbediening is een ander verhaal. Hoewel de bijgeleverde handleiding erg duidelijk leek, bleek het toch nét allemaal weer iets anders te werken. Als eerste dient de afstandsbediening gereset te moeten worden, waarbij er op de achterzijde een rode led zou moeten knipperen. Tot nu toe heb ik die led nog steeds niet aan zien gaan. Aangezien ik meer één afstandsbediening heb aangeschaft, weet ik niet of ik wellicht een defect exemplaar heb of dat de instructie niet overeen komt met de praktijk. Het koppelen van de afstandsbediening met de lamp lukte prima, omdat de app ook aangeeft wanneer een succesvolle koppeling heeft plaatsgevonden.

Het gebruik

     Screenshot Ikea TRÅDFRI app

De afstandsbediening en de app zijn beide gemakkelijk in gebruik. Je hoeft absoluut niet technisch onderlegd te zijn om het systeem te kunnen gebruiken. Het is mogelijk om één afstandsbediening te gebruiken voor meerdere apparaten, maar die kun je dan niet afzonderlijk bedienen. Hierdoor heb je al snel meerdere afstandsbedieningen nodig. Die worden gelukkig wel geleverd met een magnetische houder, waardoor je ze gemakkelijk tegen de muur kunt plakken. Dit in tegenstelling tot de dimmers die Ikea levert. Wel handig is dat Ikea deze dimmers in verschillende kleuren levert. De standaard afstandbediening wordt echter slechts geleverd in één kleur. Wanneer je dus meerdere van deze afstandsbedieningen hebt en de magnetische houder niet gebruikt, ligt je tafel al snel vol met allemaal dezelfde afstandsbedieningen. Zoek dat nog maar eens uit welke afstandsbediening voor welke lamp is!

Het systeem is echt gericht op gebruik met je smartphone. Via je computer of het web kun je er niets mee. Het is duidelijk dat Ikea zich met dit product richt op de massa. In tegenstelling tot andere systemen is TRÅDFRI erg goedkoop. Daarbij is de functionaliteit nogal beperkt, maar voor die prijs moet je ook niet teveel verwachten, lijkt me. TRÅDFRI schijnt Zweeds te zijn voor draadloos en dat dekt volgens mij ook wel de lading. Erg slim is het systeem niet. Via je smartphone kun je verlichting op tijd laten schakelen, maar daar houdt de functionaliteit dan ook wel op.

Op dit moment schakel ik mijn hele huis via HomeKit van Apple. Hierdoor kan ik zo’n beetje alles stemgestuurd bedienen via Siri. TRÅDFRI ondersteunt op dit moment nog geen HomeKit. Ik heb de verkoopadviseur van Ikea hier nog expliciet naar gevraagd en uitgelegd dat ik geen iOS-app van Ikea bedoelde. Hij zei het te begrijpen en verzekerde me dat er op dit moment al HomeKit-ondersteuning was. Eenmaal thuis gekomen bleek dat het weer het zoveelste blufverhaal was van de verkoper. Nergens was ook maar iets van HomeKit-ondersteuning te ontdekken. Voor de zekerheid heb ik nog even gebeld met de klantenservice, maar daar bleek men ook bijzonder weinig kennis te hebben van dit systeem dat ze notabene zelf verkopen. Na een 10 minuutjes in de wachtrij kreeg ik te horen en dat de ondersteuning voor HomeKit ooit wel beschikbaar zou zijn. Helaas kon men mij niet vertellen of dit via een software-update zou gebeuren of dat ik een t.z.t. een nieuwe verbindingshub zou moeten aanschaffen. Het is jammer om te ervaren hoe slecht men de klanten van advies kan voorzien betreffende dit product.

Voor- en nadelen op een rijtje

De voordelen:

  • Het systeem is, vooral in vergelijking met andere systemen, goedkoop.
  • Het is door elke amateur aan te sluiten. Er is geen nieuwe bekabeling nodig of technische kennis vereist.
  • De verbinding met het thuisnetwerk is enkel bekabeld, waardoor je niet hoeft te klooien met wifi-verbindingen.
  • Je kunt verlichting automatisch op tijd laten in- en uitschakelen.

De nadelen:

  • De app werkt alleen wanneer je smartphone verbonden is met je wifi-netwerk. Daarbuiten kun je je verlichting niet bedienen. (Bijvoorbeeld via 4G/internet)
  • Het systeem is niet echt slim. Behalve tijdsschakelingen kun je niets automatiseren. Er zijn bijvoorbeeld geen scene’s mogelijk.
  • Je kunt er alleen Ikea-verlichting mee schakelen. Zo verkoopt Ikea geen TL-buizen, dus die kun je er niet mee schakelen.
  • Het werkt niet samen met je bestaande schakelaars. Om TRÅDFRI te kunnen gebruiken dien je de bestaande schakelaars altijd ingeschakeld te laten.
  • Het systeem geeft geen terugkoppeling over het verbruik van je verlichting.
  • In tegenstelling tot wat de Ikea-verkopers beweren, is er (nog) geen ondersteuning van HomeKit.

Conclusie

TRÅDFRI is leuk voor mensen die hun verlichting willen bedienen via hun smartphone en over weinig technische kennis beschikken. Je kunt er ook verlichting mee bedienen die Ikea levert in hun meubels, zoals LED-panelen. De functionaliteit is echter nog zeer beperkt en het systeem werkt niet samen met je bestaande schakelaars. Je verlichting bedienen buitenshuis is niet mogelijk. Hierdoor is het systeem naar mijn mening niet geschikt voor serieuze bediening van je verlichting. De mogelijkheid om de warmte van je verlichting te wijzigen is een mooie feature, maar weegt volgens mij niet op tegen de tekortkomingen van dit systeem.

Tot slot

Als techneut is het voor mij natuurlijk een uitdaging om de functionaliteit van TRÅDFRI uit te breiden door te koppelen met andere systemen. Aangezien het systeem het COAP-protocol ondersteunt, zou het theoretisch mogelijk moeten zijn om te koppelen met andere systemen. Dit ga ik eens lekker uitzoeken, hierover binnenkort meer…

Aanwezigheids-detectie met Domoticz via wifi

Soms is het handig wanneer Domoticz weet of er iemand thuis is, zodat je bijvoorbeeld al je verlichting kunt uitschakelen wanneer er niemand thuis is. Nu kun je natuurlijk je hele huis volhangen met bewegingsdetectoren, maar dat wordt toch een dure grap.

Aangezien zo’n beetje iedereen tegenwoordig een smartphone heeft, die verbonden is met het wifi-netwerk thuis, kunnen we de connectie van deze smartphones met het wifi-netwerk gebruiken om te kijken of iemand thuis is.

Stap 1:Virtuele switches creëren voor je smartphones

  • Open de webinterface van Domoticz.
  • Klik op Instellingen en vervolgens op Hardware.
  • Voer nu als naam Smartphones in.
  • Selecteer het type Dummy en klik vervolgens op Toevoegen.
  • Klik nu op het tabblad Schakelaars.
  • Klik linksboven op de knop Handmatig.
  • Kies nu als Hardware Smartphones.
  • Als naam voer je een naam in die verwijst naar een smartphone van iemand in je huis.
    Bijvoorbeeld: Rutger’s iPhone.
  • Bij schakelaar-type kies je voor On/Off.
  • Als type kies je X10, bij House code kies je A en bij Unit code kies je 1.
  • Bij Als kies je Hoofdapparaat. Klik tot slot op toevoegen.
  • Als je meerdere smartphones in huis hebt, herhaal je de laatste 6 stappen voor elke smartphone.

Stap 2: Software installeren via SSH

  • Log in op je domoticz-server via SSH.
  • Typ het volgende commando om Python en apin te installeren:
    sudo apt-get install python arping
  • We gaan Python gebruiken om via arping de verschillende smartphones te pingen. Veel smartphones reageren niet op een ping wanneer ze stand-by staan. In tegenstelling tot het standaard ping-commando stuurt arping een ‘apr-whois’ uit waar de smartphones ook op reageren wanneer ze stand-by staan.
  • Domoticz-gebruiker Chopper Rob heeft een handig stukje Python-code geschreven dat een smartphone pingt en vervolgens communiceert met Domoticz. Maak een bestand, genaamd check_device_online.py aan in de map /home/pi/domoticz/scripts. Je kunt dit eenvoudig doen door de onderstaande code te kopiëren. (CTRL+c / CMD+C). Vervolgens toets je het volgende command in via je SSH-sessie:
  • nano /home/pi/domoticz/scripts/check_device_online.py
  • De nano teksteditor wordt nu geopend. Plak nu de code in het bestand en toets CTRL+x om het bestand op te slaan en de teksteditor af te sluiten.
#!/usr/bin/python
#   Title: check_device_online.py
#   Author: Chopper_Rob
#   Date: 25-02-2015
#   Info: Checks the presence of the given device on the network and reports back to domoticz
#   URL : https://www.chopperrob.nl/domoticz/5-report-devices-online-status-to-domoticz
#   Version : 1.6.2
 
import sys
import datetime
import time
import os
import subprocess
import urllib2
import json
import base64
 
# Settings for the domoticz server
domoticzserver="192.168.1.5:8080"
domoticzusername = "admin"
domoticzpassword = "admin"
domoticzpasscode = "protectedswitch"
 
# If enabled. The script will log to the file _.log
# Logging to file only happens after the check for other instances, before that it only prints to screen.
log_to_file = False
 
# The script supports two types to check if another instance of the script is running.
# One will use the ps command, but this does not work on all machine (Synology has problems)
# The other option is to create a pid file named _.pid. The script will update the timestamp
# every interval. If a new instance of the script spawns it will check the age of the pid file.
# If the file doesn't exist or it is older then 3 * Interval it will keep running, otherwise is stops.
# Please chose the option you want to use "ps" or "pid", if this option is kept empty it will not check and just run.
check_for_instances = "pid"
 
 
 
# DO NOT CHANGE BEYOND THIS LINE
if len(sys.argv) != 5 :
  print ("Not enough parameters. Needs %Host %Switchid %Interval %Cooldownperiod.")
  sys.exit(0)
 
device=sys.argv[1]
switchid=sys.argv[2]
interval=sys.argv[3]
cooldownperiod=sys.argv[4]
previousstate=-1
lastsuccess=datetime.datetime.now()
lastreported=-1
base64string = base64.encodestring('%s:%s' % (domoticzusername, domoticzpassword)).replace('\n', '')
domoticzurl = 'http://'+domoticzserver+'/json.htm?type=devices&filter=all&used=true&order=Name'
 
if check_for_instances.lower() == "pid":
  pidfile = sys.argv[0] + '_' + sys.argv[1] + '.pid'
  if os.path.isfile( pidfile ):
    print datetime.datetime.now().strftime("%H:%M:%S") + "- pid file exists"
    if (time.time() - os.path.getmtime(pidfile)) < (float(interval) * 3):
      print datetime.datetime.now().strftime("%H:%M:%S") + "- script seems to be still running, exiting"
      print datetime.datetime.now().strftime("%H:%M:%S") + "- If this is not correct, please delete file " + pidfile
      sys.exit(0)
    else:
      print datetime.datetime.now().strftime("%H:%M:%S") + "- Seems to be an old file, ignoring."
  else:
    open(pidfile, 'w').close() 
 
if check_for_instances.lower() == "ps":
  if int(subprocess.check_output('ps x | grep \'' + sys.argv[0] + ' ' + sys.argv[1] + '\' | grep -cv grep', shell=True)) > 2 :
    print (datetime.datetime.now().strftime("%H:%M:%S") + "- script already running. exiting.")
    sys.exit(0)
 
def log(message):
  print message
  if log_to_file == True:
    logfile = open(sys.argv[0] + '_' + sys.argv[1] + '.log', "a")
    logfile.write(message + "\n")
    logfile.close()
 
def domoticzstatus ():
  json_object = json.loads(domoticzrequest(domoticzurl))
  status = 0
  switchfound = False
  if json_object["status"] == "OK":
    for i, v in enumerate(json_object["result"]):
      if json_object["result"][i]["idx"] == switchid:
        switchfound = True
        if json_object["result"][i]["Status"] == "On": 
          status = 1
        if json_object["result"][i]["Status"] == "Off": 
          status = 0
  if switchfound == False: print (datetime.datetime.now().strftime("%H:%M:%S") + "- Error. Could not find switch idx in Domoticz response. Defaulting to switch off.")
  return status
 
def domoticzrequest (url):
  request = urllib2.Request(url)
  request.add_header("Authorization", "Basic %s" % base64string)
  response = urllib2.urlopen(request)
  return response.read()
 
log (datetime.datetime.now().strftime("%H:%M:%S") + "- script started.")
 
lastreported = domoticzstatus()
if lastreported == 1 :
  log (datetime.datetime.now().strftime("%H:%M:%S") + "- according to domoticz, " + device + " is online")
if lastreported == 0 :
  log (datetime.datetime.now().strftime("%H:%M:%S") + "- according to domoticz, " + device + " is offline")
 
while 1==1:
  # currentstate = subprocess.call('ping -q -c1 -W 1 '+ device + ' > /dev/null', shell=True)
  currentstate = subprocess.call('sudo arping -q -c1 -W 1 '+ device + ' > /dev/null', shell=True)
 
  if currentstate == 0 : lastsuccess=datetime.datetime.now()
  if currentstate == 0 and currentstate != previousstate and lastreported == 1 : 
    log (datetime.datetime.now().strftime("%H:%M:%S") + "- " + device + " online, no need to tell domoticz")
  if currentstate == 0 and currentstate != previousstate and lastreported != 1 :
    if domoticzstatus() == 0 :
      log (datetime.datetime.now().strftime("%H:%M:%S") + "- " + device + " online, tell domoticz it's back")
      domoticzrequest("http://" + domoticzserver + "/json.htm?type=command&param=switchlight&idx=" + switchid + "&switchcmd=On&level=0" + "&passcode=" + domoticzpasscode)
    else:
      log (datetime.datetime.now().strftime("%H:%M:%S") + "- " + device + " online, but domoticz already knew")
    lastreported=1
 
  if currentstate == 1 and currentstate != previousstate :
    log (datetime.datetime.now().strftime("%H:%M:%S") + "- " + device + " offline, waiting for it to come back")
 
  if currentstate == 1 and (datetime.datetime.now()-lastsuccess).total_seconds() > float(cooldownperiod) and lastreported != 0 :
    if domoticzstatus() == 1 :
      log (datetime.datetime.now().strftime("%H:%M:%S") + "- " + device + " offline, tell domoticz it's gone")
      domoticzrequest("http://" + domoticzserver + "/json.htm?type=command&param=switchlight&idx=" + switchid + "&switchcmd=Off&level=0" + "&passcode=" + domoticzpasscode)
    else:
      log (datetime.datetime.now().strftime("%H:%M:%S") + "- " + device + " offline, but domoticz already knew")
    lastreported=0
 
  time.sleep (float(interval))
 
  previousstate=currentstate
  if check_for_instances.lower() == "pid": open(pidfile, 'w').close()

Stap 3: Het script inplannen met Cron

Het script dat we zojuist gemaakt hebben, kan gaan we om de tien minuten laten controleren of een bepaalde smartphone verbonden is met het netwerk. Dit doen we door eerst onze crontab te openen:

crontab -e

Vervolgens voeren we de volgende regel helemaal onderin toe:

*/10 * * * * /usr/bin/python /home/pi/domoticz/scripts/check_device_online.py 192.168.1.10 23 10 300

Deze regel zorgt er voor dat het apparaat met IP-adres 192.168.1.10 (parameter 1) de dummy-schakelaar met IDX 23 (parameter 2) om de 10 minuten (parameter 3) gepingd wordt.

De IDX kun je achterhalen in Domoticz via Instellingen -> Apparaten. Er wordt een cooldown-periode (parameter 4) gehanteerd van 300 seconden. Binnen die tijd wordt er wel gecontroleerd of het device aanwezig is, maar wordt de status niet doorgegeven aan Domoticz. De cooldown-periode is met name belangrijk wanneer je een iPhone gebruikt, omdat deze zijn Wifi-verbinding regelmatig uitschakelt om de accu te sparen. Ik heb redelijk succes geboekt met 300 seconden, maar wellicht werkt een langere periode beter, dat moet ik nog proberen.

Als je meerdere smartphones wilt controleren, dan voeg je voor elke smartphone een eigen regel toe in de crontab, natuurlijk met elk zijn eigen IP-adres.

Router instellen

Je smartphone krijgt zijn IP-adres van de router via DHCP. Dit is niet altijd hetzelfde IP-adres. Wanneer je smartphone een ander IP-adres krijgt, zal het script niet meer werken omdat het een IP-adres probeert te pingen dat de smartphone niet meer heeft.

In je router heb je de mogelijkheid om static leases in te stellen. Hierdoor krijgt een device op basis van zijn MAC-adres altijd hetzelfde IP-adres uitgedeeld, omdat het IP-adres exclusief voor het device reserveer is. Raadpleeg hiervoor de handleiding van je router.

Als je meerdere smartphones gebruikt, kan het handig zijn om nog een dummy-schakelaar aan te maken. Deze kun je dan via Blockly in Domoticz laten schakelen als één van de smartphone dummy-schakelaars actief is. Deze nieuwe dummy-schakelaar noem je dan bijvoorbeeld “Iemand thuis”. Daarna kun je de status van deze schakelaar gebruiken in andere gebeurtenissen.