Hallo,
Ich habe mich jetzt seit einigen Tagen mit FHEM auf dem Raspi, ESPeasy und verschiedenen Sensoren und dem SSD1306 beschäftigt. Ich bin dabei auf folgendes Problem gestoßen. Über zwei SHT31 Sensoren, die ich an einem NoedMCU mit ESPeasy-mega 2.0 angeschlossen habe, empfange ich in regelmäßigen Abständen die Werte für Temperatur und Feuchte. Mit dem FHEM Modul "dewpoint" lass ich mir den Taupunkt berechnen. Diese Werte aus Temperatur, Feuchte und Taupunkt wollte ich dann auch auf dem am gleichen NodeMCU angeschlossenen OLED SSD1306 ausgeben lassen. Die reine Übertargung mit "set ESP_Display oled X Y 1234 klappt ja auch. Die Werte von Temp und Humid bekomme ich ohne Kommastelle übermittelt. Das Modul Dewpoint gibt mir aber eine Zahl mit einer Kommastelle aus. Im Eventmonitor sehe ich dann zum Beispiel "ESP_Display oled 6 1 17,3°C" .
Jetzt das Problem. Sobald ein "." als Komma enthalten ist, zweigt das Display Garnichts von den gesendeten Werten oder Zeichen an. Wie müsste ich die Übertragung an das Oled umstricken, um Punkte dargestellt zu bekommen? Oer kann ich "Dewpoint" klarmachen, dass es keine Kommastelle angeben muss? Ist beim Taupunkt nicht wirklich entscheidend.
ich habe wie gesagt schon "set....." ausprobiert als auch {fhem("set....")}. Beides Identisch. Auch das attr displayTextEncode 0 oder 1 hat nicht geholfen.
Auf dem ESPeasy habe ich FHEM http eingestellt und unter FHEM eine espBridge definiert. Das klappt für die restlichen Dinge... soweit ich das beurteilen kann :-)
Falls jemand eine Idee hat, ich würde mich freuen. Danke.
Falscher Forenbereich bitte nach ESP8266 verschieben.
Kann ich nicht nachvollziehen. Ist das ESPEasy Modul auf dem aktuellen Stand?
Das Attribut displayTextEncode muß aktiviert sein, sonst wird das Komma von der ESPEasy Firmware als Trenner von Argumenten interpretiert.
Zeig ein List des Device und ein verbose 5 Log der Bridge, wenn der Befehl gesendet wird. Beides bitte in code tags.
Hallo,
ich habe exakt das gleiche Problem wie SirWillfried.
Mit einer älteren Version von ESPeasy wurden interessanterweise problemlos Punkte dargestellt, die von FHEM kamen.
Der Befehl "ESP_Display oled 6 1 18.75 C" hätte in Zeile 6 direkt "18.75 C" am Display ausgeben.
Habe mich nach einem Update gewundert, dass alle Zeilen, die ich aus FHEM beschreibe plötzlich leer blieben.
Im FHEM-Log fanden sich aber ganz normal die Einträge.
Ich übermittele folgende Daten : Außentemp, Außen-Luftfeuchte und aktuelle Leistung (Stromverbrauch) - alle Werte waren zuvor mit Nachkommastellen, getrennt mit einem Punkt.
Da ich keine Lösung gefunden habe, habe ich die aktuelle Leistung (zuvor in kWh mit 3 Nachkommastellen) mit 1000 multipliziert - diese wird jetzt einfach in Watt ausgegeben... Das passt...
Bei Temperatur und Luftfeuchtigkeit hätte ich jetzt einfach die (jeweils 2) Nachkommastellen weglassen können, das wollte ich nicht, habe daher den Wert mit 100 multipliziert, nicht ganz optimal. Wenn es draußen 7.54 C sind, steht jetzt im Display "754 C"
Wer eine Lösung hat, immer her damit - ob FHEM seitig oder im ESPEasy Code - ganz egal...
Gruß
Mit der aktuellen ESP Easy Modul Verison (aka 2.0) und einer älteren ESP Easy Mega 2.x Firmware Version, kann ich dieses Verhalten nicht nachstellen.
Wenn das Attribut displayTextEncode auf '1' gesetzt ist oder es nicht angegeben ist, dann kann ich die Werte 'test.1' und 'test,1' senden und sie werden als 'test.1' angezeigt.
Wenn das bei Dir so nicht funktioniert, dann bitte mit einer aktuellen ESPEasy Mega 2.xx Firmware und der aktuellen ESP Easy Modul Version testen. Wenn dieser Effekt dann immer noch auftritt, dann bitte:
- ein list der Bridge und des logischen Device posten
- die Version der ESP Easy Firmware zeigen
- ein verbose 5 log der ESP Easy Bridge und des entsprechenden (O)LED Devices posten, wenn der Befehl gesendet wird
- alles in Code Tags bitte.
Hallo dev0,
dann vesuche ich mal, dir die benötigten Infos zu geben...
Bridge:
Internals:
CONNECTS 7033
DEF bridge 8383
FD 10
HOST bridge
IPV 4
MAX_HTTP_SESSIONS 3
MAX_QUEUE_SIZE 250
NAME espBridge
NOTIFYDEV global
NR 24
NTFY_ORDER 50-espBridge
PORT 8383
STATE initialized
SUBTYPE bridge
TYPE ESPEasy
VERSION 1.39
WARNING_192.168.0.25 connect to http://192.168.0.25:80 timed out
READINGS:
2018-09-28 22:22:50 state initialized
helper:
pm:
Encode 1
JSON 1
queue:
192.168.0.25:
sessions:
192.168.0.20 0
192.168.0.25 0
Attributes:
authentication 0
combineDevices 0
group ESPEasy Bridge
room ESPEasy
verbose 5
Device -
Internals:
DEF 192.168.0.25 80 espBridge ESPWZ_DHT22
ESP_BUILD 20102
ESP_BUILD_GIT mega-20180927
ESP_BUILD_NOTES - Mega
ESP_NODE_TYPE_ID 17: ESP Easy Mega
ESP_SLEEP 0
ESP_UNIT 0
ESP_VERSION 2
HOST 192.168.0.25
IDENT ESPWZ_DHT22
INTERVAL 300
IODev espBridge
LASTInputDev espBridge
MSGCNT 23068
NAME ESPWZ
NOTIFYDEV global
NR 49
NTFY_ORDER 50-ESPWZ
PORT 80
STATE Hum: 44.70 Tem: 21.50
SUBTYPE device
TYPE ESPEasy
VERSION 1.39
espBridge_MSGCNT 23068
espBridge_TIME 2018-09-30 14:36:21
READINGS:
2018-09-30 14:36:04 Humidity 44.70
2018-09-30 14:36:04 Temperature 21.50
2018-09-30 14:33:08 presence present
2018-09-30 14:36:21 state Hum: 44.70 Tem: 21.50
helper:
fpc 1538166182
pm:
Encode 1
JSON 1
received:
Humidity 1538310964
Temperature 1538310964
Attributes:
IODev espBridge
Interval 300
displayTextEncode 1
group ESPEasy Device
presenceCheck 1
readingSwitchText 1
room ESPEasy
setState 3
verbose 5
auf dem ESP ist folgende FW drauf : mega-20180927
verbos 5 log - habe den Befehl mit dem Punkt händisch gesendet, im Display wurde es nicht angezeit - weiter unten im Log sende ich die Leistung in Zeile 6 - ohne Punkt und Komma - da geht es - aus den Meldungen im Log werde ich nicht schlau
2018.09.30 14:29:04 3: ESPEasy: set ESPWZ oled 2 2 Aussen: 18.50 C
2018.09.30 14:29:04 5: ESPEasy ESPWZ: IOWrite($defs{ESPWZ}, 192.168.0.25, 80, ESPWZ_DHT22, oled, 2,2,Aussen%3a%2018%2e50%20C)
2018.09.30 14:29:04 4: ESPEasy espBridge: Send oled,2,2,Aussen%3a%2018%2e50%20C to 192.168.0.25 for ident ESPWZ_DHT22
2018.09.30 14:29:04 5: ESPEasy espBridge: NonblockingGet for ident:ESPWZ_DHT22 => http://192.168.0.25:80/control?cmd=oled,2,2,Aussen%3a%2018%2e50%20C
2018.09.30 14:29:34 4: Connection accepted from espBridge_192.168.0.25_52344
2018.09.30 14:29:34 4: ESPEasy espBridge_192.168.0.25_52344: Peer address 192.168.0.25 accepted
2018.09.30 14:29:34 5: ESPEasy espBridge_192.168.0.25_52344: Received header: {'Content-Length' => 368,'Host' => '192.168.0.11:8383','User-Agent' => 'ESP Easy/20102/Sep 27 2018 02:20:58','Connection' => 'close'}
2018.09.30 14:29:34 5: ESPEasy espBridge_192.168.0.25_52344: Received content: {"module":"ESPEasy","version":"1.04","data":{"ESP":{"name":"ESPWZ","unit":0,"version":2,"build":20102,"build_notes":" - Mega","build_git":"mega-20180927","node_type_id":17,"sleep":0,"ip":"192.168.0.25"},"SENSOR":{"0":{"deviceName":"DHT22","valueName":"Temperature","type":2,"value":"21.50"},"1":{"deviceName":"DHT22","valueName":"Humidity","type":2,"value":"44.50"}}}}
2018.09.30 14:29:34 4: ESPEasy espBridge_192.168.0.25_52344: No basic authentication required
2018.09.30 14:29:34 4: ESPEasy espBridge_192.168.0.25_52344: Send http close '200 OK'
2018.09.30 14:29:34 4: ESPEasy espBridge_192.168.0.25_52344: Src:'ESPWZ'/'DHT22' => ident:ESPWZ_DHT22 dev:ESPWZ combinedDevice:0
2018.09.30 14:29:34 5: espBridge: dispatch ESPWZ_DHT22::192.168.0.25::1::0::1::i||unit||0||0|||i||sleep||0||0|||i||build||20102||0|||i||build_git||mega-20180927||0|||i||build_notes|| - Mega||0|||i||version||2||0|||i||node_type_id||17||0|||r||Humidity||44.50||2|||r||Temperature||21.50||2
2018.09.30 14:29:34 5: ESPEasy ESPWZ: Received: ESPWZ_DHT22::192.168.0.25::1::0::1::i||unit||0||0|||i||sleep||0||0|||i||build||20102||0|||i||build_git||mega-20180927||0|||i||build_notes|| - Mega||0|||i||version||2||0|||i||node_type_id||17||0|||r||Humidity||44.50||2|||r||Temperature||21.50||2
2018.09.30 14:29:34 4: ESPEasy ESPWZ: Humidity: 44.50
2018.09.30 14:29:34 4: ESPEasy ESPWZ: Temperature: 21.50
2018.09.30 14:29:34 5: ESPEasy ESPWZ: Internals: unit:0 sleep:0 build:20102 build_git:mega-20180927 build_notes: - Mega version:2 node_type_id:17: ESP Easy Mega
2018.09.30 14:29:34 4: ESPEasy espBridge_192.168.0.25_52344: Closing tcp session.
2018.09.30 14:29:43 3: ESPEasy: set ESPWZ oled 6 2 Leistung:1000 W
2018.09.30 14:29:43 5: ESPEasy ESPWZ: IOWrite($defs{ESPWZ}, 192.168.0.25, 80, ESPWZ_DHT22, oled, 6,2,Leistung%3a1000%20W)
2018.09.30 14:29:43 4: ESPEasy espBridge: Send oled,6,2,Leistung%3a1000%20W to 192.168.0.25 for ident ESPWZ_DHT22
2018.09.30 14:29:43 5: ESPEasy espBridge: NonblockingGet for ident:ESPWZ_DHT22 => http://192.168.0.25:80/control?cmd=oled,6,2,Leistung%3a1000%20W
Im Anhang noch ein Bild, wie ich das Display in ESPEasy angelegt habe, manche Zeilen beschreibe ich direkt aus ESPEasy heraus, die anderen aus FHEM - das teil steht im Wohnzimmer und verfügt über einen eigenen DHT22 - die Infos lass ich mir direkt anzeigen, ohne "Umweg" über FHEM.
Danke und Gruß
Hallo dev0,
habe einen Fehler gefunden - ich verwende eine alte Version :
VERSION 1.39
dessen war ich mir nicht bewußt, mit
Zitatupdate check
bekomme ich ein "Nothing to do" von daher bin ich davon ausgegangen, dass ich mit allen Modulen auf Stand bin...
Mit
update force
habe ich ein großes Update erzwungen, hat auf dem Raspi Zero ewig gedauert, jetzt funktioniert es jedoch immer noch nicht...
neue List der Bridge
Internals:
CONNECTS 50
DEF bridge 8383
FD 10
HOST bridge
IPV 4
MAX_HTTP_SESSIONS 3
MAX_QUEUE_SIZE 250
NAME espBridge
NOTIFYDEV global
NR 24
NTFY_ORDER 50-espBridge
PORT 8383
STATE initialized
SUBTYPE bridge
TYPE ESPEasy
VERSION 2.00
READINGS:
2018-09-30 16:02:13 state initialized
helper:
pm:
Encode 1
JSON 1
sessions:
192.168.0.20 0
192.168.0.25 0
Attributes:
authentication 0
combineDevices 0
group ESPEasy Bridge
room ESPEasy
verbose 5
Neuer Auszug aus dem Log
018.09.30 16:21:27 3: ESPEasy ESPWZ: set ESPWZ oled 2 2 Aussen: 15.50 C
2018.09.30 16:21:27 5: ESPEasy ESPWZ: set ESPWZ oled 2 2 Aussen%3a%2015%2e50%20C (mappings done)
2018.09.30 16:21:27 5: ESPEasy ESPWZ: IOWrite ( $defs{ESPWZ}, $defs{ESPWZ}, oled, ("2","2","Aussen%3a%2015%2e50%20C") )
2018.09.30 16:21:27 4: ESPEasy espBridge: httpReq device:ESPWZ ident:ESPWZ_DHT22 timeout:10 url:http://192.168.0.25:80/control?cmd=oled,2,2,Aussen%3a%2015%2e50%20C
2018.09.30 16:21:27 4: Connection accepted from espBridge_192.168.0.25_49253
2018.09.30 16:21:27 4: ESPEasy espBridge_192.168.0.25_49253: Peer address 192.168.0.25 accepted
2018.09.30 16:21:27 5: ESPEasy espBridge_192.168.0.25_49253: Received header: {'User-Agent' => 'ESP Easy/20102/Sep 27 2018 02:20:58','Connection' => 'close','Content-Length' => 368,'Host' => '192.168.0.11:8383'}
2018.09.30 16:21:27 5: ESPEasy espBridge_192.168.0.25_49253: Received content: {"module":"ESPEasy","version":"1.04","data":{"ESP":{"name":"ESPWZ","unit":0,"version":2,"build":20102,"build_notes":" - Mega","build_git":"mega-20180927","node_type_id":17,"sleep":0,"ip":"192.168.0.25"},"SENSOR":{"0":{"deviceName":"DHT22","valueName":"Temperature","type":2,"value":"21.60"},"1":{"deviceName":"DHT22","valueName":"Humidity","type":2,"value":"44.10"}}}}
2018.09.30 16:21:27 4: ESPEasy espBridge_192.168.0.25_49253: No basic authentication required
2018.09.30 16:21:27 4: ESPEasy espBridge_192.168.0.25_49253: Send http close '200 OK'
2018.09.30 16:21:27 4: ESPEasy espBridge_192.168.0.25_49253: Src:'ESPWZ'/'DHT22' => ident:ESPWZ_DHT22 dev:ESPWZ combinedDevice:0
2018.09.30 16:21:27 5: espBridge: dispatch
-------------------- Hier mit funktionieredem Befehl
2018.09.30 16:23:45 3: ESPEasy ESPWZ: set ESPWZ oled 2 2 Aussen: 1556 C
2018.09.30 16:23:45 5: ESPEasy ESPWZ: set ESPWZ oled 2 2 Aussen%3a%201556%20C (mappings done)
2018.09.30 16:23:45 5: ESPEasy ESPWZ: IOWrite ( $defs{ESPWZ}, $defs{ESPWZ}, oled, ("2","2","Aussen%3a%201556%20C") )
2018.09.30 16:23:45 4: ESPEasy espBridge: httpReq device:ESPWZ ident:ESPWZ_DHT22 timeout:10 url:http://192.168.0.25:80/control?cmd=oled,2,2,Aussen%3a%201556%20C
2018.09.30 16:23:47 5: espBridge: dispatch ESPWZ_DHT22::192.168.0.25::1::0::1::
2018.09.30 16:23:47 5: ESPEasy ESPWZ: Received: ESPWZ_DHT22::192.168.0.25::1::0::1::
Hab es direkt via URL ausprobiert...
Sende ich :
http://192.168.0.25:80/control?cmd=oled,2,2,Aussen%3a%2015%2e50%20C
, bekomme ich ein
ZitatUnknown or restricted command!
zurück.
Entferne ich
Zitat%2e
aus dem Befehl, wird der Text ordentlich angezeigt.
Es liegt also am ESPEasy auf meinem Controller und nicht am FHEM-Modul....
Jetzt bin ich ratlos...
Danke für die Hilfe und Gruß
ZitatEs liegt also am ESPEasy auf meinem Controller und nicht am FHEM-Modul....
Wenn die altuelle Entwicklerversion der ESP Easy Mega Firmware sich auch so verhält, dann einen Issue auf Github eröffnen und den Bug melden.
Die blöde Sache hat mir keine Ruhe gegeben - ich habe heute auf einem Breadboard mit OLED Display zig Versionen von ESPeasy auf meinen Controller geflasht und die Versionsinfos durchforstet...
Der Fehler hat sich in
Release mega-20180524
eingeschlichen - seit dieser Version werden laut Versionsinfo 2 OLES gleichzeitig unterstützt
ZitatAllow using two oled at same time.
Ab dieser Version tritt der oben beschrieben Fehler auf - ich verwende jetzt einfach die Version
Release mega-20180522
damit gehts wieder einwandfrei.
Vielleicht hilft die Info ja dem ein oder anderen!
Merkwürdig finde ich nur, dass es bisher sonst noch niemandem aufgefallen ist - der Fehler ist ja immerhin seit über 4 Monaten drin ...
Leider ist meine Version so alt, dass ich das nicht in den ESPEasy Internals nachsehen kann. Wenn Du mir sagst, wo ich das in der Web-GUI erkennen kann, dann sage ich Dir das gerne.
Hallo dev0,
danke für die schnelle Reaktion, war meinen Beitrag drüber gerade am editieren, da ich den Fehler auf eine Version eingrenzen konnte (siehe oben)
Die installierte Version kann man sich auf dem Webinterface unter Main / Systeminfo unter GIT version anzeigen lassen.
Gruß
Zitatdamit gehts wieder einwandfrei.
Leider sind die aktuellen Version noch mit einigen Fehlern gespickt, aber die Entwickler sind sehr aktiv und bemüht...