FHEM Forum

FHEM - Hausautomations-Systeme => Unterstützende Dienste => Kalendermodule => Thema gestartet von: zweiundzwanzig am 28 Oktober 2016, 22:53:24

Titel: Heizung mit Kalender schalten - vor Ende des Termins abschalten
Beitrag von: zweiundzwanzig am 28 Oktober 2016, 22:53:24
Hallo,
ich schalte Heizungen mit Hilfe eines Kalenders.
Ich benutze
onCreateEvent { $e->{alarm}= $e->{start}-main::AttrVal($e->{location}, "Vorheizzeit", 7200) }
um die Heizung einen in dem Attribut "Vorheizzeit" (für jeden Raum) gespeicherten Zeitwert vor dem Termin zu aktivieren damit der Raum zum Termin warm ist.
Im Moment schalte ich den Heizkörper ab wenn der Termin endet.
Damit die Heizung nur so lange wie nötig heizt und die Trägheit des Heizkörpers ausgenutzt wird würde ich gerne vor Ende des Termins abschalten. Das könnte man natürlich mit einem AT machen, das bei Alarm des Termins generiert wird.

Meint ihr, das ginge auch?
onCreateEvent {$e->{alarm}= $e->{start}-main::AttrVal($e->{location}, "Vorheizzeit", 7200) ;; $e->{end}= $e->{end}-3600) }
Titel: Antw:Heizung mit Kalender schalten - vor Ende des Termins abschalten
Beitrag von: zweiundzwanzig am 07 November 2016, 18:07:52
witzig, oben genanntes ging nicht, das aber schon:
onCreateEvent { $e->{end}= $e->{end}-3600; $e->{alarm}= $e->{start}-main::AttrVal($e->{location}, "Vorheizzeit", 7200)} (aus dem Eingabefeld des Webinterface kopiert)
Titel: Antw:Heizung mit Kalender schalten - vor Ende des Termins abschalten
Beitrag von: Flexcwheeler am 24 November 2019, 12:35:28
Kannst Du Deinen Code noch mal etwas erläutern. Ich habe es noch nicht verstanden und produziere in meine Installation folgenden Fehler:
Unknown command onCreateEvent, try help.
Unknown command $e->{alarm}=, try help.
Da die Idee super ist, würde ich mich über eine Rückmeldung freuen.
Titel: Antw:Heizung mit Kalender schalten - vor Ende des Termins abschalten
Beitrag von: xenos1984 am 24 November 2019, 16:20:03
@zweiundzwanzig:

