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 php, dus niet van de domoticz app.
Wat heb je nodig?
- Domoticz
- NAS of Raspberri Pi met php ondersteuning
- Smartphone met NFC ondersteuning
- NFC tags of stickers
Aan de slag
Bedenk welke actie je wilt uitvoeren als je je smartphone tegen de NFC sticker houdt. Met deze werkwijze zal je smartphone de actie uitvoeren in de browser. Wil je dat niet, of heb je geen webserver draaien op je NAS of Raspberri Pi? Maak dan gebruik van de betaalde Domoticz app.
Wat is NFC?
Naar Field Communication werkt door middel van twee spoelen. 1 in de sticker en 1 in je smartphone. Het is dezelfde techniek die gebruikt wordt voor draadloos pinnen en de OV chipkaart. Je houdt je telefoon tegen de NFC sticker en je smartphone voert de in de sticker geprogrammeerde actie uit.
Verlichting schakelen met NFC tag
In dit voorbeeld ga ik mijn verlichting aan- of uitschakelen als ik de NFC sticker aanraak met mijn telefoon. De sticker programmeren we zo dat het aanraken ervan zorgt dat de smartphone de browser opent en naar onze URL navigeert. Dit script kijkt eerst naar de huidige status van de lamp(en) en schakelt die in of uit.
Het script is gemaakt in PHP en moet in je lokale netwerk draaien. Op je NAS of Raspberry Pi kun je dit heel makkelijk inschakelen. Als je al een webserver hebt draaien, kun je deze stap overslaan.
Stap 1: PHP activeren op je 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 alsvolgt:
- Configuratiescherm
- Webservices
- Vink Web station inschakelen aan
- Klik op toepassen
- Ga naar het tabje PHP-instellingen
- Vink PHP-cache en display_errors aan.
Stap 2. Upload het php script
- Ga in je NAS naar File Station en dan naar de map ‘web’.
- Maak een nieuwe map aan bijvoorbeeld ‘php2domo’.
- 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
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.
Stap 3. Wijzig het script
Vervang de IP-ADRES:POORT tekst door het IP adres van Domoticz met daarachter de poort en wijzig IDX 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.

Stap 4. Testen
Je kunt het script nu testen door het via de browser uit te voeren. Vul in je browser het volgende adres in:
http://IP-adres NAS/php2domo/nfcverlichting.php
Je ziet nu het resultaat van de opdracht en de verlichting schakelen!
Stap 5. Schrijven naar NFC
Download een app die NFC tags kan schrijven. Ik gebruik NFC Tools voor Android.
- 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.
Stap 6. 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!
Is het gelukt of heb je hulp nodig? Laat een reactie achter!
13 reacties op “Zo gebruik je NFC stickers in Domoticz zónder dure apps!”
Thanks very nice blog!
Ik krijg steeds de volgende foutmelding.
Parse error: syntax error, unexpected ‘s’ (T_STRING) in /volume1/web/NFCverlichting.php on line 15
Kun je wat exacter aangeven welke waarden ik moet aanpassen in het script?
Dag William,
Zo te zien was het een typefoutje. Wil je het nog eens opnieuw proberen? Ik heb het artikel verder nog wat verduidelijkt.
Groet Wouter
Dag Wouter,
Bedankt voor je reactie en de verduidelijking.
Krijg nu echter de volgende melding.
Parse error: syntax error, unexpected ‘<' in /volume1/web/NFCverlichting.php on line 8
Wel heb ik het volgende toegepast inverband met het inloggen volgens:
https://www.domoticz.com/wiki/Domoticz_API/JSON_URL's#Authorization_with_parameters
Ook de rechten van het result.txt aangepast.
Hoi William,
Het lijkt erop dat er geen json in result.txt zit. Zie je wel een net json resultaat als je de volgende url aanroept in je browser:
http://IP-ADRES Domoticz:POORT/json.htm?type=scenes
Als je autorisatie gebruikt moet je inderdaad de url even aanpassen.
Krijg je dan ongeveer dit te zien:
…..
result” : [ { “Description” : “Onderstaande apparaten in-uitschakelen in een keer”, “Favorite” : 1, “LastUpdate” : “2019-01-25 20:01:07”, “Name” : “Iemand thuis”, “OffAction” : “”, “OnAction” : “”, “Protected” : false, “Status” : “On”, “Timers” : “false”, “Type” : “Group”, “UsedByCamera” : false, “idx” : “1” },
…..
Dit komt namelijk in result.txt te staan. Het script gaat opzoek naar het status veld, wat hier op on staat. Je zou ook result.txt kunnen openen om te zien wat erin staat.
Ik ben benieuwd!
Wouter
Dit staat in de result.txt
{
“status” : “ERR”
}
William
Aha dan is er iets mis met de url. Heb je wel scenes aangemaakt? En heb je een juiste url gebruikt? Heb je de url getest in de browser?
Het zit hem in de URL. Als ik eerst ben ingelogd in Domoticz: en geef dan.
Domoticz:POORT/json.htm?type=scenes Dan gaat het goed.
Niet ingelogd en geef dan:
Domoticz:POORT/json.htm?tusername=XXXXX=&password=XXXXX=&api-call&type=scenes
Krijg ik een error. Maar ik zie dat hij dan wel is ingelogd in domoticz.
Dus er staat iets fout na de password in de url
Ik heb weinig ervaring met authorisation binnen domoticz…
Als ik zo jouw url vergelijk met die in de API wiki ziet het er hetzelfde uit. Alleen heb je tusername staan ipv username… En ik denk dat ze met api-call het API verzoek bedoelen dat je wilt uitvoeren, dus dat moet je weg laten denk ik. Dus na je password =&type=scenes
“Dus na je password =&type=scenes”
Dat was de oplossing. Bedankt…
Ik kom steeds verder maar loop toch nog vast met in de script vernoemde aanuitzetten:
Melding :
De lampen staan Off. Aanzetten
{ “status” : “ERR” }
Ik heb nu:
$domoticzurl1 =’http://IP:POORT/json.htm?username=XXXX==&password=XXXX=type=command¶m=switchlight&idx=XXX&switchcmd=’ .$Actie;
Goed bezig!
Ik denk: de dubbele == na username vervangen voor een enkele =
En
Na de password = en voor type een ampersand (&) invoegen.
Dan krijg je :
http://IP:POORT/json.htm?username=XXXX=&password=XXXX=&type=command¶m=switchlight&idx=XXX&switchcmd=‘ .$Actie;
Ja, eindelijk het werkt….
Heel Hartelijk dank voor je moeite.