Probleme mit der seriellen Schnittstelle vom ESP8266

Begonnen von cs-online, 19 November 2016, 13:07:40

Vorheriges Thema - Nächstes Thema

cs-online

Hallo Leute,

ich versuche mich gerade daran, mittels eines IR-Lesekopfes SML aus meinem neuen Digitalen Stromzähler auszulesen. Wenn ich den IR über USB-Adapter am Laptop mit PCOMM auslese, sehe ich, dass er funktioniert, es kommen wie erwartet eine Menge Hex-Kollonnen.

Nun wollte ich das ganze mit dem Wittyboard (mit ESP8266-12E) auslesen. Angeschlossen über GND und VCC und dann den Ausgang vom IR an den RX. Mit dem Code unten bekomme ich immer mal einzelne Zeichenkollonnen, aber nichts kontinuierliches, was sich dann weiterverarbeiten ließe... habs auch schon mit ("data", 200,   function(data) probiert, um 200 Zeichen aufmal zu lesen, kommt aber auch nichts brauchbares bei raus.


uart.setup(0,9600,8,0,1)

uart.on("data", 0,
  function(data)
   
    print("Received from Arduino:".. (data).."\n")
               
end, 0)


Weiss jemand, wie man die RX richtig anspricht, so daß man (möglichst HEX-) Kolonnen bekommt, mit denen man dann weiter arbeiten kann ?

Oder hat jemand schon erfolgreich SML mit dem ESP8266 ausgelesen / aufgenommen ?

Grüße

Christian
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Shelly1,2 und 2.5,Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV mit Speicher, alles auf einem RPI und da geht noch mehr

Andyg2016

Bin auch auf der Suche nach einer Lösung um von meinen Stromzähler die SML-Blöcke ins Netzwerk zu schicken und dann mit einem geeigneten Logger abzugreifen.
Bisher habe ich mir aber nur einen Lesekopf gebaut der per USB an den PC angechlossen die SML-Blöcke empfängt.

Weiterhin habe ich mir gedacht, dass ich die seriellen Daten einfach mittels ESP-Bridge ins Netzwerk bringe und dann mit FHEM mir die relevanten Daten zur Visualisierung herauspicke.
Das mit der ESP-Bridge werde ich in den kommenden wochen mal testen und dann berichten was dort auf der seriellen Konsole ankommt.

@cs-online
Evtl. liegts an der Spannungsversorgung des ESP mit 3,3V das der Lesekopf nicht richtig arbeitet. Oder hast Du den Lesekopf schon mit 5V versorgt und mit Levelshifter an den ESP angebunden?

Im Internet habe ich schon eine funktionierende Lösung gefunden, allerdings ist die nicht auf FHEM zugeschnitten und für mich mit meinen magelnden Kentnissen bisher unbrauchbar:

http://www.msxfaq.de/sonst/bastelbude/smartmeter_d0_sml.htm



cs-online

Hallo Andy,

bist Du schon weiter gekommen ? Ich wollte das Thema langsam wieder aufnehmen... Interessanter Hinweis mit den 3,3V, da muss ich nochmal nachschauen.

Wenn, dann soll der ESP die SML-Nachrichten (kommen alle 1-4sek) dekodieren und dann alle paar Minuten an FHEM schicken lassen, sonst ist der FHEM-Raspi nur mit dem Stromzähler beschäftigt ;-)

Grüße

Christian
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Shelly1,2 und 2.5,Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV mit Speicher, alles auf einem RPI und da geht noch mehr

Gizmo_the_great

#3
Hallo,
ich bin seit ein paar Tagen auch wieder dran meinen Stromzähler wirklich smart zu machen.
Hab einen EHZ genau wie bei msxfaq.de beschrieben. Den Wemos D1 hab ich wie dort beschrieben mit einer BPW40 am Zähler hängen. Er sendet per UDP auf Port 1020 an die IP meines FHEM-Servers.
Habe natürlich die Daten für ,,Target IP" und ,,Source and Target Port" angepasst.
IPAddress udpip(192,168,178,50);       // specify target IP
unsigned int udpport = 1020;           // Specify Source and Target Port

Mit Netcat lese ich die Pakete über den Befehl in eine Textdatei.
nc -u -l -vvv -p 1020 -o /root/UDP-packet-hex4.txt
Ich hab ein Script gebastelt das die unnötigen Zeichen wegschneidet und die Hexdaten in 2 Dateien schiebt.
#!/bin/bash
# Load text file lines into a bash array.


OLD_IFS=$IFS
IFS=$'\n'
for line in $(cat "/root/UDP-packet-hex2.txt"); do
# Schneidet den Hexcode aus
linecomplete=${line:11:47}
printf $linecomplete
echo "$linecomplete" >> /root/SML-Hexcode3.txt
done
IFS=$OLD_IFS
value=$(</root/SML-Hexcode3.txt)
# Schneidet NewLines ab
echo $value | tr '\n' ' ' >> /root/values.txt

1 Datei in der der Stream zeilenweise steht und 2. Datei in der alles in einer Zeile steht.
Und da verließen sie ihn. [emoji17]
Ich habe keine Ahnung wie ich die Hexwerte in einen aktuellen Zählerstand umrechnen kann.
Falls ihr oder ein anderer Leser einen Tip oder gar eine Lösung habt würde ich mich sehr freuen.
Wenn ich da in ein paar Tagen nicht wirklich weiter komme, muss ich das Projekt Stromzähler wieder in die Zukunft verschieben.
Bin in Gedanken schon wieder an der Heizungsoptimierung.


Ich hänge einfach mal 3 Screenshots vom aktuellen Stand an.


Grüße Gizmo
FHEM unter Debian auf RK3188, Homebridge, Apple TV3, Wemos D1 mini mit ESPeasy als RF433MHz-Transmitter, Raumsensor und OLED, Wemos D1 als Klingelsensor per Pushnachricht inkl. Remoteklingel-Funktion, Heizungsregelung Brötje WGB S und ISR SSR C mit BSB_Lan

cs-online

Ganz einfach:

https://forum.fhem.de/index.php/topic,52843.msg614966.html

super easy und läuft bei mir seit Monaten wie im THread beschrieben. Mit ESPLink statt ESPEasy soll es noch stabiler laufen, evtl kann man sich dann das Defmod sparen, aber so läufts bei mir

Grüße

Christian
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Shelly1,2 und 2.5,Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV mit Speicher, alles auf einem RPI und da geht noch mehr