Geräte-Firmware-Update Verfügbarkeit auf Startseite ausblenden

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

jp112sdl
Beiträge: 12085
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 847 Mal
Danksagung erhalten: 2139 Mal
Kontaktdaten:

Geräte-Firmware-Update Verfügbarkeit auf Startseite ausblenden

Beitrag von jp112sdl » 12.06.2021, 09:25

Basierend auf dem Thread Wie bekomme ich ... die FW-Updatehinweise weg stelle ich hier noch mal in einem separaten Beitrag das Skript (und ggf. künftige Anpassungen) zur Verfügung.

Funktioniert mit CCU Firmware 3.57.5 (orig. eQ-3 und RaspberryMatic) - andere Versionen sollten auch gehen, habe ich jedoch nicht getestet.

Mit diesem Skript ist es möglich, die Anzeige "Neue Geräte-Firmware verfügbar" für bestimmte Gerätetypen sowie Firmware-Versionen auf der Starteseite auszublenden.
So stört mich u.a. der Hinweis auf Versionen, die ich ohnehin nie einspielen werde.
Bildschirmfoto 2021-06-12 um 09.17.21.png
Was zu tun ist:

1.) Eine Systemvariable namens "HideDeviceFirmwareUpdateInfo" vom Typ "Zeichenkette" anlegen und dort mit ; getrennt die Gerätetypen reinschreiben (z.B. HM-ES-PMSw1-Pl;HM-CC-RT-DN;), deren FW Updates nicht mehr auf der Startseite angezeigt werden sollen.

1.a) Soll nur eine bestimmte Firmware-Version ausgeblendet werden, so ist diese mit einem Komma nach dem Gerätetyp anzugeben.

Beispiel:
Vom HM-ES-PMSw1-Pl wird nur FW Version 2.6.0 ausgeblendet.
(Sollte es irgendwann mal eine 2.7 geben, würde diese wieder angezeigt werden!)

Vom HM-CC-RT-DN werden alle Firmware-Update ausgeblendet.
Bildschirmfoto 2021-06-11 um 23.13.17.png

2.) Das Skript (regelmäßig/zeitgesteuert) auf der CCU ausführen:

Code: Alles auswählen

object sv=dom.GetObject(ID_SYSTEM_VARIABLES).Get("HideDeviceFirmwareUpdateInfo");

