Bluetooth en vast IP LUA ping script voor Domoticz

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
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:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install bluetooth bluez-utils blueman

Voer een scan voor Bluetooth apparaten uit (zorg er wel voor dat je apparaat zichtbaar is voor Bluetooth):

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:

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):

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)”:

sudo hciconfig hci0 pageto 4096

Installeer LUA 5.2 indien je dit nog niet eerder hebt gedaan:

sudo apt-get install lua5.2

Download en installeer usrlocalsharelua52.tar.gz van https://www.ehoco.nl/downloads/usrlocalsharelua52.tar.gz

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

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:

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:

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

8 gedachten over “Bluetooth en vast IP LUA ping script voor Domoticz

  • 14 april 2018 om 10:36
    Permalink

    Is voor deze tutorial een speciale image gebruikt van Domoticz? Ik draai het nu zelf op Raspbian en merk dat de tutorial niet volledig kan volgen.

    De installatie van bluetooth packages gaat helaas mis: sudo apt-get install bluetooth bluez-utils blueman

    De bluetooth directory kan ook niet binnen gegaan worden, zonder eerst sudo -i uit te voeren op de pi.

    Vandaar de vraag of er een speciale image gebruikt is.

    Beantwoorden
  • 14 april 2018 om 11:42
    Permalink

    Er zit overigens een fout in de documentatie. Er staat dat je het Lua script moet opslaan in /home/pi/domoticz/scripts/lua/. De cron gaat echter naar /home/pi/domoticz/scripts/. Lua staat er niet bij als subfolder.

    Beantwoorden
    • 14 april 2018 om 17:20
      Permalink

      Hmmm ok. Gebruik hier ook Raspbian. Dat zou het niet moeten zijn.

      Tot nog toe is het niet gelikt. Ga het later nog even een keer proberen. Begin dan even opnieuw met de stappen. Wellicht toch iets niet goed gedaan.

      Beantwoorden
  • 14 april 2018 om 18:44
    Permalink

    Heb ook een gek ding. Als ik hcitool name AA:BB:CC:DD:EE:FF met het macaddress van m’n telefoon krijg ik altijd de naam van mijn telefoon te zien, ongeacht welke pincode ik ingevoerd heb in de regel ervoor.

    Beantwoorden
  • 14 april 2018 om 21:28
    Permalink

    Het is inmiddels gelukt! Dank voor de tutorial en handige website!

    Beantwoorden
  • 27 augustus 2018 om 19:23
    Permalink

    Hartelijk dank voor deze tutorial! Eindelijk eentje die het doet 🙂
    Ik had er al meerdere geprobeerd, maar die brachten niet het gewenste resultaat.

    Aangezien al onze devices van Apple zijn, heb ik de afgelopen tijd de aanwezigheidsdetectie met de geofencing-optie van Apple Homekit gedaan. Als het werkte, dan ging het feilloos. Echter, de betrouwbaarheid van Homebridge laat de laatste tijd regelmatig te wensen. Dit script biedt de oplossing! Ik heb Homebridge nu helemaal verwijdert.

    Een puntje van aandacht heb ik nog wel.. Als je iPhone een tijdje niet gebruikt, dan wordt i.v.m. energiebesparing de wifi uitgeschakeld. Wanneer de telefoon dan ook niet in het bereik van de bluetooth-adapter is, wordt de telefoon afgemeld. De oplossing is dus om op meerdere plekken een bluetooth-signaal te peilen. Het leuke hieraan is dat ik dan meteen kan uitzoeken of ik dit dan ook kan gebruiken voor aanwezigheidsdetectie in een specifieke ruimte.

    Komende tijd dus maar eens op zoek naar een goed boardje met bluetooth en wifi.

    N.b. leuk om je domotica-project te volgen op deze site! Ik ben zelf sinds 2 jaar Domoticz-gebruiker en gestaag aan het uitbreiden.

    Beantwoorden
  • 21 november 2018 om 15:29
    Permalink

    Hallo John,
    bedankt voor het script, maar ik heb 2 problemen met het script installeren en uitvoeren.

    ten eerste: ik heb geen toegang tot de /var/lib/bluetooth directory, krijg een permission denied op de bluetooth dir. Heb dit ‘opgelost’ met user root. Is dit de juiste manier?

    ten tweede: als ik het script (presence.lua) draai in domoticz, gebeurt er niets. zelfs /var/tmp/presence_check.log is leeg.

    Als ik in de log van domoticz kijk zie ik de volgende regels:

    2018-11-21 15:25:50.868 Error: EventSystem: in presence: error loading module ‘ssl.core’ from file ‘/usr/local/lib/lua/5.2/ssl.so’:
    2018-11-21 15:25:50.868 libssl.so.1.0.0: cannot open shared object file: No such file or directory
    er is duidelijk dat ik iets helemaal fout doe, maar ik weet niet wat.

    Kan, wil je mij op weg helpen?

    met vriendelijke groet,
    Hans

    Beantwoorden

Geef een reactie

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