ECMD mehrere Rückgabe Werte möglich?

Begonnen von Niko, 08 Februar 2013, 19:03:29

Vorheriges Thema - Nächstes Thema

Niko

Hallo,

bin durch die Max Heizungssteuerung vor einigen Tagen zu FHEM gekommen und dies funktioniert bei mir auch schon ganz gut (seit gestern auch ohne Cube).

Jetzt wollte die die Daten meines Photovoltaik Datenloggers "Sun-Watch" (http://sun-watch.net/) in FHEM einlesen. Der Logger bietet eine Schnittstelle auf Port 22222 (http://sun-watch.net/index.php/tips/scriptfaehigkeit/). Hier ein kurzer Auszug von der Seite:

Über den TCP-Port 22222 können Anfragen an den Sun-Watch gesendet werden. Diese Anfrage wird als String ,,GETPAR;WR;Mpp-Tracker;P1;P2;..." versandt.

WR ist der gewünschte Wechselrichter (0=WR1, 1=WR2, ...)
Mpp-Tracker ist der gewünschte Mpp-Tracker (0..2)
Die einzelnen Parameter werden anschließend aufgelistet (E-Total, Status, ...)

Der Tracker liefert die Werte in der Form "3100;25456" zurück (bei zwei Parametern in Aufruf, insgesamt gibt es 10 Parameter).

Bisher frage ich jeden Wert einzeln ab. Günstiger wäre es aus meiner Sicht in einem Aufruf alle Werte zu ermitteln und diese in die entsprechenden Variablen in FHEM einzulesen. Ich habe hierzu jetzt schon den halben Tag recherchiert, konnte aber nichts finden. Daher meine Frage: Ist dies mit ECMD überhaupt möglich? Falls ja wäre ich für einen Tipp dankbar.

Zusätzlich kommt hinzu, dass der Logger nach jeder Abfrage die "Zusammenarbeit verweigert" und ich jedesmal erst ein "set <Name> reopen" senden muss. Dies wird auch noch ständig in die Logdatei geschrieben (die anderen Logs konnte ich unterdrücken). Da der Aufruf alle fünf Minuten passiert kommt hier einiges zusammen. Ggf. gibt es aber auch hier betreff "reopen" eine Lösung.

Folgend zunächst der relevante Teil aus der fhem.cfg und dann meine Sun_Watch.classdef

fhem.cfg:

define PV02_ECMD ECMD telnet 192.168.1.2:22222
attr PV02_ECMD classdefs Sun_Watch_classdef=./classdefs/Sun_Watch.classdef

define PV02_ECMDDevice ECMDDevice Sun_Watch_classdef
attr PV02_ECMDDevice alias BrEnergy-PV02

define PV02_Timer at +*00:05 \
  set PV02_ECMD reopen;; get PV02_ECMDDevice E-Total;; \
  set PV02_ECMD reopen;; get PV02_ECMDDevice Pac;; \
  set PV02_ECMD reopen;; get PV02_ECMDDevice PPV;; \
  set PV02_ECMD reopen;; get PV02_ECMDDevice Upv-Ist;; \
  set PV02_ECMD reopen;; get PV02_ECMDDevice Ipv;; \
  set PV02_ECMD reopen;; get PV02_ECMDDevice Uac;; \
  set PV02_ECMD reopen;; get PV02_ECMDDevice Tinnen;; \
  set PV02_ECMD reopen;; get PV02_ECMDDevice Ticks;; \
  set PV02_ECMD reopen;; get PV02_ECMDDevice _Pacpeak;; \
  set PV02_ECMD reopen;; get PV02_ECMDDevice Fehler;; \
  set PV02_ECMD reopen;; get PV02_ECMDDevice Status

Sun_Watch.classdef:

#classdef für Sun Watch Solar Logger

#Keine Übergabeparameter
params

#Gesamtertrag in Wh
get E-Total cmd {"GETPAR;0;0;E-Total"}
get E-Total postproc { ("$_" / 1000); }

#AC-Leistung
get Pac cmd {"GETPAR;0;0;Pac"}
get Pac postproc { int("$_"); }

#DC-Leistung in W
get PPV cmd {"GETPAR;0;0;PPV"}
get PPV postproc { int("$_"); }

#DC-Spannung in V
get Upv-Ist cmd {"GETPAR;0;0;Upv-Ist"}
get Upv-Ist postproc { int("$_"); }

#DC-Strom in mA
get Ipv cmd {"GETPAR;0;0;Ipv"}
get Ipv postproc { int("$_"); }

#AC-Spannung
get Uac cmd {"GETPAR;0;0;Uac"}
get Uac postproc { int("$_"); }

#Innentemperatur im Wechselrichter
get Tinnen cmd {"GETPAR;0;0;Tinnen"}
get Tinnen postproc { int("$_" ); }

#
get Ticks cmd {"GETPAR;0;0;Ticks"}
get Ticks postproc { int("$_" ); }

#
get _Pacpeak cmd {"GETPAR;0;0;_Pacpeak"}
get _Pacpeak postproc { int("$_"); }

#Fehlermeldungen
get Fehler cmd {"GETPAR;0;0;Fehler"}

#Status
get Status cmd {"GETPAR;0;0;Status"}

Das mit dem int("$_") habe ich aufgenommen da der Tracker Nachts keine Zahl sondern "-" meldet.

Vielen Dank im voraus und viele Grüße
Niko

jocamel

Hi,
mal ne kurze Frage,
hast Du das hinbekommen, oder den Versuch eingestellt?
Ich habe nämlich auch jetzt FHEM und Sunwatch am laufen und bin auf der Suche das beides zu integrieren.

Schöne Grüße,
Jens

jocamel

Hi Namensvetter,
noch keine Zeit und Muße gefunden das weiterzuführen.


Stefan Scholz

Hallo,

ich weis das Thema ist "uralt", aber gibt es evtl. trotz Dem irgend was neues?

Ich versuche ebenfalls die Werte aus dem SunWatch ins Fhem zu bekommen.

Danke, Gruß Stefan