Seite 1 von 2
[erledigt] Programme per ext. Script ansprechen.
Verfasst: 16.04.2018, 20:00
von dll-live
Liebe Foren-Gemeinde
noch ein Post von mir.
Wie kann ich ein Programm von extern per Script triggern (starten)?
Gruss Dani
Re: Programme per ext. Script ansprechen.
Verfasst: 16.04.2018, 20:11
von Black
vllt ein wenig besser beschreiben...
was ist extern ? womit starten ?
Re: Programme per ext. Script ansprechen.
Verfasst: 16.04.2018, 20:14
von dll-live
Hallo Black.
Gern gebe ich weitere auskünfte.
Ich würde gerne die Programme auf der Homematic CCU2 - von meinem Linux-Rechner aus starten.
(z.B.: Gibt es ein Programm auf der Homematic das Heisst- MAch das Fenster auf und Shcliesse es nach 45 min automatisch wieder - nennen wir es "Fenster auf",
Gerne würdei ch nun auf dme Linux.rechner einen Befhle an die CCU absetzen mit dem das Script "Fenster auf" ausgeführt wird.
Hoffe das dies nun verständlicher ist.
Gruss Dani
Re: Programme per ext. Script ansprechen.
Verfasst: 16.04.2018, 20:22
von Black
geht... wenn du beispielsweise python auf deiner Maschine hast:
Code: Alles auswählen
from datetime import datetime
from urllib.request import urlopen
from http.server import BaseHTTPRequestHandler, HTTPServer
import time as t
import http.client
# Verbindungsinformationen zur CCU2
# ---------------------------------
ipCCU2 = "192.168.2.2" <----------------IP DEINER CCU
xmlrpcPort = 8181
ENpushCCU = True
def pushState (command):
# im Testmode schreiben wir nicht wild auf de CCU rum
if ENpushCCU:
try:
httpServ = http.client.HTTPConnection(ipCCU2, xmlrpcPort)
httpServ.connect()
httpServ.request('POST', 'blabla.exe', command)
response = httpServ.getresponse()
reason= response.status,response.reason
httpServ.close()
return reason
except:
# Wenn eine Fehlübertragung: egal in dem Test
return
pushState ('dom.GetObject ("ZZTEST").State (22.22)')
ein programm startest dann mit dom.GetObject (ID_PROGRAMS).Get ("IchBinDeinProgrammName").ProgramExecute (true);
Re: Programme per ext. Script ansprechen.
Verfasst: 16.04.2018, 20:35
von dll-live
Sali Black.
Meine Maschine hat Python drauf.
Darf ich fragen woher du die ganzen Befehle kennst.
Wie komm ich zu dazu?
Gruss
Dani
Re: Programme per ext. Script ansprechen.
Verfasst: 16.04.2018, 20:39
von Black
python Befehle ? ich hab da mehrere nett fette Fachbücher über Python. und in Python ist auch mein Gateway zur Anbindung einer Buderus Logamatic 2107 Heizungssteuerung mit einem nachgebildeten 3964R Protokoll programmiert ^^
Black
Re: Programme per ext. Script ansprechen.
Verfasst: 16.04.2018, 20:45
von dll-live
Sali Balck
Ach so ja dann ist mein leiden ja nur doppelt so schlimm... Python geht so einigermassen udn die CCU habei ch auch nicht komplett im griff. juhui....
Zwei blöde Fragen zu dem Code:
In der Zeile " pushState ('dom.GetObject ("ZZTEST").State (22.22)') "
Für was steht das 22.22?
Ist die Annahme: das in der Zeile " httpServ.request('POST', 'blabla.exe', command)" das blabla.exe genau so stehen bleiben muss richtig?
Zudem gehe ich davon aus, dass das command -> sprich "ZZTEST" der Name meines Programms ist. richtig?
Gruss Dani
Re: Programme per ext. Script ansprechen.
Verfasst: 16.04.2018, 21:06
von Black
nein, die zeile wäre bepsielhaft dazu da, eine Systemvariable mit dem Namen ZZTEST auf den Wert 22.22 zu setzen.
zu müsstest schreiben
pushState ('dom.GetObject (ID_PROGRAMS).Get ("IchBinDeinProgrammName").ProgramExecute (true)');
viel Erfolg, Black
Re: Programme per ext. Script ansprechen.
Verfasst: 16.04.2018, 22:42
von dll-live
Hallo Black.
Leider will das nicht ganz.
Mein Script sieht sfolgendermassen aus:
Code: Alles auswählen
from datetime import datetime
from urllib.request import urlopen
from http.server import BaseHTTPRequestHandler, HTTPServer
import time as t
import http.client
# Verbindungsinformationen zur CCU2
# ---------------------------------
ipCCU2 = "192.168.1.76"
xmlrpcPort = 8181
ENpushCCU = True
def pushState (command):
# im Testmode schreiben wir nicht wild auf de CCU rum
if ENpushCCU:
try:
httpServ = http.client.HTTPConnection(ipCCU2, xmlrpcPort)
httpServ.connect()
httpServ.request('POST', 'blabla.exe', command)
response = httpServ.getresponse()
reason= response.status,response.reason
httpServ.close()
return reason
except:
# Wenn eine Fehlübertragung: egal in dem Test
return
pushState ('dom.GetObject(ID_PROGRAMS).Get("Testig").ProgramExecute(true)');
der aufruf dazu lautet:
Doch auf der Homematic-Seite bewegt sich nichts.
Anbei ein Printscreen des Programms:
- testprogramm.PNG (24.05 KiB) 3005 mal betrachtet
Wenn ich es direkt auf der Hm ausführe blinkt die Leuchte 5x kurz blau.
Kann mir jemand noch beim "letzten" schritt helfen - sprich mir zeigen - was noch nötig ist, dmait es funktioniert.
Gruss Dani
Re: Programme per ext. Script ansprechen.
Verfasst: 16.04.2018, 22:49
von Black
wie sieht die firewalleinstellung in deiner ccu aus ?
unter HomeMatic XML-RPC API und Remote HomeMatic-Script API beides auf vollzugriff ?