Von der CCU aus ein python srcript im Raspberry pi aufrufen

WebUIs (DashUI, yahui, ...), Adapter (Hue, IRTrans, Sonos, ...), Logging, Scripting

Moderator: Co-Administratoren

Benutzeravatar
Markus33
Beiträge: 116
Registriert: 29.10.2012, 11:57
Wohnort: Bayern
Hat sich bedankt: 7 Mal
Danksagung erhalten: 2 Mal

Re: Von der CCU aus ein python srcript im Raspberry pi aufru

Beitrag von Markus33 » 30.03.2014, 23:37

Hallo Steffen81,

ich hab das nochmal getestet (mit restart script.engine) und erhalte folgenden Eintrag in ccu.io.log

2014-03-30 23:31:18.287 ^[[31merror ^[[0m: script-engine /opt/ccu.io/scripts/pyth.js SyntaxError: Unexpected token var



Hier noch das skript, das von ScriptGUI erstellt wurde:

Code: Alles auswählen

// CCU.IO Objekte
// Trigger
subscribe({id: 1209}, function (data){
 codebox_0(data);
 }); 
var start_data ={    id:0,    name:"Engine_Start",    newState: {        value:0,        timestamp:0,        ack:0,        lastchange:0,    },    oldState: {            value:0,            timestamp:0,            ack:0,            lastchange:0,    },    channel: {            id:0,            name:"Engine_Start",            type:"Engine_Start",            funcIds:"Engine_Start",            roomIds:"Engine_Start",            funcNames:"Engine_Start",            roomNames:"Engine_Start",    },    device: {            id:0,            name:"Engine_Start",            type:"Engine_Start",    }}; codebox_0(start_data);

//Programm_0
function codebox_0(data){ 
var input_2_out= getState(13941);
var in1 = input_2_out ;
execCmd('/usr/lib/cgi-bin/hello.py', function (err, stdout, stderr) {
  if (err) {
    log("fehler bei ausführung von script.py: "+err);
  } else {
    log("ausgabe von script.py: "+stdout);
  }
}
var expert_5_out_1 = out1 ;
var inc_4_out = input_2_out+1
log("pyth -> Programm_0 -> " + expert_5_out_1);
setState(13941,inc_4_out);
};
---------------------------------------------------------------------
RaspberryMatic auf Raspberry Pi 4 (HMIP-RFUSB) mit 1x Lan Gateway RaspberrryPi 3B+ (HMIP-RFUSB) + RS485 Gateway

Steffen81
Beiträge: 401
Registriert: 03.02.2013, 23:34

Re: Von der CCU aus ein python srcript im Raspberry pi aufru

Beitrag von Steffen81 » 30.03.2014, 23:45

oh da ist noch ein kleiner Fehler im Expertbaustein

Schreib mal das in den Baustein:

Code: Alles auswählen

execCmd('/usr/lib/cgi-bin/hello.py', function (err, stdout, stderr) {
  if (err) {
    log("fehler bei ausführung von script.py: "+err);
  } else {
    log("ausgabe von script.py: "+stdout);
  }
}
var out1 = 0;

Benutzeravatar
Markus33
Beiträge: 116
Registriert: 29.10.2012, 11:57
Wohnort: Bayern
Hat sich bedankt: 7 Mal
Danksagung erhalten: 2 Mal

Re: Von der CCU aus ein python srcript im Raspberry pi aufru

Beitrag von Markus33 » 31.03.2014, 07:17

Hallo Steffen81,

leider immer noch der gleiche Eintrag in der ccu.io.log
2014-03-31 07:04:13.462 ^[[31merror ^[[0m: script-engine /opt/ccu.io/scripts/pyth.js SyntaxError: Unexpected token var

Hier noch das durch ScriptGUI erzeugte script:

Code: Alles auswählen

// CCU.IO Objekte
// Trigger
subscribe({id: 1209}, function (data){
 codebox_0(data);
 }); 
var start_data ={    id:0,    name:"Engine_Start",    newState: {        value:0,        timestamp:0,        ack:0,        lastchange:0,    },    oldState: {            value:0,            timestamp:0,            ack:0,            lastchange:0,    },    channel: {            id:0,            name:"Engine_Start",            type:"Engine_Start",            funcIds:"Engine_Start",            roomIds:"Engine_Start",            funcNames:"Engine_Start",            roomNames:"Engine_Start",    },    device: {            id:0,            name:"Engine_Start",            type:"Engine_Start",    }}; codebox_0(start_data);

//Programm_0
function codebox_0(data){ 
execCmd('/usr/lib/cgi-bin/hello.py', function (err, stdout, stderr) {
  if (err) {
    log("fehler bei ausführung von script.py: "+err);
  } else {
    log("ausgabe von script.py: "+stdout);
  }
}
var out1 = 0;
};
---------------------------------------------------------------------
RaspberryMatic auf Raspberry Pi 4 (HMIP-RFUSB) mit 1x Lan Gateway RaspberrryPi 3B+ (HMIP-RFUSB) + RS485 Gateway

Steffen81
Beiträge: 401
Registriert: 03.02.2013, 23:34

Re: Von der CCU aus ein python srcript im Raspberry pi aufru

Beitrag von Steffen81 » 31.03.2014, 10:34

ich bin auch manchmal blind :D

Dir fehlt noch ein ); hinter der lezten }

Code: Alles auswählen

execCmd('/usr/lib/cgi-bin/hello.py', function (err, stdout, stderr) {
  if (err) {
    log("fehler bei ausführung von script.py: "+err);
  } else {
    log("ausgabe von script.py: "+stdout);
  }
});
var out1 = 0;

:!: Nachtrag:
Nach Rücksprache mit Hobbyquaker ist noch ein fehler in der Scriptengine :oops: so das der Pfad bei execCmd nicht mit übergeben wird. Das wird in der nächsten CCI.IO Version behoben sein

Benutzeravatar
Markus33
Beiträge: 116
Registriert: 29.10.2012, 11:57
Wohnort: Bayern
Hat sich bedankt: 7 Mal
Danksagung erhalten: 2 Mal

Re: Von der CCU aus ein python srcript im Raspberry pi aufru

Beitrag von Markus33 » 31.03.2014, 11:41

Hallo Steffen81,

danke für den Tip.

Nächster Versuch :arrow:

Output ccu.io.log:
2014-03-31 11:34:30.880 ^[[32minfo ^[[0m: script-engine registered 1 subscribers and 0 schedules in /opt/ccu.io/scripts/pyth.js
2014-03-31 11:35:28.396 ^[[32minfo ^[[0m: script pyth -> Programm_0 -> 0
2014-03-31 11:35:28.404 ^[[32minfo ^[[0m: ccu.io exec function ack() { self.log.debug('sending data ack packet'); socket.packet({ type: '$
und hier noch das von ScriptGUI erzeugte script:

Code: Alles auswählen

// CCU.IO Objekte
// Trigger
subscribe({id: 1209}, function (data){
 codebox_0(data);
 }); 
var start_data ={    id:0,    name:"Engine_Start",    newState: {        value:0,        timestamp:0,        ack:0,        lastchange:0,    },    oldState: {            value:0,            timestamp:0,            ack:0,            lastchange:0,    },    channel: {            id:0,            name:"Engine_Start",            type:"Engine_Start",            funcIds:"Engine_Start",            roomIds:"Engine_Start",            funcNames:"Engine_Start",            roomNames:"Engine_Start",    },    device: {            id:0,            name:"Engine_Start",            type:"Engine_Start",    }}; codebox_0(start_data);

//Programm_0
function codebox_0(data){ 
var string_8_out= "Hello" ;
var in1 = string_8_out ;
execCmd('/usr/lib/cgi-bin/hello.py', function (err, stdout, stderr) {
  if (err) {
    log("fehler bei ausführung von script.py: "+err);
  } else {
    log("ausgabe von script.py: "+stdout);
  }
});
var out1 = 0;
var expert_5_out_1 = out1 ;
log("pyth -> Programm_0 -> " + expert_5_out_1);
};
aaagui.PNG
---------------------------------------------------------------------
RaspberryMatic auf Raspberry Pi 4 (HMIP-RFUSB) mit 1x Lan Gateway RaspberrryPi 3B+ (HMIP-RFUSB) + RS485 Gateway

Steffen81
Beiträge: 401
Registriert: 03.02.2013, 23:34

Re: Von der CCU aus ein python srcript im Raspberry pi aufru

Beitrag von Steffen81 » 31.03.2014, 23:57

Hobbyquaker hat den Fehler in der Scriptengine behoben. Mit der neuen CCU.io Version sollte es gehen

Benutzeravatar
Markus33
Beiträge: 116
Registriert: 29.10.2012, 11:57
Wohnort: Bayern
Hat sich bedankt: 7 Mal
Danksagung erhalten: 2 Mal

Re: Von der CCU aus ein python srcript im Raspberry pi aufru

Beitrag von Markus33 » 01.04.2014, 08:59

Yep ! Mit CCU.IO Version 1.0.30 funktioniert das vorher gepostete Beispiel :D :D :D

ccu.io.log:
2014-04-01 08:35:40.968 ^[[32minfo ^[[0m: script pyth -> Programm_0 -> 0
2014-04-01 08:35:40.985 ^[[32minfo ^[[0m: ccu.io exec /usr/lib/cgi-bin/hello.py
2014-04-01 08:35:44.998 ^[[32minfo ^[[0m: script ausgabe von script.py: Content-type: text/html<h1>Hello World</h1>
(Natürlich kann man dann auch das Python script in einen anderen Ordner ablegen auf aufrufen)

DANKE !
---------------------------------------------------------------------
RaspberryMatic auf Raspberry Pi 4 (HMIP-RFUSB) mit 1x Lan Gateway RaspberrryPi 3B+ (HMIP-RFUSB) + RS485 Gateway

mimquadrat
Beiträge: 71
Registriert: 18.11.2013, 15:50

Re: Von der CCU aus ein python srcript im Raspberry pi aufru

Beitrag von mimquadrat » 14.10.2014, 15:16

Hi Jungs,
ich habe Markus`Idee (Das Python skript läuft nun als getarntes CGI Script auf dem Raspberry Pi) umgesetzt.
Funktionert auch soweit (wenn ich zB Hello World) als Ausgabe nach dem Aufruf einer bestimmt Adresse bekomme.
ABER:
Mein python script greift auf die GPIO pins das Raspberry zu um einen Schrittmotor zu bewegen.
Der Raspi ist nicht der, auf dem CCU.IO läuft, was aber unerheblich sein dürfte, da der befehl ja von der CCU2 kommt.
Ich bekomme einen Fehler 500 das Apache Servers. Im log steht, dass mit Zeile 11 etwas nicht stimmt - Hier geht es um den GPIO pinout (kann ich gern nochmal posten wenn das was hilft).
Das Scrpit läuft einwandfrei wenn ich es direkt zB über SSH aufrufe.

Meine Frage: Wo ist mein Problem? Evtl hat es was mit Rechten zu tun?

mastermind611
Beiträge: 124
Registriert: 14.02.2011, 23:09

Re: Von der CCU aus ein python srcript im Raspberry pi aufru

Beitrag von mastermind611 » 14.10.2014, 20:02

und warum benutzt Du dafür nicht den rpi - Adapter?

Viele Grüße

mimquadrat
Beiträge: 71
Registriert: 18.11.2013, 15:50

Re: Von der CCU aus ein python srcript im Raspberry pi aufru

Beitrag von mimquadrat » 14.10.2014, 20:05

ich denke mit dem RPI kann man zwar GPIOS ansteuern, aber nicht so komplex wie man einen schrittmotor ansteuern muss. hier müssen 4 verschiedene pins im Millisekundenbereich geschaltet werden und das auch noch in der richtigen Reihenfolge...

darum hatte ich ja schonmal gebeten den Adapter "aufzubohren" wenn das irgendwie möglich wäre:
http://homematic-forum.de/forum/viewtop ... 48&t=20061

Antworten

Zurück zu „CCU.IO“