CCU-Ereignisse an die "Aussenwelt" melden

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Antworten
agen
Beiträge: 39
Registriert: 11.03.2008, 09:28
Danksagung erhalten: 2 Mal

CCU-Ereignisse an die "Aussenwelt" melden

Beitrag von agen » 22.03.2009, 15:35

Hallo,

hier wurde ja schon öfter das Thema diskutiert, Ereignisse der CCU für eine "externe" Weiterverarbeitung abzufangen (siehe TCPDUMP / SOCAT)
ist aber ein bisschen oversized wenn man nur wenige Infos nach Aussen geben will.
Mit reinen Bordmittel (CCU-Programme) kann man durchaus auch arbeiten:

folgendes CCU-Script "hängt" man an CCU-Ereignisse (z.B. Tastendruck) als Aktivität an:

Code: Alles auswählen

string cmd;
cmd = "killall -9 wget";
system.Exec(cmd); 
cmd = "daemonize /usr/bin/wget -O - -q http://10.90.1.1:8086/?CMD=TRIGGER&DATA=" # $src$;
system.Exec (cmd);


Hiermit kann man einfach eine externe URL aufrufen und den Code der auslösenden Taste mitgeben.
Auf dem gerufenen Webserver kann man dann mit der Info tun und lassen was man will.
Das "kill" im Script dient nur dazu, noch laufende wget Prozesse abzuschiessen, falls doch mal einer hängen bleibt (zur Sicherheit).

Viel Spass

Andreas

Benutzeravatar
kaju74
Beiträge: 2050
Registriert: 06.03.2007, 13:14
Danksagung erhalten: 19 Mal
Kontaktdaten:

Re: CCU-Ereignisse an die "Aussenwelt" melden

Beitrag von kaju74 » 22.03.2009, 17:22

Hallo!

Werde ich mal auf meine Seite aufnehmen, wenn Du nix dagegen hast.... :D

Gruß,
kaju

Miki
Beiträge: 8
Registriert: 28.01.2009, 18:01

Re: CCU-Ereignisse an die "Aussenwelt" melden

Beitrag von Miki » 29.03.2009, 11:49

Hallo
Habe versucht das Script in ein Progamm zu implementieren.
Bekomme leider folgenden Fehler bei der Code-Überprüfung im Script-Editor:

Error 1 at row 4 col 94 near ^$src$;
system.Exec (cmd);

Parse following code failed:
string cmd;
cmd = "killall -9 wget";
system.Exec(cmd);
cmd = "daemonize /usr/bin/wget -O - -q http://192.168.178.101:8086/?CMD=TRIGGER&DATA=" # $src$;
system.Exec (cmd);

Hat vieleicht jemand eine Idee warum ?

Gruß Miki

dirch
Beiträge: 579
Registriert: 24.10.2008, 03:26
Hat sich bedankt: 1 Mal
Danksagung erhalten: 2 Mal

Re: CCU-Ereignisse an die "Aussenwelt" melden

Beitrag von dirch » 29.03.2009, 18:00

Hallo Miki,

links neben dem "Fehlerpruefung" button gibts ein eingabefeld fuer "$src$", trag da mal eine zahl ein und klick dann noch mal auf Fehlerpruefung, nun solltest du keinen fehler mehr erhalten.

Gruss,
Dirch
Neun von zehn Stimmen in meinen Kopf sagen ich bin nicht verrückt. Die andere summt die Melodie von Tetris . ...

Miki
Beiträge: 8
Registriert: 28.01.2009, 18:01

Re: CCU-Ereignisse an die "Aussenwelt" melden

Beitrag von Miki » 02.04.2009, 14:20

Hallo
Funktioniert !
Vielen Dank für deine Hilfe
Gruß
Miki

PumpkinEater
Beiträge: 142
Registriert: 16.12.2007, 12:40

Re: CCU-Ereignisse an die "Aussenwelt" melden

Beitrag von PumpkinEater » 31.10.2009, 19:08

Hallo,
bei mir funktionierte das Script einfach nicht (V1.404). Ein Problem tritt scheinbar dann auf, wenn dem Aufruf "system.Exec" keine Parameter "&stdout, &stderr" mitgegeben werden. Davon hatte dirch schon mal berichtet (http://homematic-forum.de/forum/viewtop ... =26&t=3111). Anderes Problem war, dass bei einem manuellen Aufruf des Programms die Variable "$src$ leer ist und dann in /var/log/messages ein Syntax-Fehler gemeldet wird.

Ich habe das Skript daher etwas abgeändert:
string cmd;
cmd = "killall -9 wget";
system.Exec(cmd, &stdout, &stderr);

var source = dom.GetObject("$src$");
if(!source) {source = "unset";}
cmd = "/sbin/daemonize /usr/bin/wget -O - -q http://192.168.100.50:80/?CMD=TRIGGER&DATA=" # source;
system.Exec (cmd, &stdout, &stderr);
Nun läuft es auch bei mir :)
Gruss
Peter

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“