[GELÖST] Coolstream Satreceiver Remote via Http

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Benutzeravatar
PeterA
Beiträge: 1106
Registriert: 8. Feb 2019 12:12
Answers: 13

[GELÖST] Coolstream Satreceiver Remote via Http

Beitrag von PeterA »

Hallo Zusammen,

mein Satreceiver "Coolstream Tank" hat eine http Schnittstelle/Control API:

https://github.com/tuxbox-neutrino/gui- ... olapi.html

Hier kann ich über einfache http befehle die Box steuern. Es gibt zwar auch eine extra App (Android) dafür aber
da ich meinen Denon Reciever schon über OH steuern kann soll nun auch der Satreceiver über OH bedient werden können.

Völlig ausreichend ist die "OK" "UP" "DOWN" "LEFT" "RIGHT" "HOME" Taste/Button.

Diese Befehle sehen in http z.b. so aus:

http://BoxIp/control/rcem?KEY_OK als command für die OK Taste auf der Fernbedienung
http://BoxIp/control/rcem?KEY_UP
http://BoxIp/control/rcem?KEY_DOWN .... usw.

Ich könnte mir auch die Senderliste usw. ausgeben lassen, das benötige ich aber zur Zeit noch nicht.

Wie kann ich denn so einen http Befehl auf einen Button in der OpenHAB BasicUi legen und dann an die Box senden ?

Viele Grüße

Peter
Zuletzt geändert von PeterA am 29. Nov 2019 22:03, insgesamt 1-mal geändert.
- OpenHab 2.4
#PWRUP

Benutzeravatar
udo1toni
Beiträge: 15248
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Coolstream Satreceiver Remote via Http

Beitrag von udo1toni »

Dafür gibt es das http Binding :)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
PeterA
Beiträge: 1106
Registriert: 8. Feb 2019 12:12
Answers: 13

Re: Coolstream Satreceiver Remote via Http

Beitrag von PeterA »

Hi Udo,

danke für den Hinweis, das funktioniert!

Hier die coolstream.items

Code: Alles auswählen

Switch Coolstream_Power { http=">[*:POST:http://192.168.2.116/control/rcem?KEY_POWER]" }
Switch Coolstream_Mute { http=">[*:POST:http://192.168.2.116/control/rcem?KEY_MUTE]" }
Switch Coolstream_Ok { http=">[*:POST:http://192.168.2.116/control/rcem?KEY_OK]" }
Switch Coolstream_Home { http=">[*:POST:http://192.168.2.116/control/rcem?KEY_HOME]" }
Switch Coolstream_Up { http=">[*:POST:http://192.168.2.116/control/rcem?KEY_UP]" }
Switch Coolstream_Down { http=">[*:POST:http://192.168.2.116/control/rcem?KEY_DOWN]" }
Switch Coolstream_Left { http=">[*:POST:http://192.168.2.116/control/rcem?KEY_LEFT]" }
Switch Coolstream_Right { http=">[*:POST:http://192.168.2.116/control/rcem?KEY_RIGHT]" }
Switch Coolstream_Red { http=">[*:POST:http://192.168.2.116/control/rcem?KEY_RED]" }
Switch Coolstream_Green { http=">[*:POST:http://192.168.2.116/control/rcem?KEY_GREED]" }
Switch Coolstream_Yellow { http=">[*:POST:http://192.168.2.116/control/rcem?KEY_YELLOW]" }
Switch Coolstream_Blue { http=">[*:POST:http://192.168.2.116/control/rcem?KEY_BLUE]" }
Und hier die passend der Auszug aus Sitemap:

Code: Alles auswählen

Text      label="Coolstream Tank"                     icon="screen"
        Switch    item=Coolstream_Power                       mappings=[ON="An", OFF="Aus"] 
        Switch    item=Coolstream_Mute                        mappings=[ON="An", OFF="Aus"] visibility=[Coolstream_Power==ON]
        Switch    item=Coolstream_Home                        mappings=[ON="HOME"]          visibility=[Coolstream_Power==ON]
        Switch    item=Coolstream_Ok                          mappings=[ON="OK"]            visibility=[Coolstream_Power==ON]
        Switch    item=Coolstream_Down                        mappings=[ON="DOWN"]          visibility=[Coolstream_Power==ON]
        Switch    item=Coolstream_Up                          mappings=[ON="UP"]            visibility=[Coolstream_Power==ON]
        Switch    item=Coolstream_Left                        mappings=[ON="LEFT"]          visibility=[Coolstream_Power==ON]
        Switch    item=Coolstream_Right                       mappings=[ON="RIGHT"]         visibility=[Coolstream_Power==ON]
        Switch    item=Coolstream_Red                         mappings=[ON="RED"]           visibility=[Coolstream_Power==ON]
        Switch    item=Coolstream_Green                       mappings=[ON="GREEN"]         visibility=[Coolstream_Power==ON]
        Switch    item=Coolstream_Yellow                      mappings=[ON="YELLOW"]        visibility=[Coolstream_Power==ON]
        Switch    item=Coolstream_Blue                        mappings=[ON="BLUE"]          visibility=[Coolstream_Power==ON]
