Zeitschaltuhr nach Wochentag steuern

Begonnen von Yannik, 31 Mai 2013, 22:04:14

Vorheriges Thema - Nächstes Thema

Yannik

Hallo,
mein Ziel ist es, an verschiedenen Wochentagen die Rollos um verschiedene Uhrzeiten, also am Wochenende z.B. erst um 8:00 Uhr, hochzufahren.
Aktuell benutze ich dafür folgendes Kommando, allerdings ohne die wochentagsabhängige Steuerung:


#########################################################################
## Rollladen soll fix um 07:10h jeden WochenTag hochfahren
#########################################################################
define Rollladen_hoch at *07:10 set AZ_Rollo up
attr Rollladen_hoch room Alle

Wie kann ich das ändern?

Danke für eure Hilfe,
Yannik

oniT

Hallo Yannik,

so ein ähnliches Thema gab es schon einmal. Eventuell hilft Dir dieser Beitrag weiter.

Gruß
TinoB
BBB - debian weezy - FHEM 5.7
HMLAN - HM-LC-Bl1-FM, HM-ES-PMSw1-PI, HM-LC-Sw1-FM, HM-TC-IT-WM-W-EU, HM-WDS40-TH-I, HM-Sen-Wa-Od, HM-Sec-RHS
Dimplex Wärmepumpe / Dimplex ZL 300 - Modbus TCP
SDM630M - Modbus TCP
SolarLog 200 / SMA SonnyBoy 1.5/2.5 - Modbus TCP

Puschel74

Hallo,

ich lös das bei mir, sicher etwas unschön, so:

*02:00:00 {
if ($we) {
    fhem("define OG_Zimmer_Rollo_hoch at {sunrise(1800,'08:00','09:00')} set OG_Zimmer_Rollo off");
    fhem("attr OG_Zimmer_Rollo_hoch room 32_Rollo");
    fhem("define OG_Zimmer_Rollo_runter at {sunset(-1800,'16:00','20:15')} set OG_Zimmer_Rollo on");
    fhem("attr OG_Zimmer_Rollo_runter room 32_Rollo");
  }
  if (!$we) {
    fhem("define OG_Zimmer_Rollo_hoch at {sunrise(1800,'07:00','09:00')} set OG_Zimmer_Rollo off");
    fhem("attr OG_Zimmer_Rollo_hoch room 32_Rollo");
    fhem("define OG_Zimmer_Rollo_runter at {sunset(-1800,'16:00','20:00')} set OG_Zimmer_Rollo on");
    fhem("attr OG_Zimmer_Rollo_runter room 32_Rollo");
  }
}


Täglich um 2 Uhr morgens wird geprüft ob Wochenende oder nicht und danach die defines für die Rollo angelegt.
Da ich täglich prüfe werden die defines nach der Ausführung wieder gelöscht und um 2 Uhr neu angelegt.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Yannik

Danke! Es ist unschön, aber es erfüllt seinen Zweck. :D
Wäre vielleicht mal ein Feature, welches in einer kommenden Version integriert werden könnte.

Puschel74

Hallo,

ZitatWäre vielleicht mal ein Feature, welches in einer kommenden Version integriert werden könnte.

Was meinst du damit?
Die Prüfung auf $we? Die gibt es bereits.

Wie man diese abfragt bleibt jedem selbst überlassen.

Mein Code sollte auch nur als Gedankenstoss fungieren da er sicher nicht das non-plus-ultra darstellt, uns (meine Frau, mich und auch die Nachbarn) aber zufriedenstellt.
Die Nachbarn weil wir in einem Reihenmittelhaus wohnen (wir aufeinander Rücksicht nehmen was ja nicht alltäglich ist heutzutage) und die Rollo so am Wochenende erst um 8 Uhr hoch fahren ;-)

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Yannik

Die Prüfung auf $we ist klar, meine dass man z.B. "define Rollladen_hoch at Mo *08:00 set AZ_Rollo up" nutzen könnte.
Hab deine Lösung bei mir jetzt auch einfach mal integriert, danke :D

Puschel74

