$hash->{AttrList} = "interval targetdir username TTSFun TTSDev MsgrType MsgrFun MsgrRecList MailFun MailRecList Wav2MP3Fun $readingFnAttributes";
my $next = gettimeofday() + ($hash->{INTERVAL} || 60);
geändert in: my $next = gettimeofday() + AttrVal($name, 'interval', 60);
Das Schreiben in den hash kann damit entfallen. $hash->{INTERVAL} = AttrVal($name, 'interval', 60);
rm: das Entfernen von '/opt/fhem/www/audio/fbtam1_msg1.mp3' ist nicht möglich: Datei oder Verzeichnis nicht gefunden
Im Quellcode findet sich folgender Kommentar: #-- change into MP3 if function is defined, otherwise delete existing file
Sollte nicht eher die WAV-Datei gelöscht werden, wenn erfolgreich in MP3 konvertiert wurde? readingsSingleUpdate($hash,"tam_msgurl",$target2,1);
}else{
system('rm '.$target2);
}
geändert in: readingsSingleUpdate($hash,"tam_msgurl",$target2,1);
system('rm '.$target);
}
2026.01.02 15:08:43 3: FHEMWEB WEB CSRF error: ne csrf_120122450752236 for client WEB_192.168.178.43_37442 / command set FritzBox_7590_TAM downloadMsg 1. For details see the csrfToken FHEMWEB attribute.
Im Javascript fbtam.js wird zwar der csrfToken geholt, aber nicht in der url verarbeitet. Mit folgender Änderung von let url = "/fhem?XHR=1&cmd=set%20" + device + "%20" + action + "%20" + index;
in let url = "/fhem?XHR=1&cmd=set%20" + device + "%20" + action + "%20" + index + "&fwcsrf=" + csrfToken;
funktioniert das jetzt.Zitat von: MasterRay am 02 Januar 2026, 18:00:07Das "holiday"-Modul kann da auch (Reading: tomorrow) ...
define zigbee_Fernbedienung_1 MQTT2_DEVICE zigbee_Fernbedienung_1
attr zigbee_Fernbedienung_1 readingList zigbee2mqtt/Fernbedienung_1:.* { json2nameValue($EVENT) }
attr zigbee_Fernbedienung_1 room Rolladensteuerung
# CFGFN
# CID zigbee_Fernbedienung_1
# DEF zigbee_Fernbedienung_1
# FUUID 6957f3b7-f33f-4a16-1ece-c74deb0f5c403fab
# IODev MQTT2_FHEM_Server
# LASTInputDev MQTT2_FHEM_Server
# MQTT2_FHEM_Server_CONN MQTT2_FHEM_Server_127.0.0.1_42098
# MQTT2_FHEM_Server_MSGCNT 103
# MQTT2_FHEM_Server_TIME 2026-01-02 18:37:04
# MSGCNT 103
# NAME zigbee_Fernbedienung_1
# NR 127
# STATE ???
# TYPE MQTT2_DEVICE
# eventCount 104
# READINGS:
# 2026-01-02 17:35:03 IODev MQTT2_FHEM_Server
# 2026-01-02 18:12:10 action off_2
# 2026-01-02 18:12:10 action_group 53330
# 2026-01-02 17:35:03 associatedWith zigbee2mqtt
# 2026-01-02 18:37:04 battery 200
# 2026-01-02 18:37:04 linkquality 109
#
setstate zigbee_Fernbedienung_1 2026-01-02 17:35:03 IODev MQTT2_FHEM_Server
setstate zigbee_Fernbedienung_1 2026-01-02 18:12:10 action off_2
setstate zigbee_Fernbedienung_1 2026-01-02 18:12:10 action_group 53330
setstate zigbee_Fernbedienung_1 2026-01-02 17:35:03 associatedWith zigbee2mqtt
setstate zigbee_Fernbedienung_1 2026-01-02 18:37:04 battery 200
setstate zigbee_Fernbedienung_1 2026-01-02 18:37:04 linkquality 109
set ... reset aiData delValue=con>=5000 (Wert deinem Haushalt anpassen)Informationen zum neuronalen Netz der Verbrauchsvorhersage
letztes KI-Training: 02.01.2026 18:59:55 / Laufzeit in Sekunden: 8731
KI Abfragestatus: ok
letzte KI-Ergebnis Generierungsdauer: 59.05 ms
=== Modellparameter ===
Normierungsgrenzen: PV=13080 W, Hausverbrauch: Min=0 W / Max=6467.5 W
Trainingsdaten: 7936 Datensätze (Training=6348, Validierung=1588)
Architektur: Inputs=34, Hidden Layers=50-25, Outputs=1
Hyperparameter: Learning Rate=0.005, Momentum=0.5, BitFail-Limit=0.35
Aktivierungen: Hidden=SIGMOID, Steilheit=0.9, Output=LINEAR
Zufallsgenerator: Mode=2, Periode=10
=== Trainingsmetriken ===
bestes Modell bei Epoche: 30 (von max. 15000)
Training MSE: 0.002640
Validation MSE: 0.001756
Validation MSE Average: 0.002335
Validation MSE Standard Deviation: 0.000146
Validation Bit_Fail: 1
Model Bias: 72 Wh
Model Slope: 0.9
Trainingsbewertung: Retrain
=== Fehlermaße der Prognosen ===
MAE: 158.76 Wh
MedAE: 86.91 Wh
RMSE: 271.05 Wh
RMSE relative: 65 %
RMSE Rating: very bad
MAPE: 25.49 %
MdAPE: 19.83 %
R²: 0.84
=== Drift-Kennzahlen ===
Drift Score: -
Drift RMSE relative: -
Drift Bias: -
Drift Slope: -
Drift Bewertung: -
Erläuterung der Kennzahlen
Train MSE / Validation MSE → wie gut das Netz trainiert und generalisiert. Daumenregel:
MSE < 0.01 → sehr gut
MSE 0.01–0.05 → gut
MSE > 0.1 → schwach
Interpretation Verhältnis Train MSE zu Validation MSE:
Validation ≈ Train → gute Generalisierung
Validation deutlich größer → Überfitting
Validation kleiner → Validierungsdaten sind einfacher oder Split begünstigt
Validation Bit_Fail → Anzahl der Ausreißer
MAE (Mean Absolute Error) → mittlere absolute Abweichung in Wh. Richtwerte bei typischem Verbrauch 500–1500 Wh:
< 100 Wh → sehr gut
100–300 Wh → gut
> 300 Wh → schwach
MedAE (Median Absolute Error) → Median der absoluten Fehler in Wh (toleriert einzelne Ausreißer besser)
< 100 Wh → sehr gut
100–200 Wh → gut
200–300 Wh → mittelmäßig
> 300 Wh → schwach
RMSE relative (Root Mean Squared Error) → mittlere quadratische Abweichung relativ zum Medianverbrauch in %
Richtwerte:
< 5% → sehr gut, das Modell trifft fast perfekt
5–10% → gut, das Modell ist zuverlässig
10–20% → akzeptabel, das Modell ist brauchbar
> 20% → schwach, das Modell hat starke Ausreißer
> 35% → katastrophal, das Modell ist unbrauchbar
MAPE (Mean Absolute Percentage Error) → relative Abweichung in %
Richtwerte:
< 10 % → sehr gut - Modell liegt fast immer sehr nah an den echten Werten
10–20 % → gut - Prognosen sind solide, kleine Abweichungen sind normal
20–30 % → mittelmäßig / akzeptabel - Modell ist brauchbar, aber nicht präzise – für grobe Trends ok
> 30 % → schwach - Modell verfehlt die Werte deutlich, oft durch Ausreißer oder fehlende Features
⚠️ Vorsicht: bei kleinen Werten (<200 Wh) kann MAPE stark verzerren → MdAPE heranziehen
MdAPE (Median Absolute Percentage Error) → Median der prozentualen Fehler in % (robuster gegenüber kleinen Werten)
Richtwerte:
< 10 % → sehr gut
10–20 % → gut
20–30 % → mittelmäßig
> 30 % → schwach
R² (Bestimmtheitsmaß) → Maß für die Erklärungskraft des Modells. Je näher R² an 1 liegt, desto besser.
R² = 1.0 → perfekte Vorhersage, alle Punkte liegen exakt auf der Regressionslinie
R² > 0.8 → sehr gut - Modell erfasst den Großteil der Streuung → sehr zuverlässige Prognosen
R² = 0.6 – 0.8 → gut - Modell erklärt einen soliden Teil der Varianz → brauchbar für viele Anwendungen
R² = 0.5–0.6 → mäßig / grenzwertig - Modell liegt knapp über ,,zufällig" → Muster erkannt, Prognosen nur eingeschränkt nützlich
R² < 0.5 → schwach - Modell erklärt weniger als die Hälfte der Varianz → deutlicher Verbesserungsbedarf
R² = 0.0 → Modell erklärt gar nichts, es ist nicht besser als der Mittelwert der Daten
R² < 0.0 → Modell ist schlechter als einfach immer den Mittelwert vorherzusagen
⚠️ R² ist sehr empfindlich gegenüber Ausreißern und Varianz in den Daten.