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
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.
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
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
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....)
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.
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
Kompliziert, aber funktioniert! Danke dir ;D
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
Zur Info:
https://forum.fhem.de/index.php/topic,84463.0.html (https://forum.fhem.de/index.php/topic,84463.0.html)
@MobiusOne: Wenn das Thema damit gelöst ist, bitte noch [Gelöst] vor das Subject des ersten Posts schreiben.