Seite 1 von 2

Tuxbox Neutrino Satreceiver über OpenHab bedienen

Verfasst: 30. Nov 2019 11:39
von PeterA
Hallo Leute,

hier möchte ich mein kleines November Projekt vorstellen.
(Vielen Dank wie immer auch an Udo, der mir die ein oder andere Frage beantwortet hat) :)

Folgende Satreceiver nutzen ein OS aus dem Tuxbox Projekt und als GUI "Neutrino".
https://wiki.tuxbox-neutrino.org/wiki/K ... e:Hardware
Im OS ist auch ein Webserver mit http API Integriert.
https://wiki.tuxbox-neutrino.org/wiki/N ... 8nhttpd.29

Und hier kann man über das http Binding im OpenHab Befehle an die Box Senden und über das exec Binding Infos Abrufen.
Ich habe hier eine Remote realisiert mit welcher man die Box bequem mit dem Smartphone über OpenHab bedienen kann.

coolstream.items:

Code: Alles auswählen

String Coolstream                  { http=">[*:POST:http://192.168.2.116/control/rcem?%2$s]" } // Sendet den gemappten String aus der Sitemap zur Box
Und dann in der Sitemap die Befehle direkt gemapped:

Code: Alles auswählen

Switch    item=Coolstream mappings=[KEY_POWER="POWER",KEY_MUTE="MUTE"]
Switch    item=Coolstream mappings=[KEY_EXIT="EXIT",KEY_HOME="HOME",KEY_OK="OK",KEY_EPG="EPG"]
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_GREEN="GREEN",KEY_YELLOW="YELLOW",KEY_BLUE="BLUE"]
Switch    item=Coolstream mappings=[KEY_PLAY="PLAY",KEY_PAUSE="PAUSE",KEY_RECORD="RECORD",KEY_STOP="STOP"]
Um von der Box den Aktuellen Sender und die Sendung bekommen habe ich zwei Scripts und das exec Binding benutzt.
Wenn man im Browser folgendes eingibt:

Code: Alles auswählen

http://<box ip>/control/getchannel?format=json&epg=true
Dann bekommt man diese Json Ausgabe zurück:

Code: Alles auswählen

{"success": "true", "data":{"channel": [{"id": "c4c404530001445d",
"short_id": "4530001445d",
"epg_id": "c4c404530001445d",
"short_epg_id": "4530001445d",
"name": "ProSieben",
"logo": "/share/tuxbox/neutrino/icons/logo/4530001445d.png"
,"isActiveChannel": "true"
,"firstEPG": {"eventid": "311592804660650875",
"description": "Thor",
"info1": "Thor\nAction, USA 2011\nAltersfreigabe: ab 6",
"info2": "Donnergott Chris Hemsworth wird seiner göttlichen Kräfte beraubt! Gerade noch sollte Thor seinem Vater Odin auf den Thron von Asgard folgen, da wird er als Strafe für seine Unbeherrschtheit auf die Erde verbannt. Ohne göttliche Allmacht und ohne seinen magischen Hammer Mjolnir fällt es dem Helden schwer, sich dort zurechtzufinden. Doch dann nehmen sich die Astrophysikerin Jane Foster und ihr Team seiner an. Kurz darauf wird das Militär auf den kampfstarken Hünen aufmerksam.\n\nRegie: Kenneth Branagh\nDrehbuch: J. Michael Straczynski, Mark Protosevich\nKomponist: Patrick Doyle\nKamera: Haris Zambarloukos\nSchnitt: Paul Rubell\n\nDarsteller:\nChris Hemsworth (Thor)\nNatalie Portman (Jane Foster)\nAnthony Hopkins (Odin)\nTom Hiddleston (Loki)\nStellan Skarsgård (Erik Selvig)\nKat Dennings (Darcy Lewis)\nClark Gregg (Agent Coulson)\nColm Feore (King Laufey)\nIdris Elba (Heimdall)",
"startTime": "10:43",
"timeTotal": "130",
"timeElapsed": "91",
"percentage": "70"
}
,"secondEPG": {"eventid": "311592804660650876",
"description": "Marvel Short: Black Widow & Hulk",
"info1": "Marvel Short: Black Widow & Hulk\nAnimation, USA 2017",
"info2": "Black Widow und Hulk finden eine tickende Zeitbombe. Werden die beide eine verheerende Explosion verhindern können?",
"startTime": "12:53",
"timeTotal": "1"
}
}
]
}}
Diese zwei Scripts holen zum einen "ProSieben" aus "name" als Sender und "Thor" aus "description" als Sendung.
Diese Scripts liegen in /etc/openhab2/scripts/ und müssen über die Console mit "Sudo Chmod 755" ausführbar gemacht werden.

