Hauptmenü

Neueste Beiträge

#41
Sprachsteuerung / Aw: echodevice: Bluetooth Gerä...
Letzter Beitrag von FlatTV - 17 Januar 2026, 19:52:59
Soll denn da nun die MAC Adresse rein oder die UUID?

Edit:
Egal, geht beides nicht.
Amazon sendet jedenfalls die UUID und friendlyName
#42
Solaranlagen / Aw: 76_SolarForecast - Informa...
Letzter Beitrag von 300P - 17 Januar 2026, 19:24:33
Hallo Heiko,

ich habe mal den Programmcode entsprechend der Vorschläge KI etwas angepasst und mit ein paar Veränderungen im Profil ein große Verbesserung bei mir mit WP/PV erzielt.
Eigentlich würde ich jetzt erst einmal so damit arbeiten / laufen lassen und sehen was kommt....
Nur den Bias möchte ich gern noch etwas "anfassen" (siehe ganz unten)


Hier meine Codeanpassung die ich derzeitig nutze:

 
=>>>> hier nur die Infos angepasst

......ca. Zeile 6744
  my $head  = '<b><u>Informationen zum neuronalen Netz der Verbrauchsvorhersage</b></u>'."\n\n";
 
  my $model = '<b>=== Modellparameter ===</b>'."\n\n";
  $model   .= "<b>Normierungsgrenzen:</b> PV=$pvpeak Wh, Hausverbrauch: Min=$tgtmin Wh / Max=$tgtmax Wh"."\n";
  $model   .= (encode("utf8", "<b>Trainingsdaten:</b> $dsnum Datensätze (Training=$trdnum, Validierung=$tednum)"))."\n";
  $model   .= "<b>Architektur:</b> Inputs=$inpnum, Hidden Layers=$hidlay, Outputs=$outnum"."\n";
  $model   .= "<b>Hyperparameter:</b> Learning Rate=$lrnrte, Momentum=$lrnmom, BitFail-Limit=0.25"."\n";
  ## $model   .= "<b>Hyperparameter:</b> Learning Rate=$lrnrte, Momentum=$lrnmom, BitFail-Limit=0.35"."\n";
##-300P BitFail-Limit geändert von 0.35 auf 0.25
  $model   .= "<b>Aktivierungen:</b> Hidden=$conhaf, Steilheit=$hidste, Output=$conoaf"."\n";
  $model   .= "<b>Trainingsalgorithmus:</b> $talgo, Registry Version=$regv"."\n";
  $model   .= "<b>Zufallsgenerator:</b> Mode=$shmode, Periode=$shperi"."\n";
 
  my $keyfig = '<b>=== Trainingsmetriken ===</b>'."\n\n";
  $keyfig   .= "<b>bestes Modell bei Epoche:</b> $bstmod (von max. 3000)"."\n";
  ## $keyfig   .= "<b>bestes Modell bei Epoche:</b> $bstmod (von max. 15000)"."\n";
##-300P Anzahl Epochen max von 15000 auf 3000 reduziert.  (Empfehlung KI)
  $keyfig   .= "<b>Training MSE:</b> $tramse"."\n";
  $keyfig   .= "<b>Validation MSE:</b> $valmse"."\n";
  $keyfig   .= "<b>Validation MSE Average:</b> $valavg"."\n";
  $keyfig   .= "<b>Validation MSE Standard Deviation:</b> $valstd"."\n";
  $keyfig   .= "<b>Validation Bit_Fail:</b> $bitfai"."\n";
  $keyfig   .= "<b>Model Bias:</b> $bias Wh"."\n";
  $keyfig   .= "<b>Model Slope:</b> $slope"."\n";
  $keyfig   .= "<b>Trainingsbewertung:</b> $ampel"."\n";
....... 

Anpassung der AI-Konstanten (ab ca. Zeile 460 im Code)
.............ca. Zeile 400
  AINUMTREES     => 10,                                                             # Anzahl der Entscheidungsbäume im Ensemble
  AITRBLTO       => 7200,                                                           # KI DecTree Training BlockingCall Timeout
  AIASPEAKSFAC   => 1.1,                                                            # Sicherheitsaufschlag auf installiertes PV Peak
  AINUMEPOCHS    => 3000,                                                          # AI::FANN max. Anzahl Trainigs-Epochen
  ## AINUMEPOCHS    => 15000,                                                          # AI::FANN max. Anzahl Trainigs-Epochen
##-300P bei WP/PV ->>> war 15000 -> auf 3000 reduziert.  (Empfehlung KI)
  AIIMPPATIENCE  => 1000,                                                           # AI::FANN Training - Schwelle Anzahl Epochen ohne Verbesserung für Early Stopping                                                                          
  AINNTRBLTO     => 86400,                                                          # Training neuronales Netz BlockingCall Timeout
  AINUMMININPUTS => 2000,                                                           # Mindestanzahl valider Datensätze für Training AI::FANN
  AIBCTHHLD      => 0.2,                                                            # Schwelle der KI Trainigszeit ab der BlockingCall benutzt wird
  AITRSTARTDEF   => 2,                                                              # default Stunde f. Start AI-Training
  AISTDUDEF      => 1825,                                                           # default Haltezeit KI Raw Daten (Tage)
  AIACCUPLIM     => 150,                                                            # obere Abweichungsgrenze (%) AI 'Accurate' von API Prognose
  AIACCLOWLIM    => 50,                                                             # untere Abweichungsgrenze (%) AI 'Accurate' von API Prognose
  AIACCTRNMIN    => 3500,                                                           # Mindestanzahl KI Regeln für Verwendung "KI Accurate"


Codeanpassung bei "feste Parameter"
..........so ca. Zeile 23200
  my $num_epoch                 = AINUMEPOCHS;                                   # max. Anzahl Epochen
  my $num_epoch_between_statmsg = 0;                                             # Anzahl der Epochen zwischen Statusmeldungen
  $num_epoch_between_statmsg    = 100 if($debug =~ /aiProcess/xs);
  my $bit_fail_limit            = 0.25;                                          # Bit-Fail Limit, default=0.25
  ## my $bit_fail_limit            = 0.35;                                          # Bit-Fail Limit, default=0.35
##-300P Bit-Fail Limit war 0.35 wurde auf 0.25 reduziert (Empfehlung KI)
  my $best_val_mse              = 1e9;
  my $best_val_mae              = 1e9;
  my $best_weighted_rmse_proxy  = 1e9;
  my $best_val_medae            = 1e9;
  my $best_train_mse            = 1e9;
  my $best_train_epoch          = 1e9;
  my $best_bit_fail             = 1e9;
  my $training_portion          = 0.8;
  my $window                    = 50;                                            # Anzahl der letzten Epochen für Stabilitätscheck
  my $snapshot                  = $neuralnet.'best_model_'.$fanntyp.'_'.$name;  
 
  my @hiddlays                  = map {$_} (split '-', $hidden_layers);          # Hidden Neuronen Layer Array
  my $num_hidddenlays           = scalar (@hiddlays);




Ergebnis des allerletzten Trainings:


letztes KI-Training: 17.01.2026 17:47:13 / Laufzeit in Sekunden: 1918
KI Abfragestatus: ok
letzte KI-Ergebnis Generierungsdauer: 59.32 ms
Verbrauchernummer Wärmepumpe: 08

=== Modellparameter ===

Normierungsgrenzen: PV=16071 Wh, Hausverbrauch: Min=0 Wh / Max=7598 Wh
Trainingsdaten: 7124 Datensätze (Training=5699, Validierung=1425)
Architektur: Inputs=94, Hidden Layers=64-32, Outputs=1
Hyperparameter: Learning Rate=0.005, Momentum=0.6, BitFail-Limit=0.25
Aktivierungen: Hidden=ELLIOT_SYMMETRIC, Steilheit=1.0, Output=LINEAR
Trainingsalgorithmus: INCREMENTAL, Registry Version=v1_heatpump_active_pv
Zufallsgenerator: Mode=1, Periode=20

=== Trainingsmetriken ===

bestes Modell bei Epoche: 223 (von max. 3000)
Training MSE: 0.003572
Validation MSE: 0.006362
Validation MSE Average: 0.015686
Validation MSE Standard Deviation: 0.000853
Validation Bit_Fail: 3
Model Bias: 802 Wh
Model Slope: 0.6
Trainingsbewertung: Retrain

