Hauptmenü

Filtern von Werten

Begonnen von Spartacus, 29 Januar 2015, 21:27:34

Vorheriges Thema - Nächstes Thema

Spartacus

Hallo,
ich habe mal wieder einen Hänger:
ich habe diverse Dummy-Devices, die Start und Ende der Ferien anzeigen. Alle Dummies haben die gleiche Struktur und werden 1 x pro Tag berechnet. So entsteht eine Countdown-Übersicht in Tagen.

cnt.OS.start.Ferien.dum: Start der Osterferien
cnt.OS.end.Ferien.dum: Ende der Osterferien
cnt.SO.start.Ferien.dum: Start der Sommerferien
cnt.SO.end.Ferien.dum: Ende der Sommerferien
usw.


Jetzt möchte ich jeweils einen Tag vor dem Ferienstart bzw. vor dem Ferienende eine Aktion triggern. Jetzt kann man das alles "oder" verknüpfen:
if (Osterferienstart or Sommerferienstart or Herbstferienstart) =1
schalte Aktor an.


Gibt es nicht eine elegantere Lösung mit Perl? Irgendwie in dieser Form?

if (*.start.Ferien.dum) =1
schalte Aktor

Leider funzt das mit diesem Ausdruck nicht, wie ich dachte!
Hat jemand einen Tipp?
Spartacus
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

KernSani

Perl hätte gerne ein .* statt einem einfachem Stern und die Klammer geht um die ganze Condition.

Grüße,

Oli
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Spartacus

Hi,
sorry, hätte es exakter aufschreiben sollen:
Diesen Code habe ich probiert, aber er läuft nicht Da alle Ferientermine (siehe Screenshot im vorherigen Post) größer als 10 Tage sind, hätte hier der "else" - Fall zutreffen müssen. Es wird aber der "if"-Fall ausgeführt. Wo ist mein Fehler?

{
if (ReadingsVal(".*.Ferien.dum", "state", "") <= 10)
{
fhem "set outdoorlight on"
}
else
{
  fhem "set outdoorlight off"
}
}

Christian
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

GrauesHaar

Hallo Spartacus,

könnte es an dem oberen Eintrag liegen "Ferientag", welcher auf 0 steht ?

justme1968

das funktioniert so nicht. ReadingsVal kann nur ein reading aus einem device auslesen.

du kannst entweder deine dummys über eine structure zusammenfassen oder du musst alle einzelwerte per if of IF oder DOIF verknüpfen.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Spartacus

Hallo Andre,
danke für die Aufklärung!
Ich probier es mal mit einer "structure "! Diese Funktion kenne ich noch nicht!
Christian
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

Spartacus

Hallo,
ich brauche doch noch einmal Hilfe. Habe das mit der structure offenbar nicht richtig umgesetzt.
Ich habe jetzt alle  Ferien-Start-Dummy-Devices folgendermassen zusammengefasst:
define FerienStart structure cnt.OS.start.Ferien.dum cnt.PG.start.Ferien.dum cnt.SO.start.Ferien.dum cnt.HB.start.Ferien.dum cnt.WE.start.Ferien.dum
und dann den o.a. Code wir folgt abgeändert:
.....
{
if (ReadingsVal("FerienStart", "state", "") <= 10)
{
fhem "set outdoorlight on"
}
else
{
  fhem "set outdoorlight off"
}
}

..aber ändert nichts an der Situation!
Irgendwie habe ich nicht verstanden, wie die structure richtig eingesetzt wird.
Christian

Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

Spartacus

Hallo,
hat niemand einen Tipp für mich? Komme irgendwie nicht weiter...
Christian
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

nesges

Deine Dummys nehmen 1 oder 0 an, richtig? Dann schau dir mal clientstate_behavior und clientstate_priority in http://fhem.de/commandref.html#structure an.

Spartacus

Hallo,
Nein! Die Dummy-devices können alle möglichen Werte annehmen! Deshalb Frage ich ja <= 10 ab. Das ist quasi ein Countdown. Wenn einer der Werte kleiner al 10 wird, dann soll das outdoorlight schalten. Andernfalls bleibt es aus.
Christian
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

nesges

Andre, korrigiere mich bitte, wenn ich mich irre, aber in dem Fall ist structure ungeeignet und es bleibt nur die lange oder-Kette.

justme1968

ja. dann wird es mit structure zumindest sehr unhandlich.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Spartacus

Hallo,
ok, danke! Dann bleibt wohl nur der "herkömmliche Weg"!
Christian
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R