HomeMatic Firmware-Update als Pushover senden lassen

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

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

Re: HomeMatic Firmware-Update als Pushover senden lassen

Beitrag von alchy » 24.11.2016, 09:06

Hirschcom hat geschrieben:wenn ich die Nachricht nun über das email addon haben möchte wie leg ich das am besten an ?
In dem du statt der WriteLines die entsprechenden Befehle absetzt.
Wie ich oben schrieb, ist die Reaktion auf das Script dir überlassen.
Ich habe das Script leicht modifiziert, um das zu vereinfachen
CCU2&serial=12345" sind anzupassen

Code: Alles auswählen

! Firmwareupdate auslesen und reagieren (c) by Alchy
string slist = "";
dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:1.CMD_SETS").State("cat /boot/VERSION");
dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
var sold = dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:1.CMD_RETS").State().StrValueByIndex("=",1);
var url = "https://update.homematic.com/firmware/download?cmd=js_check_version&version=12345&product=HM-CCU2&serial=12345";
dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:2.CMD_SETS").State("wget -q -O - '"#url#"'");
dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:2.CMD_QUERY_RET").State(1);
var snew = dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:2.CMD_RETS").State().StrValueByIndex("'",1);
if (sold.Find(snew)==0) {
slist = "kein Update, weil alt: "#sold #" und neu "#snew;
} else {
slist = "neues Update, weil alt: "#sold #" und neu "#snew;
}

WriteLine(slist);
Gibt dir das Ergebnis auf den Screen aus, wenn du es unter Script testen oder im Executer ausführst.
Wenn du statt der WriteLIne Zeile die Zeile

Code: Alles auswählen

dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:1.CMD_EXEC").State("/etc/config/addons/email/email 01 '"#slist# "'");
in das Script einfügst, wird dir das Ergebnis des Scriptdurchlaufs per Mail zugestellt.
Aber nur WENN du:
die Zeile:

Code: Alles auswählen

set serviceliste [encoding convertfrom utf-8 [lindex $argv 1]]
im TCL Reiter als erste Zeile eingefügt hast
und
in der Mailvorlage 01

Code: Alles auswählen

$serviceliste


stehen hast.

Willst du eine Nachricht über pushover bekommen. Nimmst du ebenso obiges Script und ersetzt die WriteLine Zeile durch

Code: Alles auswählen

dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:1.CMD_EXEC").State("extra/curl -s -k -d token=++++++++++++ -d user=+++++++++++++++ -d message='"#slist#"', -d priority=1 http://api.pushover.net/1/messages.json");
und gibst deine Daten des Pushover accounts ein.

Willst du die Ausgabe des Scriptes in eine Systemvariable haben, dann ersetzt du die WriteLine Zeile durch:

Code: Alles auswählen

