Hauptmenü

DOIF übergabe an TelegramBot

Begonnen von satprofi, 06 Januar 2023, 15:30:03

Vorheriges Thema - Nächstes Thema

satprofi

Hallo.
Möchte die Ladung meines Autos überwachen, solange die Ladung stattfindet, alle vollen 10% eine Meldung erhalten.
Was muss ich aber einstellen, das eben nur jeder 10er Schritt und nicht jeder einzelne Ladeprozent ausgelöst wird?



Internals:
   CFGFN     
   DEF        ([cars_1_plugged_in] eq "true" and [cars_1_usable_battery_level] >90) (set Telegram message @xxxxx1 send Akku_777 90%)
DOELSEIF ([cars_1_plugged_in] eq "true" and [cars_1_usable_battery_level] >80) (set Telegram message @xxxxx1 send Akku_777 80%)
DOELSEIF ([cars_1_plugged_in] eq "true" and [cars_1_usable_battery_level] >70) (set Telegram message @xxxxx1 send Akku_777 70%)
DOELSEIF ([cars_1_plugged_in] eq "true" and [cars_1_usable_battery_level] >60) (set Telegram message @xxxxx1 send Akku_777 60%)
DOELSEIF ([cars_1_plugged_in] eq "true" and [cars_1_usable_battery_level] >50) (set Telegram message @xxxxx1 send Akku_777 50%)
DOELSEIF ([cars_1_plugged_in] eq "true" and [cars_1_usable_battery_level] >40) (set Telegram message @xxxxx1 send Akku_777 40%)
   DOIFDEV    ^global$|^cars_1_plugged_in$|^cars_1_usable_battery_level$
   FUUID      63b82cd5-f33f-6917-ddfd-38e6cc82dccc04b8
   MODEL      FHEM
   NAME       TeslaMsg
   NR         457944
   NTFY_ORDER 50-TeslaMsg
   STATE      initialized
   TYPE       DOIF
   VERSION    24643 2021-06-16 07:26:15
   READINGS:
     2023-01-06 15:24:49   cmd             0
     2023-01-06 15:24:49   mode            enabled
     2023-01-06 15:24:49   state           initialized
   Regex:
     accu:
     collect:
     cond:
       cars_1_plugged_in:
         0:
           &STATE     ^cars_1_plugged_in$
         1:
           &STATE     ^cars_1_plugged_in$
         2:
           &STATE     ^cars_1_plugged_in$
         3:
           &STATE     ^cars_1_plugged_in$
         4:
           &STATE     ^cars_1_plugged_in$
         5:
           &STATE     ^cars_1_plugged_in$
       cars_1_usable_battery_level:
         0:
           &STATE     ^cars_1_usable_battery_level$
         1:
           &STATE     ^cars_1_usable_battery_level$
         2:
           &STATE     ^cars_1_usable_battery_level$
         3:
           &STATE     ^cars_1_usable_battery_level$
         4:
           &STATE     ^cars_1_usable_battery_level$
         5:
           &STATE     ^cars_1_usable_battery_level$
   attr:
     cmdState:
   condition:
     0          ::InternalDoIf($hash,'cars_1_plugged_in','STATE') eq "true" and ::InternalDoIf($hash,'cars_1_usable_battery_level','STATE') >90
     1          ::InternalDoIf($hash,'cars_1_plugged_in','STATE') eq "true" and ::InternalDoIf($hash,'cars_1_usable_battery_level','STATE') >80
     2          ::InternalDoIf($hash,'cars_1_plugged_in','STATE') eq "true" and ::InternalDoIf($hash,'cars_1_usable_battery_level','STATE') >70
     3          ::InternalDoIf($hash,'cars_1_plugged_in','STATE') eq "true" and ::InternalDoIf($hash,'cars_1_usable_battery_level','STATE') >60
     4          ::InternalDoIf($hash,'cars_1_plugged_in','STATE') eq "true" and ::InternalDoIf($hash,'cars_1_usable_battery_level','STATE') >50
     5          ::InternalDoIf($hash,'cars_1_plugged_in','STATE') eq "true" and ::InternalDoIf($hash,'cars_1_usable_battery_level','STATE') >40
   do:
     0:
       0          set Telegram message @xxxxx1 send Akku_777 90%
     1:
       0          set Telegram message @xxxxx1 send Akku_777 80%
     2:
       0          set Telegram message @xxxxx1 send Akku_777 70%
     3:
       0          set Telegram message @xxxxx1 send Akku_777 60%
     4:
       0          set Telegram message @xxxxx1 send Akku_777 50%
     5:
       0          set Telegram message @xxxxx1 send Akku_777 40%
     6:
   helper:
     DEVFILTER  ^global$|^cars_1_plugged_in$|^cars_1_usable_battery_level$
     NOTIFYDEV  global|cars_1_plugged_in|cars_1_usable_battery_level
     globalinit 1
     last_timer 0
     sleeptimer -1
   internals:
     all         cars_1_plugged_in:STATE cars_1_usable_battery_level:STATE
   uiState:
   uiTable:
Attributes:
   group      Telegram
   room       DOIF

gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

Nobbynews

Mal nur so eine Idee:
Über ein userreading den Wert
int(cars_1_usable_battery_level/10)
ermitteln,  reading mit attr event-on-change vor ständigen Änderungen innerhalb des 10% Rasters schützen und dann da drauf ein notify.
Innerhalb des notify dann die message erzeugen und als Angabe das reading wieder durch Multiplikation mit 10 auf glatte Prozente umrechnen.
Dazu dann evtl. noch die untere Schwelle von 4, also 40%, abfangen.

satprofi

Zitat von: Nobbynews am 06 Januar 2023, 16:01:56
Mal nur so eine Idee:
Über ein userreading den Wert
int(cars_1_usable_battery_level/10)
ermitteln,  reading mit attr event-on-change vor ständigen Änderungen innerhalb des 10% Rasters schützen und dann da drauf ein notify.
Innerhalb des notify dann die message erzeugen und als Angabe das reading wieder durch Multiplikation mit 10 auf glatte Prozente umrechnen.
Dazu dann evtl. noch die untere Schwelle von 4, also 40%, abfangen.


uiii, das ist mir als ONU zu hoch ;-)
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram