Firmewareversion in Variable schreiben
Moderator: Co-Administratoren
Firmewareversion in Variable schreiben
Hallo,
da ich zur Steuerung der HomeMatic-Geräte FHEM nutze, würde ich gerne die aktuelle Frmwareversion und ggf eine neue verfügbare Version in ein Variable schreiben, sodass ich diese dann übertragen kann.
Ist dies möglich?
Wenn ja, wie lautet das Skript?
Danke für Eure Hilfe
Jürgen
da ich zur Steuerung der HomeMatic-Geräte FHEM nutze, würde ich gerne die aktuelle Frmwareversion und ggf eine neue verfügbare Version in ein Variable schreiben, sodass ich diese dann übertragen kann.
Ist dies möglich?
Wenn ja, wie lautet das Skript?
Danke für Eure Hilfe
Jürgen
-
- Beiträge: 10754
- Registriert: 24.02.2011, 01:34
- System: CCU
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 673 Mal
Re: Firmewareversion in Variable schreiben
Schau doch mal, ob das bei piVCCU auch so geht, eine Ausgabe erfolgt?
Alchy
Code: Alles auswählen
string momentan;
system.Exec("grep VERSION= /VERSION | cut -d= -f2", &momentan);
WriteLine(momentan);
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.
Re: Firmewareversion in Variable schreiben
Hallo Alchy,
ja, damit wird die aktuelle Version ausgegeben. Ich habe nun versucht dies in ein Skript umzuwandeln. Leider ohne Erfolg.
Kannst Du helfen?
Viele Grüße
Jürgen
ja, damit wird die aktuelle Version ausgegeben. Ich habe nun versucht dies in ein Skript umzuwandeln. Leider ohne Erfolg.
- Systemvariable "Version_aktuell" definiert
- Programm "Versionsprüfung" definiert, welches immer um 00:01 Uhr ausgeführt werden soll
- Skript "dom.GetObject (ID_SYSTEM_VARIABLES).Get ("Version_aktuell").State (system.Exec("grep VERSION= /VERSION | cut -d= -f2"))" definiert
Kannst Du helfen?
Viele Grüße
Jürgen
- Roland M.
- Beiträge: 9804
- Registriert: 08.12.2012, 15:53
- System: CCU
- Wohnort: Graz, Österreich
- Hat sich bedankt: 252 Mal
- Danksagung erhalten: 1381 Mal
Re: Firmewareversion in Variable schreiben
Jallo Jürgen!
Also lieber über eine Hilfsvariable gehen:
string x;
system.Exec("...",&x);
dom.GetObject(...).State(x);
Roland
Wenn es auch syntaktisch richtig ist, die (Un)Logik der CCU mag selten verschachtelte Befehle.
Also lieber über eine Hilfsvariable gehen:
string x;
system.Exec("...",&x);
dom.GetObject(...).State(x);
Roland
Zur leichteren Hilfestellung bitte unbedingt beachten:
-----------------------------------------------------------------------
1. CCU2 mit ~100 Geräten (in Umstellung auf RaspberryMatic-OVA auf Proxmox-Server)
2. CCU2 per VPN mit ~50 Geräten (geplant: RaspberryMatic auf Charly)
3. CCU2 per VPN mit ~40 Geräten (geplant: RaspberryMatic auf CCU3)
CCU1, Test-CCU2, Raspi 1 mit kleinem Funkmodul, RaspberryMatic als VM unter Proxmox, Access Point,...
- Bezeichnung (HM-... bzw. HmIP-...) der betroffenen Geräte angeben (nicht Artikelnummer)
- Kurzbeschreibung des Soll-Zustandes (Was soll erreicht werden?)
- Kurzbeschreibung des Ist-Zustandes (Was funktioniert nicht?)
- Fehlermeldungen genau abschreiben, besser noch...
- Screenshots von Programmen, Geräteeinstellungen und Fehlermeldungen (direkt als jpg/png) einstellen!
-----------------------------------------------------------------------
1. CCU2 mit ~100 Geräten (in Umstellung auf RaspberryMatic-OVA auf Proxmox-Server)
2. CCU2 per VPN mit ~50 Geräten (geplant: RaspberryMatic auf Charly)
3. CCU2 per VPN mit ~40 Geräten (geplant: RaspberryMatic auf CCU3)
CCU1, Test-CCU2, Raspi 1 mit kleinem Funkmodul, RaspberryMatic als VM unter Proxmox, Access Point,...
-
- Beiträge: 10754
- Registriert: 24.02.2011, 01:34
- System: CCU
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 673 Mal
Re: Firmewareversion in Variable schreiben
Es sollte ein Fehler im >> Fehlerprotokoll << kommen
Nimm einfach mein Script von oben
1. Schreib oben eine Kommentarzeile rein, damit du das Script im Fehlerfall wiederfindest.
2. entferne die Writelinezeile oder kommentiere sie aus
3. und schreibe den Wert der Scriptvariablen momentan in die Sytemvariable.
[EDIT]
Also so:
ALchy
Nimm einfach mein Script von oben
1. Schreib oben eine Kommentarzeile rein, damit du das Script im Fehlerfall wiederfindest.
2. entferne die Writelinezeile oder kommentiere sie aus
3. und schreibe den Wert der Scriptvariablen momentan in die Sytemvariable.
[EDIT]
Also so:
Code: Alles auswählen
! aktuell installierte Firmwareversion ermitteln aus Programm Versionsprüfung
string momentan;
system.Exec("grep VERSION= /VERSION | cut -d= -f2", &momentan);
dom.GetObject (ID_SYSTEM_VARIABLES).Get ("Version_aktuell").State (momentan);
ALchy
Zuletzt geändert von alchy am 22.12.2021, 21:11, insgesamt 1-mal geändert.
Grund: [EDIT]Script eingefügt
Grund: [EDIT]Script eingefügt
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.
Re: Firmewareversion in Variable schreiben
Hallo Alchy,
super. Der Tipp hat geholfen. Jetzt fehlt mir nur noch der Wert für die neue Version, sofern diese verfügbar aber noch nicht installiert ist.
Hast Du hierfür auch noch einen Tipp?
quasi so:
Jürgen
super. Der Tipp hat geholfen. Jetzt fehlt mir nur noch der Wert für die neue Version, sofern diese verfügbar aber noch nicht installiert ist.
Hast Du hierfür auch noch einen Tipp?
quasi so:
Viele Grüßesystem.Exec("grep VERSION_neu= /VERSION_neu | cut -d= -f2", &neu)
Jürgen
-
- Beiträge: 10754
- Registriert: 24.02.2011, 01:34
- System: CCU
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 673 Mal
Re: Firmewareversion in Variable schreiben
die aktuell verfügbare Version online (CCU zumindest)
Kann sein, das du mittlerweile für CCU Serial ###### die eintragen musst die du findest wenn du z.B. au fder Klickibunti Startseite auf Hilfe drückst oben rechts.
Un dwenn du eine Ausgabe erhältst, gilt das wieder von oben 1.2.3...
Alchy
Code: Alles auswählen
string online;
string cmd = "wget -qO- 'https://update.homematic.com/firmware/download?cmd=js_check_version&version=1234&product=HM-CCU3&serial=######'";
system.Exec(cmd, &online);
online = online.StrValueByIndex("'",1);
WriteLine(online);
Un dwenn du eine Ausgabe erhältst, gilt das wieder von oben 1.2.3...
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.
Re: Firmewareversion in Variable schreiben
Hallo alchy,
auch das funktioniert. Die Variablen werden gefüllt.
Leider scheint der Wert aus der ersten Variable für FHEM nicht lesbar zu sein. Aber das ist wohl eher ein FHEM-Problem, da in der CCU der Wert genauso aussieht, wie in der 2. Variable.
Danke für Deine Hilfe.
Viele Grüße
Jürgen
auch das funktioniert. Die Variablen werden gefüllt.
Leider scheint der Wert aus der ersten Variable für FHEM nicht lesbar zu sein. Aber das ist wohl eher ein FHEM-Problem, da in der CCU der Wert genauso aussieht, wie in der 2. Variable.
Danke für Deine Hilfe.
Viele Grüße
Jürgen
Re: Firmewareversion in Variable schreiben
Hier noch das Skript, falls es jemand nutzen möchte:
Jürgen
Viele Grüßestring V_a;
system.Exec("grep VERSION= /VERSION | cut -d= -f2", &V_a);
dom.GetObject (ID_SYSTEM_VARIABLES).Get ("Version_aktuell").State (V_a);
string V_n;
string cmd = "wget -qO- 'https://update.homematic.com/firmware/d ... U3&serial='########'";
system.Exec(cmd, &V_n);
V_n = V_n.StrValueByIndex("'",1);
dom.GetObject (ID_SYSTEM_VARIABLES).Get ("Version_neu").State (V_n);
Jürgen
Re: Firmewareversion in Variable schreiben
Hallo zusammen,
in der ersten Variable scheint der Wert am Ende mit zwei CRLF zu stehen. Wenn ich das Skript teste und die Werte mit WriteLine() ausgebe, steht der Cursor bei der ersten Variable 2 Zeilen tiefer (2 CRLF?) und bei der zweiten Variable nur eine Zeile (1 CRLF?).
Wie kann ich bei der ersten Variable das 2. CRLF entfernen?
Viele Grüße
Jürgen
in der ersten Variable scheint der Wert am Ende mit zwei CRLF zu stehen. Wenn ich das Skript teste und die Werte mit WriteLine() ausgebe, steht der Cursor bei der ersten Variable 2 Zeilen tiefer (2 CRLF?) und bei der zweiten Variable nur eine Zeile (1 CRLF?).
Wie kann ich bei der ersten Variable das 2. CRLF entfernen?
Viele Grüße
Jürgen