In mijn Domoticz set-up maak ik in meerdere events gebruik van de trigger of mijn telefoon/tablet wel of niet thuis is. In dit artikel zal ik stap voor stap uitleggen hoe je een dummy schakelaar van je apparaat kan maken, die aangeeft of het apparaat thuis is. Voordat we naar het LUA ping script kijken maken we een dummy schakelaar aan.
Benodigdheden
- Raspberry Pi
- Domoticz software
- Apparaat met bluetooth of Wi-Fi
Dummy schakelaar aanmaken
Ga in Domoticz naar Setup -> Hardware en maak dummy hardware aan:
Vervolgens ga je naar Switches en maak je een dummy switch aan:
Als je naar Setup -> Devices gaat zal je een soortgelijke regel als onderstaand zien. Het nummer van Idx is belangrijk, dit hebben we verder nodig.
Software
Installeer de bluetooth ondersteuning met onderstaande commando’s:
1 2 3 |
sudo apt-get update sudo apt-get upgrade sudo apt-get install bluetooth bluez blueman |
Voer een scan voor Bluetooth apparaten uit (zorg er wel voor dat je apparaat zichtbaar is voor Bluetooth):
1 |
hcitool scan |
Zoek de bluetooth directory op je Raspbery Pi, deze ziet er ongeveer zo uit: /var/lib/bluetooth/??:??:??:??:??. De vraagtekens zijn uiteraard in werkelijkheid cijfers en letters. Voor de gevonden apparaten voeg je een pincode toe aan het pincode-bestand, dit doe je met commando:
1 |
echo "AA:BB:CC:DD:EE:FF 0000" > /var/lib/bluetooth/11:22:33:44:55:66/pincodes |
AA:BB:CC:DD:EE:FF vervang je door het Bluetooth MAC-adres van je apparaat en 11:22:33:44:55:66 vervang je door het MAC-adres van de Bluetooth-folder op je Raspberry Pi. De vier nullen zijn de pincode, deze is standaard 0000.
Test of de pincode van het apparaat juist is toegevoegd (ook hier vervang je AA:BB:CC:DD:EE:FF door het Bluetooth MAC-adres van je apparaat):
1 |
hcitool name AA:BB:CC:DD:EE:FF |
Wijzig de timeout “Page timeout: 8192 slots (5120.00 ms)” naar “Page timeout: 4096 slots (2560.00 ms)”:
1 |
sudo hciconfig hci0 pageto 4096 |
Installeer LUA 5.2 indien je dit nog niet eerder hebt gedaan:
1 |
sudo apt-get install lua5.2 |
Download en installeer usrlocalsharelua52.tar.gz van https://www.ehoco.nl/downloads/usrlocalsharelua52.tar.gz:
1 2 3 4 |
wget -O /tmp/usrlocalsharelua52.tar.gz "https://www.ehoco.nl/downloads/usrlocalsharelua52.tar.gz" sudo mkdir -p /usr/local/share/lua/5.2/ cd /usr/local/share/lua/5.2/ sudo tar -xvf /tmp/usrlocalsharelua52.tar.gz |
Download en installeer usrlocalliblua52.tar.gz van https://www.ehoco.nl/downloads/usrlocalliblua52.tar.gz:
1 2 3 4 |
wget -O /tmp/usrlocalliblua52.tar.gz "https://www.ehoco.nl/downloads/usrlocalliblua52.tar.gz" sudo mkdir -p /usr/local/lib/lua/5.2/ cd /usr/local/lib/lua/5.2/ sudo tar -xvf /tmp/usrlocalliblua52.tar.gz |
Aanpassingen LUA ping script
Download hier het LUA ping script en pak het uit met een extracter als WinRar. Open het script in Notepad++ en kijk het eerst eens rustig door. Voordat je het script naar de Raspberry Pi kopieert moeten eerst nog de variabelen goed gezet worden:
ScriptName=”presence.lua” — naam van het script, laat dit ongewijzigd
server_url=”http://192.168.2.10:8080” — url van Domoticz
Monit_check_log=”/var/tmp/presence-monit.log” — logbestand, laat dit ongewijzigd
LoopTimeShort=10 — Tijd (in seconden) tussen twee checks. indien er één van de apparaten niet gevonden is
LoopTimeLong=30 — Tijd (in seconden) tussen twee checks, indien alle apparaten gevonden zijn
FailTimeout=120 — Tijd om te bepalen dat de telefoon werkelijk niet aanwezig is
debug=2 — niveau van logging: 0=basis-informatie, 1=wat extra informatie, 2=alle beschikbare informatie (gebruik 2 alleen in geval van problemen)
TelName[Rec] = “Xiaomi MI 5” — naam van de telefoon
TelIP[Rec] = “192.168.2.4” — IP adres van de telefoon
TelBT[Rec] = “AA:BB:CC:DD:EE:FF” — Bluetooth MAC-adres van de telefoon
TelIDX[Rec] = “16” — vul hier het Idx van het apparaat in, zoals bij de 3e afbeelding hierboven staat aangegeven
Laat alle andere parameters ongewijzigd! Sla het LUA ping script op (met naam presence.lua), daarna kopieer het naar de Raspberry Pi in de folder: /home/pi/domoticz/scripts/
Cronjob
Indien het script eenmaal wordt uitgevoerd blijft het draaien. Echter, we willen er zeker van zijn dat dit ook zo is en daarom maken we voor de zekerheid een cronjob aan:
1 2 |
sudo crontab -e */2 * * * * lua /home/pi/domoticz/scripts/presence.lua -batch >> /var/tmp/presence_check.log |
Sla de wijziging op en reboot de Raspberry Pi:
1 |
sudo reboot |
Iedere 2 minuten wordt er nu gekeken of het script draait. Tevens wordt er een logbestand bijgehouden in /var/tmp/presence_check.log