Firmewareversion in Variable schreiben

Virtualisierte CCU für Raspberry Pi und Clones

Moderator: Co-Administratoren

juemuc
Beiträge: 7
Registriert: 22.12.2021, 19:06
System: CCU

Firmewareversion in Variable schreiben

Beitrag von juemuc » 22.12.2021, 19:18

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

alchy
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

Beitrag von alchy » 22.12.2021, 20:33

Schau doch mal, ob das bei piVCCU auch so geht, eine Ausgabe erfolgt?

Code: Alles auswählen

string momentan;
system.Exec("grep VERSION= /VERSION | cut -d= -f2", &momentan);  
WriteLine(momentan);
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.

juemuc
Beiträge: 7
Registriert: 22.12.2021, 19:06
System: CCU

Re: Firmewareversion in Variable schreiben

Beitrag von juemuc » 22.12.2021, 20:55

Hallo Alchy,
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
Es kommt kein Fehler, aber die Variable wird auch nicht gefüllt. Zum Testen habe ich natürlich die aktuelle Uhrzeit gesetzt

Kannst Du helfen?

Viele Grüße
Jürgen

Benutzeravatar
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

Beitrag von Roland M. » 22.12.2021, 21:03

Jallo Jürgen!
juemuc hat geschrieben:
22.12.2021, 20:55
Skript "dom.GetObject (ID_SYSTEM_VARIABLES).Get ("Version_aktuell").State (system.Exec("grep VERSION= /VERSION | cut -d= -f2"))" definiert

Es kommt kein Fehler, aber die Variable wird auch nicht gefüllt.
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:
  • 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,...

alchy
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

Beitrag von alchy » 22.12.2021, 21:10

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:

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

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.

juemuc
Beiträge: 7
Registriert: 22.12.2021, 19:06
System: CCU

Re: Firmewareversion in Variable schreiben

Beitrag von juemuc » 22.12.2021, 21:23

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:
system.Exec("grep VERSION_neu= /VERSION_neu | cut -d= -f2", &neu)
Viele Grüße
Jürgen

alchy
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

Beitrag von alchy » 22.12.2021, 21:36

die aktuell verfügbare Version online (CCU zumindest)

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);
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... :mrgreen:

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.

juemuc
Beiträge: 7
Registriert: 22.12.2021, 19:06
System: CCU

Re: Firmewareversion in Variable schreiben

Beitrag von juemuc » 22.12.2021, 22:10

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

juemuc
Beiträge: 7
Registriert: 22.12.2021, 19:06
System: CCU

Re: Firmewareversion in Variable schreiben

Beitrag von juemuc » 22.12.2021, 22:13

Hier noch das Skript, falls es jemand nutzen möchte:
string 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);
Viele Grüße
Jürgen

juemuc
Beiträge: 7
Registriert: 22.12.2021, 19:06
System: CCU

Re: Firmewareversion in Variable schreiben

Beitrag von juemuc » 23.12.2021, 16:11

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

Antworten

Zurück zu „piVCCU“