[gelöst] DOIF führt set mit , nicht aus

Begonnen von kabanett, 27 August 2022, 14:46:14

Vorheriges Thema - Nächstes Thema

kabanett

Hallo zusammen,
ich habe ein recht simbles DOIF zum löschen meines Warmwassertimers, welches nicht ausgeführt wird.
([00:12|1]) (set Heizung Timer_Wasser_1MO --,--,--,--,--,--,--,--,)
DOELSEIF
([00:12|2]) (set Heizung Timer_Wasser_2DI --,--,--,--,--,--,--,--,)
DOELSEIF
([00:12|3]) (set Heizung Timer_Wasser_3MI --,--,--,--,--,--,--,--,)
DOELSEIF
([00:12|4]) (set Heizung Timer_Wasser_4DO --,--,--,--,--,--,--,--,)
DOELSEIF
([00:12|5]) (set Heizung Timer_Wasser_5FR --,--,--,--,--,--,--,--,)
DOELSEIF
([00:12|6]) (set Heizung Timer_Wasser_6SA --,--,--,--,--,--,--,--,)
DOELSEIF
([00:12|0]) (set Heizung Timer_Wasser_7SO --,--,--,--,--,--,--,--,)
DOELSE


Fehlermeldung im Log:
2022.08.27 14:07:16 2: Warmwasser_timer_cancel: --: Unknown command --, try help.
2022.08.27 14:07:16 2: Warmwasser_timer_cancel: --: Unknown command --, try help.
2022.08.27 14:07:16 2: Warmwasser_timer_cancel: --: Unknown command --, try help.
2022.08.27 14:07:16 2: Warmwasser_timer_cancel: --: Unknown command --, try help.
2022.08.27 14:07:16 2: Warmwasser_timer_cancel: --: Unknown command --, try help.
2022.08.27 14:07:16 2: Warmwasser_timer_cancel: --: Unknown command --, try help.
2022.08.27 14:07:16 2: Warmwasser_timer_cancel: --: Unknown command --, try help.


Gebe ich den Set- Befehl set Heizung Timer_Wasser_1MO --,--,--,--,--,--,--,--,in die Komandozeile ein, wird er ausgeführt.
Offensichtlich stört DOIF das --,

Kann mich vieleicht jemand auf den richtigen Weg führen?  ;)

Gruß
Hardware: Fhem auf Raspi3 / selbtsbau CUL 433 und 868 MHz / MAX Thermostate / IT-Dosen nur noch Weihnachten / diverse ESP Aktoren/Sensoren / X10 Fernbedienung / Shelly 1, 1L, 2, 2.5, Dimmer, RGB2 / LaCrosseGateway / Zigbee2531 / diverse Zigbee Aktoren/Sensoren

Otto123

Hi,
gerne https://fhem.de/commandref_modular_DE.html#DOIF_Angaben_im_Ausfuehrungsteil
ZitatFalls ein Komma nicht als Trennzeichen zwischen FHEM-Befehlen gelten soll, so muss der FHEM-Ausdruck zusätzlich in runde Klammern gesetzt werden: ...((set lamp1,lamp2 on),set switch on)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Per

Was ich nicht verstehe, warum haben die 7 Timer verschiedene Namen UND werden an ihrem Tag neu gesetzt? Das ist doch doppelt gemoppelt.

kabanett

@Otto123
Ich denke das hilft mir nicht. Der set- Befehl ist so wie von mir angeführt.
Möchte ich zB. das Montag zwischen 8 und 12 Uhr Warmwasser gemacht wird, wäre der set- Befehl:
set Heizung Timer_Wasser_1MO 08:00,12:00,--,--,--,--,--,--,

