System.exec durch CuxD ersetzen

Anbindung von FS20-Komponenten, ELV-Wetterstationen, EnOcean und DMX an HomeMatic

Moderator: Co-Administratoren

pix
Beiträge: 608
Registriert: 23.01.2012, 15:40
Danksagung erhalten: 1 Mal

Re: Sytem.exc durch CuxD ersetzen

Beitrag von pix » 22.08.2012, 01:24

Verstehe. Die $-Zeichen sind für das lcd_msg notwendig und schließen die Parameter ein. Kann man sie ersetzen? Durch %24 ?
150 Kanäle in 75 Geräten und 103 CUxD-Kanäle in 25 CUxD-Geräten (HomeMatic, FS20), CCU1 FW1.519, AddOns: CUxD 1.0, dropbear, E-Mail 1.2, ftp_server und regaWatchdog.
Logik und Visualisierung mit ioBroker auf Mac OS X Node.js. Eingebundene Systeme: Sonos, Rademacher Homepilot, Roomba, Network-OWL. Danke für das Homematic-Inventur-Skript von EnergyStar

matheversum
Beiträge: 287
Registriert: 27.04.2009, 13:46

Re: Sytem.exc durch CuxD ersetzen

Beitrag von matheversum » 22.08.2012, 08:28

Hast Du's mal so versucht:

Code: Alles auswählen

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/etc/config/addons/lcd_msg/display_msg.sh '$m20s b22s i1$WM_fertig' ");
Das sollte die shell davon abhalten den Parameter zu parsen.
Evtl. tun's auch backslashs vor den $-Zeichen.

pix
Beiträge: 608
Registriert: 23.01.2012, 15:40
Danksagung erhalten: 1 Mal

Re: Sytem.exc durch CuxD ersetzen

Beitrag von pix » 22.08.2012, 14:09

Hallo matheversum,

das war der entscheidende Tipp. Jetzt funktioniert es. Jetzt muss ich nur noch die Variable einbauen.

Danke.
150 Kanäle in 75 Geräten und 103 CUxD-Kanäle in 25 CUxD-Geräten (HomeMatic, FS20), CCU1 FW1.519, AddOns: CUxD 1.0, dropbear, E-Mail 1.2, ftp_server und regaWatchdog.
Logik und Visualisierung mit ioBroker auf Mac OS X Node.js. Eingebundene Systeme: Sonos, Rademacher Homepilot, Roomba, Network-OWL. Danke für das Homematic-Inventur-Skript von EnergyStar

rtlplus
Beiträge: 89
Registriert: 17.10.2009, 02:09
Wohnort: Schweiz
Hat sich bedankt: 1 Mal

Re: Sytem.exc durch CuxD ersetzen

Beitrag von rtlplus » 22.08.2012, 18:17

Hallo pix

kannst du die definitive Version denn hier noch posten?

Vielen Dank!

Gruess rtlplus

pix
Beiträge: 608
Registriert: 23.01.2012, 15:40
Danksagung erhalten: 1 Mal

Re: Sytem.exc durch CuxD ersetzen

Beitrag von pix » 22.08.2012, 18:47

Hier die zwei Varianten, die bei mi funktionieren:

1. Einfach einen Text anzeigen (Beispiel "Alarmanlage unscharf" für 5s und 6s Hintergrundlicht)

Code: Alles auswählen

! CCU-Display Alarmanlage unscharf, wenn Anwesenheit hergestellt wird.

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/etc/config/addons/lcd_msg/display_msg.sh '$m5s b6s i100 gEreignisse p100 $Alarmanlage<br/>unscharf' ");
2. Einen Text mit Variablen anzeigen (Beispiel "Balkon Temperatur")
ID muss natürlich durch die des eigenen Temperatursensors ersetzt werden. Text nicht als Code formatiert, wegen der Farben:

! CCU-Display Mitteilung Balkontemperatur
string temp_anzeige = dom.GetObject("BidCos-RF.HEQ87654321:1.TEMPERATURE");

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/etc/config/addons/lcd_msg/display_msg.sh '$m18s b20s i100 gEreignisse p1000 $Balkon Temp<br/> "#temp_anzeige.Value()#"°C' ");



Die roten Häkchen schließen den State ein,
die grünen Häkchen schließen die lcd_msg Parameter ein,
die blauen Häkchen schließen die Variable ein

Leider hat die Formatierung des Temperaturwertes auf weniger Nachkommastellen nicht geklappt. Aber es passt dennoch in das Display (11 Zeichen, zwei Zeilen, <br/> für Zeilenumbruch)

Jetzt kann ich ohne schlechtes Gewissen wegen der vielen System.Exec-Aufruhe viel mehr Mitteilungen, Alarme und Zustände auf dem Display anzeigen. Vielen Dank für die Hinweise. Mein persönlicher WAF steigt jetzt wieder, da mehr Zeit für Familie und weniger Zeit für HM :lol:
150 Kanäle in 75 Geräten und 103 CUxD-Kanäle in 25 CUxD-Geräten (HomeMatic, FS20), CCU1 FW1.519, AddOns: CUxD 1.0, dropbear, E-Mail 1.2, ftp_server und regaWatchdog.
Logik und Visualisierung mit ioBroker auf Mac OS X Node.js. Eingebundene Systeme: Sonos, Rademacher Homepilot, Roomba, Network-OWL. Danke für das Homematic-Inventur-Skript von EnergyStar

