Energiezähler EM1000 simulieren

Anbindung von FS20-Komponenten, ELV-Wetterstationen, EnOcean und DMX an HomeMatic

Moderator: Co-Administratoren

jacek
Beiträge: 8
Registriert: 31.12.2016, 13:06

Energiezähler EM1000 simulieren

Beitrag von jacek » 05.01.2017, 02:49

Hallo zusammen,
ich würde gerne die Daten eines Solarlog (Logger für PV-Anlagen) in einem Energiesensor-Gerät darstellen. Die Schnittstelle zum Solarlog ist recht einfach umzusetzen. Die Daten könnte ich im beliebigen Format über eine beliebige Schnittstelle an CUxD weiterleiten.

Mein bisheriger Versuch sieht wie folgt aus:
  • Erstellung eines EM1000 über CUxD als Stromzähler
  • Mittels socat ein Pseudo-Terminal erstellt
    /usr/local/addon/cuxd/extra/socat pty,raw,echo=0,link=/dev/ttyCUXD pty,raw,echo=0,link=/dev/ttyPV &
  • TTYADD=ttyCUXD im Setup hinterlegt
  • Im Energiesensor den Parameter DEVICE mit ttyCUXD hinterlegt
  • Den Parameter CODE mit 0101 gesetzt
  • Dann z.B. folgenden String an die Schnittstelle TTYPV gesendet:
    E010102000100010001
Im Terminal kommt die Zeichenfolge zwar an, aber beim Gerät passiert nichts. Ist es über diesen Weg überhaupt möglich einen Energiesensor zu simulieren? Oder gibt es hier andere Möglichkeiten?

Danke im Voraus.

Viele Grüße

Jacek

Benutzeravatar
uwe111
Beiträge: 4820
Registriert: 26.02.2011, 22:22
Hat sich bedankt: 3 Mal
Danksagung erhalten: 245 Mal
Kontaktdaten:

Re: Energiezähler EM1000 simulieren

Beitrag von uwe111 » 05.01.2017, 08:09

Hallo Jacek,
jacek hat geschrieben: Ist es über diesen Weg überhaupt möglich einen Energiesensor zu simulieren?
Ja, Du musst dem CUxD nur mitteilen, dass es sich bei dem Interface um einen CUL handelt.
Das machst Du mittels TTYASSIGN=ttyCUXD:CUX

Viele Grüße

Uwe
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN :wink: Download: CUxD 2.11, SSH KeyDir

jacek
Beiträge: 8
Registriert: 31.12.2016, 13:06

Re: Energiezähler EM1000 simulieren

Beitrag von jacek » 05.01.2017, 09:24

uwe111 hat geschrieben:Ja, Du musst dem CUxD nur mitteilen, dass es sich bei dem Interface um einen CUL handelt.
Das machst Du mittels TTYASSIGN=ttyCUXD:CUX
Super. Jetzt geht es.

Danke und viele Grüße

Jacek

jacek
Beiträge: 8
Registriert: 31.12.2016, 13:06

Re: Energiezähler EM1000 simulieren

Beitrag von jacek » 07.01.2017, 12:59

Das mit dem Setzen der Werte funktioniert nun ganz gut. Etwas unsicher bin ich mir allerdings noch bzgl. des Wertebereichs und im Zusammenhang damit mit dem Parameter TURNPUNIT.
Ich erhalte vom PV-Logger eine Watt-Angabe. Somit war mein Gedanke eine Auflösung in Watt zu ermöglichen, also habe ich TURNPUNIT auf 1000 gesetzt.
In der Dokumentation zu CUxD ist der Paketaufbau für den EM1000 beschrieben:

Code: Alles auswählen

ETTAACCSSSSLLLLMMMMRR
Mich interessiert hier zunächst der Durchschnittsverbrauch in den letzten 5 Min und damit LLLL.

Wenn ich für LLLL eine 1 bzw. 0100 übermittle, erhalte ich als Wert 0,012 W – bzw. der Umrechnungsfaktor zwischen LLLL und dem Durchschnittsverbrauch beträgt 12 Watt. Ich bin allerdings davon ausgegangen, dass ich mit TURNPUNIT definiert habe, dass ich pro Impuls nur 1 Watt erhalte?

Des Weiteren erschließt sich mir die Kodierung von MMMM (d.h. Spitzenverbrauch der letzten 5 Minuten) nicht. Es scheint weder Big- bzw. Little-Endian zu sein. Bzw. es scheint so, also ob es sich um einen Teiler handelt? Kann mir da jemand Infos zu geben?

Oder gibt es irgendwo eine Spezifikation zum Protokoll?

Danke und viele Grüße
Jacek

klassisch
Beiträge: 3974
Registriert: 24.03.2011, 04:32
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 110 Mal
Danksagung erhalten: 71 Mal

Re: Energiezähler EM1000 simulieren

Beitrag von klassisch » 24.01.2017, 18:57

Vielen Dank für die Anregung. Ich versuche derzeit etwas ähnliches, aber für eine Wasseruhr und orientiere mich an dieser hilfreichen Anleitung. Vielen Dank schon mal dafür.

Bin aber noch nicht ganz in line:
jacek hat geschrieben: TTYADD=ttyCUXD im Setup hinterlegt
nehme an, damit ist das CUxD setup-Menue gemeint. da habe ich das auch eingetragen
jacek hat geschrieben:Dann z.B. folgenden String an die Schnittstelle TTYPV gesendet:
E010102000100010001
Da setzt es bei mir leider aus. Wie sende ich den String an TTYPV? Über Putty?
Und wie würde das übers LAN aussehen?
Und müßte der socat-Befehl auch irgendwo in den Autostart?

