Neueste Beiträge

#11
Server - Linux / Aw: FHEM Docker Image v5.3.0-b...
Letzter Beitrag von heigu - 10 Mai 2026, 20:55:04
Hallo @Sidey,

Bei mir funktioniert die Version ghcr.io/fhem/fhem-docker:5.3.0-beta1-bookworm mit den Modulen SignalDuino (SerialPort, SD_WS, CUL_TCM97001, Hideki), HTTPMOD, Strptime, HMCCU, I2C_BME280 (I2C_RPII2C), VCONTROL und Sysmon. Läuft seit gestern Abend stabil.

Danke für die gute Arbeit!

Gruß,
heigu
#12
DOIF / Aw: DOIF-Abfall-Status per Tel...
Letzter Beitrag von Damian - 10 Mai 2026, 20:26:24
ui_Table definiert eine Tabelle in HTML. Einzelne Zellen der Tabelle könnnen wiederum aus weiteren Elementen bestehen. Dabei wird erkannt, wo die Trigger definiert sind (Angaben der Art [<device>:<reading>]). Es werden dann entsprechende Trigger-Mechanismen aufgesetzt, die beim passenden Event den HTML-Code für das jeweilige Element aktualisieren.

Funktionen wie ring, bar, card, usw. erzeugen HTML-Code insb. SVG-Tags, um vektorbasierte Grafiken zu erzeugen. Man kann sie von überall aufrufen, um den passenden HTML-SVG-Code zu erhalten. So kann man z. B. im Attribut devStateIcon eines Dummys eine uiTable-Funktion aufrufen, um im Status des Dummys die passende Grafik darzustellen.

Der Zugriff auf die einzelnen Tabellenzellen ist nicht vorgesehen, da sie zum Zeitpunkt der Definition andere Funktion nutzen, als bei einem Update einer Zelle durch ein Event. Zusätzlich kann eine Zelle aus beliebig vielen weiteren Elementen bestehen. So sieht alleine eine Zellendefinition der Energy_Card aus, die aus 10 einzelnen Elementen besteht (kann man sich per list des DOIF-Devices unter table anschauen):


...
    table:
       0:
         0:
           0:
             0          package ui_Table;::DOIF_Widget($hash,$reg,'di_energy_card_uiTable_c_0_0_0_0',grid(::ReadingValDoIf($hash,'di_energy_card','grid_power','','144col1d'),::ReadingValDoIf($hash,'di_energy_card','grid_energy_feed'),::ReadingValDoIf($hash,'di_energy_card','grid_energy_consum')),"")
             1          package ui_Table;::DOIF_Widget($hash,$reg,'di_energy_card_uiTable_c_0_0_0_1',grid_power(::ReadingValDoIf($hash,'di_energy_card','grid_power')),"")
             2          package ui_Table;::DOIF_Widget($hash,$reg,'di_energy_card_uiTable_c_0_0_0_2',solar(::ReadingValDoIf($hash,'di_energy_card','solar_power','','144col1d'),::ReadingValDoIf($hash,'di_energy_card','solar_energy'),::ReadingValDoIf($hash,'di_energy_card','solar_self_energy')),"")
             3          package ui_Table;::DOIF_Widget($hash,$reg,'di_energy_card_uiTable_c_0_0_0_3',solar_power(::ReadingValDoIf($hash,'di_energy_card','solar_power')),"")
             4          package ui_Table;::DOIF_Widget($hash,$reg,'di_energy_card_uiTable_c_0_0_0_4',battery(::ReadingValDoIf($hash,'di_energy_card','battery_power','','144col1d'),::ReadingValDoIf($hash,'di_energy_card','battery_capa','','144col1d')),"")
             5          package ui_Table;::DOIF_Widget($hash,$reg,'di_energy_card_uiTable_c_0_0_0_5',battery(::ReadingValDoIf($hash,'di_energy_card','battery_power','','144col1d'),::ReadingValDoIf($hash,'di_energy_card','battery_capa','','144col1d')),"")
             6          package ui_Table;::DOIF_Widget($hash,$reg,'di_energy_card_uiTable_c_0_0_0_6',battery_power(::ReadingValDoIf($hash,'di_energy_card','battery_power')),"")
             7          package ui_Table;::DOIF_Widget($hash,$reg,'di_energy_card_uiTable_c_0_0_0_7',home (::ReadingValDoIf($hash,'di_energy_card','home_power','','144col1d'),::ReadingValDoIf($hash,'di_energy_card','home_energy')),"")
             8          package ui_Table;::DOIF_Widget($hash,$reg,'di_energy_card_uiTable_c_0_0_0_8',home_power(::ReadingValDoIf($hash,'di_energy_card','home_power')),"")
             9          package ui_Table;::DOIF_Widget($hash,$reg,'di_energy_card_uiTable_c_0_0_0_9',self(::ReadingValDoIf($hash,'di_energy_card','autarchy'),::ReadingValDoIf($hash,'di_energy_card','scr')),"")

Es ist also eine recht komplexe Geschichte, die viele interne Mechanismen des DOIFs nutzt und über vier ineinander liegende for-Schleifen abgearbeitet wird. Es macht aus meiner Sicht keinen Sinn den internen Aufbau nach außen zu publizieren. Dann ist es besser die einzelnen uiTable SVG-Funktionen aufrufen, die jede für sich den passenden HTML-SVG-Code erzeugt, den man überall zur Ausgabe bringen kann, wo HTML-Code in FHEM vorgesehen ist z. B. im Attribut devStateIcon oder diesen selbst wie auch immer verarbeiten möchte.
#13
Kalendermodule / Patch 57_CALVIEW.pm: Calendar-...
Letzter Beitrag von Sidey - 10 Mai 2026, 20:13:07
Betreff: Patch fuer 57_CALVIEW.pm: Calendar-Events nicht mehr per Pipe-getrenntem Text parsen

Hi chris1284,

ich bin bei CALVIEW auf ein Problem gestossen, wenn ein Calendar-Eintrag im Feld LOCATION ein Pipe-Zeichen (|) enthaelt.

Ein konkretes Beispiel ist der Ferienkalender fuer Hessen von calovo. Dort sieht LOCATION aktuell etwa so aus:

calovo.de | zattoo kostenlos testen: bit.ly/calovo_zattoo | Hessen, Deutschland

CALVIEW liest die Termine derzeit ueber get <Calendar> events mit einem format:custom ein und nutzt ebenfalls | als internes Trennzeichen. Dadurch verrutschen die Felder beim split(/\|/): location, description, categories und duration landen in falschen Readings.

In meinem Fall fuehrte das zusaetzlich zu Perl-Warnungen, wenn beim Calendar-Device defaultTimeFormat %H:%M gesetzt war, weil CALVIEW aus $T1/$T2 ein Datum erwartet.

Der beigefuegte Patch stellt getsummery() in 57_CALVIEW.pm um:

  • Calendar wird mit returnType:@events abgefragt.
  • CALVIEW liest die Werte direkt aus den Calendar::Event Objekten.
  • Es wird kein Pipe-getrennter Zwischentext mehr geparst.
  • location und description duerfen dadurch selbst Pipe-Zeichen enthalten.
  • Start- und Endzeit werden ueber startTime()/endTime() ermittelt und sind damit nicht mehr vom defaultTimeFormat des Calendar-Devices abhaengig.
  • duration wird direkt aus end - start berechnet.

Getestet habe ich das in einem separaten FHEM-Testcontainer mit der Hessen-ICS und absichtlich gesetztem:

attr Hessen_Ferien defaultTimeFormat %H:%M

Ergebnis:

  • keine CALVIEW-Warnungen mehr durch fehlendes Datum in $T1/$T2
  • bdate, edate und daysleft sind plausibel
  • location bleibt vollstaendig inklusive |
  • description und duration landen wieder in den richtigen Readings

Ein sichtbarer Unterschied ist, dass categories bei diesem Kalender danach leer ist. Das ist nach meiner Einschaetzung korrekt, weil das echte ICS-CATEGORIES-Feld leer ist. Vorher stand dort nur irrtuemlich ein aus LOCATION abgeschnittener Rest wie Hessen, Deutschland.

Der Patch ist als Datei angehaengt:

57_CALVIEW.pm.patch

Viele Gruesse
#14
Solaranlagen / Aw: 76_SolarForecast - Informa...
Letzter Beitrag von 300P - 10 Mai 2026, 20:08:46
Hallo Gisbert,

A:
Nein - das ctrlDebug kann erst einmal ausbleiben.
Das war nur beim ersten Lauf für mich sehr informativ, weil du ja von sehr langen Laufzeiten berichtet hattest die sogar am Ende abgebrochen worden sind.

B:
Wenn der hohe RAW-Wert raus ist wird sich vermutlich an dem Ergebnis evtl. noch etwas verändern aufgrund des neuen Trainings.

ABER:
Solange das Training läuft wird nach "alter Standart-Logik" (Legacy) der Verbrauch prognostiziert und ersatzweise solange angezeigt.
Erst wenn der Trainingslauf durch ist wird die NN-Verbrauchs bzw. NN-CON-Prognose wieder angezeigt.


C:
Wenn du möchtest, kannst du auch schon nach dem Ende des Trainingslaufe einmal das Ergebnis des Laufes hier posten
(siehe letzter Punkt von meinem letzten Post)

Gruß
300P
#15
Solaranlagen / Aw: 76_SolarForecast - Informa...
Letzter Beitrag von Gisbert - 10 Mai 2026, 19:51:48
Hallo 300P,

ich verstehe noch nicht im Detail, was ich genau machen muss. Deshalb muss ich nochmals fragen.
Den raw_max-Wert habe ich entsprechend behandelt.

Das Training habe ich neu gestartet - muss ich ctrlDebug aiProcess auch jedesmal mitlaufen lassen? Das läuft im Moment nicht. Der log-file ist entsprechend leer seit dem erneuten Start.

Erste Effekte sehe ich bereits mit der Verbrauchsprognose für morgen, die von 27 auf 20 kWh zurückgegangen ist (Erwartungswert liegt irgendwo bei 14 kWh).

Viele Grüße Gisbert
#16
DOIF / Aw: DOIF-Abfall-Status per Tel...
Letzter Beitrag von Dr. Boris Neubert - 10 Mai 2026, 17:53:44
Zitat von: Damian am 03 Mai 2026, 13:18:36Allerdings sind fast alle Beispiele als Tabelle definiert - auch dieses Abfall-Beispiel. Die müsste man erst mal umschreiben. Dann kann man auch gleich selbst mit Hilfe der vordefinierten uiTable-Funktionen (hier ui_Table::style und ui_Table::ic) sich seinen HTML-Code zusammen bauen.

Habe mich ein wenig in DOIF und sein uiTable-Attribut eingelesen. Mir ist jedoch nicht klar, welche Funktion ich aufrufen muss, um den HTML-Kode im Inneren der Tabelle herauszubekommen, also das Äquivalent von { ui_Table::get_uiTable("dbAbfall") }.

Beim Mini-Dashboard für PV-Anlage habe ich ui_Table::ring2() benutzt, das SVG zurückgibt, was ich mit dem im RSS-Modul in ein PNG-Bild plotten konnte. Ohne Verrenkungen können wir aber meines Wissens nach kein HTML in ein Grafikformat rendern, um statt HTML-Kode ein Bild per Telegram zu senden.

Die Alternative wäre dann ein Bild mit dem RSS-Modul zu bauen (die Tonnen sind ja SVG-Grafiken) und mit Telegram zu versenden.
#17
Solaranlagen / Aw: 76_SolarForecast - Informa...
Letzter Beitrag von 300P - 10 Mai 2026, 17:13:55
Hallo Gisbert,

Gratuliere ! ;)

Laufzeit
von : 2026.05.10 11:32:43.093
bis : 2026.05.10 11:55:57.255

Das sind ja sogar nur ca. 23 Minuten mit 3 Trainingsdurchgängen - sehr gut!! ;D

Und das Endergebnis ist auch akzeptabel - der erste Schritt ist getan  8)
2026.05.10 11:55:53.809 1: mySolarForecast DEBUG> Best model after retries comes from Attempt=2 with:
Seed=13783776,
Model Score=73,
Model Slope=0.71,
Model Bias=365.49,
VAL MedAE=206.24,
VAL MAE=311.86,
VAL weighted RMSE=359.56,
VAL weighted RMSE relative=51 %,
VAL weighted RMSE_Rating=acceptable,
VAL R2=0.78,
Val MSE=0.001582


Trotzdem gehe doch bitte einmal dem Wert von 109,6 kWh nach. das ist schon ein extremer CON-Verbaucher-Ausreißer.
=>> Die notwendige Anleitung dazu hast du ja schon gestern Abend von mir erhalten. ;)
2026.05.10 11:32:43.532 1: mySolarForecast DEBUG> AI FANN - Target-Norm: raw_max=109600, p99=3500, p99.5=11100, targmaxval=14430
2026.05.10 11:32:43.532 1: mySolarForecast DEBUG> AI FANN - True Outliers above p99.5 (11100): 109600

Gibst du auch noch bitte einmal den aktuellen Inhalt deines attr XYXYXYX aiControl .............in Kopie wenn du die Ausreißer eliminiert hast.......und erneut trainiert hast.  8)

Du kannst dann gern nach Trainingsschluss die "Informationen zum neuronalen Netz der Verbrauchsvorhersage" mit den Werten zur Statusmitteilung b.a.w. hier nutzen. (Screenshot).
Aber bitte nur den Text bis inklusive der Zeile mit
letzte Rekalibrierung: -
(da stehen in den letzten Zeilen aber erst nach 24 Stunden Laufzeit nach dem Training Werte)

kopieren und als Informationen zum neuronalen Netz der Verbrauchsvorhersage

letztes KI-Training: 09.05.2026 21:38:52 / Laufzeit in Sekunden: 5168
KI Abfragestatus: ok
letzte KI-Ergebnis Generierungsdauer: 69.73 ms
Alpha: 0.8
Verbrauchernummer Wärmepumpe: 08
.....
....
...
..
.
Bias recalibrated: -7
letzte Rekalibrierung: -
hier dann wieder zeigen.

#18
MQTT / Aw: mqtt2.template: bugs, Frag...
Letzter Beitrag von Motivierte linke Hände - 10 Mai 2026, 15:58:32
Ich versuche, einen mit zigbee2mqtt laufenden Sonoff Hydro one (SWV-ZFS) in FHEM zu integrieren. Aktueller Versuch eines Templates:

name:zigbee2mqtt_sonoff_hydro_one
desc: Sonoff Hydro One Wasserventil mit Durchflussmesser
filter:TYPE=MQTT2_DEVICE:FILTER=CID~zigbee.*
order:L_05f4
par:BASE_TOPIC;base topic set in configuration.yaml of the zigbee2mqtt bridge;{ AttrVal("DEVICE","devicetopic",AttrVal("DEVICE","readingList","")) =~ m,[\b]?([^/:]+)[/].+, ? $1 : undef }
par:DEV_ID;name of the device in the zigbee2mqtt bridge;{ AttrVal("DEVICE","devicetopic",AttrVal("DEVICE","readingList","")) =~ m,[^/]+[/]([^/:]+).*, ? $1 : undef }
par:ICON;ICON as set, defaults to sani_water_tap;{ AttrVal("DEVICE","icon","sani_water_tap") }
attr DEVICE icon ICON
attr DEVICE devStateIcon on:sani_water_tap@blue:off off:sani_water_tap@red:on
attr DEVICE webCmd on:off
attr DEVICE devicetopic BASE_TOPIC/DEV_ID
attr DEVICE readingList $\DEVICETOPIC:.* { my $ret=json2nameValue($EVENT); $ret->{state}=lc($ret->{state}) if defined $ret->{state}; return $ret }
attr DEVICE setList \
  on:noArg $\DEVICETOPIC/set {"state":"ON"}\
  off:noArg $\DEVICETOPIC/set {"state":"OFF"}\
  child_lock:lock,unlock $\DEVICETOPIC/set {"child_lock":uc("$EVTPART1")}\
  manual_default_settings_irrigation_mode:duration,capacity $\DEVICETOPIC/set {"manual_default_settings_irrigation_mode":"$EVTPART1"}\
  manual_default_settings_irrigation_duration:slider,0,1,719 $\DEVICETOPIC/set {"manual_default_settings_irrigation_duration":$EVTPART1}\
  manual_default_settings_irrigation_amount:slider,0,1,10000 $\DEVICETOPIC/set {"manual_default_settings_irrigation_amount":$EVTPART1}\
  manual_default_settings_irrigation_amount_unit:liter,US_gallon $\DEVICETOPIC/set {"manual_default_settings_irrigation_amount_unit":"$EVTPART1"}\
  manual_default_settings_fail_safe:slider,0,1,719 $\DEVICETOPIC/set {"manual_default_settings_fail_safe":$EVTPART1}\
  valve_alarm_settings_enable_alarm_water_leak:true,false $\DEVICETOPIC/set {"valve_alarm_settings_enable_alarm_water_leak":"$EVTPART1"}\
  valve_alarm_settings_alarm_water_leak_duration:slider,1,1,3 $\DEVICETOPIC/set {"valve_alarm_settings_alarm_water_leak_duration":$EVTPART1}\
  valve_alarm_settings_enable_alarm_water_shortage:true,false $\DEVICETOPIC/set {"valve_alarm_settings_enable_alarm_water_shortage":"$EVTPART1"}\
  valve_alarm_settings_alarm_water_shortage_duration:slider,1,1,10 $\DEVICETOPIC/set {"valve_alarm_settings_alarm_water_shortage_duration":$EVTPART1}\
  valve_alarm_settings_enable_water_shortage_auto_close:true,false $\DEVICETOPIC/set {"valve_alarm_settings_enable_water_shortage_auto_close":"$EVTPART1"}
attr DEVICE model zigbee2mqtt_sonoff_hydro_one
setreading DEVICE attrTemplateVersion 20260510_18

Damit kann ich alles lesen und das Ventil öffnen und schließen. Das Setzen der anderen Werte funktioniert allerdings nicht. Hier mal mein Versuch, "manual_default_settings_irrigation_duration" auf zu setzen:

[2026-05-10 15:04:58] error:    z2m: No converter available for 'manual_default_settings_irrigation_duration' on 'Ventil_Vorgarten': (45)
Das tatsächliche Datenformat ist wohl ein Baum in einem etwas anderen Format (in FHEM in den Readings vereinfacht auf einer Ebene angezeigt), wie dieser Logauszug für die vollständigen Daten zeigt:

[2026-05-10 15:04:59] info:     z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/Ventil_Vorgarten', payload '{"battery":100,"child_lock":"UNLOCK","hour_irrigation_duration":32,"hour_irrigation_volume":27,"irrigation_schedule_status":{"actual_end_time":"2026-05-10T15:04:54+02:00","actual_irrigation_amount":5,"expected_end_time":"2026-05-10T15:59:11+02:00","expected_irrigation_amount":0,"irrigation_amount_unit":"liter","irrigation_mode":"duration","schedule_index":0,"schedule_status":"running","schedule_type":"manual","start_time":"2026-05-10T14:59:11+02:00"},"last_seen":"2026-05-10T13:04:59.678Z","linkquality":69,"manual_default_settings":{"fail_safe":90,"irrigation_amount":0,"irrigation_amount_unit":"liter","irrigation_duration":60,"irrigation_mode":"duration"},"rain_delay_end_datetime":"","real_time_irrigation_duration":46,"real_time_irrigation_volume":37,"seasonal_watering_adjustment":{"april":1,"august":1,"december":1,"february":1,"january":1,"july":1,"june":1,"march":1,"may":1,"november":1,"october":1,"september":1},"state":"ON","update":{"installed_version":4103,"latest_release_notes":null,"latest_source":null,"latest_version":4103,"state":"idle"},"valve_abnormal_state":"water_shortage","valve_alarm_settings":{"alarm_water_leak_duration":1,"alarm_water_shortage_duration":5,"enable_alarm_water_leak":true,"enable_alarm_water_shortage":true,"enable_water_shortage_auto_close":false}}'
Also habe ich versucht, das Template so zu ändern, dass es in der Baumstruktur Befehle sendet:

name:zigbee2mqtt_sonoff_hydro_one
desc:Sonoff Hydro One Wasserventil mit Durchflussmesser
filter:TYPE=MQTT2_DEVICE:FILTER=CID~zigbee.*
order:L_05f4
par:BASE_TOPIC;base topic set in configuration.yaml of the zigbee2mqtt bridge;{ AttrVal("DEVICE","devicetopic",AttrVal("DEVICE","readingList","")) =~ m,[\b]?([^/:]+)[/].+, ? $1 : undef }
par:DEV_ID;name of the device in the zigbee2mqtt bridge;{ AttrVal("DEVICE","devicetopic",AttrVal("DEVICE","readingList","")) =~ m,[^/]+[/]([^/:]+).*, ? $1 : undef }
par:ICON;ICON as set, defaults to sani_water_tap;{ AttrVal("DEVICE","icon","sani_water_tap") }
attr DEVICE icon ICON
attr DEVICE devStateIcon on:sani_water_tap@blue:off off:sani_water_tap@red:on
attr DEVICE webCmd on:off
attr DEVICE devicetopic BASE_TOPIC/DEV_ID
attr DEVICE readingList $\DEVICETOPIC:.* { my $ret = json2nameValue($EVENT, undef, 'noUndefined'); $ret->{state} = lc($ret->{state}) if defined $ret->{state}; return $ret; }
attr DEVICE setList \
  on:noArg $\DEVICETOPIC/set {"state":"ON"} \
  off:noArg $\DEVICETOPIC/set {"state":"OFF"} \
  child_lock:lock,unlock $\DEVICETOPIC/set {"child_lock":uc("$EVTPART1")} \
  manual_default_settings_irrigation_mode:duration,capacity $\DEVICETOPIC/set {"manual_default_settings":{"irrigation_mode":"$EVTPART1"}} \
  manual_default_settings_irrigation_duration:slider,0,1,719 $\DEVICETOPIC/set {"manual_default_settings":{"irrigation_duration":$EVTPART1}} \
  manual_default_settings_irrigation_amount:slider,0,1,10000 $\DEVICETOPIC/set {"manual_default_settings":{"irrigation_amount":$EVTPART1}} \
  manual_default_settings_irrigation_amount_unit:liter,US_gallon $\DEVICETOPIC/set {"manual_default_settings":{"irrigation_amount_unit":"$EVTPART1"}} \
  manual_default_settings_fail_safe:slider,0,1,719 $\DEVICETOPIC/set {"manual_default_settings":{"fail_safe":$EVTPART1}} \
  valve_alarm_settings_enable_alarm_water_leak:true,false $\DEVICETOPIC/set {"valve_alarm_settings":{"enable_alarm_water_leak":$EVTPART1}} \
  valve_alarm_settings_alarm_water_leak_duration:slider,1,1,3 $\DEVICETOPIC/set {"valve_alarm_settings":{"alarm_water_leak_duration":$EVTPART1}} \
  valve_alarm_settings_enable_alarm_water_shortage:true,false $\DEVICETOPIC/set {"valve_alarm_settings":{"enable_alarm_water_shortage":$EVTPART1}} \
  valve_alarm_settings_alarm_water_shortage_duration:slider,1,1,10 $\DEVICETOPIC/set {"valve_alarm_settings":{"alarm_water_shortage_duration":$EVTPART1}} \
  valve_alarm_settings_enable_water_shortage_auto_close:true,false $\DEVICETOPIC/set {"valve_alarm_settings":{"enable_water_shortage_auto_close":$EVTPART1}}
attr DEVICE model zigbee2mqtt_sonoff_hydro_one
setreading DEVICE attrTemplateVersion 20260510_21

Aber das scheint gar nicht funktionieren (FHEM zeigt im Log zwar das Auslösen des Befehls in FHEM an, aber weder zeigt mir mosquitto_sub eine zugehörige Nachricht, noch erscheint im zigbee2mqtt Log irgendwas).

Für einen Schubser in die richtige Richtung wäre ich dankbar!
#19
TabletUI / Aw: FTUI version 3
Letzter Beitrag von grossmaggul - 10 Mai 2026, 15:29:02
Hallo.

Beim Versuch FTUI 3 zu aktualisieren, komme ich immer nur bis zu dieser Fehlermeldung:
Downloading https://raw.githubusercontent.com/knowthelist/ftui/with_ha_backend/controls_ftui.txt
UPD www/ftui/components/badge/badge.component.js
UPD www/ftui/components/button/button-nice.component.js
UPD www/ftui/components/button/button.component.css
UPD www/ftui/components/button/button.component.js
UPD www/ftui/components/cell/cell.component.js
UPD www/ftui/components/chart/chart-controls.component.css
UPD www/ftui/components/chart/chart-controls.component.js
UPD www/ftui/components/chart/chart-data.component.js
Got 6101 bytes for www/ftui/components/chart/chart-data.component.js, expected 5269
aborting.
Ich habe die Datei schon gelöscht, die Meldung kommt aber immer wieder, was läuft da schief?

gm
#20
FRITZ!Box / Aw: FritzSmart ab Modul-Versio...
Letzter Beitrag von elektron-bbs - 10 Mai 2026, 14:56:12
Hallo Jörg,
soweit ich das jetzt testen konnte, funktioniert bei mir alles. Danke.
Bei der commandref hast du dich allerdings vertan. Da muss statt einem "</i>" jeweils ein "</li>" hin.
In Zeile 19564 fehlt noch ein abschließendes </b>, sonst ist der Rest der commandref ab dieser Zeile fett. Selbiges dann nochmal in Zeile 20889.
Das wäre dir sicher auch noch aufgefallen, da du die Sachen mit PLC ja erst kürzlich integriert hast.