=== Fehlermaße der Prognosen ===

MAE: 479.56 Wh
MedAE: 388.82 Wh
RMSE: 587.70 Wh
RMSE relative: 25 %
RMSE Rating: good
MAPE: 22.10 %
MdAPE: 19.30 %
R²: 0.49

KI Beurteilung :


1️⃣ Kurzfazit (auf den Punkt)
👉 Bestes Modell bisher
👉 R² = 0.49 → fast die 0.5-Marke
👉 Fehler durchgehend gesunken
👉 Training bleibt stabil trotz schärferem BitFail
Das Modell ist jetzt klar produktionsfähig.
2️⃣ Vergleich: vorheriger Lauf → aktueller Lauf
Kennzahl    vorher    jetzt    Einordnung
Validation MSE    0.00732    0.00636    ✅ klar besser
Validation StdDev    0.00045    0.00085    ⚠️ etwas mehr Streuung
BitFail    0    3    ⚠️ grenzwertig
Bias    681 Wh    802 Wh    ⚠️ leicht schlechter
Slope    0.6    0.6    ➖ stabil
MAE    513 Wh    480 Wh    🔥
RMSE    638 Wh    588 Wh    🔥
RMSE rel.    27 %    25 %    🔥
MAPE    22.5 %    22.1 %    ➖
R²    0.41    0.49    🚀 großer Schritt
➡️ Die Prognosegüte ist eindeutig besser, trotz leicht instabilerer Validierung.


3️⃣ Wie dieses Ergebnis zu lesen ist (wichtig!)
🧠 R² = 0.49
Das ist für:
reale WP-Last
mit Taktung & Abtauung
ohne Betriebsmodus-Trennung
➡️ sehr gut
Viele produktive Energiemodelle liegen genau hier.


📉 Fehlerstruktur
MAE < 0.5 kWh → Alltag sehr gut
RMSE < 0.6 kWh → Peaks besser getroffen
MAPE ~22 % → Niedriglast sauber
➡️ Das Modell wird realistischer, nicht aggressiver.


4️⃣ Die zwei ,,Warnlampen" (aber keine Showstopper)

⚠️ 1. Bias = 802 Wh
höher als im Lauf davor
aber konstant
kein Drift, kein Chaos
➡️ perfekter Kandidat für Post-Korrektur
(du hast die Formel ja schon 👍) ->>> siehe Kopie etwas weiter unten

⚠️ 2. Validation BitFail = 3
Das sagt:
Modell wird etwas ambitionierter
lernt mehr Dynamik
kratzt leicht an der Generalisierungsgrenze
➡️ Noch völlig akzeptabel, aber:
BitFail nicht weiter senken
Momentum nicht weiter erhöhen


5️⃣ Was dieses Modell objektiv ist
Ich ordne es ehrlich ein:
✅ Kein Mittelwertmodell mehr
✅ Lastwechsel werden gelernt
✅ PV-Einfluss sinnvoll integriert
✅ Robust genug für Steuerungslogik
➡️ Das ist ein solides WP-Vorhersagemodell der oberen Mittelklasse


6️⃣ Der wichtigste Punkt jetzt: STOP oder LETZTER SCHRITT?
🔵 Option A – Hier stoppen (vernünftig)
Wenn:
das Modell für Prognose / Regelung genutzt wird
Stabilität wichtiger ist als +3–5 % R²
➡️ Absolut legitimer Endpunkt


🔵 Option B – Letzter kontrollierter Boost (nur 1 Hebel!)
Kein neues Training, nur:
✅ Post-Kalibrierung anwenden
Mit aktuellen Werten:
P_korr = (P_raw − 802) / 0.6
Clamping
➡️ Erwartung:
effektives R² ≈ 0.55–0.6
Bias ≈ 0
RMSE rel. ≈ 22 %
🔴 Was du jetzt NICHT mehr tun solltest
❌ weitere Architekturänderungen
❌ noch weniger Inputs erzwingen
❌ Learning Rate / Momentum anfassen
❌ BitFail weiter senken
❌ ,,noch ein Training, vielleicht wird's besser"
➡️ Das bringt meist mehr Schaden als Nutzen.

