FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: satprofi am 06 Januar 2023, 15:30:03

Titel: DOIF übergabe an TelegramBot
Beitrag von: satprofi am 06 Januar 2023, 15:30:03
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

Titel: Antw:DOIF übergabe an TelegramBot
Beitrag 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.
Titel: Antw:DOIF übergabe an TelegramBot
Beitrag von: satprofi am 08 Januar 2023, 10:31:52
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 ;-)