Hauptmenü

Fhem Syntax gemischt mt Perl

Begonnen von SSSleep, 12 November 2015, 21:09:17

Vorheriges Thema - Nächstes Thema

SSSleep

Hallo,
ein bisschen bin ich ja frustriert, dass Fhem so viele Fragen bei mir aufwirft. Aber irgendwie ist es halt anders. ;)
Ich habe unheimlich Probleme mit der Syntax, gerade wenn es sich mit Perl vermischt. Folgendes Beispiel, ich setze eine Push Nachricht über ein notify ab, möchte aber noch den Status des Geräte Temperatur1 mitschicken:

Zitatdefine Temperatur1 dummy
define notify_Heizung_Brenner notify Heizung_Brenner set pushmsgIPhone message Heizung %!  _Raumtemperatur:  [syntax?]

Ich weiss, ich bewege mich noch auf der Fhem Ebene, dann würde ich mein Device doch mit Temperatur1:state erreichen!? Hier in diesem Beitrag

http://forum.fhem.de/index.php?topic=24360.0

wird die Funktion ReadingsVal() mit einem vorangestellten "." auch innerhalb des Fhem codes fehm("   ")verwendet:

define alarm notify dummy1 {fhem("set dummy2 ". ReadingsVal("dummy1", "state", "")}

würde das für mich dann bedeuten,

Zitatdefine Temperatur1 dummy
define notify_Heizung_Brenner notify Heizung_Brenner set pushmsgIPhone message Heizung %!  _Raumtemperatur:  ". ReadingsVal("Temperatur1", "state", "")

marvin78

Wenn du die Perl Funktion ReadingsVal() verwenden möchtest, musst du dich auf Perl Ebene begeben (wie im Beispiel {}). fhem() ist auch eine Perl Funktion. Das ist allerdings im speziellen Fall ab featurelevel 5.7 nicht mehr zwingend nötig (siehe commandref zu set).

define notify_Heizung_Brenner notify Heizung_Brenner set pushmsgIPhone message Heizung %!  _Raumtemperatur: [Temperatur1:state]

Ich würde dir das Anfänger PDF empfehlen. Hast du das durchgeackert, solltest du keinerlei Probleme mehr mit der Syntax haben.

SSSleep

Hi, ich lese mir das Anfänger PDF am Wochenende durch!
Dein Beispiel;
ZitatCode: [Auswählen]

define notify_Heizung_Brenner notify Heizung_Brenner set pushmsgIPhone message Heizung %!  _Raumtemperatur: [Temperatur1:state]

tut so auf Anhieb nicht.

Mir ist klar, dass in {} Perl ist und fhem() wiederum eine Perl Funktion ist. Aber innerhalb der fhem() Funktion bin ich doch auf der fhem Ebene, da kann doch nicht wieder eine Perl Funktion aufgerufen werden...also grob habe ich damit meine Probleme:
  {  fhem("   ReadingsValue()  ")  }

marvin78

Das "tut's" schon, wenn du den featurelevel in deinem fhem auf 5.7 stellst. Das schrieb ich ja schon und das steht auch in der commandref zu set (bitte alle guten Ratschläge annehmen und nicht nur blind kopieren). Aber Vorsicht: featurelevel 5.7 entfernt einige Dinge, die deprecated sind. Alles dazu steht auch in der commandref.

Dir fehlen die Grundlagen. Bitte Einsteiger-PDF und ein Anfäger-Perl Handbuch lesen. Ich werde dir nun hier kein weiteres Copy&Paste Beispiel geben. Bitte den Versuch machen, etwas zu lernen.

{fhem("set TEST ".ReadingsValue()}