Hallo,
dafür gibt es das:
*21:15:00 {
if ($wday == 6) {
fhem ("set Ladestation_GZ Laden; set Ladestation_Bar Laden");
}
}


Mit $wday kannst du jeden Tag der Woche prüfen.
So wird jeden Tag um 21:15 Uhr geprüft ob Samstag ($wday==6) ist und danach meine Ladestationen für die Telefon eingeschaltet.
Klar wäre für mich umgekehrt auch verständlicher aber wie sollte das funktionieren?
Am Samstag jeden Minute prüfen ob der Zeitpunkt erreicht ist?
So prüft fhem eben jeden Tag um 21:15 ob Samstag ist.
Mich stört das nicht ;-)

Grüße

Edith: Jetzt hab ich verstanden was du meinst.
Für den Ausführungszeitpunkt wäre das sicher genial - mal schauen ob ein Programmierer das aufnehmen kann.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Damian

... wie wäre es mit:


define Rollo_hoch Heating_Control AZ_Rollo 12345|7:00|up 67|8:00|up set @ %


Fährt den Rollo an Wochentagen um 7:00 Uhr und am Wochenende um 8:00 Uhr hoch.


Gruß

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

Dietmar63

Zitat von: Damian schrieb am Sa, 01 Juni 2013 10:26... wie wäre es mit:


define Rollo_hoch Heating_Control AZ_Rollo 12345|7:00|up 67|8:00|up set @ %


Fährt den Rollo an Wochentagen um 7:00 Uhr und am Wochenende um 8:00 Uhr hoch.

Es geht auch:

define Rollo_hoch Heating_Control AZ_Rollo Mo-Fr|7:00|up Sa,So|8:00|up set @ %

HC ist eigentlich eine Zeitschaltuhr mit Wochenprogramm. Wenn man das auszuführende Kommando mitgibt, kann man alles Mögliche damit schalten.

 Ich traue mich nur nicht HC umzubenennen. Dann erkennt man die eigentliche Funktion(Heizungssteuerung) nicht mehr.

Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Dietmar63

Hallo Damian,
was hälst du von einem solchen Device?


define zsu       ZSU_xt_wp  Zirkulation   So-Fr|08:20|on So-Fr|20:30|off   Sa-So|09:20|on Sa-So|20:30|off


Soll eine extended ZSU(Zeitschaltuhr) mit wp(Wochenprogramm) sein.
Funktioniert genau wie HC und ruft sogar den Code von HC in Form von Delegation auf.

 
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Damian

Zitat von: Dietmar63 schrieb am So, 02 Juni 2013 13:37Hallo Damian,
was hälst du von einem solchen Device?


define zsu       ZSU_xt_wp  Zirkulation   So-Fr|08:20|on So-Fr|20:30|off   Sa-So|09:20|on Sa-So|20:30|off


Soll eine extended ZSU(Zeitschaltuhr) mit wp(Wochenprogramm) sein.
Funktioniert genau wie HC und ruft sogar den Code von HC in Form von Delegation auf.

 


Wäre sicherlich eine Alternative für Leute, die aufgrund der Namensgebung nicht auf das HC-Modul kommen. Dann hätte man allerdings zwei ähnliche Module, die man pflegen muss. Ich unterstelle, dass Command dann set @ % ist.

Ich persönlich fände ein Modul Namens "zsu" besser, welches zu der obigen Syntax auch die Syntax von HC mit @ % für einen optionalen Command unterstützt. Dann könnte man im Prinzip das HC-Modul zunächst belassen und sich bei der Weiterentwicklung auf zsu konzentrieren. zsu wäre dann universeller und wenn jemand zsu für seine Heizungssteuerung benutzen möchte, bräuchte nur am Ende z. B. set @ desired-temp % anzugeben.

Ich benutze das HC-Modul ausschließlich in Kombination mit meinem THRESHOLD-Modul und da muss ich als Command eh set @ desired % übergeben, weil der Defaultwert von HC für Command set <device> (desired-temp|desiredTemerature) <temp> speziell für bestimmte Thermostate ist.

Gruß

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

Dietmar63

Der Code ist nicht doppel.

