Eigene ESP8266 Raumsensoren

Begonnen von Shojo, 26 Juni 2017, 21:43:18

Vorheriges Thema - Nächstes Thema

justme1968

der sensor kann eine mapping nachricht schicken. schau mal im KeyValueProtokoll pm file die letzten beiden beispiel zeilen.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

justme1968

d.h. du kannst entweder in den nachrichten direkt die reading namen verwenden oder ganz kurze bezeichner und ein mal als erste nachricht eine zuordnung der abkürzungen zu den reading namen in der mapping nachricht.

oder du machst es von hand und verwendest das mapping attribut.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

justme1968

ach ja: noch etwas...

es ist noch nirgendwo fest geschrieben aber wie wäre es für die sensor id dir mac adresse (plus optional laufender nummer) zu verwenden und für den type etwas das auf den sketch namen rückschlüssen lässt? dann könnte man auch ota updates über fhem einbauen.

für den rückweg (also das setzenden werten oder kommandos an den sketch) bin ich auch gerade am überlegen.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Shojo

Zitat von: justme1968 am 04 Juli 2017, 09:14:32
der sensor kann eine mapping nachricht schicken. schau mal im KeyValueProtokoll pm file die letzten beiden beispiel zeilen.
Das werde ich mir heute Abend auf jeden Fall ansehen.

Zitat von: justme1968 am 04 Juli 2017, 09:36:17
oder du machst es von hand und verwendest das mapping attribut.
Ne das soll schon der Sensor machen, finde ich schicker ;)

Zitat von: justme1968 am 04 Juli 2017, 09:47:13
aber wie wäre es für die sensor id dir mac adresse (plus optional laufender nummer) zu verwenden und für den type etwas das auf den sketch namen rückschlüssen lässt? dann könnte man auch ota updates über fhem einbauen.
Ja die MAC ist vorhanden, allerdings nur die letzten 3 Segmente da die ersten ja nur den Hersteller angeben.
Und der Sketchname ist auch drinnen.
SKBB.WifiWeatherStation <--Sketch  MAC-->192513 (19:25:13)

Und OTA wäre natürlich sehr geil!
Aktuell geht das übers Webif, wobei ich das über FHEM besser finden würde.


Zitat von: justme1968 am 04 Juli 2017, 09:47:13
für den rückweg (also das setzenden werten oder kommandos an den sketch) bin ich auch gerade am überlegen.
Ja das wäre natürlich sehr geil. am besten mit einer Queue wenn der Sender in DeepSleep ist.
FHEM auf: Shuttle PC (x64) (Docker)
Bridge: SignalESP 433mHz, ConBee (deCONZ in Docker)
Rest: ESP8266, SONOFF, Sonos, Echo Dot, Xiaomi Vacuum (root), ESP RGBWW Wifi Led Controller, Node-RED, LEDMatrix, Pixel It

habeIchVergessen

in KVPUDP ist der serverseitige OTA-Anteil drin. Wird in einer ähnlichen Form auch von der TCP-Variante benutzt.
Damit die neue Firmware zum NodeMCU kommt, muss dieser per HTTP-Post die Daten entgegen nehmen.

schau mal in EspWifi.ino (NodeMCU.zip aus dem UDP-Thread)

server.addHandler(new FunctionRequestHandler(httpHandleOTA, httpHandleOTAData, ("/ota/" + getChipID() + ".bin").c_str(), HTTP_POST));

justme1968

weißt du ob das kompatibel zur arduinoOta variante ist?
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

habeIchVergessen

ArduinoOTA ist über ein PULL (HTTP GET) vom NodeMCU realisiert. Es wird ein zusätzlicher WebServer benötigt.

KVPUDP macht ein PUSH (HTTP POST).

justme1968

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Shojo

Zitat von: habeIchVergessen am 04 Juli 2017, 11:07:28

server.addHandler(new FunctionRequestHandler(httpHandleOTA, httpHandleOTAData, ("/ota/" + getChipID() + ".bin").c_str(), HTTP_POST));

