System.exec durch CuxD ersetzen

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

Moderator: Co-Administratoren

Benutzeravatar
uwe111
Beiträge: 4820
Registriert: 26.02.2011, 22:22
Hat sich bedankt: 3 Mal
Danksagung erhalten: 246 Mal
Kontaktdaten:

Re: Sytem.exc durch CuxD ersetzen

Beitrag von uwe111 » 16.07.2012, 18:04

Hallo Tom,

Hast Du's auch schon so probiert?

Code: Alles auswählen

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/etc/config/addons/email/email 04");
Viele Grüße,

Uwe.
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN :wink: Download: CUxD 2.11, SSH KeyDir

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

Re: Sytem.exc durch CuxD ersetzen

Beitrag von Dragonfly » 16.07.2012, 18:58

Natürlich...
...nicht!

Funktioniert super!

Danke!

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

Re: Sytem.exc durch CuxD ersetzen bei display_msg.sh

Beitrag von pix » 24.07.2012, 18:03

Hallo,

ich möchte ebenfalls die system.exec Befehle ersetzen.
Nachrichten werden per display_msg.sh (http://www.homematic-inside.de/software ... splay.html) an das CCU-Display geschickt.

bisher:

Code: Alles auswählen

! Nachricht auf CCU-Display
! unbedingt auf die Laenge der Nachricht achten, sonst keine Anzeige
string stderr;
string stdout;
string vtemps ="<skip count='1'/>" +"fertig";
system.Exec("sh /etc/config/addons/lcd_msg/display_msg.sh $m18s b20s i2$Waschmaschine" # vtemps ,&stdout, &stderr);
neu (Ich habe die Meldung abgekürzt, damit Leerzeichen oder der Zeilenumbruch erstmal keine Rolle spielen):

Code: Alles auswählen

string url="/etc/config/addons/lcd_msg/display_msg.sh $m20s b22s i1$WM_fertig";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O - "#url);
oder

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");
funktioniert nicht.
Hat jemand einen Tipp?
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

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

Re: Sytem.exc durch CuxD ersetzen

Beitrag von pix » 19.08.2012, 18:28

Hallo nochmal,

weiß denn wirklich keiner eine Lösung? Ich habe nochmal alle möglichen Kombinationen aus Hochkomma und Abführungszeichen probiert. Auch habe ich probiert, die Parameter als String in eine Variable zu packen. Nix regt sich auf dem CCU-Display. :roll:

Benutze jetzt den CuxD 0.568, und das LCD_MSG http://www.homematic-wiki.info/mw/index ... on:lcd_msg

Viele Grüße :cry:
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

Benutzeravatar
uwe111
Beiträge: 4820
Registriert: 26.02.2011, 22:22
Hat sich bedankt: 3 Mal
Danksagung erhalten: 246 Mal
Kontaktdaten:

Re: Sytem.exc durch CuxD ersetzen bei display_msg.sh

Beitrag von uwe111 » 19.08.2012, 21:35

Hallo pix,
pix hat geschrieben:

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");
funktioniert nicht.
Das sieht auf den ersten Blick richtig aus. Funktioniert das, wenn Du Dich per Telnet auf der CCU anmeldest und es dann aufrufst? Ohne Anführungszeichen dann aber.

Viele Grüße,

Uwe.
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN :wink: Download: CUxD 2.11, SSH KeyDir

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

Re: Sytem.exc durch CuxD ersetzen

Beitrag von pix » 19.08.2012, 22:29

Hallo Uwe,

danke, dass du dich des Themas annimmst.

Es hat nicht funktioniert.
Bildschirmfoto 2012-08-19 um 22.25.48.jpg
Bildschirmfoto 2012-08-19 um 22.25.48.jpg (15.46 KiB) 4244 mal betrachtet
Auf dem Display wird b22s i1 angezeigt (ohne Beleuchtung).

Ich vermute, die Zeichensetzung stimmt nicht.
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

Benutzeravatar
uwe111
Beiträge: 4820
Registriert: 26.02.2011, 22:22
Hat sich bedankt: 3 Mal
Danksagung erhalten: 246 Mal
Kontaktdaten:

Re: Sytem.exc durch CuxD ersetzen

Beitrag von uwe111 » 20.08.2012, 11:34

Hallo pix,
pix hat geschrieben: Es hat nicht funktioniert.
Auf dem Display wird b22s i1 angezeigt (ohne Beleuchtung).
Ich vermute, die Zeichensetzung stimmt nicht.
Mit dem lcd_msg Addon kenne ich mich leider auch nicht aus. Aber wenn es schon in der Konsole nicht funktioniert scheint es ja irgendwie an den Parametern zu liegen.

Viele Grüße,

Uwe.
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN :wink: Download: CUxD 2.11, SSH KeyDir

WAdler 68
Beiträge: 1431
Registriert: 09.11.2008, 16:29
Hat sich bedankt: 2 Mal

Re: Sytem.exc durch CuxD ersetzen

Beitrag von WAdler 68 » 20.08.2012, 17:01

Hallo, Ich benötigte mal ein Programm, das mir aus einer Variablen der HM den Text auf dem Display anzeigte. Das sah so aus:
string url=dom.GetObject("DCC_Text");
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("sh /etc/config/addons/lcd_msg/display_msg.sh '"#url.Value()#"'");

Es sollte auch noch funktionieren und leicht abzuändern gehen.

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

Re: Sytem.exc durch CuxD ersetzen

Beitrag von pix » 21.08.2012, 15:28

Hallo WAdler 68,

vielen Dank für den Tipp:
string url=dom.GetObject("DCC_Text");
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("sh /etc/config/addons/lcd_msg/display_msg.sh '"#url.Value()#"'");
Ich habe das mal ausprobiert

Code: Alles auswählen

string temptext=dom.GetObject("BidCos-RF.HEQ1234567:1.TEMPERATURE");
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("sh /etc/config/addons/lcd_msg/display_msg.sh '"#temptext.Value()#"'");
Es funktioniert. Die Temperatur wird dauerhaft und korrekt dargestellt. Danke. :D
28.00000

Allerdings fehlt jetzt natürlich noch die Formatierung ("$m18s b20s i2 gmeldungen p100$"). 18 Sekunden anzeigen, 20 Sekunden Hintergrundbeleuchtung, Gruppen, Priorität und ID, Text drumherum "Balkon Temp" und "°C" und natürlich die Formatierung auf zwei Nachkommastellen. Nachfolgendes Skript funktionierte bisher mit SystemExec, soll aber ersetzt werden

Code: Alles auswählen

string stderr;
string stdout;
object temperature = dom.GetObject("BidCos-RF.HEQ1234567:1.TEMPERATURE");
var temp = temperature.Value();
var temptext = temp.ToString() ;
var x = temptext.Length();
string temperaturanzeige = temptext.Substr(0, x-4);
temperaturanzeige ="<skip count='2'/>" + temperaturanzeige +"°C";
var options = "$m18s b20s i2 gmeldungen p100$Temp Balkon";
string optiontext = options;
system.Exec("sh /etc/config/addons/lcd_msg/display_msg.sh " # optiontext  # temperaturanzeige ,&stdout, &stderr);
Hat jemand eine Idee, wie man beides zusammenbringt :?:
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 » 21.08.2012, 15:40

sorry ich habe nicht wirklich alles gelesen, aber $m18s wird von der shell durch den Inhalt der Variablen m18s ersetzt, hast Du so eine... mich irritieren die Dollarzeichen im Systemaufruf.

Antworten

Zurück zu „CUxD“