7️⃣ Klare Empfehlung
👉 Dieses Modell einfrieren
👉 Post-Bias/Slope-Korrektur nutzen
👉 Produktiv testen (1–2 Wochen)

Danach – falls nötig – zweites Spezialmodell (Peaks / Abtauung), aber nicht dieses weiter verbiegen.


Jetzt finde ich die Stelle im Programmcode hierzu aber nicht - ich glaube außer der Temperatur wird bei der WP noch nichts übergeben ??

...Anpassung von "slope"
...Anpassung von "Hausverbrauch auf max Wert WP limitieren
...Anpassung Bias.... Formel evtl. Ergänzen....




🔵 Option B – Letzter kontrollierter Boost (nur 1 Hebel!)
Kein neues Training, nur:

✅ Post-Kalibrierung anwenden
Mit aktuellen Werten:
P_korr = (P_raw − 802) / 0.6
Clamping
➡️ Erwartung:
effektives R² ≈ 0.55–0.6
Bias ≈ 0
RMSE rel. ≈ 22 %

🎯 Ziel der Korrektur
Aktueller Zustand:
Model Bias: ~ 802 Wh
Model Slope: ~ 0.6
Gewünschter Zustand:
Bias ≈ 0
Slope ≈ 0.8–1.0
ohne Retraining

✅ Empfohlene lineare Nachkalibrierung
🔧 Grundformel
                          P_korr = (P_raw − Bias) / Slope

Für dein Modell konkret:
                          P_korr = (P_raw − 802 Wh) / 0.6

Kannst du mir da einen Hinweis geben oder gibt es die Stelle aktuell im Code (noch) nicht ?
#43
Solaranlagen / Aw: 76_SolarForecast - Informa...
Letzter Beitrag von grappa24 - 17 Januar 2026, 19:23:00
Danke für die Bewertung, ich hab die empfohlenen Parameter eingestellt - und lerne so deren Wirkmechanismen kennen  ;)

Ich finds aber schon "spooky", dass wir hier versuchen, "unvorhersehbare Ereignisse" vorherzusagen  ;)
#44
Solaranlagen / Aw: 76_SolarForecast - Informa...
Letzter Beitrag von DS_Starter - 17 Januar 2026, 19:02:55
@300P,

ein paar Dinge kann ich wahrscheinlich noch in die Profile einbauen, aber die Semantiken sind schon stark.
Ein paar Sachen der KI Bewertung sind vermutlich Halluzinationen - z.B. ist die Output Normierung wie generell alle Normierungen strong 100% durchgesetzt. Sowas muß man natürlich ausblenden oder der KI mitteilen.
#45
Anfängerfragen / Aw: FHEM goes Gemini
Letzter Beitrag von ch.eick - 17 Januar 2026, 18:57:37
#46
Anfängerfragen / Aw: FHEM goes Gemini
Letzter Beitrag von Prof. Dr. Peter Henning - 17 Januar 2026, 18:51:36
Zitat von: ch.eick am 17 Januar 2026, 18:30:33Hmm, wie macht man das?
Muss unter www/pgm2

LG

pah
#47
Anfängerfragen / Aw: readingsGroup - Icon für N...
Letzter Beitrag von Prof. Dr. Peter Henning - 17 Januar 2026, 18:49:32
Zitat von: Fabiango am 17 Januar 2026, 18:38:28Hier noch ein Auszug (List) vom eigentlichen Sonos Gerät.
Soll ich vielleicht ein Sonos-Gerät kaufen, oder was bitte?

Was ist denn so schwer daran, das Kommando
Zitat{SONOS_getListRG($DEVICE,"Favourites",1)}
einzutippen und das Ergebnis hier zu posten?

pah

#48
Anfängerfragen / Aw: readingsGroup - Icon für N...
Letzter Beitrag von Fabiango - 17 Januar 2026, 18:38:28
Hallo pah,

Wie kann ich Dir genau den Output des Aufrufs raus ziehen und mitteilen?
Es geht mir drum ein Geräte Icon vor die Anzeige zu bekommen. Eine Aktion gibt es ja nicht.

