Page 1 of 2

Inhalt von Homematic Systemvariablen versenden

Posted: 25. Jan 2017, 15:31
by onkel_peter
Hallo,

wie kann man den Inhalt von ein oder mehreren Homemativ-SV per Pushsafer Nachricht versenden ?

Danke im voraus.

MFG
Peter

Re: Inhalt von Homematic Systemvariablen versenden

Posted: 25. Jan 2017, 18:22
by admin
onkel_peter wrote:Hallo,

wie kann man den Inhalt von ein oder mehreren Homemativ-SV per Pushsafer Nachricht versenden ?

Danke im voraus.

MFG
Peter
Hallo Peter,

hier findest du eine allgemeine Anleitung, wie über die CCU2 Pushsafer Push-Benachrichtungen versenden kannst.
https://www.pushsafer.com/de/homematic

Welche Variablen sollen ausgelesen und versendet werden?

So kann man z.B. die Temperatur eines Thermostates lesen:

Code: Select all

var aktuelleTemp = dom.GetObject("Kanalname").DPByHssDP("TEMPERATURE").Value();
Diesen Wert + einen bestimmten Text verbinden:

Code: Select all

var message = "aktuelle Temperatur: " # aktuelleTemp # " Grad Celecius";
message wird dann als Nachricht versendet!

Grüße
Kevin

Re: Inhalt von Homematic Systemvariablen versenden

Posted: 25. Jan 2017, 21:08
by onkel_peter
Hallo Kevin,

recht vielen Dank für die promte Lösung !
Da Du das Beispiel mit der Temperatur angeführt hast habe ich das auch zum Test wie folgt realisiert:
Das funktioniert mit folgenden Script sehr gut.
Wie Du siehst habe ich gleich zwei Variablen in die "message" aufgenommen.

Code: Select all

