Ideen für: Steckdose einschalten mit flexibler Wochentagsdefiniton

Begonnen von yersinia, 24 September 2023, 20:42:54

Vorheriges Thema - Nächstes Thema

yersinia

Hallo zusammen,
ich möchte eine Steckdose an definierten Wochentagen (Mo - Fr) ein- und wieder ausschalten. Die Wochentage können sich aber von Woche zu Woche ändern (zB "Mo, Di, Do" oder "Di, Mi, Fr" usw). Bisher hatte ich das mit einem DOIF genutzt und die Definition mit der Wochentagsdefinition angepasst, wie zB:
(([06:30:00|135])
    and ([?MQTT2_Steckdose:state] eq "off")
    and ([?myholiday:state] eq "none"))
    (set MQTT2_Steckdose on)
DOELSEIF (([18:31:00])
    and ([?MQTT2_DVES_Steckdose:state] eq "on"))
    (set MQTT2_Steckdose off)
Das war mir aber auf Dauer zu mühselig, dies immer wieder über die DEF zu ändern - insbesondere für die Einbindung in FTUI3 etwas unpraktikabel.

Nach etwas Suchen habe ich das DOIF Zeitgeber-Beispiel adaptiert und dies gefällt mir schon besser:
(([06:30:00])
    and ((([?$SELF:rl_1_Monday,"off"] eq "on") and ($wday == 1))
        or (([?$SELF:rl_2_Tuesday,"off"] eq "on") and ($wday == 2))
        or (([?$SELF:rl_3_Wednesday,"off"] eq "on") and ($wday == 3))
        or (([?$SELF:rl_4_Thursday,"off"] eq "on") and ($wday == 4))
        or (([?$SELF:rl_5_Friday,"off"] eq "on") and ($wday == 5)))
    and ([?MQTT2_Steckdose:state] eq "off")
    and ([?myholiday:state] eq "none"))
    (set MQTT2_Steckdose on)
DOELSEIF (([18:31:00])
    and ([?MQTT2_Steckdose:state] eq "on"))
    (set MQTT2_Steckdose off)
mit
attr meinDOIF readingList rl_1_Monday rl_2_Tuesday rl_3_Wednesday rl_4_Thursday rl_5_Friday
attr meinDOIF setList rl_1_Monday:on,off rl_2_Tuesday:on,off rl_3_Wednesday:on,off rl_4_Thursday:on,off rl_5_Friday:on,off
attr meinDOIF webCmd rl_1_Monday:rl_2_Tuesday:rl_3_Wednesday:rl_4_Thursday:rl_5_Friday
attr meinDOIF webCmdLabel Mo:Di:Mi:Do:Fr

Ich frage mich allerdings, ob es eine einfachere bzw andere Lösung gibt und wollte mal hier nach Input bzw anderen Sichtweisen fragen.
Ich denke, das DOIF könnte man auch kürzen, hab es aber nicht probiert - zB sowas wie (keine Ahnung ob es funktioniert; anstelle von on würden die readings entsprechend Wochentagsnummerierung erhalten):
([?"$SELF:^rl_.*$",99] == $wday)
Neben DOIF gibt es bestimmt andere Lösungen, wie zB mittels at oder myUtils Funktionen. Wie würdet ihr sowas handhaben/lösen?
Danke vorab.
viele Grüße, yersinia
----
FHEM 6.4 (SVN) on RPi 4B with RasPi OS Bookworm (perl 5.36.0) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

Der_Tom

moin,

nunja, du sagst es ja selbst - 100 wege führen zum ziel.

da ich viele entsprechende timer habe wollte ich es ebenfalls schnell und unkompliziert haben - in meinem Fall über mswitch gelöst, massgeblich ist hier wohl das entsprechende widget für die Wochentage ( wo auch immer du es einbaust )

gruss Thomas

yersinia

Zitat von: Der_Tom am 25 September 2023, 08:45:21in meinem Fall über mswitch gelöst, massgeblich ist hier wohl das entsprechende widget für die Wochentage ( wo auch immer du es einbaust )
Gibt es zum mswitch auch eine Einsteigerdoku? Wiki sagt, es sei veraltet, in der commandref steht nichts und die github ist sehr bedeckt.
viele Grüße, yersinia
----
FHEM 6.4 (SVN) on RPi 4B with RasPi OS Bookworm (perl 5.36.0) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

Der_Tom

nein , gibt es nicht .

die Wikiseiten sind auch nicht von mir , sondern wurden mal von einem User angelegt , der seit Jahren inaktiv ist .

