[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

kabanett

Zitat von: kabanett am 30 August 2022, 09:47:07
Ich teste das heute Nachmittag!

Funktioniert! Vielen Dank!

Zitat von: Per am 30 August 2022, 11:58:28
Ich habe auch erst durch Fhem mit Perl angefangen.
[OT] "jegliche" Bezieht sich bei mir auf alles was mit fhem zu tun hat. Es gibt hier viele die das auch behaupten, doch häufig kommt im Verlauf der Zeit raus, dass sie im Studium oder in der Lehre C+ oä. hatten. Das ist bei mir nicht der Fall. Ich bin hier häufig die verständnisslose Ehefrau des Programmierers aus dem Witz mit Bäcker, Brötchen, Milch  ;D

Mal als Beispiel...
Zitat von: Otto123 am 27 August 2022, 15:18:05
Falls 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)
Die erste Antwort war schon die richtige Lösung, hier im Beitrag. Diese wurde von mir ausgeschlossen, da ich nicht mehrere fhem- Befehle habe.
Unabhängig davon hätte meine Interpretation des Beispiels wahrscheinlich das ergeben:
([00:12|1]) (set Heizung Timer_Wasser_1MO (--,--,--,--,--,--,--,--,))  ;) ;D [/OT]


Zitat von: Per am 30 August 2022, 11:58:28
Kann man ihnen dort auch "praktikable" Namen geben?
Mhh, habe ich noch nicht probiert. Sollte möglich sein. Der Autor der Datei wollte die Readings sicher in einer logischen Reihenfolge darstellen.
Was wären denn praktikable Namen?
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

#16
Ich will jetzt nicht den Oberlehrer machen  ;) - aber
Zitat von: kabanett am 30 August 2022, 17:21:48
Diese wurde von mir ausgeschlossen, da ich nicht mehrere fhem- Befehle habe.
naja häufig wird einfach schnell drüber gelesen und dabei irgendwas in den Text hineininterpretiert. Aber da bist Du nicht der Einzige und mir geht das auch manchmal so.
In der Antwort stand doch genau das Gegenteil:
ZitatFalls ein Komma nicht als Trennzeichen zwischen FHEM-Befehlen gelten soll,
Bedeutet doch im Umkehrschluss: Wenn ein Befehl irgendwo ein Komma enthält ...
Und warum wird in dem Satz etwas interpretiert?
Zitatso muss der FHEM-Ausdruck zusätzlich in runde Klammern gesetzt werden
da steht nix von Teilen des Ausdruckes/Befehls

Das hat nix mit Programmieren zu tun :)  :D ;D
Schreibt man einen Text - kann er missverstanden werden  ::) versteh mich nicht falsch, ich versuche immer Beschreibungen verständlich zu formulieren - und verzweifle regelmäßig an dem Ergebnis der Interpretation durch den Leser.  :)
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

Damian

... und ich habe den Satz damals so formuliert und stehe auch heute noch dazu. Zumal in der Zeile davor in der Commandref beschrieben ist, dass ein Komma beim DOIF als ein Trennzeichen zwischen den FHEM-Befehlen genutzt wird.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Per

Zitat von: kabanett am 30 August 2022, 17:21:48
Was wären denn praktikable Namen?
Z.B.
XXX_0 ... XXX_6
Dann kann man den "Wochentag" direkt "addieren".

Damian

Zitat von: Per am 31 August 2022, 09:30:15
Z.B.
XXX_0 ... XXX_6
Dann kann man den "Wochentag" direkt "addieren".

Dann würde mein Vorschlag etwas einfacher ausfallen:

defmod di_Heizung DOIF {  \
[00:12];;fhem_set("Heizung Timer_Wasser_".$wday." --,--,--,--,--,--,--,--,");;\
}


Allerdings würde man nicht gelernt haben, was ein ternärer Operator ist  :D
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Per

Zitat von: Damian am 31 August 2022, 09:41:27
Dann würde mein Vorschlag etwas einfacher ausfallen:
DAS meinte ich mit "praktikablel"

Zitat von: Damian am 31 August 2022, 09:41:27
Allerdings würde man nicht gelernt haben, was ein ternärer Operator ist  :D
Dafür kommen noch genügend Gelegenheiten ;)

kabanett

