ZitatA lot of modules make reference in their help section to different parts of the commandref.Personally, I'd lean toward keeping your modular redirection fix, even if it's not perfect yet. Pulling ~5 MB from a remote source just to guarantee correctness feels excessive—especially for users on slower connections or when working locally/offline.
Some of the modules (23) refer absolutely to http://fhem.de/commandref/escape road (the full version).
I tried to fix this in fhemdoc_modular.js (line 106), so that the link will redirect to the modular version, either on fhem.de or your local one, depending on where you started.
Apparently this fix is not perfect, and I'm not yet sure, what is better: an imperfect fix or loading 5MB of HTML from remote instead of 5k from local.
Opinions anyone?
Zitat von: Beta-User am 04 Mai 2026, 20:27:16Vielleicht hilft das angehängte diff iVm. mit der Umstellung auf einen timer-basierten Start statt via NotifyFn() aus https://svn.fhem.de/trac/changeset/30999/trunk/fhem/FHEM/89_FULLY.pm.Danke jetzt habe ich es verstanden.
Zitat von: heigu am 04 April 2026, 18:34:36danke für den Tipp, bei 5.2.5-bookworm kommt auch OK, jedoch bei 5.2.6 kommt ein Fehler:
Zitat von: mistepke am 08 April 2026, 09:23:53Ich sehe das im Image das DateTime.pm fehlt. War das beabsichtigt?
defmod SolarForecast SolarForecast
attr SolarForecast DbLogExclude .*
attr SolarForecast DbLogInclude Current_AutarkyRate:60,AllPVforecastsToEvent,LastHourPVforecast,LastHourPVreal
attr SolarForecast aiControl aiTrainStart=3 aiStorageDuration=18250 aiTreesPV=30 \
aiConActivate=1 \
aiConProfile=v1_common_active \
aiConHiddenLayers=40-20-10 \
aiConShuffleMode=1 \
aiConBitFailLimit=0.34 \
aiConAlpha=0.7
attr SolarForecast alias SolarForecast
attr SolarForecast consumer01 KlimaanlagePwr switchdev=Klimaanlage_Sw type=other power=300 pcurr=power:W etotal=energy:Wh on=on off=off mintime=SunPath:60:-60 notbefore=10:30 swoncond=AlarmZentrale:bitLagerkeller:0 swoffcond=AlarmZentrale:bitLagerkeller:1 icon=Ventilator_fett auto=Automatik interruptable=1 exconfc=1
attr SolarForecast consumer02 MQTT2_Luftentfeuchter type=other power=500 pcurr=switch_apower:W etotal=switch_aenergy_total:Wh on=on off=off icon=light_ceiling auto=Automatik exconfc=1
attr SolarForecast consumer03 MQTT2_Spelunkenentfeuchter type=other power=300 pcurr=switch_apower:W etotal=switch_aenergy_total:Wh on=on off=off mintime=SunPath:60:-60 notbefore=10:30 swoncond=AlarmZentrale:bitSpelunke:0 swoffcond=AlarmZentrale:bitSpelunke:1 icon=Ventilator_fett auto=Automatik interruptable=1 exconfc=1
attr SolarForecast consumer04 MQTT2_ShellyGeschirrspueler type=dishwasher power=1700 pcurr=switch_apower:W etotal=switch_aenergy_total:Wh on=on off=off icon=scene_dishwasher auto=Automatik exconfc=1
attr SolarForecast consumer05 Trockner_Pwr switchdev=Trockner type=dryer power=600 pcurr=power:W:3 etotal=energy:Wh on=on off=off mintime=60 icon=scene_clothes_dryer auto=Automatik exconfc=1
attr SolarForecast consumer06 Waschmaschine_Pwr switchdev=Waschmaschine type=washingmachine power=2100 pcurr=power:W:3 etotal=energy:Wh on=on off=off mintime=60 icon=scene_washing_machine auto=Automatik exconfc=1
attr SolarForecast consumer07 Stromverbrauch_Buero type=other power=300 pcurr=pcurr:W etotal=etotal:Wh icon=scene_office auto=Automatik
attr SolarForecast consumer08 Stromverbrauch_WoZi type=other power=500 pcurr=pcurr:W etotal=etotal:Wh icon=scene_livingroom auto=Automatik
attr SolarForecast consumer09 MQTT2_KlimaODU type=other power=1500 pcurr=params_switch_0_apower:W:15 etotal=params_switch_0_aenergy_total:Wh on=on off=off icon=frost auto=Automatik exconfc=1
attr SolarForecast consumer10 MQTT2_ShellyPlugKuechenKuehlschrank type=other power=65 pcurr=switch_apower:W etotal=params_switch_0_aenergy_total:Wh on=on off=off icon=kuehlschrank_big auto=Automatik
attr SolarForecast consumer11 shelly3em63g3_e4b063e1c96c type=noSchedule power=11000 auto=Automatik icon=scene_baking_oven pcurr=total_act_power:W:10 etotal=total_act:Wh
attr SolarForecast consumer12 MQTT2_ShellyPlugKellerKuehlschrank type=other power=150 pcurr=params_switch_0_apower:W:5 etotal=params_switch_0_aenergy_total:Wh on=on off=off icon=kuehlschrank_small auto=Automatik
attr SolarForecast consumer13 ShellyplugSchuppen type=charger power=100 pcurr=params_switch_0_apower:W etotal=params_switch_0_aenergy_total:Wh on=on off=off icon=building_carport_socket auto=Automatik exconfc=1
attr SolarForecast consumer14 MQTT2_PlugKaffeemaschine type=other power=2500 pcurr=params_switch_0_apower:W:6 etotal=params_switch_0_aenergy_total:Wh on=on off=off icon=scene_cockle_stove auto=Automatik
attr SolarForecast consumer15 WallboxLeistungssumme type=bev power=11040 pcurr=power:W:10 etotal=total:Wh on=on off=off icon=wallbox auto=Automatik exconfc=1 \
evid=evid:KiaNiro \
batCap=64800 \
power=11040\
currSoC=currSocKiaNiro\
targetSoC=targetSocKiaNiro
attr SolarForecast consumer16 HM_56E0D2_Sw_02 type=other power=40 on=on off=off auto=Automatik icon=debian mode=can mintime=SunPath:60:-60 interruptable=1
attr SolarForecast consumerControl dummyIcon=status_comfort@#ff8c00 showLegend=icon_bottom
attr SolarForecast ctrlDebug aiProcess
attr SolarForecast ctrlSpecialReadings runTimeCentralTask,todayBatInSum,todayBatOutSum,todayConsumption,todayGridConsumption,todayGridFeedIn
attr SolarForecast event-aggregator Current_AutarkyRate:150:linear:mean
attr SolarForecast event-min-interval .*:300
attr SolarForecast event-on-change-reading .*
attr SolarForecast flowGraphicControl animate=1 consumerdist=110 showconsumerremaintime=1 h2consumerdist=50 strokewidth=10 homenodedyncol=1 strokeconsumerdyncol=1 showGenerators=1
attr SolarForecast graphicBeam1Content pvReal
attr SolarForecast graphicBeam2Content pvForecast
attr SolarForecast graphicBeam3Content consumption
attr SolarForecast graphicBeam4Content consumptionForecast
attr SolarForecast graphicBeam5Content feedincome
attr SolarForecast graphicBeam6Content energycosts
attr SolarForecast graphicControl showDiff=1:bottom,2:bottom,3:bottom hourStyle=:00 beamWidth=24 beamHeightlevel=1:250,2:250,3:250 headerShowEnv=outsideTemp,presence,windSpeed
attr SolarForecast graphicHeaderOwnspec #Aktuell:\
Ü;berschuss:Current_Surplus\
Einspeisung:Current_GridFeedIn\
Netzbezug:Current_GridConsumption\
Autarkie-Rate:Current_AutarkyRate\
#Heute:\
Erzeugt:Today_PVreal\
Bezogen:special_todayGridConsumption\
Eingespeist:special_todayGridFeedIn\
Verbraucht:special_todayConsumption\
#Heute:\
Bisher ;vorhergesagt:Today_PVforecast_SoFar\
Insgesamt ;vorhergesagt:Today_PVforecast\
;\
;\
#Enphase-Batterie:\
Status:Akkustatus@Enphase\
SoC ;(%):StorageFullPercent@Enphase\
Heute ;geladen:special_todayBatInSum\
Heute ;entladen:special_todayBatOutSum\
#Zendure-Batterie:\
Status:Akkustatus@ha_tjsLMch1\
SoC ;(%):JO2AEP1P0501114_socLevel@ha_tjsLMch1
attr SolarForecast graphicHistoryHour 4
attr SolarForecast graphicSelect swap
attr SolarForecast graphicShowNight 1
attr SolarForecast plantControl consForecastInPlanning=1 \
batteryPreferredCharge=5 \
consForecastIdentWeekdays=1 \
cycleInterval=5 \
genPVdeviation=continuously:reverse \
feedinPowerLimit=99999 \
consForecastLastDays=5 \
conEnergyHourLimit=20000 \
reductionState=SolarForecast:userRdg_Regulated:1 \
showLink=1
attr SolarForecast room Garten->PV-Anlage
attr SolarForecast setupBatteryDev01 Enphase\
pin=StorageFeedIn:W\
pout=StorageConsumption:W\
pinmax=2568\
poutmax=2568\
intotal=StorageWhCharged:Wh\
outtotal=StorageWhDischarged:Wh\
charge=StorageFullPercent\
cap=7000\
show=1:bottom\
asynchron=1
attr SolarForecast setupBatteryDev02 ha_tjsLMch1\
pin=outputPackPower:W\
pout=packInputPower:W\
pinmax=2400\
poutmax=800\
intotal=StorageWhCharged_Wh:Wh\
outtotal=StorageWhDischarged_Wh:Wh\
charge=JO2AEP1P0501114_socLevel\
cap=2400\
show=1:bottom\
asynchron=1
attr SolarForecast setupEnvironment outsideTemp=HMWetterstation:temperature\
presence=JemandZuhause:state:true\
windSpeed=WindSpeed_mps:state
attr SolarForecast setupInverterDev01 Enphase\
strings=Osten,Westen\
etotal=whTodayProduction:Wh\
capacity=10000\
asynchron=1\
pvOut=wNowProduction:W\
pvIn=LeistungStringsGesamt:W\
icon=inverter
attr SolarForecast setupInverterDev02 ha_tjsLMch1 \
ac2dc=gridInputPower:W \
dc2ac=packInputPower:W \
capacity=800\
strings=none
attr SolarForecast setupInverterDev03 ha_tjsLMch1 \
strings=Carport1,Carport2,Carport3,Carport4\
pvOut=solarInputPower:W\
etotal=solarEnergy_Wh:Wh\
capacity=2400\
icon=inverter\
pvIn=solarInputPower:W\
feed=bat
attr SolarForecast setupInverterStrings Osten,Westen,Carport1,Carport2,Carport3,Carport4
attr SolarForecast setupMeterDev MQTT2_SmartMeterReader gcon=Bezug:W contotal=ENERGY_Total:kWh gfeedin=Einspeisung:W feedtotal=ENERGY_Supply:kWh asynchron=1 conprice=24.09:ct feedprice=8.04:ct
attr SolarForecast setupRadiationAPI dwd
attr SolarForecast setupStringAzimuth Osten=-127 Westen=53 Carport1=-31 Carport2=-31 Carport3=-31 Carport4=-31
attr SolarForecast setupStringDeclination Osten=38 Westen=38 Carport1=30 Carport2=30 Carport3=30 Carport4=30
attr SolarForecast setupStringPeak Osten=4 Westen=6.4 Carport1=0.515 Carport2=0.515 Carport3=0.515 Carport4=0.515
attr SolarForecast setupWeatherDev1 dwd
attr SolarForecast userReadings Current_Surplus_Num {my $val = ReadingsVal("SolarForecast", "Current_Surplus", "0 W");; return substr($val, 0, index($val, " "));;},\
Today_PVforecast_Num {my $val2 = ReadingsVal("SolarForecast", "Today_PVforecast", "0 Wh");; return substr($val2, 0, index($val2, " "));;},\
RestOfDayPVforecast_Num {my $val3 = ReadingsVal("SolarForecast", "RestOfDayPVforecast", "0 Wh");; return substr($val3, 0, index($val3, " "));;},\
Today_PVforecast_SoFar {return (ReadingsVal("SolarForecast", "Today_PVforecast_Num", "0")-ReadingsVal("SolarForecast", "RestOfDayPVforecast_Num", "0"))." Wh";;},\
Current_GridFeedIn_Num {my $val4 = ReadingsVal("SolarForecast", "Current_GridFeedIn", "0 W");; return substr($val4, 0, index($val4, " "));;}\
userRdg_Regulated {0}Zitat von: Prof. Dr. Peter Henning am 03 Mai 2026, 03:24:45Hier kann man schon weiterkommen: https://stackoverflow.com/questions/39045421/how-to-enable-cors-sever-javascript-whereDanke für den Link, leider blicke ich immer noch nicht durch:
Zitat von: dieterpau am 04 Mai 2026, 19:35:41Ich habe auch den Button "Copy for forum.fhem.de" betätigt, eine Liste habe ich nicht bekommen.