Ja das ist auch meine Meinung nach eine gute Lösung!
Blos wie bekomme ich nun die Funktionalität in den Fhem Device ?
FHEM auf: Shuttle PC (x64) (Docker)
Bridge: SignalESP 433mHz, ConBee (deCONZ in Docker)
Rest: ESP8266, SONOFF, Sonos, Echo Dot, Xiaomi Vacuum (root), ESP RGBWW Wifi Led Controller, Node-RED, LEDMatrix, Pixel It

habeIchVergessen


Shojo

Oh, ok das ist ja nicht schwer  ;D
FHEM auf: Shuttle PC (x64) (Docker)
Bridge: SignalESP 433mHz, ConBee (deCONZ in Docker)
Rest: ESP8266, SONOFF, Sonos, Echo Dot, Xiaomi Vacuum (root), ESP RGBWW Wifi Led Controller, Node-RED, LEDMatrix, Pixel It

Shojo

Ok ... ich bin echt zu blöd für Perl....

Ich blick den Code nicht 36_KVPUDO.pm sowie 36_KeyValueProtocol.pm

Oder sehe ich das richtig, das ich aktuell kein Mapping über UDP machen kann das ich die Args dort nicht übergeben kann?
FHEM auf: Shuttle PC (x64) (Docker)
Bridge: SignalESP 433mHz, ConBee (deCONZ in Docker)
Rest: ESP8266, SONOFF, Sonos, Echo Dot, Xiaomi Vacuum (root), ESP RGBWW Wifi Led Controller, Node-RED, LEDMatrix, Pixel It

justme1968

du musst doch auf perl seite gar nichts machen.

von KVPUDO wird alles was per udp rein kommt 1:1 an KeyValueProtocol weitergereicht. alles weitere passiert dann dort.

dein sketch muss eine init nachricht schicken die z,b. so ausschaut:INIT DICTIONARY U=UpTime,S=SSID,T=LastReceptionDate,M=Mode,O=OTA-State

dann kann die eigentliche nachricht so aussehen:OK VALUES LGW 12345 U=2345678, S=MyCoolNetwork,T=2015-11-17 13:39:14,M=OK,Connected,Cool,O=Ready

statt so:OK VALUES LGW 12345 UpTime=2345678, SSID=MyCoolNetwork,LastReceiveTime=2015-11-17 13:39:14,2015-11-18 14:15:16, Mode=OK,Connected,Cool,OTA=Ready


du kannst dir zum testen ein JeeLink device anlegen. dort gibt es ein set <name> parse <nachricht>kommando mit dem du nachrichten per copy&paste ins system bringen kannst ohne das du ein echtes device brauchst das du immer wieder flashen musst.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Shojo

Zitat von: justme1968 am 04 Juli 2017, 21:32:18
dein sketch muss eine init nachricht schicken die z,b. so ausschaut:INIT DICTIONARY U=UpTime,S=SSID,T=LastReceptionDate,M=Mode,O=OTA-State
Aber ich muss doch auch ein Device mit übergeben das er den Init zuordnen kann?!
2017-07-04 22:29:52 KVPUDP myKVP UNKNOWNCODE INIT DICTIONARY U=UpTime,S=SSID,T=LastReceptionDate,M=Mode,O=OTA-State

Zitat von: justme1968 am 04 Juli 2017, 21:32:18
du kannst dir zum testen ein JeeLink device anlegen. dort gibt es ein set <name> parse <nachricht>kommando mit dem du nachrichten per copy&paste ins system bringen kannst ohne das du ein echtes device brauchst das du immer wieder flashen musst.
Da behelfe ich mit dem Packet Sender (https://packetsender.com/) ;)
FHEM auf: Shuttle PC (x64) (Docker)
Bridge: SignalESP 433mHz, ConBee (deCONZ in Docker)
Rest: ESP8266, SONOFF, Sonos, Echo Dot, Xiaomi Vacuum (root), ESP RGBWW Wifi Led Controller, Node-RED, LEDMatrix, Pixel It

habeIchVergessen

bei KVPUDP wird mit dem initialen HTTP-Request (/config?Version=&...) auch das Dictionary gelesen.
Also kannst du alles neu erfinden oder das benutzen, was schon da ist.