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
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.
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 ;-)