if (sv) {
  
  ! URL zusammenbauen, um die echte Firmwareliste vom eQ-3 Server zu holen, anschliessend mit curl runterladen
  string out;
  string err;
  system.Exec("cat /boot/VERSION|grep VERSION|awk -F= '{print$2}'", &out, &err);
  string ccufw = out.Replace("\r","").Replace("\n","");
  string sDate = system.Date("%s"); 
  
  string url = "http://ccu3-update.homematic.com/firmware/api/firmware/search/DEVICE?product=HM-CCU3&version="#ccufw#"&ts="#sDate;
  string downloadcmd = "curl  -m 8 '"#url#"' > /usr/local/devlist.js";
  out="";err="";
  system.Exec(downloadcmd, &out, &err);
  WriteLine(out#" "#err);
  
  ! die heruntergeladene Datei liegt nun unter /usr/local/devlist.js
  ! ggf. Symlink nach /www/ise anlegen
  out="";err="";
  system.Exec("if [ -e /usr/local/devlist.js ]; then if [ ! -e /www/ise/devlist.js ]; then mount -o remount,rw / ; ln -s /usr/local/devlist.js /www/ise/devlist.js ; mount -o remount,ro / ; echo 'Symlink angelegt'; else echo 'Symlink existiert'; fi; else echo '/usr/local/devlist.js existiert nicht. Abbruch'; fi", &out, &err);
  WriteLine(out#" "#err);

  ! ggf. webui.js anpassen, um nun die FW Infos von der lokalen Datei zu laden
  out="";err="";
  system.Exec(^webuiSearch='[[:space:]]*script.src[[:space:]]=[[:space:]]*this.m_URLServer[[:space:]]+[[:space:]]"/firmware/api/firmware/search/DEVICE?product=HM-CCU"+getProduct()+"&version="+WEBUI_VERSION' ; webuiInsert='script.src = "/ise/devlist.js";' ; webuiFile=/www/webui/webui.js ; if [ -z `grep -n "/ise/devlist.js" $webuiFile | cut -f1 -d:` ]; then echo "Anpassung in webui.js fehlt."; l=`grep -n $webuiSearch $webuiFile | cut -f1 -d:` ; if [ ! -z $l ]; then echo "OK... fuehre Aenderungen durch"; mount -o remount,rw / ; l=$((l+1)) ; sed -i "${l}i $webuiInsert" $webuiFile ; mount -o remount,ro / ; echo "Anpassungen an webui.js erledigt."; fi ; else echo "Keine Anpassungen an webui.js notwendig."; fi^, &out, &err);
  WriteLine(out#" "#err);

  string devTypesRemove=sv.Value();
  string devType;
  foreach(devType, devTypesRemove.Split(";")) {
    string devVers="0";
    if (devType.Contains(",") == true) {
      integer pos=devType.Find(",");
      devVers=devType.Substr(pos+1,devType.Length()-pos);
      devType=devType.Substr(0,pos);
    }
    
    !jetzt noch die Geraetebezeichnungen umbenennen (XYZ voranstellen), so dass diese nicht mehr gefunden werden koennen
    out="";err="";
    
    if (devVers == "0") {
      WriteLine("Ausschluss für "#devType#" (alle Firmware-Versionen)");
      system.Exec(^sed -i 's/\"^#devType#^/\"XYZ^#devType#^/g' /usr/local/devlist.js^, &out, &err);
    } else {
      WriteLine("Ausschluss für "#devType#" (nur FW Version "#devVers#")");
      system.Exec(^if [ `grep -n {\"type\":\"^#devType#^\",\"version\":\"^#devVers#^\"} /usr/local/devlist.js` ]; then sed -i 's/\"^#devType#^/\"XYZ^#devType#^/g' /usr/local/devlist.js; fi^, &out, &err);
    }
    WriteLine(out#" "#err);
  }
  
  WriteLine("ALL DONE");

} else {
  WriteLine ("Systemvariable [Zeichenkette] 'NoDeviceFirmware' existiert nicht");
}
Ein paar Fehler-Fälle habe ich abgefangen, jedoch sicher längst nicht alle.

Um die Sache rückgängig zu machen, ist in der Datei /www/webui/webui.js die Zeile
script.src = "/ise/devlist.js";
suchen und entfernen.

Alle anderen vom Skript ausgeführten Modifikationen sind nicht weiter schädlich.

30.08.02023 Anpassung für CCU Version 3.71.x, Zeile 26:

Code: Alles auswählen

 system.Exec(^webuiSearch='[[:space:]]*script.src[[:space:]]=[[:space:]]*this.m_URLServer[[:space:]]+[[:space:]]"/firmware/api/firmware/search/DEVICE?product=HM-CCU"[[:space:]]+[[:space:]]getProduct()[[:space:]]+[[:space:]]"&version="[[:space:]]+[[:space:]]*WEBUI_VERSION' ; webuiInsert='script.src = "/ise/devlist.js";' ; webuiFile=/www/webui/webui.js ; if [ -z `grep -n "/ise/devlist.js" $webuiFile | cut -f1 -d:` ]; then echo "Anpassung in webui.js fehlt."; l=`grep -n $webuiSearch $webuiFile | cut -f1 -d:` ; if [ ! -z $l ]; then echo "OK... fuehre Aenderungen durch"; mount -o remount,rw / ; l=$((l+1)) ; sed -i "${l}i $webuiInsert" $webuiFile ; mount -o remount,ro / ; echo "Anpassungen an webui.js erledigt."; fi ; else echo "Keine Anpassungen an webui.js notwendig."; fi^, &out, &err);
Zuletzt geändert von jp112sdl am 30.08.2023, 21:30, insgesamt 2-mal geändert.

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

mhr
Beiträge: 107
Registriert: 12.02.2015, 20:08
System: CCU
Hat sich bedankt: 42 Mal
Danksagung erhalten: 1 Mal

Re: Geräte-Firmware-Update Verfügbarkeit auf Startseite ausblenden

Beitrag von mhr » 13.06.2021, 15:46

Hallo Jerome,

funktioniert auch auf einer originalen CCU2 mit Firmware 2.57.5, wenn man im Script zweimal ccu3 in ccu2 ändert.
Allerdings lässt sich das Script in einem Programm nicht speichern, aber nach "Script testen" ist der Update-Hinweis auf der Startseite weg. Danke dafür.
Gruß
mhr

jp112sdl
Beiträge: 12085
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 847 Mal
Danksagung erhalten: 2139 Mal
Kontaktdaten:

Re: Geräte-Firmware-Update Verfügbarkeit auf Startseite ausblenden

Beitrag von jp112sdl » 13.06.2021, 15:50

mhr hat geschrieben:
13.06.2021, 15:46
Allerdings lässt sich das Script in einem Programm nicht speichern,
Inwiefern?

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

mhr
Beiträge: 107
Registriert: 12.02.2015, 20:08
System: CCU
Hat sich bedankt: 42 Mal
Danksagung erhalten: 1 Mal

Re: Geräte-Firmware-Update Verfügbarkeit auf Startseite ausblenden

Beitrag von mhr » 13.06.2021, 16:35

Habe folgendes Programm angelegt:
Bild
Nach dem Speichern ist das Scriptfenster leer.
Dateianhänge
Script.JPG
Gruß
mhr

MichaelN
Beiträge: 9562
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 696 Mal
Danksagung erhalten: 1608 Mal

Re: Geräte-Firmware-Update Verfügbarkeit auf Startseite ausblenden

Beitrag von MichaelN » 15.06.2021, 09:15

Beim testen ist mir noch aufgefallen, das der Vergleich casesensitiv ist.
Der Dialog hatte mir HMIP-PSM angezeigt, in der Liste steht aber wohl HmIP-PSM drin. Daher hat es dann erst im 2. Anlauf geklappt :wink:
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

MichaelN
Beiträge: 9562
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 696 Mal
Danksagung erhalten: 1608 Mal

Re: Geräte-Firmware-Update Verfügbarkeit auf Startseite ausblenden

Beitrag von MichaelN » 15.06.2021, 09:24

mhr hat geschrieben:
13.06.2021, 16:35
nach dem Speichern ist das Scriptfenster leer.
@jp112sdl:

Ich kann dieses Verhalten auf Original CCU FW bestätigen. Der Editor nimmt die Änderungen nicht an. Das Skript ist offensichtlich fehlerfrei.
Aber der WebUI-Editor mag das ^ nicht. Scheint ein Bug zu sein, den Jens in der RM beseitigt hat?!

Workaround: Blacks SDV nutzen
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

jp112sdl
Beiträge: 12085
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 847 Mal
Danksagung erhalten: 2139 Mal
Kontaktdaten:

Re: Geräte-Firmware-Update Verfügbarkeit auf Startseite ausblenden

Beitrag von jp112sdl » 15.06.2021, 09:36

MichaelN hat geschrieben:
15.06.2021, 09:24
Ich kann dieses Verhalten auf Original CCU FW bestätigen. Der Editor nimmt die Änderungen nicht an.
Kannst ja mal ein Skript mit einem simplen system.Exec(^echo^); versuchen zu speichern.

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

MichaelN
Beiträge: 9562
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 696 Mal
Danksagung erhalten: 1608 Mal

Re: Geräte-Firmware-Update Verfügbarkeit auf Startseite ausblenden

Beitrag von MichaelN » 15.06.2021, 09:38

So ähnlich habe ich das ja getestet. Im Systemprotokoll landet:

Code: Alles auswählen

Jun 15 09:37:16 ccu3-webui local0.err ReGaHss: ERROR: SyntaxError: ^);^; [ParseProgram():iseESP.cpp:387]
Jun 15 09:37:16 ccu3-webui local0.err ReGaHss: ERROR: SyntaxError: Error 1 at row 1 col 88 near ^^);^;^M  [SyntaxError():iseESP.cpp:1137]
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

jp112sdl
Beiträge: 12085
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 847 Mal
Danksagung erhalten: 2139 Mal
Kontaktdaten:

Re: Geräte-Firmware-Update Verfügbarkeit auf Startseite ausblenden

Beitrag von jp112sdl » 15.06.2021, 09:44

Ja dann wird wohl in RM irgendwas anders sein.
Hab nur das hier auf die Schnelle gefunden: https://github.com/jens-maus/RaspberryMatic/issues/859

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

MichaelN
Beiträge: 9562
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 696 Mal
Danksagung erhalten: 1608 Mal

Re: Geräte-Firmware-Update Verfügbarkeit auf Startseite ausblenden

Beitrag von MichaelN » 15.06.2021, 09:47

Das habe ich auch gefunden. Bezieht sich aber nicht auf den Editor.
Nur um sicher zugehen: unter RM kannst Du im WebUI-Editor das Skript eingeben und im Programm speichern?
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“