[gelöst] Oled Display-Problem an Wemos D1 mit FHEM HTTP

Begonnen von tklein, 08 April 2017, 16:46:39

Vorheriges Thema - Nächstes Thema

tklein

Hallo,

kann mir jemand sagen, wo ich den Fehler habe? Ich bekomme im Display nicht den ganzen String angezeigt.
Das ist ein Codeauschnitt aus einer Funktion in meiner 99_My_Utils. Auf dem Wemos ist ESP Easy Mega. Device: "Display - Oled SSD1306"
Per MQTT konnte ich nur die ersten 6 Zeilen befüllen daher nun per FHEM HTTP.

Die Werte vom Wemos kommen rein und wurden entsprechend vorher als Device angelegt (bis auf das Oled Display).
Auch kann ich teilweise auf dem Display schreiben.

..
my $wemosdevice = "ESPEasy_Wemos_Schlafzimmer";
my $tmp_kueche = $temp_kueche . " c " . $hum_kueche . " % Ku";
fhem("set $wemosdevice oled 2 1 $tmp_kueche");


Log: 2017.04.08 16:30:14 3: ESPEasy ESPEasy_Wemos_Schlafzimmer: set ESPEasy_Wemos_Schlafzimmer oled 2 1 25.1 c 43.40 % Ku
Display: 43.40
--> mehr wird im Display nicht ausgegeben.

Evtl. mal auf die 147 Version wechseln? Oder framed als Display-Device?

Viele Grüße
Thomas
FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2

jensb

Hallo Thomas,

durch die Leerzeichen zerfällt der String $tmp_kueche bei der Übergabe im Befehl fhem() in seine Einzelteile. Ob du die Gesamtlänge prinzipiell übertragen kannst, kannst du testen, indem du alle Leerzeichen z.B. durch Bindestriche ersetzt. Es hilft aber meist, so einen String in Doppelhochkommas einzurahmen, also z.B.

fhem("set $wemosdevice oled 2 1 \"$tmp_kueche\"");

Habs nur auf der FHEM-Kommandozeile mit einem Reading ausprobiert - ob es im Skript so funktioniert müsstest du selbst mal testen.

Grüße,
Jens
FHEM 6.1 - RPi 4 Raspbian 12 + PiTFT - OPi Zero Armbian 5.35
EnOcean - (W)LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, OBIS - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - RTL433: Oregon - Bluetooth - MQTT
Contributions: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/jensb

tklein

Hi Jens,

warum macht fhem so etwas? :-) Oder liegt das eher am ESP Bridge Modul?

Hier klappt es bei mir:


my $msg_string = "Übersicht:\nWohnzimmer: " . $temp_wz .  " Grad Solltemperatur: " . $soll_temperatur ." / Feuchtigkeit: " . $hum_wz . " %\nKüche: " . $temp_wz .  "
Grad / Feuchtigkeit: " . $hum_kueche ."%\nBad: " . $temp_bad .  " Grad / Feuchtigkeit: " . $hum_bad . "%\nSchlafzimmer: " . $temp_sz . "\nKinderzimmer: " . $temp_kind . 
" Grad / Feuchtigkeit: " . $hum_kind . "%\nLuftdruck: " .$pressure . "\n\nWetterwarnung: " . $wheather_warnings .  "\nHelligkeitswert: " .  $helligkeit . "\nAussentemperatur: " . $aussentmp .
"\nVerkehrsmeldungen: " . $meldung_a1 .  "\nVerzögerung: " . $delay  ."\n\nFeinstaub: PM10: " . $pm10 . " PM2.5: " . $pm2 ."\nStatus Alarmanlage: " . $status_alarm ;


if ($status_duo eq "on") {
fhem("set Duo msg info 15 $msg_string ");
return "Daten werden am Beamer angezeigt";
}

else {
fhem("set Pushover_Client msg 'Infos\n' $msg_string '' 0 '' ");
return "Es wurde eine Nachricht versendet da der Receiver ausgeschaltet ist.";
}



Das mit dem \" hat leider nichts gebracht. Habe es mit Underscores gemacht. Ist eher unschön aber immerhin.

Vielen Dank & Grüße
Thomas
FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2

medikopter

Wie hast du den ESP in fhem angelegt?
Stehe bald vor der selben Situation

tklein

@ medicopter

unter https://forum.fhem.de/index.php?topic=55728.0 ist das ziemlich gut beschrieben. Bei ESP Easy als Controller "FHEM HTTP" einstellen. Nachdem das Modul in FHEM integriert wurde, werden die ESP-Devices automatisch angelegt (neuer Raum ESP Easy) wenn die Werte korrekt zum autocreate/save oder/und "autoload_undefined_devices" gesetzt sind. (wie bei Devices vom CULxxx)
FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2

jensb

@tklein

Zitat... warum macht fhem so etwas?

Der Aufruf fhem() übergibt alle Parameter in der Klammer als einen einzigen String an den FHEM-Kern und der zerlegt diesen String zum 1. Mal, um herauszufinden, welcher Befehl gemeint ist (set) und welches Device (ESPEasy_Wemos_Schlafzimmer). Nach der Übergabe der übrigen Eingabedaten an das das Device-Modul werden auch diese zerlegt, da ja je nach Kommando unterschiedlich viele Parameter unterstützt werden. Es hängt also davon ab, wie das Modul - und in diesem Fall auch der ESP - programmiert wurde, was dabei mit den Leerzeichen "innerhalb" von Parametern passiert. Deshalb klappt es wahrscheinlich auch bei deinem "Duo" und "Pushover_Client".

Wenn es dir wichtig ist, könntest du diese Frage an den Maintainer des Moduls stellen, sofern dazu keine Hinweise in der Commandref zu finden sind.
FHEM 6.1 - RPi 4 Raspbian 12 + PiTFT - OPi Zero Armbian 5.35
EnOcean - (W)LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, OBIS - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - RTL433: Oregon - Bluetooth - MQTT
Contributions: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/jensb

tklein

@ Jens:

Wie bekomme ich das raus, wer der Maintainer für das Modul ist?
FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2

jensb

Im FHEM-Verzeichnis liegt die Datei "MAINTAINER.txt":
ZitatFHEM/34_ESPEasy.pm           dev0                 http://forum.fhem.de Bastelecke/ESP8266

Also ist "dev0" der Maintainer des Moduls.
FHEM 6.1 - RPi 4 Raspbian 12 + PiTFT - OPi Zero Armbian 5.35
EnOcean - (W)LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, OBIS - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - RTL433: Oregon - Bluetooth - MQTT
Contributions: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/jensb

tklein

FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2

dev0

@tklein: Da ich keine Displays am ESP verwende müßtest Du mal etwas testen, damit ich das ESPEasy Modul ggf. entsprechend anpassen kann. Über die FHEM Eingabezeile bitte folgendes eingeben:

set <esp> oled 2 1 Test%20A%20B%20C

<esp> durch Deinen Devicenamen ersetzen.

Ergibt obriger Befehl die Anzeige "Test A B C" auf dem Display?

Werden Zeichen wie "% °" auf dem Display jetzt schon korrekt dargestellt?

tklein

Hallo,

@dev0

vielen Dank für den eigentlich logischen Hinweis. :-)

ZitatErgibt obriger Befehl die Anzeige "Test A B C" auf dem Display?
--> Ausgabe: A B C   :-)
ZitatWerden Zeichen wie "% °" auf dem Display jetzt schon korrekt dargestellt?
--> Ausgabe: "

Viele Grüße
Thomas
FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2

dev0

OK, teste bitte noch folgende drei Strings:

1Hum%2060%25
2Hum:%2060%25
3Hum%3a%2060%25

tklein

Zitat1Hum%2060%25
--> Ausgabe: 1Hum 60%
Zitat2Hum:%2060%25
--> Ausgabe: 2Hum: 60%
Zitat3Hum%3a%2060%25
--> Ausgabe: 3Hum: 60%

Was macht das "25"?

Grüße
Thomas
FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2

dev0

#13
Zitat von: tklein am 15 April 2017, 12:14:03
Was macht das "25"?
"%25" entspricht dem url-encodeten "% Zeichen".

