De status van een Raspberry Pi tonen in Domoticz

Schermafbeelding 2015-12-08 om 23.05.27Ik heb de nodige uren besteed aan hoe ik Domoticz kan laten weten dat mijn Pi Musicbox aan of uit staat. Aan de Domoticz kant is dit heel simpel, je hoeft alleen maar een rest call naar de JSON api te sturen, aan de Pi Musicbox kant bleek dit toch wat lastiger. Het laten weten dat de Musicbox down gaat had ik vrij snel uitgezocht. Maar een bericht sturen wanneer de Musicbox aangaat een stuk bleek lastiger. Dit komt doordat je met curl een commando naar Domoticz moet sturen en dat kan pas als de netwerk verbinding gereed is. Mocht je dit ook willen, dan hoop ik dat je dit met behulp van dit artikel zo voor elkaar hebt. De basis van Linux heb je zo onder de knie, maar dit soort specifieke kennis vind je ook niet zo snel op het internet. Het was een collega, die met een flinke duw in de juiste richting gaf. Wilmar bedankt.

Dit wordt een heel technisch artikel, om het voor de geïnteresseerden zo makkelijk mogelijk te maken, gebruik ik de volgende conventies:

  1. Scripts en source code zet ik in aparte blokken zoals hier onder.
    Script of source code
  2. Commando’s die je letterlijk over moet nemen plaats ik dik gedrukt.

Ik ga er vanuit dat je de basis van de Raspberry Pi onder die knie hebt en weet hoe je met bijvoorbeeld SSH een connectie met een terminal op de Pi kunt leggen.

Wat heb je op voorhand nodig.
  1. Het ip-adres van je Domoticz server In dit document moet je op de plaatsen waar {domoticz-server} staat de tekst {domoticz-server} vervangen door dit IP-adres.
  2. Een virtual Device die je in Domoticz hebt aangemaakt, die je wilt gebruiken voor de statusindicatie van je Raspberry Pi (getest met type X10 On/Off en X10 media speler)Schermafbeelding 2015-12-08 om 23.09.58
  3. Het Idx van de in stap twee aangemaakt virtual device. In de rest van dit document moet je op de plaatsen waar {idx} staat de hele tekst {idx} vervangen door dit idx
Stap 1. Open een SSH shell met je Raspberry Pi
Stap 2. Aanmaken script voor communicatie met Domoticz

cd /usr/local/bin
sudo nano domoticz-connect

zet in dit bestand de volgende tekst (en sluit Nano af met Ctrl+X)

#!/bin/bash

domoticzServer=http://{domoticz-server}:8080
deviceIdx={idx}

if [ $1 == "on" ]; then
  curl "$domoticzServer/json.htm?type=command&param=switchlight&idx=$deviceIdx&switchcmd=On" 2>>/usr/local/bin/domoticz-connect.log >/dev/null
elif [ $1 == "off" ]; then
   curl "$domoticzServer/json.htm?type=command&param=switchlight&idx=$deviceIdx&switchcmd=Off" 2>/usr/local/bin/domoticz-connect.log  >/dev/null
fi

geef executie rechten aan dit script met:
sudo chmod +x ./domoticz-connect

Stap 3. Script voor het aanmelden van de Raspberry Pi bij Domoticz.

cd /etc/network/if-up.d
sudo nano notify-domoticz

neem het volgende script op en sla dit op met ctrl+x

#!/bin/sh

# Don't bother to do anything for lo.
if [ "$IFACE" = lo ]; then
exit 0
fi

# Only run from ifup.
if [ "$MODE" != start ]; then
exit 0
fi

# we only care about inet and inet6.
case $ADDRFAM in
inet|inet6|NetworkManager)
;;
*)
exit 0
;;
esac

echo "Notifying Domoticz MusicBox is on"
/usr/local/bin/notify-domoticz-device-up.sh on

geef het script nu executie rechten met:
sudo chmod +x notify-domoticz

Stap 4. Aanmaken script voor het afmelden van je Pi bij Domoticz

cd /etc/init.d
sudo nano domoticz-connect

neem het volgende script op en sla dit op met ctrl+x

#!/bin/bash
# /etc/init.d/domoticz-connect
### BEGIN INIT INFO
# Provides:          domoticz-connect
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Report on/off to domoticz
# Description:       This service let's domoticz know that this device is on or off
### END INIT INFO
case "$1" in
 start)
 ;;
 stop)
 echo "Disconnecting from Domoticz"
 /usr/local/bin/update-domoticz-device.sh off
 ;;
 *)
 echo "Usage: /etc/init.d/domoticz-connect start|stop"
 exit 1
 ;;
 esac
exit 0

geef dit script executie rechten met:

sudo chmod +x domoticz connect

Registreer het script in het Sys-V init systeem van Raspbian met het volgende commando:
sudo update-rc.d domoticz-connect defaults

Als je nu je systeem opnieuw opstart (of reboot), dan kun je in Domoticz zien of de Raspberry Pi aan of uit staat. Dit kun je testen met
sudo reboot

De virtuele schakelaar gaat uit als de Pi down gaat en aan als de Pi opgestart is.

Leave a Reply