@Per
Ich möchte das an dem jeweiligen Tag der eventuell eingetragene Timer gelöscht wird. Es handelt sich um das Vcontrol300 Modul für Viessmann Heizungen. Bei diesen Heizungen kann man Warmwasser nicht separat abstellen. Es gibt die nur die Möglichkeiten Heizen mit Warmwasser, nur Warmwasser oder Abschaltbetrieb.
Also möchte man nur heizen, muss man die Warmwassertimer entfernen.
Ich könnte natürlich auch jeden Tag die Timer der ganzen Woche löschen, halte das aber für übertrieben. zB:
(([00:12]) (set Heizung Timer_Wasser_1MO --,--,--,--,--,--,--,--,) (set Heizung Timer_Wasser_2DI --,--,--,--,--,--,--,--,) (usw)
Hardware: Fhem auf Raspi3 / selbtsbau CUL 433 und 868 MHz / MAX Thermostate / IT-Dosen nur noch Weihnachten / diverse ESP Aktoren/Sensoren / X10 Fernbedienung / Shelly 1, 1L, 2, 2.5, Dimmer, RGB2 / LaCrosseGateway / Zigbee2531 / diverse Zigbee Aktoren/Sensoren

Damian

([00:12|1]) ((set Heizung Timer_Wasser_1MO --,--,--,--,--,--,--,--,))
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Per

Zitat von: kabanett am 27 August 2022, 20:28:50
@Otto123
Ich denke das hilft mir nicht.
Ich glaube, das hilft dir! Den kompletten set Befehl noch einmal zusätzlich einklammern

Zitat von: kabanett am 27 August 2022, 20:28:50
Ich möchte das an dem jeweiligen Tag der eventuell eingetragene Timer gelöscht wird.
Wäre es da nicht übersichtlicher, den Namen der Variablen zu "berechnen"? Dann brauchst du nur einen DOIF Zweig.

kabanett

Zitat von: Per am 27 August 2022, 23:04:29
Ich glaube, das hilft dir! Den kompletten set Befehl noch einmal zusätzlich einklammern
Ihr habt vollkommen recht damit!
Ich habe Ottos Zitat nicht so verstanden ;) Durch Damians Beispiel ist mir das klar geworden...
Vielen Dank euch allen!!!

Zitat von: Per am 27 August 2022, 23:04:29
Wäre es da nicht übersichtlicher, den Namen der Variablen zu "berechnen"? Dann brauchst du nur einen DOIF Zweig.
Das kann durchaus sein. Ich weiß leider nicht wie so etwas funktioniert. Falls du einen Hinweis für mich hast, würde ich das gerne probieren.
Hardware: Fhem auf Raspi3 / selbtsbau CUL 433 und 868 MHz / MAX Thermostate / IT-Dosen nur noch Weihnachten / diverse ESP Aktoren/Sensoren / X10 Fernbedienung / Shelly 1, 1L, 2, 2.5, Dimmer, RGB2 / LaCrosseGateway / Zigbee2531 / diverse Zigbee Aktoren/Sensoren

kabanett

Ich habe mal im Betreff das -- durch , ersetzt. Was ja das eigendliche Problem war.

@Per
Kannst du mir bitte einen Hinweis geben, wo ich etwas zu den Variablen finde!?
In der DOIF- Doku habe ich nur etwas im Bezug auf Bedingungen gefunden. Wie man das im Ausführungsteil machen kann, habe ich nicht gesehen.
Oder vieleicht auch übersehen...
Hardware: Fhem auf Raspi3 / selbtsbau CUL 433 und 868 MHz / MAX Thermostate / IT-Dosen nur noch Weihnachten / diverse ESP Aktoren/Sensoren / X10 Fernbedienung / Shelly 1, 1L, 2, 2.5, Dimmer, RGB2 / LaCrosseGateway / Zigbee2531 / diverse Zigbee Aktoren/Sensoren

Damian

Mit etwas Perlkenntnis:

defmod di_Heizung DOIF {  \
[00:12];;fhem_set("Heizung Timer_Wasser_".($wday?$wday:7).("SO","MO","DI","MI","DO","FR","SA")[$wday]." --,--,--,--,--,--,--,--,");;\
}
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Per

Ich habe mir mal die rudimentäre Doku für das Device angesehen und werde nicht draus schlau. Sind diese Variablennamen vorgegeben?

kabanett

Zitat von: Damian am 29 August 2022, 21:27:16
Mit etwas Perlkenntnis:
Nein, tut mir leid. Ich bin einer der Wenigen die sich an fhem versuchen ohne jegliche Vorkenntnis.

