Domoticz- client e server in python per abilitare il wifi su Raspberry Seconda Parte
Questo articolo illustra uno step di un progetto che ha l’obiettivo di realizzare uno switch su Domoticz, posto su un Raspberry, in grado di accendere (o spegnere) il Wi fi extender su un secondo Raspberry. In aggiunta alla funzione che accende e spegne il Wifi Extender, il server è anche in grado di comandare un secondo switch su domoticz che accende e spegne una webcam collegata all’extender.
Per fare questo verranno utilizzati un client e un server scritti in python posizionati rispettivamente sul primo e sul secondo Raspberry che saranno oggetto di approfondimento in questo articolo.
Lo schema utilizzato nel progetto sarà il seguente.
Vediamo adesso come si realizza lo switch che aziona il client su domoticz, passando gli opportuni parametri per comandare il server e un piccolo script che effettua il check sul server e evetnualmente lo riavvia quando necessario.
Su Domoticz andiamo nella sezione Hardware e aggiungiamo un nuovo hardware come in figura.
Andremo a scegliere un tipo dummy e cioè un hardware virtuale che letteralmente non fa nulla
Fatto questo clicchiamo su “create virtual sensor e scegliamo uno Switch ON OFF.
Andiamo a configurare lo switch come in figura:
Nella sezione on Action inseriamo: script:///home/<path script python>/testclientwlan0.py ON
In questo caso il parametro passato sarà ON (accensione del Wifi extender e della webcam – vedi articolo precedente)
Nella sezione off action inseriamo script:///home/<path script python>n/testclientwlan0.py OFF
In questo caso il parametro passato sarà OFF (spegnimento del Wifi extender e della webcam – vedi articolo precedente)
Infine, similmente a quanto fatto per altri servizi, ho realizzato un piccolo script che effettua il check del server e, nel caso lo trovi offline, provvede a effettuarne il reboot.
#!/bin/bash wifiRaspServerstate=`sudo systemctl status serverWlan02.service` if [[ $wifiRaspServerstate == *"active (running)"* ]] then echo 'wifiRaspServer is running. Nothing to do.' elif [[ $wifiRaspServerstate == *"inactive (dead)"* ]] then echo 'wifiRaspServerstate is not running. Restarting wifiRaspServer...' sudo systemctl restart serverWlan02.service echo 'wifiRaspServerstate restarted.' fi
crontab provvede a lanciare questo script periodicamente.