rtlplus
Beiträge: 89
Registriert: 17.10.2009, 02:09
Wohnort: Schweiz
Hat sich bedankt: 1 Mal

Re: Sytem.exc durch CuxD ersetzen

Beitrag von rtlplus » 23.08.2012, 20:12

Hallo HomeMatic Gemeinde

bei mir im Display der CCU tut sich überhaupt nichts.
Mit:

string stderr;
string stdout;
system.Exec("sh /etc/config/addons/lcd_msg/display_msg.sh Hallo", &stdout, &stderr);

wird im Display schön: Hallo
angezeigt aber mit

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/etc/config/addons/lcd_msg/display_msg.sh Hallo");

regt sich im Display nichts.
Was mache ich falsch? Kann mir jemand weiter helfen?
Folgende Software habe ich installiert:
-CCU-Firmware: V_1.507
-Lcd_msg_ccu V_1.21
-CUx-Daemon V_0.568b
Die Software CUx-Daemon habe ich nur installiert aber nichts daran geändert oder konfiguriert oder parametriert.
Muss ich dort noch was machen?
CUx-Daemon läuft aber laut Statusmeldungen problemlos.

Vielen Dank, rtlplus

pix
Beiträge: 608
Registriert: 23.01.2012, 15:40
Danksagung erhalten: 1 Mal

Re: Sytem.exc durch CuxD ersetzen

Beitrag von pix » 23.08.2012, 22:07

Hallo rtlplus,

du musst natürlich das System.Exec Gerät auf dem CuxD installieren.

Bedienungsanleitung CuxD, Seite 71 (bei version 0.567), Punkt 5.8.1 System.Exec
http://www.homematic-inside.de/software ... cuxd-addon

Im Reiter "Geräte" kannst du dann ein neues Gerät erzeugen.
Bildschirmfoto 2012-08-23 um 22.02.35.jpg
Hier wird das Gerät System.Exec erstellt
anschließend noch im CCU-WeebUI das Gerät im Postfach finden und dann gehts los.

Grüße
pix
150 Kanäle in 75 Geräten und 103 CUxD-Kanäle in 25 CUxD-Geräten (HomeMatic, FS20), CCU1 FW1.519, AddOns: CUxD 1.0, dropbear, E-Mail 1.2, ftp_server und regaWatchdog.
Logik und Visualisierung mit ioBroker auf Mac OS X Node.js. Eingebundene Systeme: Sonos, Rademacher Homepilot, Roomba, Network-OWL. Danke für das Homematic-Inventur-Skript von EnergyStar

rtlplus
Beiträge: 89
Registriert: 17.10.2009, 02:09
Wohnort: Schweiz
Hat sich bedankt: 1 Mal

Re: Sytem.exc durch CuxD ersetzen

Beitrag von rtlplus » 24.08.2012, 18:02

Hallo pix

super! Vielen Dank! Jetzt klappt es!
Ich musste zwar noch ein paar Versuche machen bis ich merkte, dass ich den RPC-Server neu starten musste damit er die Änderungen übernahm. Aber jetzt klappt es super!
Nun kann ich meine ganzen Programme auf den neuen Befehl umschreiben und hoffen, dass die CCU dann nie mehr abstürzt.

Gruess, rtlplus

rtlplus
Beiträge: 89
Registriert: 17.10.2009, 02:09
Wohnort: Schweiz
Hat sich bedankt: 1 Mal

Re: Sytem.exc durch CuxD ersetzen

Beitrag von rtlplus » 27.08.2012, 19:01

Hallo pix

du kannst übrigens die Nachkommastellen des Temperaturwertes reduzieren mit:

Value().ToString(1)

Ein Beispiel von mir zeigt Aussen- und Innentemperatur auf dem Display der CCU mit einer Nachkommastelle:

object tmp1=dom.GetObject("BidCos-RF.IEQ0201260:1.TEMPERATURE");
object tmp2=dom.GetObject("BidCos-RF.GEQ0173783:1.TEMPERATURE");

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/etc/config/addons/lcd_msg/display_msg.sh 'OUT "#tmp1.Value().ToString(1)#"°C<br/>IN "#tmp2.Value().ToString(1)#"°C'");


Gruess rtlplus

grissli1
Beiträge: 2268
Registriert: 22.06.2012, 17:46
System: Alternative CCU (auf Basis OCCU)
Wohnort: Tirol/Austria
Hat sich bedankt: 13 Mal
Danksagung erhalten: 2 Mal

Re: Sytem.exc durch CuxD ersetzen

Beitrag von grissli1 » 23.10.2012, 19:33

Hi,

wie kann ich den folgendes übersetzen (ist ein Teil eines Scripts):

Code: Alles auswählen

  string stdout;
  string stderr;
  system.Exec("/etc/config/addons/email/email 01 '"+list+"'",&stdout,&stderr);
Passt das so?:

Code: Alles auswählen

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/etc/config/addons/email/email 01 "+list+"");
Da ich gerade von der Arbeit aus alles ändere, kann ich es nicht testen. Bin mir nämlich nicht sicher, ob das mit den " passt, oder ich ' nehmen muss oder sogar beide wie beim system.Exec?!

Viele Grüße
Chris
System: RaspberryMatic 3.41.11.20190126 auf RPi3, ReverseProxy auf RPi3

Antworten

Zurück zu „CUxD“