Hier noch ein Auszug (List) vom eigentlichen Sonos Gerät.
Vielleicht hilft das weiter?

Internals:
   DEF        RINCON_74CA60aaaaa7201400_MR
   FUUID      693c0aaa-f33f-c1dd-5943-efc2e4ca107d4cca
   NAME       Sonos_Wohnzimmer
   NOTIFYDEV  Sonos_Wohnzimmer
   NR         319
   NTFY_ORDER 50-Sonos_Wohnzimmer
   STATE      disappeared ~ 0.0% (0:00:00 / 0:00:00)
   TYPE       SONOSPLAYER
   UDN        RINCON_74CA60aaaaa7201400_MR
   eventCount 113029
   READINGS:
     2026-01-12 19:38:37   AlarmList       {}
     2026-01-12 19:38:37   AlarmListIDs   
     2026-01-12 19:38:37   AlarmListVersion RINCON_74CA607EF9E001400:0
     2025-12-12 13:36:33   AlarmRunning    0
     2025-12-12 13:36:33   AlarmRunningID 
     2025-12-12 13:38:20   AudioDelay      0
     2025-12-12 13:38:20   AudioDelayLeftRear 0
     2025-12-12 13:38:20   AudioDelayRightRear 0
     2026-01-06 19:14:26   AvailablePlayer ['Sonos_Flur']
     2025-12-12 13:36:22   Balance         0
     2025-12-12 13:38:20   Bass            3
     2025-12-12 13:36:33   CrossfadeMode   0
     2025-12-12 13:38:20   DailyIndexRefreshTime
     2025-12-12 13:38:20   DialogLevel     1
     2025-12-12 13:36:33   DirectControlAccountID
     2025-12-30 20:48:44   DirectControlClientID
     2025-12-30 20:48:44   DirectControlIsSuspended 0
     2025-12-17 17:06:43   Favourites      {'FV:2/6' => {'Position' => '1','Typ' => 'audioBroadcast','Cover' => 'https://cdn-profiles.tunein.com/s96141/images/logog.png?t=1','Title' => 'baden.fm','Ressource' => 'x-sonosapi-stream:s96141?sid=333&flags=8292&sn=4','Description' => 'TuneIn (New)'},'FV:2/7' => {'Position' => '3','Typ' => 'audioBroadcast','Cover' => 'https://cdn-profiles.tunein.com/s24896/images/logog.png?t=1','Title' => 'SWR3','Ressource' => 'x-sonosapi-stream:s24896?sid=333&flags=8292&sn=4','Description' => 'TuneIn (New)'},'FV:2/8' => {'Position' => '2','Typ' => 'audioBroadcast','Cover' => 'https://cdn-profiles.tunein.com/s15445/images/logog.jpg?t=162318','Title' => 'Energy Basel','Ressource' => 'x-sonosapi-stream:s15445?sid=333&flags=8292&sn=4','Description' => 'TuneIn (New)'},'FV:2/9' => {'Position' => '0','Typ' => 'audioBroadcast','Cover' => 'https://cdn-profiles.tunein.com/s134003/images/logog.png?t=2','Title' => '95.5 Charivari Party-Hitmix','Ressource' => 'x-sonosapi-stream:s134003?sid=333&flags=8292&sn=4','Description' => 'TuneIn (New)'}}
     2026-01-12 19:38:37   FavouritesVersion RINCON_FFFFFFFFFFFF99999,0
     2026-01-13 17:55:24   GroupMute       0
     2026-01-16 23:46:10   GroupVolume     6
     2025-12-12 13:36:33   HeadphoneConnected 0
     2025-12-12 13:36:22   IsBonded        0
     2025-12-23 22:15:47   IsMaster        1
     2025-12-12 13:36:22   IsZoneBridge    0
     2026-01-17 07:21:18   LastActionResult DeleteProxyObjects: Success!
     2026-01-17 07:15:44   LastSubscriptionsRenew MusicServices: 2026-01-17 07:15:44
     2025-12-28 15:26:40   Loudness        1
     2025-12-23 22:15:47   MasterPlayer    Sonos_Wohnzimmer
     2026-01-13 17:55:24   Mute            0
     2025-12-12 13:38:20   NightMode       0
     2025-12-12 13:38:20   Orientation     0
     2025-12-12 13:38:20   OutputFixed     0
     2026-01-12 19:38:37   PlaylistsVersion RINCON_FFFFFFFFFFFF99999,0
     2025-12-23 22:15:47   QueueHash       4129136a6fb8aef13ac255cc21000424
     2025-12-23 22:15:47   QueueVersion    8
     2025-12-17 17:06:01   Radios          {}
     2026-01-12 19:38:37   RadiosVersion   RINCON_FFFFFFFFFFFF99999,0
     2025-12-12 13:36:33   Repeat          0
     2025-12-12 13:36:33   RepeatOne       0
     2025-12-12 13:36:33   Shuffle         0
     2026-01-06 19:12:16   SlavePlayer     []
     2026-01-06 19:12:16   SlavePlayerNotBonded []
     2025-12-12 13:36:33   SleepTimer      off
     2025-12-12 13:36:33   SleepTimerVersion
     2025-12-12 13:38:20   SubEnable       1
     2025-12-28 15:28:07   SubGain         6
     2025-12-12 13:38:20   SubPolarity     0
     2025-12-12 13:38:20   SurroundEnable  1
     2025-12-12 13:38:20   SurroundLevel   15
     2025-12-12 13:38:20   Treble          -1
     2025-12-12 13:38:20   TruePlay        1
     2026-01-16 23:46:10   Volume          6
     2025-12-12 13:38:20   WifiEnabled     1
     2025-12-12 13:38:20   WirelessMode    0
     2025-12-23 22:15:47   ZoneGroupID     RINCON_74CA60aaaa7201400:__
     2026-01-06 19:14:26   ZoneGroupName   Wohnzimmer
     2026-01-06 19:14:26   ZoneGroupNameDetails
     2026-01-06 19:14:26   ZonePlayerUUIDsInGroup RINCON_74CA60aaaa7201400
     2026-01-17 01:43:50   currentAlbum   
     2026-01-17 01:43:50   currentAlbumArtURL /fhem/sonos/cover/empty.jpg
     2026-01-12 19:36:40   currentAlbumArtist
     2025-12-26 20:16:18   currentArtist   
     2026-01-06 19:14:26   currentEnqueuedTransportHandle |
     2026-01-06 19:14:26   currentEnqueuedTransportURI
     2025-12-12 13:36:33   currentFavouriteName
     2025-12-25 12:30:39   currentNormalAudio 1
     2025-12-12 13:36:33   currentOriginalTrackNumber
     2025-12-12 13:36:33   currentPlaylistName
     2025-12-12 13:36:33   currentRadioName
     2025-12-23 22:15:46   currentSender   
     2025-12-12 13:36:33   currentSenderCurrent
     2025-12-23 22:08:18   currentSenderInfo
     2026-01-06 19:14:41   currentSource   
     2026-01-16 19:41:02   currentStreamAudio 0
     2026-01-17 01:43:50   currentTitle   
     2026-01-17 01:43:50   currentTrack    0
     2026-01-17 01:43:50   currentTrackDuration 0:00:00
     2025-12-26 20:16:18   currentTrackDurationSec 0
     2026-01-17 01:43:50   currentTrackHandle |
     2026-01-17 01:43:55   currentTrackPosition 0:00:00
     2026-01-17 01:43:55   currentTrackPositionSec 0
     2026-01-17 01:43:51   currentTrackPositionSimulated 0:00:00
     2025-12-26 20:16:18   currentTrackPositionSimulatedPercent 0.0
     2026-01-17 01:43:51   currentTrackPositionSimulatedSec 0
     2026-01-17 01:43:50   currentTrackProvider
     2026-01-17 01:43:50   currentTrackProviderIconQuadraticURL
     2026-01-17 01:43:50   currentTrackProviderIconRoundURL
     2026-01-17 01:43:50   currentTrackURI
     2025-12-12 13:36:22   fieldType       LF_RF
     2026-01-17 01:43:50   infoSummarize1  [Keine Musikdatei]
     2026-01-17 01:43:50   infoSummarize2  STOPPED => [Keine Musikdatei]
     2026-01-16 23:46:22   infoSummarize3  Lautstärke: 6 ~ Ton An ~ Balance: Mitte ~ Kein Kopfhörer
     2025-12-12 13:36:33   infoSummarize4 
     2025-12-12 13:36:22   location        http://192.168.169.50:1400/xml/device_description.xml
     2025-12-25 12:30:33   nextAlbum       
     2025-12-25 12:30:39   nextAlbumArtURL /fhem/sonos/cover/empty.jpg
     2025-12-12 13:36:33   nextAlbumArtist
     2025-12-25 12:30:33   nextArtist     
     2025-12-12 13:36:33   nextOriginalTrackNumber
     2025-12-25 12:30:33   nextTitle       
     2025-12-26 20:16:18   nextTrackDuration
     2025-12-26 20:16:18   nextTrackDurationSec
     2025-12-26 20:16:18   nextTrackHandle |
     2025-12-24 11:35:47   nextTrackProvider
     2025-12-24 11:35:47   nextTrackProviderIconQuadraticURL
     2025-12-24 11:35:47   nextTrackProviderIconRoundURL
     2025-12-26 20:16:18   nextTrackURI   
     2026-01-17 01:43:50   numberOfTracks  0
     2025-12-12 13:36:22   playerType      S45
     2026-01-17 07:21:18   presence        disappeared
     2025-12-12 13:36:22   roomName        Wohnzimmer
     2025-12-12 13:36:22   roomNameAlias   Wohnzimmer - Mitte
     2025-12-12 13:36:22   saveRoomName    Wohnzimmer
     2025-12-12 13:36:22   serialNum       74-aa-aa-66-aa-72:6
     2025-12-12 13:36:22   softwareRevision 17.7
     2025-12-12 13:36:22   softwareRevisionAvailable 17.7
     2026-01-11 13:38:46   softwareRevisionInternal 92.0-72171
     2025-12-12 13:36:22   softwareRevisionInternalAvailable 92.0-71170
     2026-01-17 07:21:18   state           disappeared
     2026-01-17 01:43:50   transportState  STOPPED
   helper:
     simulateCurrentTrackPosition 0
   hmccu:
