Hauptmenü

[] wahr oder ![] nicht wahr

Begonnen von Tobster1977, 07 Dezember 2018, 12:10:25

Vorheriges Thema - Nächstes Thema

Tobster1977

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

CoolTux

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.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Damian

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.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Tobster1977

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 ;)

Tobster1977

@Damian:
Dann würde mein Anliegen klappen, wenn ich statt on /off 0/1 verwende?

Danke schon einmal.

Damian

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.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Tobster1977