Vielen Dank fürs Anschieben!

Benutzeravatar
uwe111
Beiträge: 4820
Registriert: 26.02.2011, 22:22
Hat sich bedankt: 3 Mal
Danksagung erhalten: 245 Mal
Kontaktdaten:

Re: Energiezähler EM1000 simulieren

Beitrag von uwe111 » 24.01.2017, 19:26

klassisch hat geschrieben:Und müßte der socat-Befehl auch irgendwo in den Autostart?
Vielleicht hilft Dir die Anleitung in der CUxD-Doku (Kapitel 6.12) weiter.
Das pty2tcp Script habe ich geschrieben, um die Einbindung zu vereinfachen.

Viele Grüße

Uwe
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN :wink: Download: CUxD 2.11, SSH KeyDir

Bulli
Beiträge: 494
Registriert: 29.04.2014, 18:38
Hat sich bedankt: 2 Mal
Danksagung erhalten: 9 Mal

Re: Energiezähler EM1000 simulieren

Beitrag von Bulli » 24.01.2017, 19:28

Hallo
leider nur kurz. Wenn das Script auf der CCU läuft kannst du mit echo das einfach hinsenden.

Code: Alles auswählen

echo E010105000100010001 > /dev/ttyPV
so auf die Art über Lan ssh CCU befehl echo E010105000100010001 > /dev/ttyPV
Dein Wemo sollte halt sich ohne Passwort auf der CCU ammelden können.
Das ist jetzt keine Fertig Lösung aber ich glaube du bekommst es damit hin :-)
Wollte ich auch schon immer mal machen, habe aber noch keine fertige Lösung sorry. Wenn du Sie hast kannst du sie ja hier schreiben :-)

hier noch einfach ein paar zeilen zur anregung
#####socat
# ps |grep soca
9871 root /usr/local/addons/cuxd/extra/socat pty,raw,echo=0,link=/dev/ttyCUXD pty,raw,echo=0,link=/dev/ttyPV
12152 root grep soca
# echo E010105000100010001 > /dev/ttyPV
# /usr/local/addons/cuxd/extra/socat pty,raw,echo=0,link=/dev/ttyACM0 pty,raw,echo=0,link=/dev/ttyTF &
TTYADD=ttyCUXD
TTYASSIGN=ttyCUXD:CUX
TTYADD=ttyACM0
TTYASSIGN=ttyACM0:CUX

Gruß
Bulli

klassisch
Beiträge: 3974
Registriert: 24.03.2011, 04:32
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 110 Mal
Danksagung erhalten: 71 Mal

Re: Energiezähler EM1000 simulieren

Beitrag von klassisch » 24.01.2017, 19:47

uwe111 hat geschrieben: Vielleicht hilft Dir die Anleitung in der CUxD-Doku (Kapitel 6.12) weiter.
Das pty2tcp Script habe ich geschrieben, um die Einbindung zu vereinfachen.
Vielen Dank! Kapitel in der Anleitung sowie das Script habe ich gefunden, und sehe, daß in dem "Extra" directory auch schon eine socat ist.
Ich interpretiere die Zeile

Code: Alles auswählen

STARTUPCMD=extra/pty2tcp start ttyTCP0 192.168.9.11:2323
als Autostarteintrag. Damit wäre diese Thema gelöst.

Habe ich das richtig verstanden:
Das pty2tcp Script baut eine Verbindung von der CCU zum WeMos <ip>:<port> auf und zieht Daten vom WeMos ab auf die CCU. D.h. auf dem WeMos müßte ein Programm laufen, welches auf die CCU/CUxD reagiert, dessen Anforderung interpretiert und dann die Daten schickt.
Aber ich habe ja den Datenfluß in die andere Richtung: Der WeMos sendet Daten an die CCU. So ist es zumindest bei der Einbindung der Universal Wrapper Devices.
Oder liegt bei mir da ein prinzipielles Verständnisproblem vor?

klassisch
Beiträge: 3974
Registriert: 24.03.2011, 04:32
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 110 Mal
Danksagung erhalten: 71 Mal

Re: Energiezähler EM1000 simulieren

Beitrag von klassisch » 24.01.2017, 20:03

@Bulli:
Herzlichen Dank! Jetzt kommt die Zeile vo putty ins CUX Terminal und das CUX Device zählt hoch.
Also schon einen Schritt weiter.

Benutzeravatar
uwe111
Beiträge: 4820
Registriert: 26.02.2011, 22:22
Hat sich bedankt: 3 Mal
Danksagung erhalten: 245 Mal
Kontaktdaten:

Re: Energiezähler EM1000 simulieren

Beitrag von uwe111 » 24.01.2017, 20:19

klassisch hat geschrieben:Aber ich habe ja den Datenfluß in die andere Richtung: Der WeMos sendet Daten an die CCU. So ist es zumindest bei der Einbindung der Universal Wrapper Devices.
Oder liegt bei mir da ein prinzipielles Verständnisproblem vor?
Ja, das Pseudo-TTY auf der CCU baut eine Verbindung zu einem Port auf dem WeMos auf. Aber der Datenfluss kann danach bidirektional erfolgen.
Also alles was Du auf der CCU auf das TTY ausgibst, landet beim WeMos und alles was der WeMos auf den Port sendet, landet als Input im Preudo-TTY auf der CCU.

Viele Grüße

Uwe
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN :wink: Download: CUxD 2.11, SSH KeyDir

Antworten

Zurück zu „CUxD“