WLAN-Button: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
+Protokoll
>Ranlvor (Link Code Version 2) |
>Ranlvor (+Protokoll) |
||
Zeile 6: | Zeile 6: | ||
|Tags=ESP8266, Freifunk | |Tags=ESP8266, Freifunk | ||
}} | }} | ||
== Version 2 == | == Version 2 == | ||
Version 1 hatte durch unerwartete Leckströme einen unerwartet hohen Energieverbrauch. Da die Batterielautzeit mit 3 Tagen inakzeptabel kurz war habe ich den Freifunkrouter im Raum um einen Raumstatusbutton erweitert. [https://github.com/maschinendeck/WLAN-Button/tree/master/freifunkrouter Code liegt auf Github.] | Version 1 hatte durch unerwartete Leckströme einen unerwartet hohen Energieverbrauch. Da die Batterielautzeit mit 3 Tagen inakzeptabel kurz war habe ich den Freifunkrouter im Raum um einen Raumstatusbutton erweitert. [https://github.com/maschinendeck/WLAN-Button/tree/master/freifunkrouter Code liegt auf Github.] | ||
Zeile 66: | Zeile 64: | ||
* Stecker, Buchse und Loch für externe Spannungsversorgung ist vorhanden | * Stecker, Buchse und Loch für externe Spannungsversorgung ist vorhanden | ||
* Standbyverbrauch: 1 mA. Ich schätze die Batteriehaltbarkeit auf 1 Monat, also sollte bis zum 18.03.2016 das Projekt durch etwas anderes abgelöst werden. | * Standbyverbrauch: 1 mA. Ich schätze die Batteriehaltbarkeit auf 1 Monat, also sollte bis zum 18.03.2016 das Projekt durch etwas anderes abgelöst werden. | ||
== Protokoll == | |||
=== getchallenge.php === | |||
* Gibt eine Nonce für das angegebene Device aus. Diese Nonce ist an die Deviceid und an die IP-Adresse des Clients gebunden und läuft nach 60 Sekunden oder nach erfolgreicher benutzung automatisch ab. | |||
* GET-Parameter: | |||
** device: Integer mit der Deviceid | |||
Beispiel: | |||
/getchallenge.php?device=1 | |||
=== doaction.php === | |||
* Prüft die Nonce, den Authcode, invalidiert die Nonce, speichert die Telemetrie und updated den Raumstatus | |||
* GET-Parameter | |||
**device: Integer mit der Deviceid | |||
**data: Payload | |||
**auth: hash_hmac("sha256", $data, $HMAC_KEY) (in Hexadezimalkodierung) | |||
* Inhalt von data | |||
**data ist eine Art kaputtes CSV / Key-Value-Format | |||
**Die Datensätze werden mit " voneinander getrennt (weil Zeilenumbrüche urlencoded werden müssten und das auf den kleinen Devices zu fummelig wäre) | |||
**Key und Value werden mit : voneinander getrennt | |||
**Mögliche Keys | |||
*** challenge: eine Ausgabe von /getchallenge.php. Muss vorhanden und gültig sein, sonst wird die Anfrage ignoriert | |||
*** tele: Telemetriedaten. Wird bisher von Version 2 nicht genutzt. Version 1 läd im Feld vdd die aktuelle Versorgungsspannung hoch | |||
**** tele ist eine Art kaputtes CSV / Key-Value-Format | |||
**** Die Datensätze werden mit ; voneinander getrennt | |||
**** Key und Value werden mit - voneinander getrennt | |||
Beispiel: | |||
/doaction.php?device=1&data=challenge:b76c924d95a76476e33c63165fe617d224a11d96745aaf62ec6054bdc1450260"tele:vdd-3082&auth=34fdfa69e9c56fc7650930075cb3e6d023be0eabcace0862eeadca5158e56080 | |||
?device=1 | |||
&data= | |||
challenge:b76c924d95a76476e33c63165fe617d224a11d96745aaf62ec6054bdc1450260 | |||
"tele: | |||
vdd-3082 | |||
&auth=34fdfa69e9c56fc7650930075cb3e6d023be0eabcace0862eeadca5158e56080 |