WLAN-Button: Unterschied zwischen den Versionen

Zur Navigation springen Zur Suche springen
1.712 Bytes hinzugefügt ,  17:35, 21. Feb. 2016
+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
Anonymer Benutzer

Navigationsmenü