DOIF: vereinfachte Bedingungsabfrage

Begonnen von Ralli, 17 Juni 2015, 07:24:32

Vorheriges Thema - Nächstes Thema

Ralli

Hallo Damian,

bei der recht umfänglichen Programmierung meiner Beschattung habe ich folgendes festgestellt:


([Wetter:fc1_condition] eq "sonnig" | [Wetter:fc1_condition] eq "heiter" | [Wetter:fc1_condition] eq "teilweise wolkig")


lässt sich nicht durch


[Wetter:fc1_condition] eq ("sonnig" | "heiter" | "teilweise wolkig")


ersetzen. Würdest Du das mit auf ToDo setzen? Das wäre super.
Gruß,
Ralli

Proxmox 8.4 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.4 dev, virtualisierte RaspberryMatic (3.83.6.20250705) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.4.1) und HMW-GW, FRITZBOX 7490 (07.59), FBDECT, Siri und Alexa

igami

Hallo Ralli,

DOIF ist perl,  versuch es mal mit

[Wetter:fc1_condition] =~ /sonnig|heiter|teilweise wolkig/)


Einfach bei einer Suchmaschine nach Keywords suchen. In diesem Fall 'perl string eq list'.

Grüße
igami
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

Ralli

Das ist natürlich eine Variante, die auch geht :)
Gruß,
Ralli

Proxmox 8.4 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.4 dev, virtualisierte RaspberryMatic (3.83.6.20250705) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.4.1) und HMW-GW, FRITZBOX 7490 (07.59), FBDECT, Siri und Alexa

flurin

Zitat von: Ralli am 17 Juni 2015, 07:24:32

[Wetter:fc1_condition] eq ("sonnig" | "heiter" | "teilweise wolkig")


so sollte es eigentlich auch gehen:

([Wetter:fc1_condition] eq "sonnig" or "heiter" or "teilweise wolkig")

Damian

Zitat von: flurin am 17 Juni 2015, 11:19:52
so sollte es eigentlich auch gehen:

([Wetter:fc1_condition] eq "sonnig" or "heiter" or "teilweise wolkig")


Wenn schon dann:

([Wetter:fc1_condition] eq "sonnig" or [Wetter:fc1_condition] eq "heiter" or [Wetter:fc1_condition] eq "teilweise wolkig")

eleganter ist allerdings der Vorschlag von igami.

Gruß

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

flurin

#5
Zitat von: Damian am 17 Juni 2015, 18:03:14
Wenn schon dann:

([Wetter:fc1_condition] eq "sonnig" or [Wetter:fc1_condition] eq "heiter" or [Wetter:fc1_condition] eq "teilweise wolkig")

eleganter ist allerdings der Vorschlag von igami.

Gruß

Damian

igami's Version gefällt mir auch besser aber zu meinem Erstaunen geht es auch so  :)

define di_wc DOIF ([local_weather:condition] eq "showers" or "partly cloudy" or "mostly cloudy")
attr di_wc cmdState on|off


Gruss
flurin

Edit: es geht doch nicht! der Zustand ist immer "on".

Damian

#6
Zitat von: flurin am 17 Juni 2015, 19:35:22
igami's Version gefällt mir auch besser aber zu meinem Erstaunen geht es auch so  :)

define di_wc DOIF ([local_weather:condition] eq "showers" or "partly cloudy" or "mostly cloudy")
attr di_wc cmdState on|off


Gruss
flurin

Das kann ich mir nicht vorstellen, denn "partly cloudy" bzw. "mostly cloudy" ist immer wahr.

Du kannst auch in Perl schreiben if ("partly cloudy") {...}. Das ist das Gleiche wie if (1) {...}

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

flurin

Zitat von: Damian am 17 Juni 2015, 19:46:20
Das kann ich mir nicht vorstellen, denn "partly cloudy" bzw. "mostly cloudy" ist immer wahr.

Du kannst auch in Perl schreiben if ("partly cloudy") {...}. Das ist das gleiche wie if (1) {...}

Gruß

Damian

Ja, es stimmt, siehe oben.

Gruss
flurin

Ralli

Deswegen ja meine Frage wegen des Einbaus in der Interpretation von DOIF von


[Wetter:fc1_condition] eq ("sonnig" | "heiter" | "teilweise wolkig")
Gruß,
Ralli

Proxmox 8.4 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.4 dev, virtualisierte RaspberryMatic (3.83.6.20250705) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.4.1) und HMW-GW, FRITZBOX 7490 (07.59), FBDECT, Siri und Alexa

Damian

Zitat von: Ralli am 17 Juni 2015, 20:28:55
Deswegen ja meine Frage wegen des Einbaus in der Interpretation von DOIF von


[Wetter:fc1_condition] eq ("sonnig" | "heiter" | "teilweise wolkig")



ganz einfach: geht in Perl nicht => geht in DOIF nicht, da DOIF daraus Perl-Code macht.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF