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:

Code: Alles auswählen

python3 Homematic_prgorammstarten_test.py
Doch auf der Homematic-Seite bewegt sich nichts.

Anbei ein Printscreen des Programms:
testprogramm.PNG
testprogramm.PNG (24.05 KiB) 2988 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 ?