Hi Zusammen,
ich habe bei meinen Reeds der Fenster ein Warn Item, welches true wird, wenn ein Fenster 10 min geöffnet ist.
Darauf lauscht eine Logik, welche mir dann per Telegram ein Nachricht sendet, dass das Fenster XY 10 min auf ist.
Nun passiert es aber immer mal wieder, dass trotz der Meldung ein Fenster "vergessen" wird zu schließen.
Was möchte ich erreichen?
Ich möchte nach den 10 min eine wiederkehrende Warnung ausgeben im 5min Takt, quasi lernen die Fenster zu schließen durch "Penetration"
(Noch cooler wärs natrülich, wenn die Warnung mit der Dauer öfters kommt. Quasi erste nach 10min zweite 5min später dann 4,3,2,1,1,1,1 oder so ähnlich)
Wo ist mein Problem?
Mir fehlt gerade irgendwie der Ansatzpunkt wie ich dies umsetzen kann.
Anbei mal meine Item Struktur:
Die Logik dazu welche als watch_item '*.warn' hat
Irgendwie bräucht ich ein Item, welches nach 10 minuten gesetzt wird und alle 5 Minuten eine Logik lostritt?!
ich habe bei meinen Reeds der Fenster ein Warn Item, welches true wird, wenn ein Fenster 10 min geöffnet ist.
Darauf lauscht eine Logik, welche mir dann per Telegram ein Nachricht sendet, dass das Fenster XY 10 min auf ist.
Nun passiert es aber immer mal wieder, dass trotz der Meldung ein Fenster "vergessen" wird zu schließen.
Was möchte ich erreichen?
Ich möchte nach den 10 min eine wiederkehrende Warnung ausgeben im 5min Takt, quasi lernen die Fenster zu schließen durch "Penetration"

(Noch cooler wärs natrülich, wenn die Warnung mit der Dauer öfters kommt. Quasi erste nach 10min zweite 5min später dann 4,3,2,1,1,1,1 oder so ähnlich)
Wo ist mein Problem?
Mir fehlt gerade irgendwie der Ansatzpunkt wie ich dies umsetzen kann.
Anbei mal meine Item Struktur:
Code:
Fenster: Gaeste_WC: status_v: type: bool knx_dpt: 1 knx_cache: 4/1/1 visu_acl: rw status_g: type: bool knx_dpt: 1 knx_cache: 4/1/2 visu_acl: rw zu: type: bool enforce_updates: yes eval: True if sh...status_v() == 1 and sh...status_g() == 1 else False eval_trigger: - ..status_v - ..status_g gekippt: type: bool enforce_updates: yes eval: True if sh...status_v() == 0 and sh...status_g() == 1 else False eval_trigger: - ..status_v - ..status_g offen: type: bool enforce_updates: yes eval: True if sh...status_v() == 0 and sh...status_g() == 0 else False eval_trigger: - ..status_v - ..status_g state: type: num visu_acl: r autotimer: 10m = 2 eval: int(value) if int(value) < 2 or sh...state() == 1 else sh...state() eval_trigger: - ..offen warn: type: bool visu_acl: r eval: value == 2 eval_trigger: - ..state
Code:
#!/usr/bin/env python3 # fensterwarnung.py source_item = trigger['source'] message = '{0}'.format(source_item) message_array = message.split(".") message = 'Fensterwarnung! Fenster {0} laenger als 10 min offen. Bitte schliessen'.format(message_array[1]) if trigger['value'] == True: sh.telegram._msg_broadcast(message)
Kommentar