Skript für neue Firmware

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Benutzeravatar
robbi77
Beiträge: 13860
Registriert: 19.01.2011, 19:15
System: CCU
Wohnort: Landau
Hat sich bedankt: 182 Mal
Danksagung erhalten: 739 Mal

Re: Skript für neue Firmware

Beitrag von robbi77 » 30.08.2015, 22:34

Post von dtp: ... Wenn man eh nur sporadisch ...
Post von Erik: ...wer seine Geräte immer ...
Erkenne den Unterschied ...

(Und wieder ein sinnloser Post von mir)


Gruß
Roberto
Bei Risiken und Nebenwirkungen fragen Sie den Elektriker Ihres geringsten Mißtrauens!
http://www.eq-3.de/service/downloads.html
Tips und Tricks für Anfänger: viewtopic.php?t=22801
Programmlogik: viewtopic.php?f=31&t=4251
Webui-Handbuch: https://www.eq-3.de/downloads/download/ ... h_eQ-3.pdf
Script und Linksammlung: viewtopic.php?f=26&t=27907
Troll des Forums ...

dtp
Beiträge: 10660
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 321 Mal
Danksagung erhalten: 501 Mal

Re: Skript für neue Firmware

Beitrag von dtp » 31.08.2015, 16:13

thkl hat geschrieben:Ok here we go:
Zuerst mal eine System Variable anlegen. Name NewFirmware ... Typ Logikwert

Script:

Code: Alles auswählen

string stdout;string stderr;string cmd;cmd = 'cat /boot/VERSION';
system.Exec(cmd, &stdout, &stderr);
string version = stdout.StrValueByIndex("=",1);
cmd = 'wget -qO- http://update.homematic.com/firmware/download?cmd=js_check_version&version=12345&product=HM-CCU2&serial=12345';
system.Exec(cmd, &stdout, &stderr);
string newversion = stdout.StrValueByIndex("'",1);
if (newversion<>version) {
 dom.GetObject("NewFirmware").State(1);
} else {
 dom.GetObject("NewFirmware").State(0);
}
Die CCU zeigt das Vorhandensein neuer Firmware ja im WebUI und über die grün blinkende Info-LED an. Daher müsste es doch möglich sein, diese Werte gezielt per Skript abzufragen ohne extra Zugriff auf den eQ-3-Server und den obigen Vergleich. Wäre dann evtl. auch ein Punkt für's allinclusive-Skript von Alchy, auch wenn es jetzt nicht unbedingt um eine Servicemeldung im eigentlichen Sinne geht.

Gruß,

Thorsten
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

alchy
Beiträge: 10754
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 673 Mal

Re: Skript für neue Firmware

Beitrag von alchy » 31.08.2015, 18:19

Das Script funktioniert nicht mehr, genau wegen dem String-Vergleich.
Die Werte umwandeln und es sollte gehen.

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

Benutzeravatar
thkl
Beiträge: 2765
Registriert: 15.07.2013, 13:32
Wohnort: dickes B
Danksagung erhalten: 5 Mal

Re: Skript für neue Firmware

Beitrag von thkl » 31.08.2015, 19:35

So geht wieder ...

Code: Alles auswählen

string stdout;string stderr;string cmd;cmd = 'cat /boot/VERSION';
system.Exec(cmd, &stdout, &stderr);
string version = stdout.StrValueByIndex("=",1);
cmd = 'wget -qO- http://update.homematic.com/firmware/download?cmd=js_check_version&version=12345&product=HM-CCU2&serial=12345';
system.Exec(cmd, &stdout, &stderr);
string newversion = stdout.StrValueByIndex("'",1);
if (version.Find(newversion)==0) {
 WriteLine("No Update");
} else {
 WriteLine("New Version");
}

erik
Beiträge: 776
Registriert: 31.10.2007, 13:32
Hat sich bedankt: 6 Mal
Danksagung erhalten: 6 Mal

Re: Skript für neue Firmware

Beitrag von erik » 31.08.2015, 21:23

Hi Thomas,

danke für die Korrektur. Script funktioniert nun wieder.

@Admin: Thread könnte in die Tipps und Tricks verschoben werden :-.)

Erik

buempi
Ehrenmitglied
Beiträge: 12194
Registriert: 29.07.2006, 15:58
Wohnort: Schweiz
Danksagung erhalten: 5 Mal

Re: Skript für neue Firmware

