Zitat von: rs am 26 November 2025, 17:08:57Ich habe es auch mit routinplay probiert, das es jetzt leider nicht mehr gibt.wie kommst Du darauf ?
Zitat von: rs am 26 November 2025, 17:08:57Idee / Anregungen ?routine_play nehmen 😉
Leider haben wir immer noch diesen Fehler beim set kommando im echodevice:
2025.11.26 11:25:15 3: [ECHO_G001PJ0...] [echodevice_Parse] [speak] [254840] Too many requests
2025.11.26 11:25:15 3: [ECHO_G001PJ0...] [echodevice_Parse] [textcommand] [254841] Too many requests
2025.11.26 11:25:15 3: [ECHO_G001PJ0...] [echodevice_Parse] [speak] [254842] Too many requests
2025.11.26 11:25:15 3: [ECHO_G001PJ0...] [echodevice_Parse] [textcommand] [254843] Too many requests
name function max count total average maxDly avgDly TS Max call param Max call
WEB FW_Read 250 261 6357.28 24.36 0.00 0.00 25.11. 22:01:07 HASH(WEB)
tmr-FHEM::GardenaSmartBridge::getDevices HASH(0x5565322ff5a0) 121 357 7921.73 22.19 5.49 0.46 26.11. 07:30:58 HASH(Gardena_Bridge)
tmr-HttpUtils_TimeoutErr HASH_unnamed 28 1 28.89 28.89 0.59 0.59 26.11. 02:25:19 HASH(0x556536950580)
tmr-DOIF_TimerTrigger REF(0x55653515e140) 25 1 25.15 25.15 0.55 0.55 26.11. 08:11:56 REF(0x55653515e140)
tmr-FRITZBOX_Readout_Start FritzRepeaterOG.Readout 19 214 1945.90 9.09 13.77 0.41 25.11. 23:18:17 FritzRepeaterOG.Readout
ZuHause HOMEMODE_Set 18 11 32.30 2.94 0.00 0.00 26.11. 12:57:52 HASH(ZuHause); ZuHause; mode; day
vbus CODE(0x556534d8ca80) 18 1002311 142503.26 0.14 0.00 0.00 26.11. 04:06:46 HASH(vbus)
tmr-FHEM::GardenaSmartBridge::PollChild HASH(0x5565322ff5a0) 16 714 3456.44 4.84 22.38 0.48 26.11. 08:16:05 HASH(Gardena_Bridge)
tmr-Twilight_Midnight HASH(0x55652e7df838) 15 1 15.51 15.51 4.23 4.23 26.11. 00:00:01 HASH(OUT_Sonnenstand_Midnight)
tmr-HOMEMODE_GetUpdate HASH(0x556533603668) 15 12861 39474.48 3.07 87.76 0.48 26.11. 00:11:27 HASH(ZuHause)
tmr-FW_closeInactiveClients 0 13 1073 1055.76 0.98 7.15 0.40 26.11. 03:23:09 0
WEB_192.168.178.162_62744 FW_Read 12 1 12.35 12.35 0.00 0.00 26.11. 15:20:06 HASH(WEB_192.168.178.162_62744)
tmr-SYSMON_Update HASH(0x5565324bce10) 10 1073 7953.02 7.41 31.49 0.41 26.11. 00:06:21 HASH(Systemstatus)
tmr-Twilight_sunpos HASH(0x5565351883d8) 9 214 1045.80 4.89 9.28 0.53 26.11. 12:24:00 HASH(OUT_Sonnenstand_sunpos)
tmr-SunRiseShuttersAfterTimerFn HASH_unnamed 9 25 66.00 2.64 66.49 37.50 26.11. 08:10:24 HASH(0x556535a896f0)
myKNXGW CODE(0x55652e7da960) 8 30 97.56 3.25 0.00 0.00 26.11. 08:12:32 HASH(myKNXGW)
tmr-PROPLANTA_Start HASH(0x556534cff578) 8 18 130.73 7.26 0.54 0.30 26.11. 06:47:42 HASH(OUT_Wetter)
define Weihnachtsbeleuchtung_Steuerung DOIF ([LiSens_Garage_0Uhr:state] eq "active" and $month==11 and $mday>=20 and $mday <=26 and $wday==0) (set LiSens_Garage_0Uhr inactive;;setReading Weihnachtsbeleuchtung_Steuerung Status XMAS TIME)\
DOELSEIF([LiSens_Garage_0Uhr:state] eq "inactive" and $month==1 and $mday==6) (set LiSens_Garage_0Uhr active;;set room=Weihnachtsbeleuchtung on;;setreading Weihnachtsbeleuchtung_Steuerung Status normal - alle Shelly on)\
DOELSEIF([LiSens_Garage_0Uhr:state] eq "inactive" and [06:00-23:59] and [LW.I1.Lichtsensor_Garage:state] eq "on" ) (set room=Weihnachtsbeleuchtung on;;setreading Weihnachtsbeleuchtung_Steuerung Status ON: LS und Zeit und Xmas)\
DOELSEIF([LiSens_Garage_0Uhr:state] eq "inactive" and [00:00] or [LW.I1.Lichtsensor_Garage:state] eq "off") (set room=Weihnachtsbeleuchtung off;;setreading Weihnachtsbeleuchtung_Steuerung Status OFF: Hell und oder 0 Uhr Xmas)\
attr Weihnachtsbeleuchtung_Steuerung room Lichtsteuerung,Weihnachtsbeleuchtung
attr Weihnachtsbeleuchtung_Steuerung stateFormat Status
# DEF ([LiSens_Garage_0Uhr:state] eq "active" and $month==11 and $mday>=20 and $mday <=26 and $wday==0) (set LiSens_Garage_0Uhr inactive;setReading Weihnachtsbeleuchtung_Steuerung Status XMAS TIME)
#DOELSEIF([LiSens_Garage_0Uhr:state] eq "inactive" and $month==1 and $mday==6) (set LiSens_Garage_0Uhr active;set room=Weihnachtsbeleuchtung on;setreading Weihnachtsbeleuchtung_Steuerung Status normal - alle Shelly on)
#DOELSEIF([LiSens_Garage_0Uhr:state] eq "inactive" and [06:00-23:59] and [LW.I1.Lichtsensor_Garage:state] eq "on" ) (set room=Weihnachtsbeleuchtung on;setreading Weihnachtsbeleuchtung_Steuerung Status ON: LS und Zeit und Xmas)
#DOELSEIF([LiSens_Garage_0Uhr:state] eq "inactive" and [00:00] or [LW.I1.Lichtsensor_Garage:state] eq "off") (set room=Weihnachtsbeleuchtung off;setreading Weihnachtsbeleuchtung_Steuerung Status OFF: Hell und oder 0 Uhr Xmas)
#
# FUUID 6921ce7a-f33f-5bb8-2691-ab3a3b23330ceed7
# MODEL FHEM
# NAME Weihnachtsbeleuchtung_Steuerung
# NOTIFYDEV global,LiSens_Garage_0Uhr,LW.I1.Lichtsensor_Garage
# NR 180
# NTFY_ORDER 50-Weihnachtsbeleuchtung_Steuerung
# STATE OFF: Hell und oder 0 Uhr Xmas
# TYPE DOIF
# VERSION 30377 2025-10-12 09:46:59
# eventCount 308
# READINGS:
# 2025-11-26 14:12:12 Device LW.I1.Lichtsensor_Garage
# 2025-11-26 12:47:11 Status OFF: Hell und oder 0 Uhr Xmas
# 2025-11-26 12:47:11 cmd 4
# 2025-11-26 12:47:11 cmd_event Weihnachtsbeleuchtung_Steuerung
# 2025-11-26 12:47:11 cmd_nr 4
# 2025-11-26 14:12:12 e_LW.I1.Lichtsensor_Garage_state off
# 2025-11-26 12:47:06 mode enabled
# 2025-11-26 12:47:11 state cmd_4
# 2025-11-26 12:47:06 timer_01_c03 27.11.2025 06:00:00
# 2025-11-26 12:47:06 timer_02_c03 26.11.2025 23:59:00
# 2025-11-26 12:47:06 timer_03_c04 27.11.2025 00:00:00
# Regex:
# accu:
# bar:
# barAvg:
# collect:
# cond:
# LW.I1.Lichtsensor_Garage:
# 0:
# 1:
# 2:
# state ^LW.I1.Lichtsensor_Garage$:^state:
# 3:
# state ^LW.I1.Lichtsensor_Garage$:^state:
# LiSens_Garage_0Uhr:
# 0:
# state ^LiSens_Garage_0Uhr$:^state:
# 1:
# state ^LiSens_Garage_0Uhr$:^state:
# 2:
# state ^LiSens_Garage_0Uhr$:^state:
# 3:
# state ^LiSens_Garage_0Uhr$:^state:
# attr:
# cmdState:
# wait:
# waitdel:
# condition:
# 0 ::ReadingValDoIf($hash,'LiSens_Garage_0Uhr','state') eq "active" and $month==11 and $mday>=20 and $mday <=26 and $wday==0
# 1 ::ReadingValDoIf($hash,'LiSens_Garage_0Uhr','state') eq "inactive" and $month==1 and $mday==6
# 2 ::ReadingValDoIf($hash,'LiSens_Garage_0Uhr','state') eq "inactive" and ::DOIF_time($hash,0,1,$wday,$hms) and ::ReadingValDoIf($hash,'LW.I1.Lichtsensor_Garage','state') eq "on"
# 3 ::ReadingValDoIf($hash,'LiSens_Garage_0Uhr','state') eq "inactive" and ::DOIF_time_once($hash,2,$wday) or ::ReadingValDoIf($hash,'LW.I1.Lichtsensor_Garage','state') eq "off"
# days:
# devices:
# do:
# 0:
# 0 set LiSens_Garage_0Uhr inactive;setReading Weihnachtsbeleuchtung_Steuerung Status XMAS TIME
# 1:
# 0 set LiSens_Garage_0Uhr active;set room=Weihnachtsbeleuchtung on;setreading Weihnachtsbeleuchtung_Steuerung Status normal - alle Shelly on
# 2:
# 0 set room=Weihnachtsbeleuchtung on;setreading Weihnachtsbeleuchtung_Steuerung Status ON: LS und Zeit und Xmas
# 3:
# 0 set room=Weihnachtsbeleuchtung off;setreading Weihnachtsbeleuchtung_Steuerung Status OFF: Hell und oder 0 Uhr Xmas
# 4:
# helper:
# NOTIFYDEV global,LiSens_Garage_0Uhr,LW.I1.Lichtsensor_Garage
# event off
# globalinit 1
# last_timer 3
# sleeptimer -1
# timerdev LW.I1.Lichtsensor_Garage
# timerevent off
# triggerDev LW.I1.Lichtsensor_Garage
# timerevents:
# off
# timereventsState:
# state: off
# triggerEvents:
# off
# triggerEventsState:
# state: off
# internals:
# interval:
# 0 -1
# 1 0
# intervalfunc:
# localtime:
# 0 1764219600
# 1 1764197940
# 2 1764198000
# readings:
# all LiSens_Garage_0Uhr:state LW.I1.Lichtsensor_Garage:state
# realtime:
# 0 06:00:00
# 1 23:59:00
# 2 00:00:00
# time:
# 0 06:00:00
# 1 23:59:00
# 2 00:00:00
# timeCond:
# 0 2
# 1 2
# 2 3
# timer:
# 0 0
# 1 0
# 2 0
# timers:
# 2 0 1
# 3 2
# trigger:
# triggertime:
# 1764197940:
# localtime 1764197940
# hash:
# 1764198000:
# localtime 1764198000
# hash:
# 1764219600:
# localtime 1764219600
# hash:
# uiState:
# uiTable:
#
setstate Weihnachtsbeleuchtung_Steuerung OFF: Hell und oder 0 Uhr Xmas
setstate Weihnachtsbeleuchtung_Steuerung 2025-11-24 14:28:55 .eM off
setstate Weihnachtsbeleuchtung_Steuerung 2025-11-26 14:12:12 Device LW.I1.Lichtsensor_Garage
setstate Weihnachtsbeleuchtung_Steuerung 2025-11-26 12:47:11 Status OFF: Hell und oder 0 Uhr Xmas
setstate Weihnachtsbeleuchtung_Steuerung 2025-11-26 12:47:11 cmd 4
setstate Weihnachtsbeleuchtung_Steuerung 2025-11-26 12:47:11 cmd_event Weihnachtsbeleuchtung_Steuerung
setstate Weihnachtsbeleuchtung_Steuerung 2025-11-26 12:47:11 cmd_nr 4
setstate Weihnachtsbeleuchtung_Steuerung 2025-11-26 14:12:12 e_LW.I1.Lichtsensor_Garage_state off
setstate Weihnachtsbeleuchtung_Steuerung 2025-11-26 12:47:06 mode enabled
setstate Weihnachtsbeleuchtung_Steuerung 2025-11-26 12:47:11 state cmd_4
setstate Weihnachtsbeleuchtung_Steuerung 2025-11-26 12:47:06 timer_01_c03 27.11.2025 06:00:00
setstate Weihnachtsbeleuchtung_Steuerung 2025-11-26 12:47:06 timer_02_c03 26.11.2025 23:59:00
setstate Weihnachtsbeleuchtung_Steuerung 2025-11-26 12:47:06 timer_03_c04 27.11.2025 00:00:00
Zitat von: Max_Meyer am 26 November 2025, 08:43:41Hallo Heiko,Hallo Gerd,
habe zum o.g. Topic mal meine Ideen und Erfahrungen aus 5 Jahren WP-PV-Kopplung zusammengeschrieben. Ist ein langer Text geworden - daher hab ich hier das Word (auch als PDF) reingehangen - da ist das ganze Konzept (aus meiner Sicht übersichtlich gegliedert) beschrieben. Obwohl das relativ viel Text geworden ist bleibt es für SF übersichtlich - glaube ich wenigstens. Unbedingt notwendig ist der prognostizierte 24h Energiebedarf der WP. Der meiste Inhalt entstand aus der Beschreibung des Warum.
Bei Fragen bitte melden.
@all
Anmerkungen, Ergänzungen bzw. andere Ideen gerne beitragen
attr NTFY_netalerxdev devices aabbccddeeff,Handy1 aabbccddee00,Handy2define NTFY_netalerxdev notify netalertx:[a-fA-F0-9]{12}_mac_address.* {\
my ($evntmac) = ($EVENT =~ m/([a-fA-F0-9]{12})/);;\
##my ($presdev) = ($SELF =~ m/NTFY_(.*)/);;\
\
my $attrmac = AttrVal($SELF, "devices", "");;\
my @devices = split ' ', $attrmac ;;\
foreach my $device (@devices) {\
my ($devicename) = ($device =~ m/([a-fA-F0-9]{12})/);;\
if ($devicename eq $evntmac) {\
my ($presdev) = ($device =~ m/,(.*)/);;\
my $userattr;;\
$presdev = "PRES_" . $presdev;;\
\
my $is_present = ReadingsVal($NAME,"${devicename}_is_present", "");;\
my $last_connection = ReadingsVal($NAME,"${devicename}_last_connection", "");;\
my $last_ip = ReadingsVal($NAME,"${devicename}_last_ip", "");;\
my $device_address = ReadingsVal($NAME,"${devicename}_mac_address", "");;\
\
## 2025-11-20T14:05:52+01:00\
my ($lcyyyy, $lcMM, $lcdd, $lchh, $lcmm, $lcss) = ($last_connection =~ m/(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}).*/g);;\
\
\
my $presence;;\
if ($is_present eq "ON") {\
$presence = "present";;\
fhem("setreading ${presdev} last_present $presence $is_present $device_address");;\
} elsif ($is_present eq "OFF") {\
$presence = "absent";;\
fhem("setreading ${presdev} last_absent $presence $is_present $device_address");;\
} else {\
$presence = "???";;\
}\
\
if (!IsDevice($presdev,"dummy")) {\
fhem("define ${presdev} dummy");;\
}\
\
## Adding controled client to .associatedWith\
my $associatedWith = ReadingsVal("$SELF", ".associatedWith", "");;\
if (not ($associatedWith =~ m/$presdev/i)) {\
$associatedWith .= " $presdev";;\
fhem("setreading $SELF .associatedWith $associatedWith");;\
Log3($SELF, 3, "$SELF client $presdev added to .associatedWith for device $SELF");;\
}\
\
my $attrversion = AttrVal(${presdev}, "ctrl_v", "");;\
my $version = "0.032";;\
if ($attrversion ne $version) {\
Log3($SELF, 3, "$SELF version updated for device $presdev");;\
$userattr = AttrVal(${presdev}, "userattr", "");;\
if (not ($userattr =~ m/ctrl_v/i)) {\
$userattr .= " ctrl_v";;\
fhem("attr ${presdev} userattr $userattr");;\
Log3($SELF, 3, "$SELF ctrl_v added for device $presdev");;\
}\
\
fhem("attr ${presdev} ctrl_dev $SELF");;\
fhem("attr ${presdev} ctrl_v $version");;\
fhem("attr ${presdev} stateFormat {my \$presence = ReadingsVal(\$name,\"presence\",\"-\");;;; my \$lc = ReadingsVal(\$name,\"lc\",\"-\");;;; \$presence eq \"present\" ? \"🟡\" : \"🔴 \$lc\";;;; }");;\
fhem("attr ${presdev} room 3.2_Anwesenheit");;\
fhem("setreading ${presdev} .associatedWith $SELF");;\
}\
\
if (IsDevice($presdev,"dummy")) {\
fhem("setreading ${presdev} presence $presence");;\
fhem("set ${presdev} $presence");;\
fhem("setreading ${presdev} last_connection $last_connection");;\
fhem("setreading ${presdev} last_ip $last_ip");;\
fhem("setreading ${presdev} mac_address $device_address");;\
fhem("setreading ${presdev} lc $lcdd.$lcMM.$lcyyyy $lchh:$lcmm:$lcss");;\
}\
} ## mac matches\
} ## foreach devices\
\
}
attr NTFY_netalerxdev userattr devices
attr NTFY_netalerxdev verbose 3Zitat von: rabehd am 24 November 2025, 10:42:01Ich glaube nicht das dafür ein Balkendiagramm sinnvoll ist.