Gruß

Peter
- OpenHab 2.4
#PWRUP

Benutzeravatar
udo1toni
Beiträge: 15248
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Coolstream Satreceiver Remote via Http

Beitrag von udo1toni »

Ja, das sollte funktionieren. Du könntest allerdings auch ein String Item verwenden:

Code: Alles auswählen

String Coolstream { http=">[*:POST:http://192.168.2.116/control/rcem?%2$s]" }
und dann in der Sitemap direkt die Befehle mappen:

Code: Alles auswählen

Switch item=Coolstream mappings=[KEY_POWER="POWER",KEY_MUTE="MUTE"]
Switch item=Coolstream mappings=[KEY_HOME="HOME",KEY_OK="OK"]
Switch item=Coolstream mappings=[KEY_UP="UP",KEY_DOWN="DOWN"]
Switch item=Coolstream mappings=[KEY_LEFT="LEFT",KEY_RIGHT="RIGHT"]
Switch item=Coolstream mappings=[KEY_RED="RED",KEY_GREED="GREEN",KEY_YELLOW="YELLOW",KEY_BLUE="BLUE"]
Visibility geht so natürlich nicht so ohne Weiteres. Andererseits ist der Code ja auch geschummelt, denn Du hast keine Kontrolle darüber, in welche Richtung der Schalter toggelt, wenn Du Power sendest.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
PeterA
Beiträge: 1106
Registriert: 8. Feb 2019 12:12
Answers: 13

Re: Coolstream Satreceiver Remote via Http

Beitrag von PeterA »

Hi Udo,

danke für diese Version. Soweit funktionierts ja.
Der nächste Schritt wäre nun Sender und Sendung in der Sitemap anzeigen zu lassen.
Hierzu habe ich etwas bei Git gefunden:

https://github.com/neutrino-images/ni-n ... .cpp#L2020

Mal sehen ob ich hiermit weiter komme.

Von einer anderen Gui weiß ich das hier auch mit RegEX gearbeitet werden muss:

https://smarthome-training.com/en/openh ... tegration/

Gruß

Peter
- OpenHab 2.4
#PWRUP

Benutzeravatar
PeterA
Beiträge: 1106
Registriert: 8. Feb 2019 12:12
Answers: 13

Re: Coolstream Satreceiver Remote via Http

Beitrag von PeterA »

So, jetzt bin ich etwas weiter:

Mit diesem Befehl kann ich den aktuellen Sender abrufen:

Code: Alles auswählen

http://192.168.2.xxx/control/getchannel
dann kommt im Browser folgendes zurück:

Code: Alles auswählen

4294967295 b24803f300012b66 ZDF HD
EDIT:

Und mit diesem Befehl:

Code: Alles auswählen

http://192.168.2.xxx/control/getchannel?format=plain&epg=true
Kommt dann z.b. folgendes zurück:

Code: Alles auswählen

4294967295 b24803f300012b66 ZDF HD (Bares für Rares)
Die Ausgabe könnte auch in XML oder Json erfolgen.

JSON:

Code: Alles auswählen

{"success": "true", "data":{"channel": [{"id": "b24803f300012b66",
"short_id": "3f300012b66",
"epg_id": "b24803f300012b66",
"short_epg_id": "3f300012b66",
"name": "ZDF HD",
"logo": "/share/tuxbox/neutrino/icons/logo/3f300012b66.png"
,"isActiveChannel": "true"
,"firstEPG": {"eventid": "284571206477548797",
"description": "Bares für Rares",
"info1": "Deutschlands größte Trödel-Show",
"info2": "Trödel-Show, Deutschland 2019\n\"Bares für Rares\" auf Schloss Drachenburg: Für die 20.15-Uhr-Ausgabe rollt Horst Lichter den roten Teppich für Raritätenbesitzer aus. Verstärkung hat er von sieben Händlern und vier Experten.\nSie begutachten ganz besondere große Schätze und kleine Kuriositäten. Wie viel sind Oldtimer, Diamantring und Reliquie wirklich wert? Jetzt ist Geschick gefragt! Wer bekommt die Händlerkarte und hat die beste Taktik bei den Händlern?\nModeration: Horst Lichter\nHD-Produktion",
"startTime": "20:15",
"timeTotal": "90",
"timeElapsed": "76",
"percentage": "84"
}
,"secondEPG": {"eventid": "284571206477548798",
"description": "heute journal",
"info1": "Wetter",
"info2": "Neue EU-Kommission gewählt - Ursula von der Leyen im Gespräch\nGeneraldebatte im Bundestag - Opposition rechnet mit Groko ab\nWeltmeister in der Bundesliga - Klinsmann wird Coach bei Hertha BSC Moderation: Marietta Slomka\nHD-Produktion",
"startTime": "21:45",
"timeTotal": "30"
}
}
]
}}