var aktuelleFeuchte = dom.GetObject("BidCos-RF.LEQxxxxxxx:1.HUMIDITY").Value().ToString(0) # " %";
var aktuelleTemp = dom.GetObject("BidCos-RF.LEQxxxxxxx:1.TEMPERATURE").Value().ToString(1) # " °C";
var message = "die aktuelle Temperatur beträgt: " # aktuelleTemp  # " und die Luftfeuchte beträgt: " # aktuelleFeuchte;
string title = "Temperatur";
string sound = "18 ";
string icon = "62";
string vibration = "2";
string device = "xxx";
string privatekey = "xxxxxxxxxxxxxxxxxxxx";
dom.GetObject("CUxD.CUX2801001:2.CMD_EXEC").State("LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl -s -k -d k='"#privatekey#"' -d t='"#title#"' -d m='"#message#"' -d s='"#sound#"' -d i='"#icon#"' -d v='"#vibration#"' -d d='"#device#"' https://www.pushsafer.com/api");
Ich habe allerdings festgestellt, dass einige Sonderzeichen und Umlaute nicht richtig übertragen werden. Da steht dann ein "?"
Gibt es dafür eine Lösung ?

Zu meiner eigentlichen Frage nochmal:
Ich wollte keine Datenpunkte eines Gerätes auslesen sondern eine "Systemvariable" z.b. vom Typ "Zeichenkette" oder "Zahl".
Hast Du dafür evtl. auch eine "Codeschnipsel" ?

Dann hätte ich noch eine Frage zum letzten Teil des Scriptes wo die "message" versandt wird.
Kann an dort mehrmals den Teil -d m='"#message#"' aufnehmen, zb. message1, message2 etc. oder muss man das oben schon alles zusammenbasteln?
Bisher hatten meine Versuche immer nur eine "message" wieder gegeben.

Danke schon mal im voraus.
Peter

Re: Inhalt von Homematic Systemvariablen versenden

Posted: 25. Jan 2017, 22:14
by admin
Hallo Peter,

Umlaute und Sonderzeichen in CCU Scripten, ein lästiges Thema. Am Besten UTF-8 kodiert im Nachrichten-Text verwenden.

Ä wird ersetzt durch %C3%84
ä wird ersetzt durch %C3%A4
Ö wird ersetzt durch %C3%96
ö wird ersetzt durch %C3%B6
Ü wird ersetzt durch %C3%9C
ü wird ersetzt durch %C3%BC
° wird ersetzt durch %C2%B0

die Variable message kann nur einmal verwendet werden, also alles zu einer Variable verbinden.

Kannst du mir das genauer erklären. ich steh grad auf dem Schlauch
"Systemvariable" z.b. vom Typ "Zeichenkette" oder "Zahl".

Grüße Kevin

Re: Inhalt von Homematic Systemvariablen versenden

Posted: 25. Jan 2017, 22:47
by onkel_peter
Hallo Kevin,

Danke für die Infos zu den Umlauten und "message". Das hilft mir auf jeden Fall weiter.
Zu den Systemvariablen der CCU2:
Man kann Systemvariablen mit den unterschiedlichsten Typen anlegen z.B. Logikwert, Weteliste, Zahl, Zeichenkette und Alarm
Durch Scriptprogrammierung werden diese Variablen z.b mit einem Text oder einer Zahl oder einem Wert gefüllt oder eben der Inhalt abgefragt und ausgegeben.
In meinem Fall ein Script zur "Wetterwarnung" das eine SV mit dem Text der Wetterwarnung füllt.
Und genau diesen Inhalt der SV möchte ich per Pushnachricht versenden.

Wenn Dir das alles nichts sagt, auch nicht so schlimm.
Ich bin auch im Homematic-Forum unterwegs. Werde mich dort auch noch belesen.
Ich denke da werde ich fündig.

Du hast mir auf jedenfall schon sehr weiter geholfen.
Danke !

Re: Inhalt von Homematic Systemvariablen versenden

Posted: 25. Jan 2017, 23:03
by admin
Das wird dir weiterhelfen:

Variable

Code: Select all

var sv = dom.GetObject("sv");
Schreiben

Code: Select all

sv.Variable("eine Zeichenkette");
Lesen

Code: Select all

value = sv.Variable();
gefunden auf http://homematic-forum.de/forum/viewtop ... =26&t=3325

Re: Inhalt von Homematic Systemvariablen versenden

Posted: 26. Jan 2017, 07:26
by onkel_peter
Genau das habe ich gesucht.
Recht vielen Dank !

Re: Inhalt von Homematic Systemvariablen versenden

Posted: 29. Jan 2017, 17:21
by onkel_peter
Hallo Kevin,

hab da noch mal ein paar Fragen:
1.Gibt es bei den Sonderzeichen auch die Möglichkeit "ß" richtig dazustellen ?
Die anderen Sonderzeichen funktionieren.

2. Die Sonderzeichen kann ich ja nur verwenden, wenn ich eine eigene Message in die Benachrichtigung schreibe.
Wenn ich aber in den "String message" den Inhalt einer HM-Systemvariablen schreibe, was übrigens jetzt gut funktioniert,
kann ich keinen Einfluss nehmen, oder ?
Ich hab das Problem, das in der HM-SV die Umlaute richtig drin stehen, wenn Pushsafer jedooch den Inhalt versendet werden die Umlaute
nicht korrekt angezeigt.
Hast Du dafür eine Lösung ??

Danke im voraus.

Re: Inhalt von Homematic Systemvariablen versenden

Posted: 30. Jan 2017, 19:08
by admin
ß =wird ersetzt durch %C3%9F

Hier eine komplette Tabelle der UTF8 kodierten Zeichensätze.
http://www.utf8-zeichentabelle.de/

Bei übergebene Variablen muss eine Suchen & Ersetzen Funktion diese Sonderzeichen austauschen.

Grüße Kevin

Re: Inhalt von Homematic Systemvariablen versenden

Posted: 31. Jan 2017, 08:38
by onkel_peter
Hallo Kevin,

Danke !
Das beantwortet aber nicht meine Frage.
Warum kann Pushsafer nicht den originalen Inhalt (mit korrekten Sonderzeichen) einer HM-Systemvariablen senden ?

Wo sollte denn die Suchen und Ersetzen Fnktion eingebaut werden ?

Gruß Peter