Categorieën
Domotica Domoticz Scripts

Zo gebruik je NFC stickers in Domoticz zónder dure apps!

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
NFC Sticker tags
NFC Sticker tags

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:

  1. Configuratiescherm
  2. Webservices
  3. Vink Web station inschakelen aan
  4. Klik op toepassen
  5. Ga naar het tabje PHP-instellingen
  6. 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.

PHP

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!

Wat vond je van deze blogpost?

Klik op een ster om een beoordeling te geven!

Gemiddelde score 0 / 5. Aantal stemmen: 0

Er heeft nog niemand gestemd. Wees de eerste, het kost niets en geen registratie!

Jammer dat de post niet behulpzaam was.

Laten we deze post verbeteren!

Wat zou er beter kunnen?

13 reacties op “Zo gebruik je NFC stickers in Domoticz zónder dure apps!”

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

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

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

Laat weten wat je van dit artikel vindt!

Deze website gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.