HC ist wie schon geschrieben eine ZSU, die zufällig zur Heizungskontrolle entwickelt wurde.
Ich habe die ZSU folgendermaßen, s. Kasten, definiert(einige Änderungen in HC) - kein doppelter Pflegeaufwand.

Eigentlich wäre es besser den Code nach ZSU zu verlagern, um dann das Modul HC darauf aufzubauen.

ZSU_xp_wp

package main;
use strict;
use warnings;
use POSIX;

#####################################
sub
ZSU_xt_wp_Initialize($)
{
  my ($hash) = @_;

# Consumer
  $hash->{DefFn}   = "ZSU_xt_wp_Define";
  $hash->{UndefFn} = "ZSU_xt_wp_Undef";
  $hash->{GetFn}   = "ZSU_xt_wp_Get";
  $hash->{UpdFn}   = "ZSU_xt_wp_Update";
  $hash->{AttrList}= "disable:0,1 loglevel:0,1,2,3,4,5 ".
                        $readingFnAttributes;
}

sub
ZSU_xt_wp_Get($@) {
   return Heating_Control_Get($@);
}


sub
ZSU_xt_wp_Define($$){
  my ($hash, $def) = @_;

  my $ret = Heating_Control_Define($hash, $def);
  $hash->{helper}{DESIRED_TEMP_READING} = "";
  return $ret;
}

sub
ZSU_xt_wp_Undef($$){
  my ($hash, $arg) = @_;
  return Heating_Control_Undef($hash, $arg);
}

sub
ZSU_xt_wp_Update($){
my ($hash) = @_;
  return Heating_Control_Update($hash);
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Damian

[quote title=Dietmar63 schrieb am So, 02 Juni 2013 19:50]Der Code ist nicht doppel. [/code]

Klar, das hast du wohl mit Delegation gemeint.

Zum Verständnis: Der Code kommt dann in eine separate PM Namens ZSU_XP_WP?

Wäre ZSU als Name nicht ausreichend?


ZitatEigentlich wäre es besser den Code nach ZSU zu verlagern, um dann das Modul HC darauf aufzubauen.

wäre für die Interna eleganter.

Gruß

Damian

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

Dietmar63

Genau - ich werde mir deine Tipps durch den Kopf gehen lassen.
Wichtig ist mir eine Verlagerung des Codes von HC auf ZSU ohne, dass die Nutzer von HC viel davon merken.

ZSU scheint mir als Name für die Zeitschaltuhr auch besser zu sein.
Die Anhängsel xp und wp bringen nicht viel - war eine Idee.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Damian

Zitat von: Dietmar63 schrieb am So, 02 Juni 2013 21:16Genau - ich werde mir deine Tipps durch den Kopf gehen lassen.
Wichtig ist mir eine Verlagerung des Codes von HC auf ZSU ohne, dass die Nutzer von HC viel davon merken.

ZSU scheint mir als Name für die Zeitschaltuhr auch besser zu sein.
Die Anhängsel xp und wp bringen nicht viel - war eine Idee.

Am Besten vorher noch mal Rudi fragen, ob er mit einem zusätzlichen, wenn auch kleinem, Modul leben kann.

Dann fällt mir noch auf, wenn wir schon bei Namensgebung sind (ist ja schließlich der Auslöser der ganzen Aktion), dass die Module normalerweise englische Bezeichnungen haben. Dann müsste man konsequenter Weise noch eine geeignete Abkürzung für ZeitSchaltUhr auf englisch finden;)

Gruß

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

Yannik


Puschel74

Hallo,

TSC für TimeSwitchClock?
Aber ich steh mit Englisch mehr auf Kriegsfuss also nicht ernst nehmen.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Yannik

Time Switch Clock ist aber ja ein eher selten genutzer Begriff, bei TMR kommt man schon eher drauf was das ist, wenn man die Abkürzung ließt.

Damian

"Wochenzeitschaltuhr englisch" in google getippt bringt:

week time control also wtc

Gruß

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

Yannik

Verbinde ich bald eher mit dem World Trade Center, als mit einer Zeitschaltuhr. :D

Puschel74

Hallo,

