FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: Tobster1977 am 07 Dezember 2018, 12:10:25

Titel: [] wahr oder ![] nicht wahr
Beitrag von: Tobster1977 am 07 Dezember 2018, 12:10:25
Sollte das Thema schon irgendwo behandelt worden sein, seht es mir bitte nach, aber da es hier weitestgehend um Sonderzeichen geht, könnte ich nur schwer suchen und habe nichts gefunden.

Bei Zeitspannen kann man bei Bedingungen auslösen mit z.B. [8:00-12:00] oder eben NICHT innerhalb der Zeitspanne  mit z.B.![8:00-12:00].
Bei $we bedeutet !$we KEIN Wochenende/Feiertag

Das finde ich sehr nützlich und vereinfacht die Eingabe von Bedingungen sehr.

Ist es möglich, die Abfrage von Dummies wie z.B. [Anwesend] auch entsprechend zu vereinfachen, also statt [Anwesend] ne "true" kurz ![Anwesend] zuschrieben, das würde die Eingabe wiederum sehr verkürzen und vereinfachen. Gerade bei der Abfrage mehrerer Bedingungen.

Sollte das nicht möglich sein, könnte man das ggf als Verbesserungsvorschlag aufnehmen.

[Bedingung] könnte schalten auf übliche Werte wie true, wahr, ja oder 1
![Bedingung] auf alles andere oder eben auf false, falsch, nein oder 0

Danke und Grüße
Tobster
Titel: Antw:[] wahr oder ![] nicht wahr
Beitrag von: CoolTux am 07 Dezember 2018, 12:19:29
Verstehe ich nicht.

Anwesenheit wird doch abgefragt in Form von

Device:Wert eq 'present'

Dem zu Folge wäre unwahr

Device:Wert ne 'present' oder eben
Device:Wert eq 'absent'

Also entweder verstehe ich Dein Anliegen nicht oder Du hast Dich da in was vertan.
Titel: Antw:[] wahr oder ![] nicht wahr
Beitrag von: Damian am 07 Dezember 2018, 12:44:10
Zitat von: Tobster1977 am 07 Dezember 2018, 12:10:25
Sollte das Thema schon irgendwo behandelt worden sein, seht es mir bitte nach, aber da es hier weitestgehend um Sonderzeichen geht, könnte ich nur schwer suchen und habe nichts gefunden.

Bei Zeitspannen kann man bei Bedingungen auslösen mit z.B. [8:00-12:00] oder eben NICHT innerhalb der Zeitspanne  mit z.B.![8:00-12:00].
Bei $we bedeutet !$we KEIN Wochenende/Feiertag

Das finde ich sehr nützlich und vereinfacht die Eingabe von Bedingungen sehr.

Ist es möglich, die Abfrage von Dummies wie z.B. [Anwesend] auch entsprechend zu vereinfachen, also statt [Anwesend] ne "true" kurz ![Anwesend] zuschrieben, das würde die Eingabe wiederum sehr verkürzen und vereinfachen. Gerade bei der Abfrage mehrerer Bedingungen.

Sollte das nicht möglich sein, könnte man das ggf als Verbesserungsvorschlag aufnehmen.

[Bedingung] könnte schalten auf übliche Werte wie true, wahr, ja oder 1
![Bedingung] auf alles andere oder eben auf false, falsch, nein oder 0

Danke und Grüße
Tobster

Die Verneinung mit ! ist nicht DOIF-spezifisch, sondern ein Bestandteil von Perl.

[Anwesend] ist dann wahr, wenn in Anwesend etwas ungleich Null ist oder nicht leer ist.

Damit ist ![Anwesend] wahr, wenn in Anwesend 0 drin steht oder gar nichts (leer).

[Anwesend] ne "true" entspricht dann, !([Anwesend] eq "true"). Neben ! kennt Perl auch den Operator not.

Also, was geht oder wie es geht, hat weniger mit DOIF zu tun, als viel mehr mit Perl und da kann man nicht dran rütteln.
Titel: Antw:[] wahr oder ![] nicht wahr
Beitrag von: Tobster1977 am 07 Dezember 2018, 12:45:06
Es geht mir um die Vereinfachung.
Z. B. bei meinen Rollläden fahre ich sie auf 50%, wenn einer von meinen 3 Dummies Beschattung, Blickschutz oder Regenschutz "on" ist.

Schreibweise derzeit:
(([Beschattung] eq "on") or ([Blickschutz] eq " on") or ([Regenschutz] eq " on")) ...
DOLESEIF
(([Beschattung] eq "off") and ([Blickschutz] eq " off") and ([Regenschutz] eq " off")) ...
...


Schöner wäre

([Beschattung] or [Blickschutz] or [Regenschutz])
DOELSEIF
(![Beschattung] and![Blickschutz] and![Regenschutz])
...

Anmerkung: Aufgrund weiterer Bedingungen wäre ein einfaches DOELSE nicht möglich

Hoffe, mein Anliegen ist jetzt klarer ;)
Titel: Antw:[] wahr oder ![] nicht wahr
Beitrag von: Tobster1977 am 07 Dezember 2018, 12:46:34
@Damian:
Dann würde mein Anliegen klappen, wenn ich statt on /off 0/1 verwende?

Danke schon einmal.
Titel: Antw:[] wahr oder ![] nicht wahr
Beitrag von: Damian am 07 Dezember 2018, 12:55:26
Zitat von: Tobster1977 am 07 Dezember 2018, 12:45:06
Es geht mir um die Vereinfachung.
Z. B. bei meinen Rollläden fahre ich sie auf 50%, wenn einer von meinen 3 Dummies Beschattung, Blickschutz oder Regenschutz "on" ist.

Schreibweise derzeit:
(([Beschattung] eq "on") or ([Blickschutz] eq " on") or ([Regenschutz] eq " on")) ...
DOLESEIF
(([Beschattung] eq "off") and ([Blickschutz] eq " off") and ([Regenschutz] eq " off")) ...
...


Schöner wäre

([Beschattung] or [Blickschutz] or [Regenschutz])
DOELSEIF
(![Beschattung] and![Blickschutz] and![Regenschutz])
...

Anmerkung: Aufgrund weiterer Bedingungen wäre ein einfaches DOELSE nicht möglich

Hoffe, mein Anliegen ist jetzt klarer ;)

Das kannst du über das Attribut DOIF_Readings abdecken:

attr DOIF_Readings Beschattung:[Beschattung] eq "on",Regenschutz:[Regenschutz] eq " on")


Damit kann man im DOIF angeben:

DOIF ([$SELF:Baschattung] or [$SELF:Regenschutz])...

oder z. B.

DOIF (![$SELF:Baschattung] and ![$SELF:Regenschutz])...

oder z. B.

DOIF (!([$SELF:Baschattung] or [$SELF:Regenschutz]))...


Oder wie du schon selbst festgestellt hast: einfach 0 bzw. 1 in jeweiligen Dummy ablegen, dann braucht man den Umweg über DOIF_Readings nicht.
Titel: Antw:[] wahr oder ![] nicht wahr
Beitrag von: Tobster1977 am 07 Dezember 2018, 12:57:31
Super, danke