Attributes:
   VolumeStep 2
   alias      <br>Sonos <br> Wohnzimmer
   devStateIcon appeared.*:audio_volume_low@green \
disappeared.*:audio_volume_low@grey \
initialized:audio_volume_low@orange \
~~NotLoadedMarker.*:audio_volume_low@grey
   generateInfoSummarize1 <NormalAudio><Artist prefix="(" suffix=")"/><Title prefix=" '" suffix="'" ifempty="[Keine Musikdatei]"/><Album prefix=" vom Album '" suffix="'"/></NormalAudio> <StreamAudio><Sender suffix=":"/><SenderCurrent prefix=" '" suffix="' -"/><SenderInfo prefix=" "/></StreamAudio>
   generateInfoSummarize2 <TransportState/><InfoSummarize1 prefix=" => "/>
   generateInfoSummarize3 <Volume prefix="Lautstärke: "/><Mute instead=" ~ Kein Ton" ifempty=" ~ Ton An" emptyval="0"/> ~ Balance: <Balance ifempty="Mitte" emptyval="0"/><HeadphoneConnected instead=" ~ Kopfhörer aktiv" ifempty=" ~ Kein Kopfhörer" emptyval="0"/>
   generateVolumeEvent 1
   generateVolumeSlider 1
   getAlarms  1
   getTitleInfoFromMaster 1
   group      Multimedia
   icon       icoSONOSPLAYER_icon-S45.png
   minVolume  0
   model      Sonos_S45
   room       Wohnzimmer
   simulateCurrentTrackPosition 1
   sortby     02
   stateFormat presence ~ currentTrackPositionSimulatedPercent% (currentTrackPositionSimulated / currentTrackDuration)
   userReadings Favourites:LastActionResult.*?GetFavouritesWithCovers.* { if (ReadingsVal($name, "LastActionResult", "") =~ m/.*?: (.*)/) { return $1; } }, Radios:LastActionResult.*?GetRadiosWithCovers.* { if (ReadingsVal($name, "LastActionResult", "") =~ m/.*?: (.*)/) { return $1; } }, Playlists:LastActionResult.*?GetPlaylistsWithCovers.* { if (ReadingsVal($name, "LastActionResult", "") =~ m/.*?: (.*)/) { return $1; } }, Queue:LastActionResult.*?GetQueueWithCovers.* { if (ReadingsVal($name, "LastActionResult", "") =~ m/.*?: (.*)/) { return $1; } }, currentTrackPosition:LastActionResult.*?GetCurrentTrackPosition.* { if (ReadingsVal($name, "LastActionResult", "") =~ m/.*?: (.*)/) { return $1; } }
   verbose    1
   webCmd     Volume
#49
Anfängerfragen / Aw: FHEM goes Gemini
Letzter Beitrag von ch.eick - 17 Januar 2026, 18:32:41
Zitat von: Prof. Dr. Peter Henning am 17 Januar 2026, 18:29:15
Zitat von: passibe am 17 Januar 2026, 18:22:44Nix cpan
Das darf wohl jeder selbst entscheiden?
Natürlich, jedoch müsste man das dann immer wieder machen, wenn man den Container aktualisiert.
Ich habe es deshalb auch lieber im Docker Compose hinterlegt und es wird somit jedesmal automatisch nachinstalliert.

Sooo, is auch drin,
jedoch reicht das mit "apt-get install libtext-levenshtein-perl" wohl doch nicht aus, denn die Meldung kommt weiterhin.
Can't locate Text/Levenshtein.pm in @INC (you may need to install the Text::Levenshtein module) (@INC entries checked: ./FHEM/lib ./lib fhem.p/lib fhem.p/FHEM/lib ./FHEM ./ /usr/local/FHEM/share/fhem/FHEM/lib . /usr/src/app/core/lib/perl5/5.38.5/aarch64-linux-gnu /usr/src/app/core/lib/perl5/5.38.5 /usr/src/app/core/lib/perl5/aarch64-linux-gnu /usr/src/app/core/lib/perl5 /usr/src/app/3rdparty/lib/perl5/5.38.5/aarch64-linux-gnu /usr/src/app/3rdparty/lib/perl5/5.38.5 /usr/src/app/3rdparty/lib/perl5/aarch64-linux-gnu /usr/src/app/3rdparty/lib/perl5 /usr/local/lib/perl5/site_perl/5.38.5/aarch64-linux-gnu /usr/local/lib/perl5/site_perl/5.38.5 /usr/local/lib/perl5/vendor_perl/5.38.5/aarch64-linux-gnu /usr/local/lib/perl5/vendor_perl/5.38.5 /usr/local/lib/perl5/5.38.5/aarch64-linux-gnu /usr/local/lib/perl5/5.38.5) at ./FHEM/95_Babble.pm line 48.
BEGIN failed--compilation aborted at ./FHEM/95_Babble.pm line 48.