Und hier ist genau das enthalten welches ich in der Sitemap haben möchte
"ZDF HD" und "Bares für Rares"
Wie kann ich erstens die Zahlen wegschneiden und zweitens Sender und Sendung in jeweils einer Zeile anzeigen lassen ?

Gruß
Peter
- OpenHab 2.4
#PWRUP

Benutzeravatar
udo1toni
Beiträge: 15248
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Coolstream Satreceiver Remote via Http

Beitrag von udo1toni »

Wenn der Sendername und die Sendung nach dem 2. Leerzeichen kommen, sähe die REGEXP so aus:

Code: Alles auswählen

String MyItem "Programm [REGEX([0-9]* [0-9,a-f]* (.*)):%s]"          // Sender und Sendung
String MyItem "Sender [REGEX([0-9]* [0-9,a-f]* (.*) \(.*):%s]"       // Sender
String MyItem "Sendung [REGEX([0-9]* [0-9,a-f]* (\(.*)):%s]"         // Sendung mit Klammern
String MyItem "Sendung [REGEX([0-9]* [0-9,a-f]* \((.*)\)):%s]"       // Sendung ohne Klammern
Den Bindingteil habe ich mir jetzt geschenkt, die REGEX kann man natürlich auch direkt im Request verwenden, statt im Label, dann landet der String direkt im Status

Für JSON sähe es so aus:

Code: Alles auswählen

String MyItem "Sender [JSONPATH($.data.channel.[0].name):%s]"                    // Sender
String MyItem "Sendung [JSONPATH($.data.channel.[0].firstEPG.description):%s]"   // Sendung
Wenn Du den Text nicht pur weiterverarbeiten willst, reicht es, ein Item zu verwenden und in der Sitemap nur unterschiedliche Label zu nutzen.

Beides ist aber nicht getestet, sondern nur "ausgerechnet" ;)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
PeterA
Beiträge: 1106
Registriert: 8. Feb 2019 12:12
Answers: 13

Re: Coolstream Satreceiver Remote via Http

Beitrag von PeterA »

Hi Udo,

ok. Aber wie bekomme ich jetzt den http Aufruf damit "Verknüpft" das habe ich noch nicht verstanden..
- OpenHab 2.4
#PWRUP

Benutzeravatar
udo1toni
Beiträge: 15248
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Coolstream Satreceiver Remote via Http

Beitrag von udo1toni »

Na, das ist ein Item, Du musst nur das Binding in {} hinter das Label schreiben, z.B. so:

Code: Alles auswählen

String MyItem "Sender [REGEX([0-9]* [0-9,a-f]* (.*) \(.*):%s]" {http="<http://192.168.2.xxx/control/getchannel?format=plain&epg=true:60000:default"} // Sender
Alternativm den Text direkt in den Status:

Code: Alles auswählen

String MyItem "Sender [%s]" {http="<http://192.168.2.xxx/control/getchannel?format=plain&epg=true:60000:REGEX([0-9]* [0-9,a-f]* (.*) \(.*)"} // Sender
Natürlich muss das http Binding installiert sein, genauso wie REGEX oder alternativ (mit angepasster Konfiguration) JSONPATH
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
PeterA
Beiträge: 1106
Registriert: 8. Feb 2019 12:12
Answers: 13

Re: Coolstream Satreceiver Remote via Http

Beitrag von PeterA »

Hi Udo,

Code: Alles auswählen

String MyItem "Sender [REGEX([0-9]* [0-9,a-f]* (.*)):%s]" {http="<http://192.168.2.116/control/getchannel?format=plain&epg=true:60000:default"} // Sender
Das ist das Item.
Wenn ich das Speicher kommt im log das:

Code: Alles auswählen

2019-11-28 19:39:32.716 [INFO ] [el.core.internal.ModelRepositoryImpl] - Refreshing model 'coolstream.items'

2019-11-28 19:39:32.730 [ERROR] [el.item.internal.GenericItemProvider] - Binding configuration of type 'http' of item 'MyItem' could not be parsed correctly.

org.eclipse.smarthome.model.item.BindingConfigParseException: bindingConfig '<http://192.168.2.116/control/getchannel?format=plain&epg=true:60000:default' doesn't contain a valid binding configuration
- OpenHab 2.4
#PWRUP

Antworten