Da es sich um ein -nunja- hier eher "ungeliebtes" Modul handelt , welches einen recht überschaubaren Nutzerkreis hat habe ich mich auch nicht weiter um Doku ausserhalb des Moduls bemüht.

Es hat integrierte Hilfebuttons , mithilfe derer die meissten Fragen beantwortet werden.

Weiterhin gibt es hier einen Thread im Forum den ich im Auge habe sowie eine Whatsappgruppe in der sich die meisten User zusammengetah haben , die das Modul nutzen.

Ich wollte aber auch gar nicht aud das Modul hinaus, sondern im Grunde nur das Widget in den Raum werfen , da es - glaube ich - eher unbekannt ist.

Gruss Thomas

Wolle02

#4
Leider ist MSwitch wirklich etwas unbekannt und wird stiefmütterlich behandelt. In meinen Augen völlig zu unrecht, was aber viellicht auch wirklich der fehlenden Doku geschuldet ist. Wenn man aber einfach mal mit
define test_ms mswitchein Device zum rumspielen anlegt und dann ganz unten auf "Help for MSwitch" klickt tauchen überall viele "?"-Buttons auf, die zu fast jeden Feld Hilfe anbieten. Damit kommt man dann ziemlich gut klar.
Ich persönlich finde das MSwitch-Modul mega.

Deine o.g. Anforderungen dürften damit recht einfach und auch komfortabel umsetzbar sein.

Edit:
Achso ja, leider ist MSwitch ja immer noch nicht regulärer Bestandteil von FHEM. Aber hier wird im ersten Beitrag die Installation beschrieben.

Prof. Dr. Peter Henning

Das Modul YAAHM ermöglicht flexible Tages- und Wochenpläne und kann auch mit unterschiedlichen Kalendern umgehen.

LG

pah

Damian

Zitat von: Der_Tom am 25 September 2023, 12:01:12nein , gibt es nicht .

die Wikiseiten sind auch nicht von mir , sondern wurden mal von einem User angelegt , der seit Jahren inaktiv ist .

Da es sich um ein -nunja- hier eher "ungeliebtes" Modul handelt , welches einen recht überschaubaren Nutzerkreis hat habe ich mich auch nicht weiter um Doku ausserhalb des Moduls bemüht.

Es hat integrierte Hilfebuttons , mithilfe derer die meissten Fragen beantwortet werden.

Weiterhin gibt es hier einen Thread im Forum den ich im Auge habe sowie eine Whatsappgruppe in der sich die meisten User zusammengetah haben , die das Modul nutzen.

Ich wollte aber auch gar nicht aud das Modul hinaus, sondern im Grunde nur das Widget in den Raum werfen , da es - glaube ich - eher unbekannt ist.

Gruss Thomas


Man muss sich ja nicht von einigen wenigen beirren lassen. Eine Doku und das Einchecken eines fertigen Moduls kann den Nutzerkreis nur vergrößern :)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

eisman

hi,

eine Idee mit dem GoogleCalender

im kalender

fhem devicename reading on
und 1std später
fhem devicename reading off

bei mir

fhem HEIZUNG winter on; (off)

defmod no.Switch.Actor notify GoogleTermine:start:.* {\
  my $reading = "$EVTPART0";; \
  my $uid     = "$EVTPART1";; \
  my $actor   = fhem("get GoogleTermine summary $uid");; \
  my @Dev     = (split(' ', $actor));;\
  if($Dev[0] eq "fhem") {\
    fhem("set $Dev[1] $Dev[2] $Dev[3];;");;\
  }\
}

ist so eine idee

ich schalte damit die Heizung in Sommer- und Winterbetrieb...

gruss
1x FHEM Debian, Homematic,ZigBee,FS20 / 1X Raspberry, ConBee / 7x ESP
1x FHEM Debian, Homematic,Z2M             / 1X Raspberry, ConBee / 6x ESP
1x FHEM Debian,MQTT2                             / 1X Raspberry, i2c,onewire,gpio
1x auf Windows 2012 Hyper-V-S

yersinia

Vielen Dank für die Rückmeldungen. mswitch werde ich mir mal in Ruhe ansehen, der Aufwand, diesen initial ins FHEM zu bekommen ist schon größer im Vergleich zum Rest. Zumindest auf der github Seite hätte ich einen Einsteigerleitfaden bzw Link auf den Thread erwartet. ;) Support über WA ist für mich(!) keine Option.

YAAHM schau ich mir ebenso an. Danke für den Hinweis.

