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

Von der CCU aus ein python srcript im Raspberry pi aufrufen

Beitrag von Markus33 » 27.03.2014, 14:38

Hallo,

was ist die einfachste Möglichkeit von der CCU aus im Raspberry Pi ein Script aufrufen. Auf dem Raspi ist CCU.IO installiert ?
Hat jemand ein Beispiel dafür ?
(das Python script kann ich schon selber schreiben. Es geht mir nur um den Aufruf aus der CCU raus)

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

hobbyquaker
Beiträge: 3978
Registriert: 12.07.2009, 20:01
Hat sich bedankt: 17 Mal
Danksagung erhalten: 176 Mal
Kontaktdaten:

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

Beitrag von hobbyquaker » 27.03.2014, 15:30

in CCU.IO Script kannst Du das mit execCmd bewerkstelligen, also z.B.:

Code: Alles auswählen

execCmd('/pfad/script.py', function (err, stdout, stderr) {
  if (err) {
    log("fehler bei ausführung von script.py: "+err);
  } else {
    log("ausgabe von script.py: "+stdout);
  }
}
Um es von der CCU gesteuert auszulösen könntest Du die Ausführung z.B. auf einen Virtuellen Taster legen:

Code: Alles auswählen

subscribe({name:'BidCos-RF.BidCos-RF:50.PRESS_SHORT'}, function () {
  execCmd('/pfad/script.py', function (err, stdout, stderr) {
    if (err) {
      log("fehler bei ausführung von script.py: "+err);
    } else {
      log("ausgabe von script.py: "+stdout);
    }
  }
}

PaulG4H
Beiträge: 1184
Registriert: 11.08.2011, 10:09

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

Beitrag von PaulG4H » 27.03.2014, 15:50

Hallo Markus33,

eine weiter Möglichkeit wäre es wenn du:
  • Dich als root per ssh auf der CCU EInlogst und mit ssh-keygen einen Public key erstellst
  • den Inhalt der Datei /root/.ssh/id_rsa.pub von der CCU dann in die Datei /root/.ssh/authorized_keys auf dem Raspberry Kopierst
  • kannst du nach dem einmaligen Bestätigen der Verbindung* von der CCU aus dann einfach auf dem Raspberry ein Script aufrufen mit

Code: Alles auswählen

ssh <ip oder hostname der ccu> 'befehl -option -oder -was -auch -immer'
Damit kannst du dann aus einem HM Script heraus über am besten ein CUxD Exec Gerät jedes Script auf dem Raspberry ausführen!

Code: Alles auswählen

string cmd="ssh <ip des raspberry> /pfad/zum/script";
  dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State(cmd);
LG

Paul

* Beim ersten Verbinden mit dem Raspberry von der CCU SSH Konsole heraus musst du die mit "yes" bestätigen, also wenn du auf der CCU per SSH Verbunden folgendes eingibst:

Code: Alles auswählen

ssh <ip oder Hostname der ccu>
und dann von dort dich weiterverbindest zum Raspberry mit

Code: Alles auswählen

ssh <ip des raspberry>
yes getippt hast bist du ohne Kennwort eingabe auf dem Raspberry, [STRG] + [D] trennt diese Verbindung wieder und bei einem erneuten Aufruf von dem ssh Befehl bist du ohne weitere Rückmeldung direkt von der CCU auf dem Raspberry!

EDIT: --> bei jedem CCU Firmware Update geht aber der erstellte SH Key verloren und muss daher immer neu erstellt und auf den raspberry kopiert werden!
Zuletzt geändert von PaulG4H am 20.11.2015, 13:25, insgesamt 1-mal geändert.
Apache Reverse Proxy fuer sicheren Zugriff auf die CCU von Unterwegs
Zeitgesteuertes LXCCU / CCU2 Backup damit es immer eine Aktuelle Sicherung gibt!
Diverse weitere Anleitungen für CCU / LXCCU / Raspberry PI

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 » 27.03.2014, 22:24

Ich werde mal eins nach dem anderen durchtesten:

hobbyquaker

Eigentlich sollte ich doch nur im Script Editor das reinkopieren den Pfad und Skript Name ändern, speichern und dann sollte es laufen, oder ?
(restart script-engine natürlich auch noch ausfürhen in ccu.io >>> control)
boot_mail.PNG
boot_mail.PNG (16.59 KiB) 7064 mal betrachtet
Und dann auslösen via:
bidcos49.PNG
bidcos49.PNG (8.18 KiB) 7064 mal betrachtet
Oder hab ich da was falsch verstanden ?
---------------------------------------------------------------------
RaspberryMatic auf Raspberry Pi 4 (HMIP-RFUSB) mit 1x Lan Gateway RaspberrryPi 3B+ (HMIP-RFUSB) + RS485 Gateway

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 » 29.03.2014, 14:39

OK. Ich hab das jetzt nochmal über ScriptGUI versucht.

Sieht dann so auch und es gibt bei Live Test in der ScriptGUI keine Fehlermeldung.
Die Test Variable wird auch in der CCU hochgezählt, d.h. das skript läuft durch.

JEDOCH funktioniert das Python skript noch nicht :evil:
(das Python skrpt kann aber von OpenVPN aufgerufen werden kann, somit sollten auch die Rechte passen)

Woran kann das noch liegen, dass das Python skript einfach nicht aufgerufen wird ?
scriptgui1.PNG
Expert Editor:

Code: Alles auswählen

function test () {
execCmd("/home/pi/openvpn_mail.py", function (err, stdout, stderr) {
  if (!err) {
    log("Python Script gab zurück: "+stdout);
  } else {
    log("Python Script Fehler: "+err);
  }
});
}

EDIT:
Ich hab das Python skript auch mal in das /usr/local/bin Verzeichnis kopiert und die Zugriffsrechte für openvpn_mail.py geprüft
u=rwx
o=rwx
das hier läuft auch auf dem Raspberry Pi:

Code: Alles auswählen

pi@raspberrypi ~ $ python /usr/local/bin/openvpn_mail.py
Es will nur nicht mit ccu.io v(execCmd(cmd, callback)) ???
---------------------------------------------------------------------
RaspberryMatic auf Raspberry Pi 4 (HMIP-RFUSB) mit 1x Lan Gateway RaspberrryPi 3B+ (HMIP-RFUSB) + RS485 Gateway

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, 09:50

Hallo hobbyquaker,

ich hab jetzt weitere tests gemacht und hier noch eine lezte Frage:

Funktioniert die execCmd Funktion grundsätzlich im Expert Editor von ScriptGUI ???

Auch damit gibt es eine Fehlermeldung im Expert Editor beim Live Test von ScriptGUI.

Code: Alles auswählen

execCmd('/pfad/script.py', function (err, stdout, stderr) {
  if (err) {
    log("fehler bei ausführung von script.py: "+err);
  } else {
    log("ausgabe von script.py: "+stdout);
  }
}
Danke,
Markus
---------------------------------------------------------------------
RaspberryMatic auf Raspberry Pi 4 (HMIP-RFUSB) mit 1x Lan Gateway RaspberrryPi 3B+ (HMIP-RFUSB) + RS485 Gateway

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, 21:09

OK. Ich hab nun endlich eine Lösung gefunden (jedoch ohne CCU.IO): :D :D :D

1. Das Python skript läuft nun als getarntes CGI Script auf dem Raspberry Pi

Voreinstellung am Raspberry Pi
http://raspberrywebserver.com/cgiscript ... ry-pi.html
und
http://raspberrywebserver.com/cgiscript ... ython.html

2. Mein Beispiel Python script nennt sich derzeit auch hello.py

3. Aufruf direkt aus der CCU2 mit :
lösung.PNG
lösung.PNG (22.04 KiB) 6981 mal betrachtet
Homematic Skript:

Code: Alles auswählen

string stdout;
string stderr;
system.Exec("wget -O /dev/null -q http://192.168.2.166/cgi-bin/hello.py")
Wobei 192.168.2.166 die IP Adresse meines Raspberry Pi ist und hello.py das python script im Raspberry Pi Verzeichnis (/usr/lib/cgi-bin/hello.py)

Anbei noch das Python skript das eine Email via googlemail versendet (ist nicht von mir. Ich weiß nur nicht mehr woher ich das hab ?)

Code: Alles auswählen

#!/usr/bin/env python
import subprocess
import smtplib
import socket
from email.mime.text import MIMEText
import datetime
# Change to your own account information
to = 'XXXXXX.YYYYYY@ZZZZZZ.de'
gmail_user = 'XXXXXXX@ZZZZZl.com'
gmail_password = 'XXXXXXXXX'
smtpserver = smtplib.SMTP('smtp.gmail.com', 587)
smtpserver.ehlo()
smtpserver.starttls()
smtpserver.ehlo
smtpserver.login(gmail_user, gmail_password)
today = datetime.date.today()
# Very Linux Specific
arg='ip route list'
p=subprocess.Popen(arg,shell=True,stdout=subprocess.PIPE)
data = p.communicate()
split_data = data[0].split()
ipaddr = split_data[split_data.index('src')+1]
my_ip = 'Your ip is %s' %  ipaddr
msg = MIMEText(my_ip)
msg['Subject'] = 'test %s' % today.strftime('%b %d %Y')
msg['From'] = gmail_user
msg['To'] = to
smtpserver.sendmail(gmail_user, [to], msg.as_string())
smtpserver.quit()

print "Content-type: text/html\n\n"
print "<h1>Hello World</h1>"
---------------------------------------------------------------------
RaspberryMatic auf Raspberry Pi 4 (HMIP-RFUSB) mit 1x Lan Gateway RaspberrryPi 3B+ (HMIP-RFUSB) + RS485 Gateway

PaulG4H
Beiträge: 1184
Registriert: 11.08.2011, 10:09

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

Beitrag von PaulG4H » 30.03.2014, 21:17

Hallo,

Mails hättest du auch einfacher senden können...

LG

Paul
Apache Reverse Proxy fuer sicheren Zugriff auf die CCU von Unterwegs
Zeitgesteuertes LXCCU / CCU2 Backup damit es immer eine Aktuelle Sicherung gibt!
Diverse weitere Anleitungen für CCU / LXCCU / Raspberry PI

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, 21:21

Mails hättest du auch einfacher senden können...
Richtig ! Jedoch ist mein Ziel irgend ein Python Skript laufen zu lassen. Das Email war nur ein Beispiel um zu testen ob es funktioniert.
---------------------------------------------------------------------
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, 22:57

Markus33 hat geschrieben:Hallo hobbyquaker,

ich hab jetzt weitere tests gemacht und hier noch eine lezte Frage:

Funktioniert die execCmd Funktion grundsätzlich im Expert Editor von ScriptGUI ???

Auch damit gibt es eine Fehlermeldung im Expert Editor beim Live Test von ScriptGUI.

Code: Alles auswählen

execCmd('/pfad/script.py', function (err, stdout, stderr) {
  if (err) {
    log("fehler bei ausführung von script.py: "+err);
  } else {
    log("ausgabe von script.py: "+stdout);
  }
}

Danke,
Markus
Ja sollte eigentlich funktioniren. Allerdings ist der execCmd noch nicht mit im Live test implementiert und bitte dran denke im Live test würde das pyton script so oder so nicht ausgeführt werden da der Live test nur Simuliert aber keine befehle an die CCU.io sendet

Antworten

Zurück zu „CCU.IO“