Doif + Solarlog: Mehrere Funktionsaufrufe im Ausführungsteil

Begonnen von bmwfan, 21 Januar 2018, 16:35:22

Vorheriges Thema - Nächstes Thema

bmwfan

Hallo,
ich versuche die Abfrage meines Solarlog von einem at auf ein DOIF umzustellen und scheitere kläglich daran.
Das ist das at:
define SolarLogValues at +*00:05:00 {if(isday()) {{Solarlog ("3502","1","Pac")};;{Solarlog ("3508","2","Today")}}}
attr SolarLogValues group PV
attr SolarLogValues room 5.3_Photovoltaik


Geht soweit, allerdings wird jeder Wert 2 mal ausgelesen.

Ich will es ersetzn durch ein DOIF und hab schon viele Varianten (runde, geschweifte Klammern, mehrere Klammern...) versucht. Es gelingt aber nicht, beide Werte auszulesen.

([du_Tageslicht] eq "hell" and [+00:01]) ((set Pac {(Solarlog("3502","1","Pac"))}, set Month {(Solarlog("3512","2","Month"))}))

Das Ergebnis ist:
Pac 97, set Month 163.28
Es wird zwar der Wert des ersten Aufrufes korrekt gelesen, jedoch wird die geschweifte Klammer zu und/oder das Komma nicht als Trennzeichen gesehen und der String ", set Month" wird vor das Ergebnis des zweiten Funktionsaufrufes gestellt. Ich habe schon alle möglichen Variamnten (doppelte Kommas, Strichpunkt, Klammern..) ausprobiert aber es hat nie geklappt.

Wo liegt der Fehler?

Gruß Jürgen
Synology DS720+ mit Docker-Container und Haupt-FHEM, HM-LAN, Jalousienaktoren HmWired, Shelly-Devices; Raspi 3B+ mit piVCCU ohne FHEM-Instanz, CUL, JeeLink; Raspi 3B+ mit FHEM und HMUARTUSB,  Raspi 3B+ mit HMUARTGPIO, 1-wire, ebusd

Damian

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

bmwfan

Ich hatte nach dem Problem gesucht und in einem Beitrag, meine von Dir, gelesen, dass 2 Klammern gesetzt werden müssen wenn sich im set im Ausführungsteil Kommas befinden.
Aber durch Deine Nachfrage meine ich, dass ich falsch liege, oder?
Synology DS720+ mit Docker-Container und Haupt-FHEM, HM-LAN, Jalousienaktoren HmWired, Shelly-Devices; Raspi 3B+ mit piVCCU ohne FHEM-Instanz, CUL, JeeLink; Raspi 3B+ mit FHEM und HMUARTUSB,  Raspi 3B+ mit HMUARTGPIO, 1-wire, ebusd

Damian

Zitat von: bmwfan am 21 Januar 2018, 17:20:27
Ich hatte nach dem Problem gesucht und in einem Beitrag, meine von Dir, gelesen, dass 2 Klammern gesetzt werden müssen wenn sich im set im Ausführungsteil Kommas befinden.
Aber durch Deine Nachfrage meine ich, dass ich falsch liege, oder?

ja,

bei: set bla1,bla2 on

muss man doppelt klammern, da Komma kein DOIF-Trennzeichen ist

bei:  set bla1 on, set bla2 on

darf man nicht doppelt klammern, da Komma hier ein DOIF-Trennzeichen ist

bei: {fhem"set bla1,bla2"}

muss man nicht doppelt klammern, da Komma hier bereits durch geschweifte Klammern kein DOIF-Trennzeichen sein kann
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

bmwfan

Danke für die Erklärung.

DOIF ist ja sehr mächtig, aber auch wirklich kompliziert - zumindest für Nicht-Programmierer.
Synology DS720+ mit Docker-Container und Haupt-FHEM, HM-LAN, Jalousienaktoren HmWired, Shelly-Devices; Raspi 3B+ mit piVCCU ohne FHEM-Instanz, CUL, JeeLink; Raspi 3B+ mit FHEM und HMUARTUSB,  Raspi 3B+ mit HMUARTGPIO, 1-wire, ebusd

Damian

Zitat von: bmwfan am 21 Januar 2018, 18:56:58
Danke für die Erklärung.

DOIF ist ja sehr mächtig, aber auch wirklich kompliziert - zumindest für Nicht-Programmierer.

Vieles hat eine Vorgeschichte (hier: IF)

Da ein Semikolon in FHEM eine Moduldefinition zerhackt, musste ich mir eigenes Trennzeichen ausdenken - mit allen Konsequenzen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF