Seite 1 von 1

Dreambox über OpenHAB steuern

Verfasst: 12. Apr 2016 22:03
von seppy
Hallo Zusammen,

hier eine ganz kurze Anleitung für die Steuerung der Dreambox aus openHAB heraus.

Ich zeige Lautstärke und den aktuellen Sender an. Mehr habe ich aktuell in der Sitemap nicht eingebunden. Ich habe zusätzlichen einen Schalter zum Ausschalten der Dreambox. Mit meinem globalen "ichgeheinsBett" Schalter wird dann auch die Dreambox abgeschaltet.

Meine Items sehen wie folgt aus:

Code: Alles auswählen

Number InnenEGWohnzimmerDreamboxActualVolume        
	"Volume [%d %%]"     
	{http="<[http://dreamboxIP/web/getcurrent:60000:REGEX(.*?<e2current>(.*?)</e2current>.*)]"}
String InnenEGWohnzimmerDreamboxActualChannel 
	"Aktueller Kanal [%s]"
	{http="<[http://dreamboxIP/web/getcurrent:60000:REGEX(.*?<e2servicename>(.*?)</e2servicename>.*)]"}
String InnenEGWohnzimmerDreamboxPowerstate_RAW 
	{http="<[http://dreamboxIP/web/powerstate:60000:REGEX(.*?<e2instandby>(.*?)</e2instandby>.*)]"}
Switch InnenEGWohnzimmerDreamboxPowerstate
	"DreamBox Wohnzimmer"
	(gEGWohnzimmer)
Switch EGWohnzimmerDreamboxSetPowerstate
	{http=">[*:POST:http://dreamboxIP/web/powerstate?newstate=0]"}
String EGWohnzimmerDreamboxStatus
	" [%s]"
Zu beachten ist, dass der Powerstate meines Wissens nach nur getoggelt werden kann. Deshalb habe ich mir mit der folgenden Regel geholfen:

Code: Alles auswählen

/**
 * Powerzustand Dreambox Wohnzimmer überwachen und verwertbaren Zustand setzen
 * 
 */
rule "InnenEGWohnzimmerDreamboxPowerstate_RAW_Changed"
when
	Item InnenEGWohnzimmerDreamboxPowerstate_RAW changed
then
	if (InnenEGWohnzimmerDreamboxPowerstate_RAW.state == "true"){
		InnenEGWohnzimmerDreamboxPowerstate.postUpdate(OFF)
	} else if (InnenEGWohnzimmerDreamboxPowerstate_RAW.state == "false"){
		InnenEGWohnzimmerDreamboxPowerstate.postUpdate(ON)
	} else {
		InnenEGWohnzimmerDreamboxPowerstate.postUpdate(Uninitialized)
	}
	
	logInfo("HomeBox.InnenEGWohnzimmerDreamboxPowerstate_RAW_Changed", "Updated InnenEGWohnzimmerDreamboxPowerstate_RAW: " + InnenEGWohnzimmerDreamboxPowerstate_RAW.state)
end

Code: Alles auswählen

/**
 * Powerzustand Dreambox setzen
 * 
 */
rule "Set_Dreambox_Powerstate"
when
	Item InnenEGWohnzimmerDreamboxPowerstate received command
then
	if (receivedCommand == ON) {
		EGWohnzimmerDreamboxSetPowerstate.sendCommand(ON)
	} else {
		EGWohnzimmerDreamboxSetPowerstate.sendCommand(OFF)
	}	
	logInfo("HomeBox.Set_Dreambox_Powerstate", "Updated Set_Dreambox_Powerstate: " + EGWohnzimmerDreamboxSetPowerstate.state)
end
Für weitere Anregungen bin wirklich dankbar! Ich habe das Binding nicht genutzt, da ich damit nur Theater hatte.

Viele Grüße,
Seppy

Re: Dreambox über OpenHAB steuern

Verfasst: 15. Mai 2016 15:11
von mstormi
Ich mache das ganz ähnlich, allerdings kann man den powerstate nicht nur toggeln. Dadurch brauche ich nur eine Regel.
Die nutze ich auch gleich, um die Beleuchtung anzupassen, wenn jemand die Dreambox an- oder ausstellt.


Switch Dreambox "Dreambox [%s]" <video> (EG_Wohnen,Status,Test) { http=">[ON:POST:http://dm500hd/web/powerstate?newstate=4] >[OFF:POST:http://dm500hd/web/powerstate?newstate=5]" }
String Dreambox_Standby "Dreambox in Standby [%s]" <video> (Status,Test) { http="<[http://dm500hd/web/powerstate:3000:REGE ... 2instandby>.*)]" }

Code: Alles auswählen

rule "TV"
when
        Item Dreambox_Standby changed
then
        logInfo("rules", "Dreambox_Standby = " + Dreambox_Standby.state.toString)
        if (Dreambox_Standby.state == "false") {
                Dreambox.postUpdate(ON)
                if (now.getHourOfDay >= 19 || Tageslicht.state == OFF)
                        Szene.sendCommand(100)
        } else {
                        Dreambox.postUpdate(OFF)
                        if (now.getHourOfDay >= 19 || Tageslicht.state == OFF)
                                Szene.sendCommand(3)
                        else
                                Szene.sendCommand(2)
        }
end

Re: Dreambox über OpenHAB steuern

Verfasst: 15. Mai 2016 20:39
von seppy
Gut zu wissen, dann kann ich meine Rule auch dahingehend anpassen!

Danke und Gruß,
Seppy

Re: Dreambox über OpenHAB steuern

Verfasst: 24. Feb 2020 19:12
von Graefe
Bei dem Enigma2-Binding wird der Switch-Status nicht geupdatet - zum verzweifeln. Mit Eurer Anleitung hier gehts! Hervorragend, großer Dank!! :D

Für die Neulinge (wie mich) noch ein paar Anmerkungen:
1) Das HTTP-Binding muss installiert sein.
2) Das RegEx-Transformations müssen installiert sein.
3) Authentifizierung, Token-Sicherheit und Hijacking-Schutz sollten in den Einstellungen für die Weboberfläche der Dreambox ausgeschaltet werden (Einstellungen->Netzwerk->Webinterface).
3) Das URL-decodierte Item-File ('IP_Dreambox' muss mit der jeweiligen IP der Dreambox ersetzt werden:

Code: Alles auswählen

Switch Dreambox "Dreambox [%s]" <video> { http=">[ON:POST:http://IP_Dreambox/web/powerstate?newstate=4] >[OFF:POST:http://IP_Dreambox/web/powerstate?newstate=5]" }
String Dreambox_Standby "Dreambox in Standby [%s]" <video>  { http="<[http://IP_Dreambox/web/powerstate:3000:REGEX(.*?<e2instandby>(.*?)</e2instandby>.*)]" }
4) Das reine Rule-File von mstormi (von Szenenfunktionen bereinigt):

Code: Alles auswählen

rule "TV"
when
        Item Dreambox_Standby changed
then
        logInfo("rules", "Dreambox_Standby = " + Dreambox_Standby.state.toString)
        if (Dreambox_Standby.state == "false") {
                Dreambox.postUpdate(ON)
        } else {
                Dreambox.postUpdate(OFF)
        }
end
Jetzt müsste es jeder hinbekommen!

Re: Dreambox über OpenHAB steuern

Verfasst: 17. Apr 2020 11:12
von Ordnas
Ich hatte immer Probleme mit dem Power Status. Vorallem, wenn man mit der Fernbedienung die DM aus dem Standby holt, ging es eine weile, bis es Openhab merkte. Ich habe es mit der Erweiterung: Execute on PowerEvent gelöst. Jetzt habe ich sofort den aktuellen PowerStatus.