system.Exec

Virtualisierte CCU für Raspberry Pi und Clones

Moderator: Co-Administratoren

Antworten
Gnoesch
Beiträge: 26
Registriert: 07.03.2017, 14:48
Hat sich bedankt: 4 Mal

system.Exec

Beitrag von Gnoesch » 31.01.2018, 19:57

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

Familienvater
Beiträge: 7151
Registriert: 31.12.2006, 15:18
System: Alternative CCU (auf Basis OCCU)
Wohnort: Rhein-Main
Danksagung erhalten: 34 Mal

Re: system.Exec

Beitrag von Familienvater » 31.01.2018, 20:11

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


Gnoesch
Beiträge: 26
Registriert: 07.03.2017, 14:48
Hat sich bedankt: 4 Mal

Re: system.Exec

Beitrag von Gnoesch » 31.01.2018, 21:25

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

Gnoesch
Beiträge: 26
Registriert: 07.03.2017, 14:48
Hat sich bedankt: 4 Mal

Re: system.Exec

Beitrag von Gnoesch » 01.02.2018, 21:52

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) 2465 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

Gnoesch
Beiträge: 26
Registriert: 07.03.2017, 14:48
Hat sich bedankt: 4 Mal

Re: system.Exec

Beitrag von Gnoesch » 07.02.2018, 21:14

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

Antworten

Zurück zu „piVCCU“