mein "Vorschlag" war auch nicht Ernst gemeint ;-)

Im Endeffekt müsst ihr euch einen Namen überlegen und Rudi diesen absegnen (genauso wie das neues Modul) - also bin ich mal wieder raus.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

rudolfkoenig

>  Am Besten vorher noch mal Rudi fragen, ob er mit einem zusätzlichen, wenn auch kleinem, Modul leben kann.

Ich kann, man sollte aber das Warum/Wieso in commandref.html dokumentieren. Ich habe auch mit einem _EINMALIGEN_ Umbenennen der HCS kein Problem: die Benutzer, die ein Update machen, sollten sowas verkraften, und die sowas nicht verkraften, sollten kein Update durchfuehren.
Ihr muesst nur hinkriegen, dass die verzeifelten ehemaligen HCS Benutzer leicht  rausfinden, was man tun muss, da kann ich auch Notfalls mit einem fhem.pl patch helfen, wo hinterlegt ist, dass HCS jetzt ZSU heisst (oder sonstwas).

Das neue Modul kann gerne TIMER oder ZSU oder sonstwie heissen (ZSU_XP_WP halte ich fuer uebertrieben), das duerft Ihr dann selbst entscheiden.

Otto

Hallo,

ich möchte das Heating_Control Modul auch für eine Rollosteuerung nutzen, wie kann man "sunset" als Zeit mit einbauen?

*02:00:00 {
if ($we) {
    fhem("define OG_Zimmer_Rollo_hoch at {sunrise(1800,'08:00','09:00')} set OG_Zimmer_Rollo off");
    fhem("attr OG_Zimmer_Rollo_hoch room 32_Rollo");
    fhem("define OG_Zimmer_Rollo_runter at {sunset(-1800,'16:00','20:15')} set OG_Zimmer_Rollo on");
    fhem("attr OG_Zimmer_Rollo_runter room 32_Rollo");
  }
  if (!$we) {
    fhem("define OG_Zimmer_Rollo_hoch at {sunrise(1800,'07:00','09:00')} set OG_Zimmer_Rollo off");
    fhem("attr OG_Zimmer_Rollo_hoch room 32_Rollo");
    fhem("define OG_Zimmer_Rollo_runter at {sunset(-1800,'16:00','20:00')} set OG_Zimmer_Rollo on");
    fhem("attr OG_Zimmer_Rollo_runter room 32_Rollo");
  }
}

Wie oben mit *02:00:00 würde fast gehen, aber ich habe noch einen dummy/notify für die Abschaltung der Autmomatic


define Rollladen_WE_runter at *{sunset(0,"17:00","22:45")} { if (Value("RolloAutomatik") eq "An" && ($we)) { fhem("set Rollo_WZ,Rollo_EZ down ;; set RolladenBuffer Kein_Kommando") } else { fhem("set RolladenBuffer runterfahren") }}
define Rollladen_runter at *{sunset(-900,"17:00","22:00")} { if (Value("RolloAutomatik") eq "An" && !($we)) { fhem("set Rollo_WZ,Rollo_EZ down ;; set RolladenBuffer Kein_Kommando") } else { fhem("set RolladenBuffer runterfahren") }}


Gruß Otto
Gruss Otto

.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.

docker - homematic

Dietmar63

#23
Ich werde versuchen Heating_Control und WeekdayTimer so zu erweitern, dass 'weekend' und sunrise() oder jede beliebige Funktion als time-Lieferant genutzt werden kann.

Wird allerdings ein wenig dauern.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

en-trust

Ich habe ähnliches versucht. Erhalte aber eine Fehlermeldung.

timer_01_c02
error: Wrong timespec So: either HH:MM:SS or {perlcode}
2018-03-02 19:26:32
timer_02_c02


([Modus_RL] eq "Auto" and [Tageslicht] eq "dunkel") (set WZ.Vitrinenleuchte_CUL.dummy on)
DOELSEIF ([Modus_RL] eq "Auto" and ([So-Do|22:20:00] or [Fr-Sa|00:20:00])) (set WZ.Vitrinenleuchte_CUL.dummy off)