Seite 1 von 1

system.Exec

Verfasst: 31.01.2018, 19:57
von Gnoesch
Hallo zusammen,

nun langsam aber sicher komme ich sehr gut auf meinem pivcccu zurecht allerdings funktionieren meine ganzen "system.Exec" aufrufe für das versenden von Pushnachrichten über Cloudmatic nicht mehr.

Habt ihr eine Idee woran dies liegen kann? Ein Test auf der CCU2 zeigt, dass es geht. Es ist die Firmware 2.31.25 installiert.

Gruß
Fred

Re: system.Exec

Verfasst: 31.01.2018, 20:11
von Familienvater
Hi,

auch mit 2.31.25 auf der CCU2, oder dort mit einer älteren Firmware (und ggf. mit welcher Rega-Version)?

Funktionieren die Befehle aus einer Consolen-Sitzung innerhalb der piVCCU?

Der Familienvater

Re: system.Exec

Verfasst: 31.01.2018, 20:36
von deimos
Hi,

das hier beachtet?

viewtopic.php?f=34&t=41848&p=416160&hil ... ec#p416134

Viele Grüße
Alex

Re: system.Exec

Verfasst: 31.01.2018, 21:25
von Gnoesch
Hi zusammen,

von der CCU2 mit der gleichen Firmware funktioniert es auch nicht mehr. Scheint wohl ein Problem mit dem System.Exec sein...

Auf der Console des pivccu kriege folgende Fehler

Code: Alles auswählen

Jan 31 20:07:02 homematic-ccu2 local0.err ReGaHss: Error: IseESP::SyntaxError= Error 1 at row 23 col 24 near ^.Split(" ")) {   sendapikey = sendapikey # "+" # teilstr; } foreach(teilstr, eve^M  [iseESP.cpp:1111]
Jan 31 20:07:02 homematic-ccu2 local0.err ReGaHss: Error: ParseProgram: SyntaxError= .Split(" ")) {   sendapikey = sendapikey # "+" # teilstr; } foreach(teilstr, event.Split(" ")) {   sendevent = sendevent # "+" # teilstr; } foreach(teilstr, PushText.Split(" ")) {   sendtext 
Das Script sieht folgendermaßen aus:

Code: Alles auswählen

var EASYPushKeyFred = "????";
var EASYPushKeySandra = "?????";
var wert = dom.GetObject("W_Temperatur").Value();
var wert2 = dom.GetObject("W_Bedingungen").Value();
var wert3 = dom.GetObject("W_Aktualisierung").Value();

! Hier das Event der Push Nachricht angeben
string event = "Morgendliche Wetternachricht";

! Hier den Inhalt der Push Nachricht angeben
string PushText;
PushText = "Es ist "#wert2#" und "#wert#" Grad draußen. Letzte Aktualisierung der Wetterstation: "#wert3#"";

! Alles ab hier bitte UNVERÄNDERT übernehmen

string stdout;
string stderr;
string teilstr;
string sendtext = "";
string sendevent = "";
string sendapikey = "";

foreach(teilstr, APIKey.Split(" ")) {
  sendapikey = sendapikey # "+" # teilstr;
}
foreach(teilstr, event.Split(" ")) {
  sendevent = sendevent # "+" # teilstr;
}
foreach(teilstr, PushText.Split(" ")) {
  sendtext = sendtext # "+" # teilstr;
}
system.Exec ("/bin/sh /etc/config/addons/mh/prowl.sh "# EASYPushKeyFred # " " # sendevent # " " # sendtext # , &stdout, &stderr");
system.Exec ("/bin/sh /etc/config/addons/mh/prowl.sh "# EASYPushKeySandra # " " # sendevent # " " # sendtext #, &stdout, &stderr");
Gruß
Fred

Re: system.Exec

Verfasst: 01.02.2018, 21:52
von Gnoesch
Hallo zusammen,

heute Abend habe ich mal ein wenig bzgl meines Fehlers weiterrecherchiert und ausprobiert.

1. Aus der Doku von cloudmatic.de
2018-02-01 19_38_54-Push-Mitteilungen per EASY App – EASY Knowledge Base.png
Wer lesen kann ist klar im Vorteil!
2018-02-01 19_38_54-Push-Mitteilungen per EASY App – EASY Knowledge Base.png (11.66 KiB) 2471 mal betrachtet
Also habe ich ein Downgrade auf die Version 2.29.23 gemacht! Auf CCU2 und pivccu!
--> Problem besteht leider immer noch!!

2. Dann ist mir aufgefallen, dass dieser Teil des Scriptes

Code: Alles auswählen

foreach(teilstr, APIKey.Split(" ")) {
  sendapikey = sendapikey # "+" # teilstr;
}
völliger Blödsinn ist und habe ihn erstmal entfernt.
--> Problem besteht leider immer noch!!

Aber der Fehler

Code: Alles auswählen

IseESP::SyntaxError= Error 1 at row 23 col 24 near ^.Split(" ")) {   s
war weg!

3. Dann habe ich gedacht, achja "System.Exec" ist schuld und habe nach der Anleitung von https://technikkram.net/2017/08/homemat ... c-ersetzen von "System.Exec" auf CuxD umgestellt!
--> Jetzt kriege ich ganz viele Pushnachrichten, allerdings zeitversetzt. Vielleicht pendelt es sich über Nacht ein... :D

Jetzt habe ich erstmal keine Lust und am Wochenende geht es weiter... :D

Gruß
Fred

Re: system.Exec

Verfasst: 07.02.2018, 21:14
von Gnoesch
Nabend zusammen,

damit manch anderer auch nicht "dumm" stirbt wollt ich mal eben verkünden, dass ich das Problem nun gelöst habe! :)

Code: Alles auswählen

! Pushnachricht für Statuswechsel an mehrere User

! API Keys als var setzen
var EASYPushKeyABC = "ESY:APIKEY-ABC";
var EASYPushKeyDEF = "ESY:APIKEY-DEF";

! Auslesen Werteliste Variablen
object sv = dom.GetObject("Alarmanlage");

! Zustandstext in string schreiben
string z = sv.ValueList().StrValueByIndex(";",sv.Value());

! Hier das Event der Push Nachricht angeben
string event = "Status Alarmanlage";

! Hier den Inhalt der Push Nachricht angeben
string PushText;
PushText = ""#z#"";

! Alles ab hier bitte UNVERÄNDERT übernehmen

string teilstr;
string sendtext = "";
string sendevent = "";

foreach(teilstr, event.Split(" ")) {
  sendevent = sendevent # "+" # teilstr;
}
foreach(teilstr, PushText.Split(" ")) {
  sendtext = sendtext # "+" # teilstr;
}
dom.GetObject("CUxD.CUX2801001:3.CMD_EXEC").State("/bin/sh /etc/config/addons/mh/prowl.sh "# EASYPushKeyABC # " " # sendevent # " " # sendtext);
dom.GetObject("CUxD.CUX2801001:3.CMD_EXEC").State("/bin/sh /etc/config/addons/mh/prowl.sh "# EASYPushKeyDEF # " " # sendevent # " " # sendtext);
Gruß
Fred