Code in bestimmten Zeitinterval ausführen (Post 91784)

Begonnen von franky08, 28 August 2013, 11:33:02

Vorheriges Thema - Nächstes Thema

franky08

Bezieht sich auf mein Posting 91784, falls doppelt bitte löschen!

Irgendwie bekomme ich die Verknüpfung zwischen der Temperatur und einer definierten Schaltzeit nicht hin.
Das Problem ist, dass egal wie die Temperatur am Sensor ist, vor einer bestimmten Zeit (hier 22.00 Uhr) nichts passieren soll. Ist es nach 22.00 und die Temperatur über 23° C soll der Aktor schalten. Der Code (ohne die Zeitfunktion) ist so:

define Ventilator at +*00:05:00 \
{if (ReadingsVal("THSensor","temperature",99)>23) \
{fhem("set Deckenventilator on")} else {fhem("set Deckenventilator off")}}
attr Ventilator room Schlafzimmer
#
#
Der Sensor wird alle 5 min abgefragt und soweit funktioniert auch alles, wie kann ich das ganze noch von einem Zeitinterval abhängig machen ? Das ganze soll nur zwischen 22:00 Uhr und 03:00 Uhr ausgeführt werden.

Danke franky08
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

martinp876

Hi Frank08,

zum einen kannst du immer um 22:00 die Entity "Ventolator" löschen und irgendwann morgens definieren. Also einen "oberliegenden timer" bauen.

Klar ist dir sicher, dass du alle 5 min ein Kommando an den Ventilator sendest, egal ob der schon im richtigen Zustand ist. Ich würden vor dem Schalten den Zustand berücksichtigen, spart traffik in der Luft.

Gruss Martin

franky08

Über define Ventilator at+*00:05:00 wird doch nur die Temperatur vom Sensor abgefragt, hab ich bis jetzt jedenfalls gedacht.
Wenn ich einen Timer vor den Code setze, wie müsste der ungefähr aussehen?


Danke franky08
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

martinp876

ZitatÜber define Ventilator at+*00:05:00 wird doch nur die Temperatur vom Sensor abgefragt,
????
fhem("set Deckenventilator on")} else {fhem("set Deckenventilator off")
ist doch ein schaltbefehl - alle 5 min,


nun, einen einfachen timer mit dem Define drinnen
define VentTmrOn at *07:00:00 {
define Ventilator at +*00:05:00 \
{if (ReadingsVal("THSensor","temperature",99)>23) \
{fhem("set Deckenventilator on")} else {fhem("set Deckenventilator off")}}\
}

define VentTmrOff at *22:00:00 {delete Ventilator}

franky08

 DANKE, DANKE, dass ist genau das was ich seit Stunden probiere. Ich komme immer mit Perl und den fhem Befehlen durcheinander.

Vielen Dank

franky08
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

franky08

Habe den ganzen Nachmittag mal getestet aber der Timer scheint nicht zu laufen.

define VentTmrOn at *18:00:00 {
define Ventilator at +*00:010:00 \
{if (ReadingsVal("THSensor","temperature",99)>23) \
{fhem("set Deckenventilator on")} else {fhem("set Deckenventilator off")}}\
}
define VentTmrOff at *18:10:00 {delete Ventilator}

Wenn ich den Timer lösche geht der Aktor sofort an. Fehlt da irgendwie eine Klammer oder nach dem define VentTmrOn ein \

Komme einfach nicht weiter
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

martinp876

define VentTmrOn at *18:00:00 {\
define Ventilator at +*00:010:00 \
{if (ReadingsVal("THSensor","temperature",99)>23) \
{fhem("set Deckenventilator on")} else {fhem("set Deckenventilator off")}}\
}
define VentTmrOff at *18:10:00 {delete Ventilator}


richtig - wie du sagst. das '\' bedeuted, dass das Komando  noch nicht fertig ist, es geht in der nächsten Zeile weiter.
wenn du es schon sagst, warum probierst du es eigentlich nicht? Warst doch so nah dran. sorry für den copy fehler

franky08

Hatte ich schon probiert aber wie gesagt, der Schalter wird nicht aktiv. Habe jetzt mal von 20.50 Uhr bis 20.55 den Timer gesetzt (zum testen) Hier der Log aus dem Event Monitor:

2013-08-28 20:48:51 CUL_HM THSensor Activity:: alive
2013-08-28 20:50:00 Global global DELETED VentTmrOn
2013-08-28 20:50:00 Global global DEFINED VentTmrOn
2013-08-28 20:50:20 CUL_HM THSensor temperature: 24.2
2013-08-28 20:50:20 CUL_HM THSensor humidity: 48
2013-08-28 20:50:20 CUL_HM THSensor T: 24.2 H: 48
2013-08-28 20:52:45 CUL_HM THSensor temperature: 24.2
2013-08-28 20:52:45 CUL_HM THSensor humidity: 48
2013-08-28 20:52:45 CUL_HM THSensor T: 24.2 H: 48
2013-08-28 20:54:56 CUL_HM THSensor temperature: 24.2
2013-08-28 20:54:56 CUL_HM THSensor humidity: 48
2013-08-28 20:54:56 CUL_HM THSensor T: 24.2 H: 48
2013-08-28 20:55:00 Global global DELETED VentTmrOff
2013-08-28 20:55:00 Global global DEFINED VentTmrOff

Und der reinkopierte Code:

define VentTmrOn at *20:50:00 {\
define Ventilator at +*00:02:00 \
{if (ReadingsVal("THSensor","temperature",99)>23) \
{fhem("set Deckenventilator on")} else {fhem("set Deckenventilator off")}}\
}
define VentTmrOff at *20:55:00 {delete Ventilator}

Was kann da noch falsch sein?
Der Deckenventilator erscheint weder mit on noch mit off im Event Monitor, dass kann doch nur bedeuten das der Code im Timer nicht ausgeführt wird.

Danke franky08
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

martinp876

define VentTmrOn at *20:50:00 {\
  {fhem ("define Ventilator at +*00:02:00 \
                {if (ReadingsVal(\"THSensor\",\"temperature\",99)>23) \
                      {fhem(\"set Deckenventilator on\")} \
             else {fhem(\"set Deckenventilator off\")}\
            }\
      ")\
}}
define VentTmrOff at *20:55:00 {fhem ("delete Ventilator")}


ok, war nicht korrekt.
wie stehts damit?

franky08

Ja, der Timer funktioniert wenn ich den Code um folgende Zeile ergänze:

define VentOFF at *10:15:00 set Deckenventilator off

sonst bleibt der Ventilator an und es wird nur der Timer gelöscht.

Vielen Dank nochmal, werde heute noch ein paar Testläufe mit verschiedenen Zeiten und Temperaturen machen.

Danke franky08


P.S. Läuft definitiv, danke Martin
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1