Door middel van NFC tags kun je acties uitvoeren in je domotica systeem. Bijvoorbeeld de verlichting schakelen, scenes activeren of het alarm in- of uitschakelen. We maken gebruik van een php pagina/script, dus de schakeling loopt niet via Domoticz op je NAS of Raspberry Pi of via de Domoticz app voor je telefoon.
Je hebt domoticz al draaien (anders was je hier niet aan het lezen) er moet echter wel nog php op worden geinstalleerd, anders gaat het niet werken.
Wat heb je allemaal nodig?
- Domoticz
- NAS of Raspberri Pi met php ondersteuning
- Smartphone met NFC ondersteuning
- NFC tags of stickers
Op je NAS: We gaan eerst testen of PHP werkt op je NAS, maak het bestand phpinfo.php in de map /home/pi/domoticz/www/ (dit kan verschillen per installatie, ik ga hier uit van gebruiker PI) plak onderstaande regels in het phpinfo.php bestand en sla het op.
1 2 3 4 |
#!/usr/bin/php <?php phpinfo(); ?> |
Op je Raspberry Pi: Onder Domiticz is geen php geinstalleerd en domoticz draait zijn eigen webserver op poort 8080, we moeten dus apache en php los installeren, dit gaat snel en vrij simpel vanuit de terminal, voer uit:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install apache2 -y
Om volledige rechten aan je pi gebruiker op deze map te geven voeren we uit:
sudo chown -R pi:www-data /var/www/html/
sudo chmod -R 770 /var/www/html/
Apache is nu geinstalleerd en draait op poort 80, de bestanden staan in /var/www/html/, apache heeft daar het bestand index.html aangemaakt en je hebt alle rechten.
Om te testen of apache werkt voer je uit in de terminal:
wget -O check_apache.html http://127.0.0.1
Als dat werkt moeten we php nog installeren, voer uit:
sudo apt-get install php libapache2-mod-php -y
En we maken het bestand phpinfo.php aan met het volgende commando, voer uit:
echo "<?php phpinfo ();?>" > /var/www/html/index.php
Nu is php ook geinstalleerd, het eerder genoemde bestand phpinfo.php is aangemaakt in de map /var/www/html/ en als je dat opvraagt krijg je de nodige informatie over je PHP installatie op de pi.
Voer uit in je browser: http://ip-van-je-pi/phpinfo.php
Krijg je deze informatie niet, herstart dan apache, voer uit:
sudo service apache2 restart
PHP activeren op je Synology NAS
Om straks opdrachten te versturen naar je lampen gebruik ik een PHP script. De NAS moet weten hoe hij PHP moet uitvoeren en daarom moeten we dat eerst activeren in de webservices van de NAS. Dat gaat als volgt:
- Configuratiescherm
- Webservices
- Vink Web station inschakelen aan
- Klik op toepassen
- Ga naar het tabje PHP-instellingen
- Vink PHP-cache en display_errors aan.
Upload het php script naar je Synology NAS
- Ga in je NAS naar File Station en dan naar de map ‘web’.
- Maak een nieuwe map aan bijvoorbeeld ‘nfc’.
- Open de Tekstverwerker vanuit het hoofdmenu, het is een soort ‘kladblok’
- Plak dit onderstaande script in de tekstverwerker en geef het bijvoorbeeld de naam NFCverlichting.php
Upload het php script naar je Raspberry PI met Domoticz
- Open een terminal op je Raspberry Pi en voer uit: cd /var/www/html/
- Maak een nieuwe map aan bijvoorbeeld ‘nfc’, voer uit: md nfc
- Open de map nfc, voer uit: cd nfc
- Download het php script, voer uit: wget https://colandino.nl/wp-contentuploads/2017/01/NFCverlichting.php
- Open het php script met nano, voer uit: nano NFCverlichting.php
- Wijzig het script en sla dit op, dit doe je met ctrl+x, y, enter.
Wat het script doet:
Het script download een json bestand vanaf de url achter $json_string. Dit is een bestandje met de status in domoticz van een bepaald apparaat. In dit geval vragen we de status op van alle scenes (groepen). Zorg er dus voor dat je alle lampen die je met deze NFC tag wilt schakelen in een group hebt zitten. Als je meerdere groepen hebt kun je achter $parsed_json[‘result’][0] het cijfer wijzigen. 0 is de eerste group, 1 de tweede etc.
Het script bepaald de huidige status en bepaald wat er moet gebeuren. Bij huidige status On, zet het script de lampen uit, bij Off zet het script de lampen aan, bij status Mixed zet hij ze allemaal aan.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
<?php // Downloaden json en tijdelijk opslaan $json_string = file_get_contents("http://10.0.0.1:8080/json.htm?type=scenes"); $parsed_json = json_decode($json_string, true); $test_link = "result.txt"; $test_data = fopen ($test_link, "w+"); fwrite ($test_data, print_R($parsed_json, TRUE)); fclose ($test_data); // intepreteren data $parsed_json = $parsed_json['result'][0]; $status = $parsed_json['Status']; $parsed_json = json_decode($json_string, true); if ($status == "On") { echo "De lampen staan " .$status .". Uitzetten"; AanUitZetten("Off"); } elseif ($status == "Off") { echo "De lampen staan " .$status .". Aanzetten"; AanUitZetten("On"); } elseif ($status == "Mixed") { echo "De lampen staan " .$status .". Aanzetten"; AanUitZetten("On"); } function AanUitZetten($Actie){ print "<br><br>"; // Mediaspeler $domoticzurl1 ='http://10.0.0.1:8080/json.htm?type=command¶m=switchlight&idx=22&switchcmd=' .$Actie; // Achterkamer boekenkast $domoticzurl2 ='http://10.0.0.1:8080/json.htm?type=command¶m=switchlight&idx=21&switchcmd=' .$Actie; $result = file_get_contents($domoticzurl1); print $result; print "<br><br>"; $result = file_get_contents($domoticzurl2); print $result; print "<br><br>"; } ?> |
Wijzig het script
Pas de naam aan van het te schakelen apparaat: ‘Mediaspeler’ of ‘Achterkamer boekenkast’.
Vervang het IP-ADRES (10.0.0.1) en POORT (8080) door het IP adres van je Raspberry PI met Domoticz met daarachter een (:) en de poort en wijzig IDX (22) of (21) in het nummer van het te schakelen apparaat. Deze kun je vinden op de ‘Apparaten’ pagina in Domoticz.
Je kunt zoveel lampen toevoegen als je wilt. Voeg extra een domoticzurl toe en verhoog het cijfer en kopieer en plak het stukje code vanaf $result opnieuw. Vervang daarin ook het cijfer door het hogere cijfer. Je kunt natuurlijk ook scenes en groepen schakelen.
Testen
Je kunt het script nu testen door het via de browser uit te voeren. Vul in je browser het volgende adres in:
Voor je Synology NAS: http://10.0.0.254/nfc/nfcverlichting.php
Voor je Raspberry PI met Domoticz: http://10.0.0.1/nfc/nfcverlichting.php
(Pas de ip adressen aan naar je eigen situatie en netwerk)
Je ziet nu het resultaat van de opdracht en de verlichting schakelen!
Schrijven naar NFC
Download een app die NFC tags kan schrijven. Gebruik hiervoor de app NFC Tools voor Android. En hier de APK voor het geval deze uit de appstore gaat.
- Tik op ‘Write’ en op ‘Add a record’
- Kies voor URL/URI
- Vul de URL in die je zojuist succesvol getest hebt.
- Tik op ‘Write’, houd de NFC sticker tegen je telefoon en ‘Write succesful’ komt in beeld.
Testen
Je kunt het script nu testen door de NFC tag tegen je telefoon te houden. Je telefoon voert de ingestelde actie uit!
Je ziet nu het resultaat van de opdracht en de verlichting schakelen!