Über (Google-)Kalender dies zu lösen finde ich dann, für den Anwendungsfall, zu komplex - dedizierte Kalendereinträge zu erstellen/modifizieren finde ich für den (meinen) Anwendungsfall übers Ziel hinausgeschossen. Aber vielen Dank für den Input. :)
viele Grüße, yersinia
----
FHEM 6.4 (SVN) on RPi 4B with RasPi OS Bookworm (perl 5.36.0) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

Prof. Dr. Peter Henning

Mit YAAHM wäre das wie folgt zu lösen:

1. Beliebig viele unterschiedliche Wochenprofile definieren - inklusive der durch Häkchen erfolgende einfache Festlegung, ob dieses Profile auch in den Modi "Party", "Abwesenheit", "Nicht-Stören", "Urlaub" und "Feiertag" ausgeführt werden soll.

2. In das Feld "Aktion", das einen beliebigen FHEM-Befehl enthalten kann, einfach eine Bedingung aufnehmen. Die könnte beispielsweise einen Dummy "Wochentyp" abfragen:
{fhem("set Steckdose an") if (Value("Wochentyp") == 3)}
3. Klick auf "Start Wochentimer"

Der Witz bei YAAHM ist, dass dies nicht im Modul selbst geregelt wird. Sondern dass entsprechende DOIF-Devices im Hintergrund angelegt werden.

LG

pah


betateilchen

Bei mir sind solche Dinge auch über Calendar Einträge gelöst.
Das hat sich über Jahre als die am einfachsten zu pflegende Variante herausgestellt.

Zitat von: yersinia am 27 September 2023, 09:16:34Über (Google-)Kalender dies zu lösen finde ich dann, für den Anwendungsfall, zu komplex - dedizierte Kalendereinträge zu erstellen/modifizieren finde ich für den (meinen) Anwendungsfall übers Ziel hinausgeschossen.

So komplex, wie Du das befürchtest, ist das eigentlich gar nicht.

Zitat von: eisman am 26 September 2023, 21:41:20hi,

eine Idee mit dem GoogleCalender

Nur als Hinweis: Deine Umsetzung mittels Calendar ist aber ziemlich altes Vorgehen. Das hat sich schon vor Jahren geändert und ist inzwischen um einiges einfacher umzusetzen.
Und zwei Einträge für on und off hat man noch nie gebraucht. Jeder Eintrag sollte ja ein Beginn und ein Ende haben, das man auswerten kann.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Prof. Dr. Peter Henning

Zitat von: betateilchen am 27 September 2023, 11:37:22Deine Umsetzung mittels Calendar ist aber ziemlich altes Vorgehen

Wir sind ja nun schon auch ältere Semester... ;D

LG

pah

eisman

Zitat von: betateilchen am 27 September 2023, 11:37:22Bei mir sind solche Dinge auch über Calendar Einträge gelöst.
Das hat sich über Jahre als die am einfachsten zu pflegende Variante herausgestellt.

Zitat von: yersinia am 27 September 2023, 09:16:34Über (Google-)Kalender dies zu lösen finde ich dann, für den Anwendungsfall, zu komplex - dedizierte Kalendereinträge zu erstellen/modifizieren finde ich für den (meinen) Anwendungsfall übers Ziel hinausgeschossen.

So komplex, wie Du das befürchtest, ist das eigentlich gar nicht.

Zitat von: eisman am 26 September 2023, 21:41:20hi,

eine Idee mit dem GoogleCalender

Nur als Hinweis: Deine Umsetzung mittels Calendar ist aber ziemlich altes Vorgehen. Das hat sich schon vor Jahren geändert und ist inzwischen um einiges einfacher umzusetzen.
Und zwei Einträge für on und off hat man noch nie gebraucht. Jeder Eintrag sollte ja ein Beginn und ein Ende haben, das man auswerten kann.



es war ja nur ein beispiel.....

und für die Heizung brauche ich zwei Termine, Anfang Mai und Ende Oktober,
und sonst ist es natürliche in bestimmten fällen einer....

sonst benötigt.

ein Kalender Eintrag
  "defmod GoogleAbfall Calendar ical url https://calendar....."
  "defmod CalAbfall CALVIEW GoogleAbfall 1"
und einen notify

ich finde es nicht aufwendig.

und er verrichtet seit 3 Jahren seinen dienst....

gruss




 
1x FHEM Debian, Homematic,ZigBee,FS20 / 1X Raspberry, ConBee / 7x ESP
1x FHEM Debian, Homematic,Z2M             / 1X Raspberry, ConBee / 6x ESP
1x FHEM Debian,MQTT2                             / 1X Raspberry, i2c,onewire,gpio
1x auf Windows 2012 Hyper-V-S