[gelöst] Verständigungsfrage Trigger

Begonnen von choetzu, 04 Juni 2018, 19:59:37

Vorheriges Thema - Nächstes Thema

Per

Zitat von: choetzu am 12 Juni 2018, 07:45:08Das  [?"FSB61$:position"] < 70 triggert doch einen Event, oder geht das auch beim Zustand?
Das ? triggert gar nix (dafür ist es ja da) und in Kombination mit Event kommt nix Gescheites raus. Und Zustände kannst du nicht generalisieren.

choetzu

Zitat von: Per am 12 Juni 2018, 11:17:58
Das ? triggert gar nix (dafür ist es ja da) und in Kombination mit Event kommt nix Gescheites raus. Und Zustände kannst du nicht generalisieren.

jep, klar. sorry, falsch ausgedrückt. Ich will dies auch nicht triggern. Sondern wenn es draussen zu warm ist, sollen all diejenigen Rolläden runter, welche weniger als 70% geschlossen sind. und um diesen Check geht es bei [?"FSB61$:position"] < 70. Aber, wenn ich dich richtig verstanden habe, dann geht das nicht so.. Wie denn?
Raspi3, EnOcean, Zwave, Homematic

amenomade

Ne, so geht das nicht.

? am Anfang = abfragen, nicht triggern. Wenn es aber nicht triggert, kommt aber auch das Device nicht in $DEVICE
"" = Event Syntax. Das hat aber keinen Sinn, ? und "" zu kombinieren. Was wäre der Zustand eines Events? Und wenn < 70 noch dazu kommt, wird es noch sinnloser.

Ich vermute, Du muss hier wieder auf Perl Ebene gehen.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Per