getsender.sh:

Code: Alles auswählen

#!/bin/bash
curl -s 'http://<box ip>/control/getchannel?format=json&epg=true' |perl -ne 'print "$1" if /name": "([^"]+)"/'
getinfo.sh:

Code: Alles auswählen

#!/bin/bash
curl -s 'http://<box ip>/control/getchannel?format=json&epg=true' |perl -ne 'print "$1\n" if /description": "([^"]+)"/g' |head -1
Dann meine exec.things:

Code: Alles auswählen

Thing exec:command:getsender [command="/etc/openhab2/scripts/./getsender.sh", interval=15, timeout=5] // Aufruf für das Script
Thing exec:command:getinfo   [command="/etc/openhab2/scripts/./getinfo.sh", interval=15, timeout=5] // Aufruf für das Script
Die items dazu:

Code: Alles auswählen

String Sender "[%s]" {channel="exec:command:getsender:output"} //Empfängt den Sender aus dem Json request
String Sendung "[%s]" {channel="exec:command:getinfo:output"} // Empfängt die aktuelle Sendung aus dem dem Json request
Und die Sitemap:

Code: Alles auswählen

Text      label="Sender"           item=Sender        icon="none"
Text      label="Sendung"          item=Sendung       icon="none"
Und so kann das dann zusammen in der Sitemap aussehen:
Bildschirmfoto 2019-11-29 um 22.40.55.png
Viel Spass!

Re: Tuxbox Neutrino Satreceiver über OpenHab bedienen

Verfasst: 1. Dez 2019 20:36
von PeterA
Und wenn man in der items datei noch das hier einfügt:

Code: Alles auswählen

String Programme                   { http=">[*:POST:http://<box ip>/control/zapto?%2$s]" }
// zapto ist der Befehl gültig für Neutrino

Kann man über die Sitemap direkt "Zappen" also die Sender anwählen.

Code: Alles auswählen

Selection label="Senderliste"      item=Programme  mappings=[<sender id>="DMAX",<sender id>="n-TV",<sender id>="WELT",<sender id>="N24 DOKU"]
usw, usw....

Re: Tuxbox Neutrino Satreceiver über OpenHab bedienen

Verfasst: 2. Dez 2019 20:02
von winni
Hallo Peter,

cooles Projekt!!!

Ich habe auch ein Linux Receiver, mit dem man ebenfalls über http kommunizieren kann.Die Befehle und Sender ID´s sehen etwas anders aus.

Mein item sieht wie folgt aus:

Code: Alles auswählen

String VU_Zap  {http=">[*:POST:http://192.168.178.83/api/zap?sRef=%2$s]"}
und hier meine sitemap:

Code: Alles auswählen

Selection label="Senderliste" item=VU_Zap mappings=[1:0:19:283d:3fb:1:C00000:0:0:0:="ARD"]

Leider funktioniert es nicht, da openhab anscheinend nicht mit den Doppelpunkten (Sonderzeichen) in mappings klar kommt. Dann hatte ich die Idee, eine map Datei zu erstellen und es mit Maptransformation zu lösen.
item:

Code: Alles auswählen