Beitrag von buempi » 31.08.2015, 21:32

Hallo Erik
erik hat geschrieben:@Admin: Thread könnte in die Tipps und Tricks verschoben werden :-.)
... es wäre sicher einen Eintrag dort Wert. In die Rubrik "Tipps und Tricks" passt der Thread aber so nicht rein, weil dort fertige Lösungen vorgestellt werden sollten, über die nachher allenfalls diskutiert wird; aber nicht der ganze Weg der Lösungssuche und -Findung.

Wenn also jemand die fertige Lösung dort in einem neuen Thread vorstellen möchte ....

Viele Grüsse
Bümpi

fraeggle
Beiträge: 114
Registriert: 16.04.2018, 20:09
Hat sich bedankt: 17 Mal
Danksagung erhalten: 11 Mal

Re: Skript für neue Firmware

Beitrag von fraeggle » 27.01.2019, 15:38

Ich weiß... Alter Thread... Aber seit CCU3 läuft das nicht mehr. fand das immer praktisch, da ich es mir im IOBroker anzeigen ließ.
Gibt es mittlerweile wieder ein funktionierendes Script?

peissl.at
Beiträge: 1295
Registriert: 16.05.2010, 12:39
Wohnort: Südwestlich von Graz
Danksagung erhalten: 9 Mal

Re: Skript für neue Firmware

Beitrag von peissl.at » 27.01.2019, 18:09

Hallo,

liegt vermutlich daran, dass die URL für die CCU-2 ist.

Sonnige Grüße!
Robert

alchy
Beiträge: 10754
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 673 Mal

Re: Skript für neue Firmware

Beitrag von alchy » 27.01.2019, 18:52

peissl.at hat geschrieben:
27.01.2019, 18:09
liegt vermutlich daran, dass die URL für die CCU-2 ist.
Nö, nicht direkt jedenfalls.
Ich würde mal sagen, das der wget Aufruf so nicht mehr funzt.
Probier mal so:

Code: Alles auswählen

string stdout;string stderr;string cmd;cmd = "cat /boot/VERSION";
system.Exec(cmd, &stdout, &stderr);
string version = stdout.StrValueByIndex("=",1);
cmd = "wget -qO- 'http://update.homematic.com/firmware/download?cmd=js_check_version&version=12345&product=HM-CCU2&serial=12345'";
system.Exec(cmd, &stdout, &stderr);
string newversion = stdout.StrValueByIndex("'",1);
if (version.Find(newversion)==0) {
 WriteLine("No Update");
} else {
 WriteLine("New Version");
}

CCU3 Besitzer müssen natürlich den Link für die CCU3 nehmen in dem sie im Link &product=HM-CCU3 verwenden.

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

fraeggle
Beiträge: 114
Registriert: 16.04.2018, 20:09
Hat sich bedankt: 17 Mal
Danksagung erhalten: 11 Mal

Re: Skript für neue Firmware

Beitrag von fraeggle » 17.11.2019, 22:02

Da mich Tibin in einem anderen Thread darum gebeten hatte...

Wenn ich Alchys vorschlag nehme:

Code: Alles auswählen

string stdout;string stderr;string cmd;cmd = "cat /boot/VERSION";
system.Exec(cmd, &stdout, &stderr);
string version = stdout.StrValueByIndex("=",1);
cmd = "wget -qO- 'http://update.homematic.com/firmware/download?cmd=js_check_version&version=12345&product=HM-CCU3&serial=12345'";
system.Exec(cmd, &stdout, &stderr);
string newversion = stdout.StrValueByIndex("'",1);
if (version.Find(newversion)==0) {
 dom.GetObject("FW.Update").State("false");  
 !WriteLine("No Update");
} else {
  dom.GetObject("FW.Update").State("true");  
 !WriteLine("New Version");
}
WriteLine(version);         <---- Damit ich die Versionen sehe
WriteLine(newversion);   <---- Damit ich die Versionen sehe
kommt folgende Ausgabe

Ausgabe:
3.47.22.20191026
PRODUCT
3.47.22

Da sich oft nur das "Datum" ändert, sagt das Script selten, dass es eine neue SW gibt. Ich weiß nicht, warum die Abfrage auf eine neue FW nur die kurze Ausgabe ergibt.

Gruß Peter
Zuletzt geändert von alchy am 17.11.2019, 22:09, insgesamt 1-mal geändert.
Grund: Code in Codetags posten

Antworten

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