Zitat von: Per am 31 August 2022, 09:30:15
Z.B.
XXX_0 ... XXX_6
Dann kann man den "Wochentag" direkt "addieren".
Ja, so in der Art hatte ich auch gedacht. Ob ich das wirklich mache, muss ich mir noch überlegen.
Zum einen gibt es noch mindestens ein weiteres Wochenprogramm und zum anderen habe ich ein tolles Stück Code sofort zugriffsbereit  :D

Nochmal zu meinen Striptease im OT- Bereich. Hier habe ich ausschließlich meine Fehler und meine fehlerhafte Interpretations und Denkweise dargestellt.
Ich dachte das bringt vieleicht ein wenig Nachsicht für mich und anderen unbeleckten Benutzern, die nicht ihr leben lang und alltäglich mit so etwas umgehen.
"Programmieren" war nur gewählt, weil es hier gerade passte. Wie schon mehrfach erwähnt bezieht sich das auf alles was mit fhem zu tun hat. Und das ist ein weites Feld. Wer möchte kann hier gerne nochmal nachtreten, für mich ist das eigentliche "Problem" mehr als gelöst.

Vielen Dank euch allen!

Ich selbst bin schon beim nächsten Projekt. Ich habe mir aus einen Fensterkontakt und einen Reedschalter einen Impulzähler für den Gaszähler gebaut und jetzt schaue ich mir Damians uiTable an... ;)
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 01 September 2022, 16:15:57
Ja, so in der Art hatte ich auch gedacht. Ob ich das wirklich mache, muss ich mir noch überlegen.
Zum einen gibt es noch mindestens ein weiteres Wochenprogramm und zum anderen habe ich ein tolles Stück Code sofort zugriffsbereit  :D

Nochmal zu meinen Striptease im OT- Bereich. Hier habe ich ausschließlich meine Fehler und meine fehlerhafte Interpretations und Denkweise dargestellt.
Ich dachte das bringt vieleicht ein wenig Nachsicht für mich und anderen unbeleckten Benutzern, die nicht ihr leben lang und alltäglich mit so etwas umgehen.
"Programmieren" war nur gewählt, weil es hier gerade passte. Wie schon mehrfach erwähnt bezieht sich das auf alles was mit fhem zu tun hat. Und das ist ein weites Feld. Wer möchte kann hier gerne nochmal nachtreten, für mich ist das eigentliche "Problem" mehr als gelöst.

Vielen Dank euch allen!

Ich selbst bin schon beim nächsten Projekt. Ich habe mir aus einen Fensterkontakt und einen Reedschalter einen Impulzähler für den Gaszähler gebaut und jetzt schaue ich mir Damians uiTable an... ;)
Da brauchst du dir keine Sorgen zu machen, ich behaupte mal, die meisten FHEM-Nutzer sind keine Programmierer und müssen es auch nicht sein. Natürlich hilft es ungemein, wenn man Programmierkenntnisse mitbringt, das wirst du merken, wenn du DOIF-FHEM mit DOIF-Perl vergleichst. Aber ich kann dich beruhigen, man wächst in alles hinein - das haben mit Sicherheit hier auch die alten Hasen getan. Und wenn es manchmal im Forum einen rauen Wind gibt - nicht gleich abschrecken lassen ;)

P.S. Den Thread zum Zähler ablesen https://forum.fhem.de/index.php/topic,97959.msg1204731.html#msg1204731 hast du bestimmt schon gelesen, da habe ich auch meine Erfahrungen und Lösungen vorgestellt. 
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Otto123

Zitat von: kabanett am 01 September 2022, 16:15:57
Nochmal zu meinen Striptease im OT- Bereich. Hier habe ich ausschließlich meine Fehler und meine fehlerhafte Interpretations und Denkweise dargestellt.
Ich dachte das bringt vieleicht ein wenig Nachsicht für mich und anderen unbeleckten Benutzern, die nicht ihr leben lang und alltäglich mit so etwas umgehen.
"Programmieren" war nur gewählt, weil es hier gerade passte. Wie schon mehrfach erwähnt bezieht sich das auf alles was mit fhem zu tun hat. Und das ist ein weites Feld. Wer möchte kann hier gerne nochmal nachtreten, für mich ist das eigentliche "Problem" mehr als gelöst.
Ich wollte nicht nachtreten - ich wollte nur um Nachsicht für die eigentlich vollständige Doku bitten :)
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