Zitat von: amenomade am 12 Juni 2018, 11:44:52Ich vermute, Du muss hier wieder auf Perl Ebene gehen.
Oder mal im Klartext sagen, was er damit bezwecken will.
Denn eine Liste mit allen Rollos ("FSB61") und Position > 70 bekommt DOIF ja noch alleine hin (#).

amenomade

Vermutlich will er sowas machen, aber nicht nur für Büro, sondern für alle Rolladen mit einem einzigen DOIF:

([?10:00-20:30]
and [?Sommer_Storenzeit_Dummy] eq "on"
and [Buero_ST_FSB61:"down"])
()

DOELSEIF
([?10:00-20:30]
and [?Sommer_Storenzeit_Dummy] eq "on"
and [?Buero_ST_FSB61:position] < 80
and ([PoolController:Pool_Aussen_Num]  > 23
or [Netatmo_Buero:temperature] > 26)
and [?$SELF:cmd_nr] !~ '^(1|2)$')
(set Buero_ST_FSB61 closes)

DOELSEIF
([00:00])
()


Und wir sind jetzt bei Zweig 2
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

choetzu

Die Vermutung ist definitiv richtig [emoji6] Zweig 1 und 3 gehen dank Euch. Nun sollte noch Zeig 2 gehen, damit das Kunstwerk vollendet ist.. [emoji6]
Raspi3, EnOcean, Zwave, Homematic

amenomade

DOELSEIF
([?10:00-20:30] and [?Sommer_Storenzeit_Dummy] eq "on" and ([PoolController:Pool_Aussen_Num]  > 23 or [Netatmo_Buero:temperature] > 26))
{my $readings = $defs{$SELF}->{READINGS};
for my $key (keys %$readings) {
if ($key =~ /ST_(.*)/) {
my $device = $1;
if ([?$device:position] < 70 and [?$SELF:ST_$device] !~ '^(1|2)$' ) {
fhem("setreading $SELF $key 2")
}
}
}

Nicht getestet
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

choetzu

super, herzlichen Dank.  Es geht noch nicht, es fehlt irgendwo noch ein right bracket.. weiss jedoch nicht wo, hab alles mögliche probiert.

no right bracket: {my $readings = $defs{TEST_DOIF}->{READINGS};

danke nochmals..
Raspi3, EnOcean, Zwave, Homematic

amenomade

Einfach am Ende
DOELSEIF
([?10:00-20:30] and [?Sommer_Storenzeit_Dummy] eq "on" and ([PoolController:Pool_Aussen_Num]  > 23 or [Netatmo_Buero:temperature] > 26))
{my $readings = $defs{$SELF}->{READINGS};
for my $key (keys %$readings) {
if ($key =~ /ST_(.*)/) {
my $device = $1;
if ([?$device:position] < 70 and [?$SELF:ST_$device] !~ '^(1|2)$' ) {
fhem("setreading $SELF $key 2")
}
}
}
}
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

choetzu

danke. Das DOIF motzt zwar nicht mehr, aber dafür werden seit heute Morgen folgende Fehlermeldungen angezeigt, in regelmässigen Abständen.. Um diese Uhrzeit habe ich eine Store runtergelassen und dann wieder hoch... evtl. erklärt das irgendwas.. ;)

.06.13 10:30:02 1: ERROR evaluating {my $readings = $defs{TEST_DOIF}->{READINGS}; for my $key (keys %$readings) { if ($key =~ /ST_(.*)/) { my $device = $1; if ( < 70 and  !~ '^(1|2)$' ) { fhem("setreading TEST_DOIF $key 2") } } }: Unterminated <> operator at (eval 359768) line 1.

2018.06.13 10:30:02 2: TEST_DOIF: {my $readings = $defs{TEST_DOIF}->{READINGS}; for my $key (keys %$readings) { if ($key =~ /ST_(.*)/) { my $device = $1; if ( < 70 and  !~ '^(1|2)$' ) { fhem("setreading TEST_DOIF $key 2") } } }: Unterminated <> operator at (eval 359768) line 1.

2018.06.13 10:30:17 3: EnOcean set Buero_St_FSB61 closed
2018.06.13 10:30:21 1: ERROR evaluating {my $readings = $defs{TEST_DOIF}->{READINGS}; for my $key (keys %$readings) { if ($key =~ /ST_(.*)/) { my $device = $1; if ( < 70 and  !~ '^(1|2)$' ) { fhem("setreading TEST_DOIF $key 2") } } }: Unterminated <> operator at (eval 359877) line 1.

2018.06.13 10:30:21 2: TEST_DOIF: {my $readings = $defs{TEST_DOIF}->{READINGS}; for my $key (keys %$readings) { if ($key =~ /ST_(.*)/) { my $device = $1; if ( < 70 and  !~ '^(1|2)$' ) { fhem("setreading TEST_DOIF $key 2") } } }: Unterminated <> operator at (eval 359877) line 1.

2018.06.13 10:30:21 1: ERROR evaluating {my $readings = $defs{TEST_DOIF}->{READINGS}; for my $key (keys %$readings) { if ($key =~ /ST_(.*)/) { my $device = $1; if ( < 70 and  !~ '^(1|2)$' ) { fhem("setreading TEST_DOIF $key 2") } } }: Unterminated <> operator at (eval 359900) line 1.

2018.06.13 10:30:21 2: TEST_DOIF: {my $readings = $defs{TEST_DOIF}->{READINGS}; for my $key (keys %$readings) { if ($key =~ /ST_(.*)/) { my $device = $1; if ( < 70 and  !~ '^(1|2)$' ) { fhem("setreading TEST_DOIF $key 2") } } }: Unterminated <> operator at (eval 359900) line 1.

2018.06.13 10:35:02 1: ERROR evaluating {my $readings = $defs{TEST_DOIF}->{READINGS}; for my $key (keys %$readings) { if ($key =~ /ST_(.*)/) { my $device = $1; if ( < 70 and  !~ '^(1|2)$' ) { fhem("setreading TEST_DOIF $key 2") } } }: Unterminated <> operator at (eval 360392) line 1.

2018.06.13 10:35:02 2: TEST_DOIF: {my $readings = $defs{TEST_DOIF}->{READINGS}; for my $key (keys %$readings) { if ($key =~ /ST_(.*)/) {
Raspi3, EnOcean, Zwave, Homematic

amenomade

Stattif ([?$device:position] < 70 and [?$SELF:ST_$device] !~ '^(1|2)$', versuch mal mitif (ReadingsVal("$device", "position", 100) < 70 and ReadingsVal("$SELF", "ST_$device", 2) !~ '^(1|2)$'

Die default Werte 100 und 2 sind evtl. anzupassen: ich weiss nicht, was in deinem Fall am besten funktioniert, die Bedingung lieber wahr oder lieber falsch zu haben.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

choetzu

Du bist mein Held, amenomade! Dankeeee.. Es klappt seit heute Morgen bestens. Ich beobachte weiter.

Ich versuch mal den perl code zu verstehen..
Raspi3, EnOcean, Zwave, Homematic