[Gelöst] $EVTPART und Notify

Begonnen von MobiusOne, 31 Dezember 2017, 19:22:05

Vorheriges Thema - Nächstes Thema

MobiusOne

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


betateilchen

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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

MobiusOne

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

Otto123

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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

nils_

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....)
viele Wege in FHEM es gibt!

MobiusOne

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.

Otto123

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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

MobiusOne

Kompliziert, aber funktioniert! Danke dir  ;D

Otto123

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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Phill

Homebrew 1-Wire / HomeMatic Mix - Cubietruck mit FHEM als Server - Raspberry PI 3 als Informationsanzeige im MagicMirror Stil - Raspberry Pi 1 als Klingelanlage - VDR

Mein Modul: Talk2Fhem - Mein Tipp: https://forum.fhem.de/index.php/topic,82442.0.html

KernSani

@MobiusOne: Wenn das Thema damit gelöst ist, bitte noch [Gelöst] vor das Subject des ersten Posts schreiben.
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...