Hauptmenü

ReadingsVal

Begonnen von Eisix, 30 November 2015, 17:23:42

Vorheriges Thema - Nächstes Thema

Eisix

Hallo,

define n_Wind_AUS notify Wetter:wind_condition.* { fhem "set Wind_AUS ".ReadingsVal("Wetter","wind_condition",0)." " }

schreibt mir

Wind: WSW 35 km/h

in meinen dummy. Ich möchte es aber ohne

Wind:

haben.
Mein laienhafter Ansatz war

Wetter:wind_condition.* { fhem "set Wind_AUS "substr(.ReadingsVal("Wetter","wind_condition",0)." ", 6) }

Das scheint aber nicht zu funktionieren, wirft aber auch keinen Error im Log aus.
Jemand eine Idee?

Gruß
Eisix

marvin78

Probiere es mit $EVTPART (ReadingsVal ist hier gar nicht notwendig). Siehe dazu commandref zu notify.

Bennemannc

Hallo,

es sollte auch stateFormat möglich sein. Ich habe mir ein userReading gebaut
Richtung:windDirection {CompassPoint (ReadingsVal("CombiOutdoorSensor","windDirection",0))}, WindChill:windSpeed {WindChill (ReadingsVal("CombiOutdoorSensor","windSpeed",0), ReadingsVal("CombiOutdoorSensor","temperature",0))}
Dazu die 99_myUtils aus dem Anhang - dann kannst Du mit dem Reading machen was Du möchtest.

Gruß Christoph
Cubietruck, Fhem 5.8
CC-RT-DN|LC-SW2-FM|RC-12|RC-19|LC-SW4-BA-PCB|LCp-SW1-BA-PCB|ES-PMSw1-Pl|LC-Bl1PBU-FM|PBI-4-FM|CC-VD|CC-TC|SEC-SC(2)|RC-KEY3-B|LC-Sw1PBU-FM|PB-2-FM|WDS100-C6-O|WDC7000|LC-Bl1-FM
Module: Dewpoint,FB_Callmonitor,HCS,Panstamp,at,notify,THRESHOLD,average,DOIF

Eisix

Danke für die prompte Antwort.

Wetter:humidity.* set Luftfeuchte_AUS $EVTPART1 %
ergibt dann z.B.:      93 %

Wetter:wind_condition.* set Wind_AUS $EVTPART2 $EVTPART3 $EVTPART4
ergibt dann z.B.:      W 34 km/h

Das heißt die Einheiten oder was auch immer können einfach dahinter geschrieben werden wie im ersten Beispiel.

Gruß
Eisix

Eisix

Hallo,

bei condition habe ich ein Problem da es je nach Wetterlage 1 oder 2 Textblöcke sind.

DEF   Wetter:condition.* set Condition_AUS $EVTPART1 $EVTPART2

gibt dann

STATE heiter $EVTPART2

gibt es da einen einfachen Trick? Ansonsten bleibe ich bei dem Fall bei der Lösung mit ReadingsVal.

Gruß
Eisix

marvin78

Wetter:condition.* {
  if ($EVTPART2) {
    fhem("set Condition_AUS $EVTPART1 $EVTPART2");
  }
  else {
    fhem("set Condition_AUS $EVTPART1");
  }
}

dev0

Und es gibt dabei keinen Fehler, wenn $EVTPART2 nicht definiert ist? Habe gerade nur ein Tablet zur Hand, sonst hätte ich es kurz ausprobiert.

marvin78

#7
Sollte es nicht.

Alternative:

Wetter:condition.* {
  if (length $EVTPART2) {
    fhem("set Condition_AUS $EVTPART1 $EVTPART2");
  }
  else {
    fhem("set Condition_AUS $EVTPART1");
  }
}


Edit: Doch, du hast recht. Ich habe hier etwas php-lastig gedacht. Eventuell kann man hier mit length arbeiten oder $EVENT per split aufteilen.

dev0

#8
Wenn length nicht funktionieren sollte, dann kann man an eine sub übergeben, die nicht als Prototyp deklariert ist und auf optionale Parameter prüfen. muss man wohl selbst splitten, wie Du schon geschrieben hast. Hatte ich falsch in Erinnerung.

Eisix

Beide Varianten haben nicht funktioniert aber auch keinen error im Log produziert. Habe auch noch ein paar andere nach Perl Doku probiert aber mit dem gleichen negativen Ergebnis.
Mit ReadingsVal funktioniert es ja, also kein Problem.

Danke nochmal für die Hilfe.

Gruß
Eisix