FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: MobiusOne am 31 Dezember 2017, 19:22:05

Titel: [Gelöst] $EVTPART und Notify
Beitrag von: MobiusOne am 31 Dezember 2017, 19:22:05
Hallo FHEM-Community,

ich verwende seit längeren FHEM um meine Heizungsanlage in HomeKit (Apple) zu integrieren. Nun versuche ich, wie bei meinen anderen Notifies ebenfalls, die Heizungsvariabelen (Siehe unten) auszulesen. Doch nun stoße ich an ein kleines Problem. Wenn ich versuche den Wert bei filterBoth auszulesen, bekomme ich anstelle des Wertes 1 den Wert switchingProg:2 zurück.

Heizungsvariablen:
sDisplay| switchingProg: 1 compressor: 0 heatingHC: 0 heatingDHW: 0 boosterHC: 0 filterBoth: 1 ventStage: 0 pumpHC: 1 defrost: 0 filterUp: 0 filterDown: 0 cooling: 0

Um den filterBoth-Wert auszulesen verwende ich folgenden Notify-Definition:
Mythz:sDisplay.* set Lueftung_Filter_Var $EVTPART12

Theoretisch wäre 12 der richtige Wert, um die 1 bei filterBoth auszulesen und zuschreiben korrekt. Leider scheint FHEM die 12 aber nicht als 12. Leerstelle zu erkennen. Die EVTPART-Werte 2, 4, 6 und 8 geben den richten Wert aus.

Vielleicht wisst Ihr was ich falsch mache, oder gibt es einen anderen Trick?

Vielen Dank und einen guten Rutsch

MfG

Titel: Antw:$EVTPART und Notify
Beitrag von: betateilchen am 31 Dezember 2017, 19:49:33
Zitat von: MobiusOne am 31 Dezember 2017, 19:22:05
Wenn ich versuche den Wert bei filterBoth auszulesen, bekomme ich anstelle des Wertes 1 den Wert switchingProg:2 zurück.
...
Vielleicht wisst Ihr was ich falsch mache

Du machst nix falsch. $EVTPART funktioniert bisher grundsätzlich nur von $EVTPART0 bis $EVTPART9
Deshalb wird Dein $EVTPART12 (technisch) auch völlig korrekt zurückgeliefert:
Du bekommst $EVTPART1 (switchingProg:) und daran eine 2 (die letzte Stelle von "12") angehängt  8)

Abhilfe kannst Du schaffen, wenn Du den split von $EVENT einfach in Deinem notify selbst vornimmst und dann den gewünschten Wert verwendest.
Titel: Antw:$EVTPART und Notify
Beitrag von: MobiusOne am 12 Februar 2018, 14:45:35
Zitat von: betateilchen am 31 Dezember 2017, 19:49:33
Abhilfe kannst Du schaffen, wenn Du den split von $EVENT einfach in Deinem notify selbst vornimmst und dann den gewünschten Wert verwendest.

Ich habe mich nun intensiver mit der Split Funktion auseinander gesetzt. Lieder hat folgende Readingval innerhalb meines Notify nicht funktioniert:
Mythz:sDisplay.* {(split ' ',ReadingsVal("Mythz","sDisplay",0))[12]}

Wo liegt hier mein Fehler? Die Split Funktion ist, für mich, bis jetzt das komplizierteste in Fhem ;)

MfG
Titel: Antw:$EVTPART und Notify
Beitrag von: Otto123 am 12 Februar 2018, 15:00:24
Hi,

jetzt begebe ich mich aufs Glatteis  ;) aber sonst lernt man nix.

Split ist genau genommen nicht FHEM sondern Perl.

Der Index beim Arrays (split liefert ein Array) beginnt bei 0 .
Du musst nicht aufs notify warten sowas kann man in der FHEM Kommandozeile testen:
{(split ' ',ReadingsVal("Mythz","sDisplay",0))[11]}

Gruß Otto
Titel: Antw:$EVTPART und Notify
Beitrag von: nils_ am 12 Februar 2018, 15:05:24
Zitat von: betateilchen am 31 Dezember 2017, 19:49:33
$EVTPART funktioniert bisher grundsätzlich nur von $EVTPART0 bis $EVTPART9

frage dazu: steht das irgendwo? mir war das bisher auch nicht bewusst. (ok hätte vermutlich im modul was gefunden....)
Titel: Antw:$EVTPART und Notify
Beitrag von: MobiusOne am 12 Februar 2018, 19:29:22
Zitat von: Otto123 am 12 Februar 2018, 15:00:24
Du musst nicht aufs notify warten sowas kann man in der FHEM Kommandozeile testen:
{(split ' ',ReadingsVal("Mythz","sDisplay",0))[11]}

Hallo Otto,

danke für deinen Tipp, da war ich schon nah dran ;)
Wenn ich den Befehl in der Kommandozeile eingebe, erhalte ich den richtigen Wert zurück. Ich habe nun versucht mein Notify zu korrigieren:
defmod n_Lueftung_Filter_Var notify Mythz:sDisplay.* set Lueftung_Filter_Var {(split ' ',ReadingsVal("Mythz","sDisplay",0))[11]}

Nun bekommen ich als Wert {(split ' ',ReadingsVal("Mythz","sDisplay",0))[11]} zurück.
Titel: Antw:$EVTPART und Notify
Beitrag von: Otto123 am 12 Februar 2018, 21:16:35
Du musst bitte Codetags verwenden - die # Taste über dem  :-X Smiley.

Jetzt versuchst Du in einer Ebene FHEM Code und Perl Code zu mischen, das geht so nicht. set ist FHEM {da drin ist Perl}.
Es gibt da viele Möglichkeiten, ich bin da auch nicht so gut. Versuch mal so, erstmal alles in Perl, dann mit fhem() zurück nach FHEM:
defmod n_Lueftung_Filter_Var notify Mythz:sDisplay.* {my $a = (split ' ',ReadingsVal("Mythz","sDisplay",0))[11];;fhem("set  Lueftung_Filter_Var $a")}

Gruß Otto
Titel: Antw:$EVTPART und Notify
Beitrag von: MobiusOne am 12 Februar 2018, 21:50:53
Kompliziert, aber funktioniert! Danke dir  ;D
Titel: Antw:$EVTPART und Notify
Beitrag von: Otto123 am 13 Februar 2018, 11:50:39
findest Du? Ist ein einfaches Beispiel, wäre gut wenn Du es daran verstehst wie es funktioniert und aufgebaut ist.
Also frag ruhig nach.

Gruß Otto
Titel: Antw:$EVTPART und Notify
Beitrag von: Phill am 16 Februar 2018, 11:54:57
Zur Info:
https://forum.fhem.de/index.php/topic,84463.0.html (https://forum.fhem.de/index.php/topic,84463.0.html)
Titel: Antw:$EVTPART und Notify
Beitrag von: KernSani am 17 Februar 2018, 19:42:53
@MobiusOne: Wenn das Thema damit gelöst ist, bitte noch [Gelöst] vor das Subject des ersten Posts schreiben.