FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Eisix am 30 November 2015, 17:23:42

Titel: ReadingsVal
Beitrag von: Eisix am 30 November 2015, 17:23:42
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
Titel: Antw:ReadingsVal
Beitrag von: marvin78 am 30 November 2015, 17:32:19
Probiere es mit $EVTPART (ReadingsVal ist hier gar nicht notwendig). Siehe dazu commandref zu notify.
Titel: Antw:ReadingsVal
Beitrag von: Bennemannc am 30 November 2015, 17:38:16
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
Titel: Antw:ReadingsVal
Beitrag von: Eisix am 01 Dezember 2015, 10:21:24
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
Titel: Antw:ReadingsVal
Beitrag von: Eisix am 03 Dezember 2015, 16:32:29
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
Titel: Antw:ReadingsVal
Beitrag von: marvin78 am 03 Dezember 2015, 16:35:29
Wetter:condition.* {
  if ($EVTPART2) {
    fhem("set Condition_AUS $EVTPART1 $EVTPART2");
  }
  else {
    fhem("set Condition_AUS $EVTPART1");
  }
}
Titel: Antw:ReadingsVal
Beitrag von: dev0 am 03 Dezember 2015, 16:43:23
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.
Titel: Antw:ReadingsVal
Beitrag von: marvin78 am 03 Dezember 2015, 16:54:10
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.
Titel: Antw:ReadingsVal
Beitrag von: dev0 am 03 Dezember 2015, 19:11:33
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.
Titel: Antw:ReadingsVal
Beitrag von: Eisix am 04 Dezember 2015, 11:33:28
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