Auf den ersten Blick fällt mir bei deinen beiden Beiträgen auf, dass du beim ersten zwei Semikola gesetzt hast, beim ersten nur eins (und natürlich ist die Reihenfolge der Befehle eine andere). Kann es sein, dass es an den Semikola gelegen hat? Wenn du mit dem Web-Interface arbeitest, braucht es - wenn ich mich nicht irre - nur ein Semikolon. Wo lag denn bei der ersten Variante der Fehler, bzw. was "ging nicht" / ist stattdessen passiert?
Titel: Antw:Heizung mit Kalender schalten - vor Ende des Termins abschalten
Beitrag von: Flexcwheeler am 01 Dezember 2019, 23:34:33
Ich habe e jetzt noch einmal über die manuelle Eingabe probiert. Liefert aber auch folgenden Fehler:
{ $e->{end}= $e->{end}-3600 must be a perl command in curly brackets but you supplied { $e->{end}= $e->{end}-3600.
Unknown command $e->{alarm}=, try help.

Ich verstehe die Perl-Kommandos nicht wirklich. Das wird aber an meinen mangelnden Perl-Kentnissen liegen. Wie steuere ich denn die Heizung an? Ist Vorheizzeit ein dummy, der dann zum Schalten genutzt werden kann? Oder läuft das über eine LightScene? Hier bräuchte ich noch Nachhilfe.
Titel: Antw:Heizung mit Kalender schalten - vor Ende des Termins abschalten
Beitrag von: amenomade am 01 Dezember 2019, 23:44:08
Was meinst Du genau mit "über die manuelle Eingabe"?
Titel: Antw:Heizung mit Kalender schalten - vor Ende des Termins abschalten
Beitrag von: Beta-User am 05 Dezember 2019, 15:22:07
Zitat von: Flexcwheeler am 01 Dezember 2019, 23:34:33
Ich verstehe [...]
Ich verstehe nicht recht, wie man erst einen Uralt-Thread aufwärmen kann und dann völlig zusammenhanglos "irgendwas" rumprobiert. Das ist besonders deswegen unschön, weil Calendar zwischenzeitlich einige updates durchlaufen hat, die den Code sowieso unbrauchbar machen könnten (tun sie vermutlich nicht, das soll hier nur erläuten, warum es keinen allzugroßen Sinn hat, Leichen zu fleddern...).

Um zu verhindern, dass der arme TE noch weiter mit Anfängerfragen behelligt wird:
- Das ganze steht in Zusammenhang mit https://fhem.de/commandref_DE.html#CalendarPlugIns
- Der Code macht daher isoliert keinen Sinn, man benötigt "$e", und das existiert nur während der Verarbeitung des Termins in calendar.
- main::AttrVal($e->{location}, "Vorheizzeit", 7200) bedeutet demnach: Such nach dem Attribut "Vorheizzeit" (vermutlich ein userAttr) am Device "$e->{location}" (=das zu suchende Device wird als Ort im Termin mitgegeben, also anders als in https://forum.fhem.de/index.php/topic,87895.msg803439.html#msg803439 vorgeschlagen, wo das Device in summary steht); gibt es das nicht, nimm "7200" als Wert)
Das Ergebnis ist dann ein (in FHEM) VERÄNDERTER KALENDEREINTRAG mit entsprechend veränderter Info im Event usw; die eigentliche Ereignisauswertung muß dann gesondert erfolgen.

Es macht aber mMn. keinen Sinn, das hier weiter zu vertiefen, solange die grundlegenden Mechanismen nicht klar sind.

Just my2ct.

Beta-User
Titel: Antw:Heizung mit Kalender schalten - vor Ende des Termins abschalten
Beitrag von: Flexcwheeler am 07 Dezember 2019, 16:29:52
okay, strenges Forum.

Meine Suche nach "Heizungschaltung VOR einem Kalenderereignisin FHEM" hat mich genau in diesen Thread geführt. Daher scheint er zumindest hilfreich zu sein.
Wie eingangs beschrieben, verstand ich den Code noch nicht. Nun etwas besser. In der Commandref habe ich die Möglichkeit mit Perl-Commands den Termin zu modifizieren gefunden, aber aufgrund mangelnder Perl Kentnisse eben auch noch nicht wirklich verstanden.
Mein Anliegen formuliere ich auch gerne noch mal in einem eigenen Thread, hier scheint eben die Grundidee schon formuliert.

Die manuelle Eingabe soll das CommandLine (wie heißt das denn in FHEM?) sein. Mann kann Attribute ja auch über den attr Button in der grafischen Oberfläche anlegen.

Zitat von: Beta-User am 05 Dezember 2019, 15:22:07
- Der Code macht daher isoliert keinen Sinn, man benötigt "$e", und das existiert nur während der Verarbeitung des Termins in calendar.
- main::AttrVal($e->{location}, "Vorheizzeit", 7200) bedeutet demnach: Such nach dem Attribut "Vorheizzeit" (vermutlich ein userAttr) am Device "$e->{location}" (=das zu suchende Device wird als Ort im Termin mitgegeben, also anders als in https://forum.fhem.de/index.php/topic,87895.msg803439.html#msg803439 vorgeschlagen, wo das Device in summary steht); gibt es das nicht, nimm "7200" als Wert)
Das Ergebnis ist dann ein (in FHEM) VERÄNDERTER KALENDEREINTRAG mit entsprechend veränderter Info im Event usw; die eigentliche Ereignisauswertung muß dann gesondert erfolgen.
Ein Kalender existiert natürlich. Mit Einträgen, zu denen dann geheizt werden soll. Zwei Stunden vor Beginn wäre gut, kann man später ja immer noch anpassen.
Ich versuche dann weiter, die Vorgehensweise zu verstehen und nachzuvollziehen. Bin aber auch mit Anfängerfragen weiterhin dankbar für einen Tipp, wie die Auswertung des Attributs umgesetzt wwerden kann.
Daneben vielen Dank für die Rückmeldungen!