Von der CCU aus ein python srcript im Raspberry pi aufrufen
Moderator: Co-Administratoren
- 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
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.
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
RaspberryMatic auf Raspberry Pi 4 (HMIP-RFUSB) mit 1x Lan Gateway RaspberrryPi 3B+ (HMIP-RFUSB) + RS485 Gateway
-
- 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
in CCU.IO Script kannst Du das mit execCmd bewerkstelligen, also z.B.:
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
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);
}
}
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);
}
}
}
Re: Von der CCU aus ein python srcript im Raspberry pi aufru
Hallo Markus33,
eine weiter Möglichkeit wäre es wenn du:
Damit kannst du dann aus einem HM Script heraus über am besten ein CUxD Exec Gerät jedes Script auf dem Raspberry ausführen!
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: und dann von dort dich weiterverbindest zum Raspberry mit 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!
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'
Code: Alles auswählen
string cmd="ssh <ip des raspberry> /pfad/zum/script";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State(cmd);
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>
Code: Alles auswählen
ssh <ip des 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
Zeitgesteuertes LXCCU / CCU2 Backup damit es immer eine Aktuelle Sicherung gibt!
Diverse weitere Anleitungen für CCU / LXCCU / Raspberry PI
- 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
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)
Und dann auslösen via: Oder hab ich da was falsch verstanden ?
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)
Und dann auslösen via: Oder hab ich da was falsch verstanden ?
---------------------------------------------------------------------
RaspberryMatic auf Raspberry Pi 4 (HMIP-RFUSB) mit 1x Lan Gateway RaspberrryPi 3B+ (HMIP-RFUSB) + RS485 Gateway
RaspberryMatic auf Raspberry Pi 4 (HMIP-RFUSB) mit 1x Lan Gateway RaspberrryPi 3B+ (HMIP-RFUSB) + RS485 Gateway
- 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
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
(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 ?
Expert Editor:
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:
Es will nur nicht mit ccu.io v(execCmd(cmd, callback)) ???
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
(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 ?
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
---------------------------------------------------------------------
RaspberryMatic auf Raspberry Pi 4 (HMIP-RFUSB) mit 1x Lan Gateway RaspberrryPi 3B+ (HMIP-RFUSB) + RS485 Gateway
RaspberryMatic auf Raspberry Pi 4 (HMIP-RFUSB) mit 1x Lan Gateway RaspberrryPi 3B+ (HMIP-RFUSB) + RS485 Gateway
- 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
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.
Danke,
Markus
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);
}
}
Markus
---------------------------------------------------------------------
RaspberryMatic auf Raspberry Pi 4 (HMIP-RFUSB) mit 1x Lan Gateway RaspberrryPi 3B+ (HMIP-RFUSB) + RS485 Gateway
RaspberryMatic auf Raspberry Pi 4 (HMIP-RFUSB) mit 1x Lan Gateway RaspberrryPi 3B+ (HMIP-RFUSB) + RS485 Gateway
- 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
OK. Ich hab nun endlich eine Lösung gefunden (jedoch ohne CCU.IO):
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 :
Homematic Skript:
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 ?)
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 :
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")
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
RaspberryMatic auf Raspberry Pi 4 (HMIP-RFUSB) mit 1x Lan Gateway RaspberrryPi 3B+ (HMIP-RFUSB) + RS485 Gateway
Re: AW: Von der CCU aus ein python srcript im Raspberry pi a
Hallo,
Mails hättest du auch einfacher senden können...
LG
Paul
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
Zeitgesteuertes LXCCU / CCU2 Backup damit es immer eine Aktuelle Sicherung gibt!
Diverse weitere Anleitungen für CCU / LXCCU / Raspberry PI
- 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
Richtig ! Jedoch ist mein Ziel irgend ein Python Skript laufen zu lassen. Das Email war nur ein Beispiel um zu testen ob es funktioniert.Mails hättest du auch einfacher senden können...
---------------------------------------------------------------------
RaspberryMatic auf Raspberry Pi 4 (HMIP-RFUSB) mit 1x Lan Gateway RaspberrryPi 3B+ (HMIP-RFUSB) + RS485 Gateway
RaspberryMatic auf Raspberry Pi 4 (HMIP-RFUSB) mit 1x Lan Gateway RaspberrryPi 3B+ (HMIP-RFUSB) + RS485 Gateway
Re: Von der CCU aus ein python srcript im Raspberry pi aufru
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 sendetMarkus33 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