Im Anhang findest Du eine ESPEasy Modul Version, die die Text-Parameter kodiert an den ESP schickt. Kannst Du die Version bitte testen?
Falls keine Proble damit auftreten, dann würde ich die Version so einchecken (ohne die Log Debug Ausgaben, die jetzt noch enthalten sind).

Edit: Anhang entfernt

tklein

hi,

hier die Logausgabe dazu:



2017.04.15 15:36:35 3: ESPEasy ESPEasy_Wemos_Schlafzimmer: set ESPEasy_Wemos_Schlafzimmer oled 1 1 23.2c, 40% WZ
2017.04.15 15:36:35 1: DEBUG>http://192.168.0.91:80/control?cmd=oled,1,1,23%2e2c%2c%2040%25%20WZ

2017.04.15 15:36:35 3: ESPEasy ESPEasy_Wemos_Schlafzimmer: set ESPEasy_Wemos_Schlafzimmer oled 2 1 25.2 c, 37.60 % Ku
2017.04.15 15:36:35 1: DEBUG>http://192.168.0.91:80/control?cmd=oled,2,1,25%2e2%20c%2c%2037%2e60%20%25%20Ku

2017.04.15 15:36:35 3: ESPEasy ESPEasy_Wemos_Schlafzimmer: set ESPEasy_Wemos_Schlafzimmer oled 3 1 23.8c, 43.8% Bad
2017.04.15 15:36:35 1: DEBUG>http://192.168.0.91:80/control?cmd=oled,3,1,23%2e8c%2c%2043%2e8%25%20Bad

2017.04.15 15:36:35 3: ESPEasy ESPEasy_Wemos_Schlafzimmer: set ESPEasy_Wemos_Schlafzimmer oled 4 1 21.4c Schlaf
2017.04.15 15:36:35 1: DEBUG>http://192.168.0.91:80/control?cmd=oled,4,1,21%2e4c%20Schlaf

2017.04.15 15:36:35 3: ESPEasy ESPEasy_Wemos_Schlafzimmer: set ESPEasy_Wemos_Schlafzimmer oled 5 1 23.3c, 48.3% Kind
2017.04.15 15:36:35 1: DEBUG>http://192.168.0.91:80/control?cmd=oled,5,1,23%2e3c%2c%2048%2e3%25%20Kind

2017.04.15 15:36:35 3: ESPEasy ESPEasy_Wemos_Schlafzimmer: set ESPEasy_Wemos_Schlafzimmer oled 6 1 1010.34
2017.04.15 15:36:35 1: DEBUG>http://192.168.0.91:80/control?cmd=oled,6,1,1010%2e34

2017.04.15 15:36:35 3: ESPEasy ESPEasy_Wemos_Schlafzimmer: set ESPEasy_Wemos_Schlafzimmer oled 7 1 41 mins
2017.04.15 15:36:35 1: DEBUG>http://192.168.0.91:80/control?cmd=oled,7,1,41%20mins




my $tmp_wz = $temp_wz . "c, " . $hum_wz . "% WZ";
my $tmp_kueche = $temp_kueche . " c, " . $hum_kueche . " % Ku";
my $tmp_bad = $temp_bad . "c, " . $hum_bad . "% Bad";
my $tmp_kind = $temp_kind ."c, " . $hum_kind . "% Kind";
my $tmp_sz = $temp_sz ."c Schlaf";



Er scheint bei den Zeilen mit  Grad und % Werten nur die % zu nehmen und ein Zeichen Versatz einzubauen. Das "y" in der ersten Zeile kannst du ignorieren. Das kommt von "ESPeasy nach dem Wemosboot. Muss da eben noch ein clear einbauen.


FHEM auf Pi 3, Echo (Plus, Dot und Connect), CUL868/433, HM Komponenten, Broadlink, Enigma (VU DUO2), Alexa/Homebridge, Sonoffs (POW, RF, Basic), Wemos D1 (IR, DHT, BH1750, OLED, BMP180), IT/Steckdosen, Fritzbox mit SIP, Wifilight, MQTT, Pilight, Xiaomi Flower Sensor, Spotify, Dooya, Shelly, Conbee2