Von daher verstehe ich nicht wie hier die Zahlen 1-7 vor den Wochentagen erzeugt werden. Zumal im DOIF Sonntag 0 und nicht 7 ist...
defmod di_Heizung DOIF {  \
[00:12];;fhem_set("Heizung Timer_Wasser_".($wday?$wday:7).("SO","MO","DI","MI","DO","FR","SA")[$wday]." --,--,--,--,--,--,--,--,");;\
}

Ich teste das heute Nachmittag!


Zitat von: Per am 29 August 2022, 23:19:08
Ich habe mir mal die rudimentäre Doku für das Device angesehen und werde nicht draus schlau. Sind diese Variablennamen vorgegeben?

Zu den Modul gehört eine config- Datei in der die Adressen, Befehle etc. hinterlegt sind. Je nach Heizung und deren verbauter Steuerung sind diese unterschiedlich.
Man sucht sich die passenden Adressen zusammen, oder wie in meinem Fall, benutzt eine zur Verfügung gestellte Datei und baut diese aus.
Dort sind diese Variablen hinterlegt. Meinst du das?


Hardware: Fhem auf Raspi3 / selbtsbau CUL 433 und 868 MHz / MAX Thermostate / IT-Dosen nur noch Weihnachten / diverse ESP Aktoren/Sensoren / X10 Fernbedienung / Shelly 1, 1L, 2, 2.5, Dimmer, RGB2 / LaCrosseGateway / Zigbee2531 / diverse Zigbee Aktoren/Sensoren

Damian

Zitat von: kabanett am 30 August 2022, 09:47:07
Nein, tut mir leid. Ich bin einer der Wenigen die sich an fhem versuchen ohne jegliche Vorkenntnis.

Von daher verstehe ich nicht wie hier die Zahlen 1-7 vor den Wochentagen erzeugt werden. Zumal im DOIF Sonntag 0 und nicht 7 ist...
defmod di_Heizung DOIF {  \
[00:12];;fhem_set("Heizung Timer_Wasser_".($wday?$wday:7).("SO","MO","DI","MI","DO","FR","SA")[$wday]." --,--,--,--,--,--,--,--,");;\
}

Ich teste das heute Nachmittag!

Mach das mal,

Wochentag 0 ->7 wird über den ternären Operator abgebildet ($wday?$wday:7) :)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

kabanett

Da musste ich erstmal googlen.
Wenn man dann auch noch eine logische Erkärung findet, ist es recht einfach zu verstehen!

Ist der vor dem Fragezeichen stehende Ausdruck true, so wird der Teilausdruck vor dem Doppelpunkt, sonst derjenige nach dem Doppelpunkt ausgewertet.

Da wäre ich nie darauf gekommen... ;)
Hardware: Fhem auf Raspi3 / selbtsbau CUL 433 und 868 MHz / MAX Thermostate / IT-Dosen nur noch Weihnachten / diverse ESP Aktoren/Sensoren / X10 Fernbedienung / Shelly 1, 1L, 2, 2.5, Dimmer, RGB2 / LaCrosseGateway / Zigbee2531 / diverse Zigbee Aktoren/Sensoren

Per

Zitat von: kabanett am 30 August 2022, 09:47:07
Ich bin einer der Wenigen die sich an fhem versuchen ohne jegliche Vorkenntnis.
Ich habe auch erst durch Fhem mit Perl angefangen.

Zitat von: kabanett am 30 August 2022, 09:47:07Dort sind diese Variablen hinterlegt. Meinst du das?
Kann man ihnen dort auch "praktikable" Namen geben?

Damian

Zitat von: kabanett am 30 August 2022, 10:46:33
Da musste ich erstmal googlen.
Wenn man dann auch noch eine logische Erkärung findet, ist es recht einfach zu verstehen!

Ist der vor dem Fragezeichen stehende Ausdruck true, so wird der Teilausdruck vor dem Doppelpunkt, sonst derjenige nach dem Doppelpunkt ausgewertet.

Da wäre ich nie darauf gekommen... ;)

So etwas gibt es auch in anderen Programmiersprachen: Java, C, JS usw. - man muss es halt kennen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF