CCU2 Blue Screen nach Firmeware Update

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Benutzeravatar
jmaus
Beiträge: 9845
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 462 Mal
Danksagung erhalten: 1863 Mal
Kontaktdaten:

Re: CCU2 Blue Screen nach Firmeware Update

Beitrag von jmaus » 18.01.2018, 13:17

deimos hat geschrieben: Die ganzen statischen Sachen der WebUI werden alle bereits rein vom Lighttpd ausgeliefert. Dieser setzt auch korrekt ETag und Last-Modified.
Allerdings werden keine Cache-Control Header gesetzt, was insb. den Firefox dazu bringt JS und CSS recht aggressiv zu cachen.

Ich habe grade einen PR beim OCCU GitHub Projekt eingekippt, welches für JS und CSS entsprechende Cache-Header setzt. Das wird sich aber erst in der übernächsten Version positiv auswirken, weil die Header in der nächsten Version erst gesendet würden, aber der Browser das erst nach einem Forced Refresh mitbekommt, weil er hat das Zeug ja noch von dieser Version im Cache liegen.
Danke für den PR. Den habe ich bereits gesehen und werde ihn entsprechend mal testen und in RaspberryMatic dann einarbeiten. Zusätzlich könnte ich natürlich auch gleich noch ReGaHss anpassen und die gleichen Cache-Control header dort drin umsetzen, oder denkst du das das keinen Sinn macht? Momentan gibt ReGaHss ja immer "Cache-Control: no-store, no-cache" aus.
deimos hat geschrieben: Ich war auch etwas erstaunt zu sehen, dass das mit dem Versionsparameter teilweise schon vorhanden ist. Allerdings in mind. 3 verschiedenen Varianten (CCU Firmware Version, JSQuery-Version (auch bei CCU JS Dateien), große Zahl (Unix Timestamp, Hash? Keine Ahnung)). Irgendjemand bei eQ-3 muss sich die Gedanken also schon mal gemacht haben, aber dann leider nicht konsequent beendet haben.

Bevor man das Thema mit den Versionsnummer angeht, sollte man daher in meinen Augen mal diskutieren, auf welche Methode man das vereinheitlicht.
Das mit den unterschiedlichen Versionsparametern habe ich auch bereits gesehen und war auch selbst überrascht darüber :) Was die einheitliche Methode angeht so würde ich kurzerhand dafür plädieren einfach die CCU Firmwareversion dort jeweils einzusetzen. Die Frage wäre nur wie man an die Version an der jeweiligen stelle dann immer rankommt um diese dann als parameter ausliefern zu lassen.
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

Benutzeravatar
deimos
Beiträge: 5396
Registriert: 20.06.2017, 10:38
System: Alternative CCU (auf Basis OCCU)
Wohnort: Leimersheim
Hat sich bedankt: 121 Mal
Danksagung erhalten: 957 Mal
Kontaktdaten:

Re: CCU2 Blue Screen nach Firmeware Update

Beitrag von deimos » 18.01.2018, 14:17

Hi,
jmaus hat geschrieben: Zusätzlich könnte ich natürlich auch gleich noch ReGaHss anpassen und die gleichen Cache-Control header dort drin umsetzen, oder denkst du das das keinen Sinn macht? Momentan gibt ReGaHss ja immer "Cache-Control: no-store, no-cache" aus.
Kann ich nicht ohne weiteres beurteilen. "no-store, no-cache" sorgt ja prinzipiell dafür, dass es gar nicht gecached werden soll. Mit den Header vom PR würde das dann auf einmal gecached werden. Wenn das Verweise auf statische Dateien sind, wäre das vermutlich fein, bei Verweis auf dynamisches eher ungut.
Bevor du was änderst sollte man imho erstmal über das unten diskutieren.
jmaus hat geschrieben:
deimos hat geschrieben: Ich war auch etwas erstaunt zu sehen, dass das mit dem Versionsparameter teilweise schon vorhanden ist. Allerdings in mind. 3 verschiedenen Varianten (CCU Firmware Version, JSQuery-Version (auch bei CCU JS Dateien), große Zahl (Unix Timestamp, Hash? Keine Ahnung)). Irgendjemand bei eQ-3 muss sich die Gedanken also schon mal gemacht haben, aber dann leider nicht konsequent beendet haben.

Bevor man das Thema mit den Versionsnummer angeht, sollte man daher in meinen Augen mal diskutieren, auf welche Methode man das vereinheitlicht.
Das mit den unterschiedlichen Versionsparametern habe ich auch bereits gesehen und war auch selbst überrascht darüber :) Was die einheitliche Methode angeht so würde ich kurzerhand dafür plädieren einfach die CCU Firmwareversion dort jeweils einzusetzen. Die Frage wäre nur wie man an die Version an der jeweiligen stelle dann immer rankommt um diese dann als parameter ausliefern zu lassen.
Innerhalb der RegaHSS ist das vermutlich trivial, da einfach immer die Version auszugeben. (ggf. einmal statisch aus der /boot/version lesen, wenn die nicht sowieso schon bekannt ist)
Tricky wird es jetzt bei den statischen Dateien: Wäre da irgendein Build-System hintendran, wäre es auch wieder trivial, aber das ist ja scheinbar nicht der Fall.

Initial einfachster Weg: Statisch in die Datei schreiben. Ist dann aber gleich eine Wartungshölle.

Anderer Weg wären Server Side Includes (SSI). Auf einem Raspberry würde ich da keine Probleme sehen. Aber bei der Original CCU, eher schlecht...

Letzter Weg: Nicht statisch mit Script-Tag (bzw. Link-Tag bei CSS) einbinden, sondern mittels dynamischen Javascript Include (grob in diese Richtung: http://www.javascriptkit.com/javatutors ... tcss.shtml

Wirklich prickelnd sind alle Lösungen nicht, nicht ohne Grund sind ja auch die ganzen Build-Systeme für Webanwendungen entstanden.

Ich bin an der Stelle jetzt leider wieder beim eQ-3 Bashing: Egal welche Lösung es sein soll, sie sollte zügig sowohl in OCCU als auch in der Dev-Version der Original CCU sein. Der Umweg das erst in RaspberryMatic zu testen, dann in OCCU einzupflegen und vielleicht dann irgendwann auch in der Original CCU ist imho nicht zielführend und erzeugt Mehraufwand und potentielle Fehlerquellen, weil der ursprüngliche Patch dann immer wieder an die Weiterentwicklung angepasst werden muss. Daher bin ich klar der Meinung, dass das seinen Weg von internen Dev Sourcen bei eQ-3 über OCCU nach RaspberryMatic nehmen muss und nicht andersrum.

Viele Grüße
Alex

Gluehwurm
Beiträge: 12434
Registriert: 19.03.2014, 00:37
System: in Planung
Hat sich bedankt: 105 Mal
Danksagung erhalten: 380 Mal

Re: CCU2 Blue Screen nach Firmeware Update

Beitrag von Gluehwurm » 18.01.2018, 15:20

deimos hat geschrieben:... sie sollte zügig ...
Wenn man die bisherigen Zeiträume der Veröffentlichung von Updates (ohne die Fehlerkorrekturen) anschaut, wird vor Sommer nix mehr passieren. 8)

Gruß
Bruno

Benutzeravatar
deimos
Beiträge: 5396
Registriert: 20.06.2017, 10:38
System: Alternative CCU (auf Basis OCCU)
Wohnort: Leimersheim
Hat sich bedankt: 121 Mal
Danksagung erhalten: 957 Mal
Kontaktdaten:

Re: CCU2 Blue Screen nach Firmeware Update

Beitrag von deimos » 18.01.2018, 15:24

Hi,
Gluehwurm hat geschrieben:
deimos hat geschrieben:... sie sollte zügig ...
Wenn man die bisherigen Zeiträume der Veröffentlichung von Updates (ohne die Fehlerkorrekturen) anschaut, wird vor Sommer nix mehr passieren. 8)
Streiche "zügig", setze "annähernd zeitgleich"

Viele Grüße
Alex

Benutzeravatar
jmaus
Beiträge: 9845
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 462 Mal
Danksagung erhalten: 1863 Mal
Kontaktdaten:

Re: CCU2 Blue Screen nach Firmeware Update

Beitrag von jmaus » 18.01.2018, 16:09

deimos hat geschrieben:
jmaus hat geschrieben: Das mit den unterschiedlichen Versionsparametern habe ich auch bereits gesehen und war auch selbst überrascht darüber :) Was die einheitliche Methode angeht so würde ich kurzerhand dafür plädieren einfach die CCU Firmwareversion dort jeweils einzusetzen. Die Frage wäre nur wie man an die Version an der jeweiligen stelle dann immer rankommt um diese dann als parameter ausliefern zu lassen.
Innerhalb der RegaHSS ist das vermutlich trivial, da einfach immer die Version auszugeben. (ggf. einmal statisch aus der /boot/version lesen, wenn die nicht sowieso schon bekannt ist)
Tricky wird es jetzt bei den statischen Dateien: Wäre da irgendein Build-System hintendran, wäre es auch wieder trivial, aber das ist ja scheinbar nicht der Fall.
Du vergisst eins: die CCU2 setzt auch buildroot ein und buildroot, ist wie der name schon verrät auch ein Buildsystem :) Insofern ist das im Grunde recht einfach umzusetzen, wenn man denn weiss an welchen stellen.
deimos hat geschrieben: Initial einfachster Weg: Statisch in die Datei schreiben. Ist dann aber gleich eine Wartungshölle.

Anderer Weg wären Server Side Includes (SSI). Auf einem Raspberry würde ich da keine Probleme sehen. Aber bei der Original CCU, eher schlecht...

Letzter Weg: Nicht statisch mit Script-Tag (bzw. Link-Tag bei CSS) einbinden, sondern mittels dynamischen Javascript Include (grob in diese Richtung: http://www.javascriptkit.com/javatutors ... tcss.shtml

Wirklich prickelnd sind alle Lösungen nicht, nicht ohne Grund sind ja auch die ganzen Build-Systeme für Webanwendungen entstanden.
Wie gesagt, buildroot IST ein buildsystem und WebUI ist dabei im Grunde nur ein Paket über das dann ein Build läuft. Hab das nun mal entsprechend versucht anzupassen. Schau mal was dabei herausgekommen ist:

https://github.com/jens-maus/RaspberryM ... trol.patch

Hierbei werden dann im buildsystem alle XXX-WEBUI-VERSION-XXX marker gegen die jeweilige Version mittels einfachem "sed" aufruf getauscht und schwups sollten alle "?_version_=" parameter dann die richtige WebUI-Version hinten dran haben und das den Browser anleiten doch diese Dateien frisch vom server zu beziehen.

Werde das heute Abend mal testen und schauen ob das prinzipiell funktioniert. Vielleicht fällt dir noch die eine oder andere Datei (javascript, css) auf die ich übersehen habe? Und wie steht es eigentlich mit den statischen Bildern? Sollte ich da auch solche _version_ parameter hinzufügen um dann bei einer neuen Version zu erreichen das die Bilder nicht aus dem Cache genommen werden?
deimos hat geschrieben: Daher bin ich klar der Meinung, dass das seinen Weg von internen Dev Sourcen bei eQ-3 über OCCU nach RaspberryMatic nehmen muss und nicht andersrum.
Das mag vielleicht im Hinblick auf deine heutige Sicht auf diese Dinge korrekt sein - aus meiner Sicht ist es das nicht. Und patches upstream zu schicken damit diese übernommen werden ist nun auch nicht wirklich etwas neues oder unübliches, sondern im Hinblick auf viele OpenSource Projekte Tagesgeschäft.
RaspberryMatic 3.75.6.20240316 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

Benutzeravatar
deimos
Beiträge: 5396
Registriert: 20.06.2017, 10:38
System: Alternative CCU (auf Basis OCCU)
Wohnort: Leimersheim
Hat sich bedankt: 121 Mal
Danksagung erhalten: 957 Mal
Kontaktdaten:

Re: CCU2 Blue Screen nach Firmeware Update

Beitrag von deimos » 18.01.2018, 17:41

jmaus hat geschrieben: Du vergisst eins: die CCU2 setzt auch buildroot ein und buildroot, ist wie der name schon verrät auch ein Buildsystem :) Insofern ist das im Grunde recht einfach umzusetzen, wenn man denn weiss an welchen stellen.
Du hattest doch oben gesagt, dass kein Buildsystem vorhanden ist?!?
jmaus hat geschrieben: Hab das nun mal entsprechend versucht anzupassen. Schau mal was dabei herausgekommen ist:

https://github.com/jens-maus/RaspberryM ... trol.patch
Mit der entsprechenden Konzentration werde ich da erst am WE dazu kommen.
jmaus hat geschrieben:
deimos hat geschrieben: Daher bin ich klar der Meinung, dass das seinen Weg von internen Dev Sourcen bei eQ-3 über OCCU nach RaspberryMatic nehmen muss und nicht andersrum.
Das mag vielleicht im Hinblick auf deine heutige Sicht auf diese Dinge korrekt sein - aus meiner Sicht ist es das nicht.
Leider wieder so eine nebülöse Aussage, bei der nicht klar ist, ob deine Sicht deine Wunschvorstellung ist, oder ob das die offizielle Richtung von eQ-3 ist. Zerstört in meinen Augen leider etwas die Planungssicherheit bzgl. Homematic.
jmaus hat geschrieben: Und patches upstream zu schicken damit diese übernommen werden ist nun auch nicht wirklich etwas neues oder unübliches, sondern im Hinblick auf viele OpenSource Projekte Tagesgeschäft.
Patches: ja. Umstellungen an der Art und Weise wie etwas umgesetzt wird: nein. Weil dass hier im konkreten Beispiel notwendig macht, das neue Scripte mit dem gleichen Mechanismus erstellt werden, ansonsten kannst du da andauernd hinterher patchen.

Viele Grüße
Alex

thoralfbrandt
Beiträge: 61
Registriert: 10.02.2014, 12:18

Re: CCU2 Blue Screen nach Firmeware Update

Beitrag von thoralfbrandt » 17.03.2018, 20:34

Auf einem aktuellen MAC mit Chrome Browser: Taste control und reload drücken => läuft

Nordbus
Beiträge: 3
Registriert: 02.04.2018, 22:38

Re: CCU2 Blue Screen nach Firmeware Update

Beitrag von Nordbus » 02.04.2018, 22:41

Hatte bei meinem Safari dass selbe Problem: Auch nach Reset nur den Bluescreen und ggf. noch das weiße Rechteck mit "Laden". Auf der Pocket-App lief alles gut.
Dann hier im Forum com Cache-Reset gelesen. Gemacht und gut war wieder. Danke für Eure Hilfe.
Nun hab ich erstmal nen Backup von der CCU gemacht :-)

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“