Dreambox Python - Soap Verbindung - State: PoC

Hi Zusammen,

ich hoffe ich bin in diesem Forum Teil richtig.

Vorweg: Wenn hier jemand ein Fertiges Plugin erwartet, das wird er nicht finden! Das ganze ist ein Anfangsversuch.

Zu mir: Ich bin ein ziemlicher Programmierungs Neuling also bitte keine Aussagen von wegen das hätte ich dir schneller machen können.

Zu meinem Projekt: Ich möchte ein Plugin für die Dreambox schreiben welches sich mittels SOAP Schnittstelle mit IP Symcon verbindet und dort steuern kann. (Leichter gesagt als getan :slight_smile: )

Aktueller Stand: Nach ca. 2 Tagen durchwühlen von Python, SOAPpy, SOAP und ZSI Dokumentationen & Examples hab ichs nun endlich geschafft einen Wert von IP-Symcon über die Shell auf meiner Dream, mittels Python abzufragen (Also ja es kann klappen :slight_smile: )

Wer das ganze mit SOAPpy versucht, lasst es sein. Bei mir hats nicht geklappt. So wie ich das verstanden habe funktioniert SOAPpy besser wenn der Server JSON Werte zur verfügung stellt, die WSDL Komponenten funktionieren nicht wirklich (bei mir).

Folgende Konstellation funktioniert bei mir:
Dream 7020HD
OpenEnigma2 unstable (OE1.6 sollte eigentlich auch klappen)
ZSI2.0 http://pywebsvcs.sourceforge.net/
UND PyXML-0.8.4 (die auf der dream vorhandenen XML Komponenten haben nicht alle von ZSI benötigten Funktionen)

VORSICHT !!! PyXML führt zu Problemen mit dem Webinterface !!! Ich suche die Tage nach einer Lösung !!! Also erstmal nicht zum probieren installieren !!!

ich habe beide Python Erweiterungen nach /usr/lib/python2.7/site-packages auf der Dream kopiert.

Das python script sieht momentan wie folgt aus (192.168.178.4 ist mein IPS):

from ZSI.ServiceProxy import ServiceProxy
import _xmlplus

wsdlUrl = 'http://192.168.178.4:3773/wsdl/IIPSSimpleKernel'
dbfetchSrv = ServiceProxy(wsdl=wsdlUrl)
print dbfetchSrv.GetKernelVersion()

und liefert folgendes Ergebnis:
{'return': 572}

///EDIT: Erfolg beim Script Start über python:

from ZSI.ServiceProxy import ServiceProxy
import _xmlplus

wsdlUrl = 'http://192.168.178.4:3773/wsdl/IIPSScriptEngine'
dbfetchSrv = ServiceProxy(wsdl=wsdlUrl)

dbfetchSrv.ExecuteScript(ScriptID=57919,DoWait=True)

///EDIT2: Variable Boolean schreiben:


from ZSI.ServiceProxy import ServiceProxy
import _xmlplus

wsdlUrl = 'http://192.168.178.4:3773/wsdl/IIPSVariableManager'
dbfetchSrv = ServiceProxy(wsdl=wsdlUrl)

dbfetchSrv.WriteVariableBoolean(VariableID=16771,VarValue=True)

///EDIT3: Variable Boolean Abfragen und Ergebnis printen


from ZSI.ServiceProxy import ServiceProxy
import _xmlplus

wsdlUrl = 'http://192.168.178.4:3773/wsdl/IIPSVariableManager'
dbfetchSrv = ServiceProxy(wsdl=wsdlUrl)

resultDict = dbfetchSrv.ReadVariableBoolean(VariableID=16771)
result = resultDict['return']
print result

So langsam wirds was :slight_smile: Fehlt nur noch die Logik Abfragen und die Visualisierung in Python auf der Dreambox :slight_smile:

Mein Ziel wird es sein Plugin zu entwickeln welches nur noch die IPS IP und die Objekt ID einer Kategorie benötigt und dann Selbstständig die dort vorhandenen Variablen Abfragt und auf der Dreambox visualisiert.

Hoffe diese Infos können schon jemandem helfen der vielleicht ähnliches vor hat.

Um Stati auf der DB darzustellen, reicht ja ein einfaches Sendescript von IPS aus, welches die Infos dann in einer Infobox als Popup darstellt.

Klingt aber generell interessant, umgekehrt wäre aber viel schöner … also das die Dreambox ihre eigenen Stati direkt an IPS schickt, ohne das man seitens IPS die DB pollen müßte um Infos zu bekommen :wink:
Also z.b. beim Umschalten, so das die DB direkt eine Info an IPS schickt welches Programm gewählt wurde usw.

Gruß
Jens

Das ist natürlich auch eine Einsatzmöglichkeit :slight_smile:

Mein Zie ist es, mit der Dreambox Steckdosen, Licht, Geräte schaten zu können. Als zb. mein Beamer Modus Script, so dass alles zum Beamergucken geschaltet wird.

Bin gerade am rumprobieren ein ValueFloat zu schreiben, nur irgenwie habe ich noch keine funktionierende Syntak dafür gefunden. So schön wie in PHP geht das nicht :confused:

Hallo bunnymc,

das Thema ist sehr interessant, hier gibt es schon eine Menge Informationen…

Was Deinem Ansatz wohl eher treffen würde ist eine Art „Dreambox-IPS-Plugin“…(?)

Joachim

Das geht doch mit meinem Vorschlag dann auch … du wählst eine Aktion auf der DB, teilst diese „Aktion“ dann IPS mit und IPS schaltet für dich !?

@Tetrapack
Ja klar, ich wollte nur meine Intention nochmal nennen (Also weniger Dreambox eigene Infos an IPS senden, sondern die Dreambox mehr oder weniger als Webfront Ersatz)

btw. wers noch nicht probiert hat, im OE2 kann man mit dem Browser auch die IPS Seite Webfrontseite öffnen und nutzen, ist aber alles sehr langsam.

@JPaeper
Ja genau das hab ich vor. Ich hab das ganze nur hier (anstatt in den Dreamboxforen IHAD etc.) gepostet da ich denke das die User hier mehr damit anfangen können und eventuell auch mehr Input liefern können als solche in den Dream Foren. Dort ist das einzige SOAP Connect Plugin eins für eine Wärmepumpe und das hab ich mehrfach versucht als Basis zu verwenden -> Erfolgslos.

Ps. Meine Dream an sich ist schon lange in IPS integriert, steuere sogar meinen LG TV über Serielles Kabel zur Dream mit sh scripten von der Dream, welche dann wiederum vom IPS ausgelöst werden

Edit: Post 1 Aktualisiert
Grüße
BunnyMC