Hallo,
ich stelle euch einmal meinen Weg vor, um über einen NFC-Tag mittels Smartphone eine Aktion im Shellyversum auszulösen.
Wie meist gibt es ein paar Randbedingungen:
- verwendet werden sollen "kleine" NFC-Tags, die für wenige Cent "an jeder Ecke" zu bekommen sind
- ein beliebiges NFC-fähiges Handy, vor den Tag gehalten, soll nichts auslösen
- ein beliebiges NFC-fähiges Handy, vor den Tag gehalten, soll keine sicherheitsrelevanten Daten lesen
Lösungsvorschlag:
Aufgerufen wird die von Allterco zur Verfügung gestellte API zum Schalten von Aktoren. Damit kann das ganze auch "remote" erfolgen, da es über die Cloud (ja, ja, die pöse) erfolgt. Aktivieren von Scenen läuft exakt gleich, nur der Inhalt des HTTP-Requests ändert sich.
Zu Testzwecken schalte ich (mal wieder) mein Bürolicht via API ein (zum ausschalten muss eine weitere Aufgabe definiert werden).
App HTTP-Request:
Das ganze wird zunächst in einem HTTP-Request definiert. Angelegt wird dabei ein "Normaler HTTP-Shortcut". Kein Multi-, Browser- oder Scripting-Shortcut. Auf eine Beschreibung, wie man dabei vorgeht, verzichte ich hier.
Unter den "allgemeinen Einstellungen" des Request wird der Aufruf der API eingetragen:
Nun ist das nur die halbe Miete. Im Body dieses Requests müssen noch diverse Parameter mitgegeben werden - und nein, im Link funktioniert das nicht, da die API mit POST angesteuert wird und die Daten im "Formular-Encoded-Format" haben möchte:
Um die hier gezeigten Daten einzurichten, ist jeweils durch drücken auf das "+" am Ende der Seite eine Kombination aus Schlüssel und Wert (beispielsweise "ID" + "483XXXXXXXXX5") einzugeben. Hab ich hier mal nicht gezeigt, die Ausführung im Rahmen der App sollte an und für sich selbsterklärend sein.
Da man im laufenden Betrieb nicht ständig mitgeteilt haben möchte, das die ausgelöste Aktion erfolgreich abgesetzt wurde, muss das der App im "Response"-Parameter bekanntgegeben werden:
Soweit, so gut. Nun kann hier schon mal getestet werden, indem man diesen Request "manuell" aufruft. Wenn alles korrekt läuft, geht das Licht an, und man sieht nichts auf dem Schirm. Ansonsten: Start oben.
Da ab hier der Test erfolgreich abgeschlossen wurde, ermittelt man den "Deep-Link" zu diesem Request. Das geht in der Version ab 2.4.0 recht einfach: HTTP-Request auswählen, "Information anzeigen" abrufen, und dann hat man's:
Diese Nummer markieren und kopieren - brauchen wir für später.
Ab hier wir die die App "HTTP-Request (an dieser Stelle) nicht weiter gebraucht und kann geschlossen werden.
Wenden wir uns nun dem NFC-Tag zu.
Aktuell benutzt habe ich die (kostenfreien) Versionen von NFC-Tools bzw. NFC-Tasks (das wird aber noch geändert, da dann mehr Möglichkeiten offen stehen - für diesen Zweck tun es die aber).
Das ganze läuft hier über "Aufgaben", da ja später eine andere App (nämlich "HTTP-Request") aufgerufen werden soll.
Die App "HTTP-Request" muss per Deep-Link-URL gestartet werden, denn es soll ja direkt ein Request ausgeführt werden. Daher wird bei der Anlage der Aufgabe nicht direkt auf die App, sondern auf die dazu gehörende URL/URI verwiesen:
Als Ziel wird nun die oben zwischengespeicherte Angabe hinterlegt (kann man hier zwar nicht sehen, ist aber so):
Sodann wechselt man in den Reiter "Schreiben". In diesem Fall erkennt man, da gerade mal 68 Byte auf den NFC-Tag geschrieben werden sollen - so kann das ganze auch auf einem Tag mit 180 Byte Platz finden.
Nun die App "NFC-Tool" schliessen und testen. Wenn der Test erfolgreich war, kann das in den Betrieb übernommen werden.
Ich hoffe, dem ein oder anderen geholfen zu haben.
Detlev