ZitatIn der 99_myUtils.pm habe ich eine neue Funktion eingetragen:Eine generische Variante ist in fhem.pl => makeReadingName() implementiert, leider ist es nicht ganz ideal in diesem Fall, da Leerzeichen durch _ ersetzt werden.
ZitatKennt jemand eine Übersicht der möglichen Forecast-Meldungen (xx_wwd)?Die komplette Liste ist FHEM/55_DWD_OPenData.pm zu sehen (https://svn.fhem.de/trac/browser/trunk/fhem/FHEM/55_DWD_OpenData.pm#L660), da XX_wwd in diesem Modul aus XX_ww berechnet wird.
ZitatOder, noch besser, hat jemand einen Tipp, wie ich über fehlgeschlagene Sendungen mit NTFY informiert werden kann?Ein notify mit dem readLog Attribut liest das FHEM-Log, und kann mit passenden Regexp reagieren.
2026-04-16 11:06:28 dailyDetails-peakPower 6.1
2026-04-16 11:06:28 dailyDetails-status Active
2026-04-15 23:59:00 dailyOverview-energyDay 21939.398
2026-04-15 23:59:00 dailyOverview-energyLifetime 91.3983
2026-04-15 23:59:00 dailyOverview-energyMonth 457.89194
2026-03-31 23:59:01 dailyOverview-energyMonthOnce 728.54475
2026-04-15 23:59:00 dailyOverview-energyYear 1655.5422
2025-12-31 23:59:00 dailyOverview-energyYearOnce 9142.393
2026-04-13 17:25:23 debugNumError1 7
2026-04-06 12:12:26 debugNumError3 6
2026-04-16 11:09:35 debugNumGoodResponses 23307
2026-03-04 16:54:12 debugNumJsonErrors 526
2026-04-16 11:09:35 debugNumRequests 23320
2026-04-16 11:09:35 overview-energyDay 8652.558
2026-04-16 11:09:35 overview-energyLifetime 91.4065
2026-04-16 11:09:35 overview-energyMonth 466.5445
2026-03-31 23:51:50 overview-energyMonthOnce 728.54475
2026-04-16 11:09:35 overview-energyYear 1664.1949
2025-12-31 23:50:03 overview-energyYearOnce 9142.393
2026-04-16 11:09:35 overview-power 3043
2026-04-16 11:09:35 state active
sub UmlauteErsetzen($) {
my ($Val) = @_;
$Val =~ s/Bewölkung/Bewoelkung/;
$Val =~ s/unverändert/unveraendert/;
return $Val
}und dann den Code im DOIF geändert:## 1
([6:00|8] or [8:00|7])
({fhem("set NTFY0 publish \@FHEM-Status Taegliche Statusmeldung
\nGarage hinten:
\nTemperatur: ".ReadingsVal("Aussen.Temp","temperature","").
"\nLuftfeuchtigkeit: ".ReadingsVal("Aussen.Temp","humidity","")." %
\nHeizung: ".ReadingsVal("Buderus","OutdoorTemp","")."
\nVorne: ".ReadingsVal("MQTT2_Aussen.Temperatur.vorne","temperature","")."
\nWettervorhersage heute: ".UmlauteErsetzen(ReadingsVal("DWD","fc0_3_wwd",""))."
\nTag/Nacht: ".ReadingsVal("DWD","fc0_Tx","")." / ".ReadingsVal("DWD","fc0_Tn","")."
\nWettervorhersage morgen: ".UmlauteErsetzen(ReadingsVal("DWD","fc1_2_wwd",""))."
\nTag/Nacht: ".ReadingsVal("DWD","fc1_Tx","")." / ".ReadingsVal("DWD","fc1_Tn","")."
\nBatterie PV: ".ReadingsVal("SolarEdgeAPI","status-storage_level","")." %"
)
})On=mode,valueOn=/^(?!off$).*/,valueOff=off,cmdOn=mode+auto,cmdOff=mode+off CurrentTemperature=temperature TargetTemperature=target,cmd=target,minValue=16,maxValue=30
mode:off,cool,heat,fan_only,dry,auto esp_klima_gaeste/climate/panasonic_ac/mode/command $EVTPART1
nanoex:ON,OFF esp_klima_gaeste/switch/panasonic_ac_nanoex_switch/command $EVTPART1
swingMode:auto,up,middle,down,down_max,swing esp_klima_gaeste/climate/panasonic_ac/swing_mode/command $EVTPART1
fan:A,1,2,3,4,5 esp_klima_gaeste/climate/panasonic_ac/fan_mode/command $EVTPART1
v_swing:auto,up,up_center,center,down_center,down esp_klima_gaeste/select/panasonic_ac_vertical_swing_mode/command $EVTPART1
h_swing:auto,left,right,left_center,right_center,center esp_klima_gaeste/select/panasonic_ac_horizontal_swing_mode/command $EVTPART1
target:selectnumbers,16,0.5,30,1,lin esp_klima_gaeste/climate/panasonic_ac/target_temperature/command $EVTPART1
preset:Normal,Quiet,Powerful esp_klima_gaeste/climate/panasonic_ac/preset/command $EVTPART1
fan
1
2026-04-16 10:26:20
h_swing
center
2026-04-16 02:46:16
mild_dry
OFF
2026-03-31 10:14:24
mode
off
2026-04-16 10:26:20
nanoex
ON
2026-04-16 02:46:16
power
8
2026-04-16 02:46:16
preset
Normal
2026-04-16 10:26:20
state
off
2026-04-16 10:26:20
status
online
2026-04-16 02:46:16
swingMode
off
2026-04-16 10:26:20
target
23.0
2026-04-16 10:26:20
temperature
21.0
2026-04-16 10:28:10Zitat von: schwatter am 15 April 2026, 19:10:35ok, es ist ganz einfach wenn die richtige Repo benutzt wirdDanke zurück für die bereinigte Fassung der Anleitung!Danke für den Link.
Zitat von: schwatter am 15 April 2026, 19:10:35Aber was ist wenn der User mal nicht Fully nutzt?Na ja, es gibt für mich geanklich zwei völlig unterschiedliche Wege, die nicht wirklich was miteinander zu tun haben:
Zitat von: schwatter am 15 April 2026, 19:10:35@ahlermi hatte mir seinem systemPrompt geschickt.Vermutlich sollte ich ihn mal per pm anpingen. Nach meinem Eindruck hat das ganze Potential, und es wäre schade, wenn man den Aufwand treibt, das Rad an manchen Stellen neu zu erfinden...
.Zitat von: rudolfkoenig am 15 April 2026, 22:38:06Hab's jetzt über setreading-Anweisungen in f18.js so ausgeknobelt:Zitatif(typeof fully !== 'undefined' && typeof fully.getDeviceId !== 'undefined')Ich wuerde es gerne "positiv" ausdruecken: was liefert denn in der JS Console typeof(fully) bzw. typeof(fully.getDeviceId) zurueck?
Wenn keine JS Console verfuegbar ist, dann kann man es auch mit FW_okDialog(typeof(fully)) versuchen.
if(typeof fully === 'object' && typeof fully.getDeviceId === 'function')(Das Problem v.a. in fully scheint zu sein, dass man nie genau sagen kann, welche Fassung von einem script jetzt wirklich geladen ist...