dom.GetObject(ID_SYSTEM_VARIABLES).Get("Name_Systemvariable_Typ Zeichenkette").State(slist); 
wobei du die Systemvariable (im Script mit Namen: Name_Systemvariable_Typ Zeichenkette natürlich vorher angelegt haben musst.

usw.

Alchy
Zuletzt geändert von alchy am 28.01.2017, 22:00, insgesamt 2-mal geändert.

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.

Sunny77
Beiträge: 112
Registriert: 13.08.2014, 17:26
System: CCU
Hat sich bedankt: 2 Mal
Danksagung erhalten: 1 Mal

Re: HomeMatic Firmware-Update als Pushover senden lassen

Beitrag von Sunny77 » 16.01.2017, 18:59

Hi Alchy,

Hervorragend deine Hilfe hier.
Ich glaube mit deiner Beschreibung bekomme ich es schonmal hin.

Frage: Was wird den in die Variable geschrieben? Der aktuelle Stand oder nur, wenn ein Update vorhanden ist?


Gesendet von iPad mit Tapatalk

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

Re: HomeMatic Firmware-Update als Pushover senden lassen

Beitrag von alchy » 16.01.2017, 22:51

Mal das Script ausgeführt?
Also das mit der WriteLine Zeile. Genau das wird gespeichert. Willst du das anders? Dann schreib einfach was du gerne hättest.

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
Murmelbaerchen69
Beiträge: 274
Registriert: 01.12.2013, 22:55
Wohnort: @home

Re: HomeMatic Firmware-Update als Pushover senden lassen

Beitrag von Murmelbaerchen69 » 28.01.2017, 14:19

Hallo Alchi,

wenn ich per Push benachrichtigt werden möchte, das ein update verfügbar ist, würde das so funktionieren:

Code: Alles auswählen

! Firmwareupdate auslesen und reagieren (c) by Alchy
string slist = "";
dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:1.CMD_SETS").State("cat /boot/VERSION");
dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
var sold = dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:1.CMD_RETS").State().StrValueByIndex("=",1);
var url = "http://update.homematic.com/firmware/download?cmd=js_check_version&version=12345&product=HM-CCU2&serial=12345";
dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:2.CMD_SETS").State("wget -q -O - '"#url#"'");
dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:2.CMD_QUERY_RET").State(1);
var snew = dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:2.CMD_RETS").State().StrValueByIndex("'",1);
if (sold.Find(snew)==0) {
slist = "kein Update, weil alt: "#sold #" und neu "#snew;
} else {
slist = "neues Update, weil alt: "#sold #" und neu "#snew;
dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:1.CMD_EXEC").State("curl -s -k -d token=++++++++++++ -d user=+++++++++++++++ -d message='"#slist#"', -d priority=1 http://api.pushover.net/1/messages.json");
}
dom.GetObject(ID_SYSTEM_VARIABLES).Get("CCU-Update").State(tmsA);
Gruß Ralf
Zuletzt geändert von alchy am 23.12.2019, 22:14, insgesamt 1-mal geändert.
Grund: curl Aufruf angepasst
Das soll ein neuer Computer sein ? Warum steht den auf der Tastatur "ALT" ?

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

Re: HomeMatic Firmware-Update als Pushover senden lassen

Beitrag von alchy » 28.01.2017, 18:33

Soll das eine Mitteilung, oder ein Frage sein?
Deine letzte Zeile bleibt aber in jedem Falle ohne Funktion.

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.

Murmelbaerchen6903
Beiträge: 22
Registriert: 04.12.2016, 17:27

Re: HomeMatic Firmware-Update als Pushover senden lassen

Beitrag von Murmelbaerchen6903 » 28.01.2017, 21:52

Eher als Frage. Die letzte Zeile muss natürlich mit #slist# befüllt werden. Hatte die aus meinem Programm rauskopiert, welches schon umgestellt ist.

-->getippt auf meinem Note 4<--

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

Re: HomeMatic Firmware-Update als Pushover senden lassen

Beitrag von alchy » 28.01.2017, 22:03

Dann denke ich mal ja lies mal >> H I E R <<

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.

Murmelbaerchen6903
Beiträge: 22
Registriert: 04.12.2016, 17:27

Re: HomeMatic Firmware-Update als Pushover senden lassen

Beitrag von Murmelbaerchen6903 » 28.01.2017, 22:08

Ok, danke. Dann warte ich mal auf ein Update [emoji1]

-->getippt auf meinem Note 4<--

Benutzeravatar
Dragonfly
Beiträge: 1249
Registriert: 04.01.2010, 11:40
Wohnort: Tyrol
Hat sich bedankt: 1 Mal
Danksagung erhalten: 4 Mal
Kontaktdaten:

Re: HomeMatic Firmware-Update als Pushover senden lassen

Beitrag von Dragonfly » 16.06.2017, 15:45

Da RaspberryMatic sein Update ja von anderer Stelle bezieht habe ich noch eine Kleinigkeit angefügt/rausgeschnitten:

Code: Alles auswählen

! CCU-Hardware
if (dom.GetObject("Hardware").Value() == 0) {var url = "http://update.homematic.com/firmware/download?cmd=js_check_version&version=12345&product=HM-CCU2&serial=12345";};
if (dom.GetObject("Hardware").Value() == 1) {var url = "https://gitcdn.xyz/repo/jens-maus/RaspberryMatic/master/release/LATEST-VERSION.js";};
			
    ! Firmwareupdate auslesen und reagieren (c) by Alchy
    dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("cat /boot/VERSION");
    dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
    var sold = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State().StrValueByIndex("=",1);
    dom.GetObject("CUxD.CUX2801001:2.CMD_SETS").State("wget -q -O - '"#url#"'");
    dom.GetObject("CUxD.CUX2801001:2.CMD_QUERY_RET").State(1);
    var snew = dom.GetObject("CUxD.CUX2801001:2.CMD_RETS").State().StrValueByIndex("'",1);
    if (sold.Find(snew)==0) {
         WriteLine("No Update, weil alt: "#sold #" und neu "#snew);
        } else {
         WriteLine("New Version, weil alt: "#sold #" und neu "#snew);
        }
Da ja kleine aber feine Unterschiede zwischen CCU und RM vorhanden sind, ich aber nicht bei einem Wechsel darauf achten will, ob alles was mal ging noch geht, dachte ich mir es wäre recht nett, die Hardware in einer Werteliste zu hinterlegen - 0=CCU, 1=RM

Jetzt fehlt zu meinem Glück nur noch, die Hardware automatisch auslesen zu lassen - hat hierzu jemand eine Idee?!

Benutzeravatar
Dragonfly
Beiträge: 1249
Registriert: 04.01.2010, 11:40
Wohnort: Tyrol
Hat sich bedankt: 1 Mal
Danksagung erhalten: 4 Mal
Kontaktdaten:

Re: HomeMatic Firmware-Update als Pushover senden lassen

Beitrag von Dragonfly » 26.06.2017, 08:22

Auf diese Lösung bin ich nun gekommen:
viewtopic.php?f=65&t=37707#p369125

Antworten

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