root@raspberrypi:/opt/fhem# apt-get install libtext-levenshtein-perl
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:
  libtext-levenshtein-perl
0 upgraded, 1 newly installed, 0 to remove and 40 not upgraded.
Need to get 11.6 kB of archives.
After this operation, 28.7 kB of additional disk space will be used.
Get:1 http://deb.debian.org/debian bookworm/main arm64 libtext-levenshtein-perl all 0.15-1 [11.6 kB]
Fetched 11.6 kB in 0s (284 kB/s)                  
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package libtext-levenshtein-perl.
(Reading database ... 47972 files and directories currently installed.)
Preparing to unpack .../libtext-levenshtein-perl_0.15-1_all.deb ...
Unpacking libtext-levenshtein-perl (0.15-1) ...
Setting up libtext-levenshtein-perl (0.15-1) ...
#50
Anfängerfragen / Aw: FHEM goes Gemini
Letzter Beitrag von ch.eick - 17 Januar 2026, 18:30:33
Zitat von: Prof. Dr. Peter Henning am 17 Januar 2026, 17:57:34Kann es sein, dass Du das JavaScript-File nicht installiert hast? Das sorgt für die richtige Reihenfolge der Buttons.
Hmm, wie macht man das?
Ich habe es nur unter ./www/Babble/ abgelegt :-)