[HTTP Request Shortcuts] und NFC

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

    HTTP_Request_API-Aufruf.jpg

    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:

    HTTP_Request_API_Body.jpg

    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:

    HTTP_Request_API_Response.jpg

    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:

    HTTP_Request_Deeplink.jpg

    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.

    NFC_Aufgabe.jpg

    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:

    NFC_Aufgabe_URI.jpg

    Als Ziel wird nun die oben zwischengespeicherte Angabe hinterlegt (kann man hier zwar nicht sehen, ist aber so):

    NFC_Aufgabe_URI_Deeplink.jpg

    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.

    NFC_Aufgabe_schreiben.jpg

    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

    FB 7590, 1* Plug, 4* PlugS, 2* 2.5, 20* Shelly 1, 5* Shelly Plus 1, Switchbot, App HTTP-Request, App Automate

  • Noch ein kleiner Nachtrag:

    Da die Shortcut-ID von Smartphone zu Smartphone variiert, kann man anstelle dieser auch direkt den Namen des HTTP-Requests hinter "deep-link/" eintragen. Somit kann ein HTTP-Request per "Export" und "Import" an mehrere beteiligte Smartphones ausgerollt werden, und der Inhalt des NFC-Tags wird von jedem der so versorgten Smartphones "abgearbeitet".

    Dabei ist zu beachten, das Umlaute oder Leerzeichen URL-codiert eingegeben werden, also anstelle des Leerzeichens z.B. %20. Hier hilft sicherlich ein Tool aus dem Netz.

    HTH

    Detlev

    FB 7590, 1* Plug, 4* PlugS, 2* 2.5, 20* Shelly 1, 5* Shelly Plus 1, Switchbot, App HTTP-Request, App Automate