String VU_Zap  {http=">[*:POST:http://192.168.178.83/api/zap?sRef=%2$s]", transformationPattern="MAP:VU.map"}
.map:

Code: Alles auswählen

ARD=1:0:19:283d:3fb:1:C00000:0:0:0:
sitemap:

Code: Alles auswählen

Selection label="Senderliste" item=VU_Zap mappings=[ARD="ARD"]

Die Maptransformation scheint auch nicht zu funktionieren. Evtl. habe ich einen Syntaxfehler oder Maptransformation funktioniert in mappings nicht.

Über eure Hilfe wäre ich sehr dankbar!

Re: Tuxbox Neutrino Satreceiver über OpenHab bedienen

Verfasst: 4. Dez 2019 10:12
von PeterA
winni hat geschrieben: 2. Dez 2019 20:02 Hallo Peter,

cooles Projekt!!!

Ich habe auch ein Linux Receiver, mit dem man ebenfalls über http kommunizieren kann.Die Befehle und Sender ID´s sehen etwas anders aus.

Mein item sieht wie folgt aus:

Code: Alles auswählen

String VU_Zap  {http=">[*:POST:http://192.168.178.83/api/zap?sRef=%2$s]"}
und hier meine sitemap:

Code: Alles auswählen

Selection label="Senderliste" item=VU_Zap mappings=[1:0:19:283d:3fb:1:C00000:0:0:0:="ARD"]

Leider funktioniert es nicht, da openhab anscheinend nicht mit den Doppelpunkten (Sonderzeichen) in mappings klar kommt. Dann hatte ich die Idee, eine map Datei zu erstellen und es mit Maptransformation zu lösen.

Hi winni,

könntest du uns mal die Meldungen im Log posten ?

Merci.

Re: Tuxbox Neutrino Satreceiver über OpenHab bedienen

Verfasst: 4. Dez 2019 20:43
von winni
Hallo Peter,

hier der Auszug aus dem log:

2019-12-04 20:35:19.486 [WARN ] [el.core.internal.ModelRepositoryImpl] - Configuration model 'zuHause.sitemap' has errors, therefore ignoring it: [33,34]: mismatched input ':' expecting '='

Re: Tuxbox Neutrino Satreceiver über OpenHab bedienen

Verfasst: 4. Dez 2019 22:28
von udo1toni
Steht im Klartext da. Deine Sitemap hat Fehler. Mindestens in Zeile 33 an Position 34 hast Du : statt = geschrieben.

Falls die von Dir zitierte Zeile die Zeile 33 ist, so versuche bitte mal, den Wert (der Teil des Mappings vor dem =) in Anführungszeichen zu setzen. Kann auch sein, dass Du den Doppelpukt escapen musst.

Re: Tuxbox Neutrino Satreceiver über OpenHab bedienen

Verfasst: 5. Dez 2019 09:36
von winni
Hallo Udo,

meinst Du mit escapen die Doppelpunkte mit RegEx zu wandeln?

Re: Tuxbox Neutrino Satreceiver über OpenHab bedienen

Verfasst: 5. Dez 2019 09:50
von udo1toni
Nein, escapen wäre mit einem vorangestellten Backslash. Ich hab aber keine Ahnung, ob das funktioniert.

Die saubere Variante wird vermutlich sein, ein Selection Widget auf ein Number Item anzuwenden und innerhalb einer Rule abhängig vom geänderten Status einen Befehl zu schicken.

Re: Tuxbox Neutrino Satreceiver über OpenHab bedienen

Verfasst: 5. Dez 2019 20:48
von winni
Hi Udo,

es funktioniert jetzt. Die Anführungszeichen waren die Lösung:

Code: Alles auswählen

'1:0:19:283d:3fb:1:C00000:0:0:0:'="ARD"

Re: Tuxbox Neutrino Satreceiver über OpenHab bedienen

Verfasst: 5. Dez 2019 21:42
von PeterA
Prima! :D