Seite 2 von 3

Re: Coolstream Satreceiver Remote via Http

Verfasst: 29. Nov 2019 11:31
von PeterA
Kann es vielleicht hier drann liegen ?

https://www.openhab.org/addons/bindings ... tp-headers

Sollte das Item dann so aussehen ?

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

Re: Coolstream Satreceiver Remote via Http

Verfasst: 29. Nov 2019 15:51
von udo1toni
Da fehlen eckige Klammern... Das Item sollte so aussehen:

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
// oder alternativ so:
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

Re: Coolstream Satreceiver Remote via Http

Verfasst: 29. Nov 2019 19:45
von PeterA
Hi Udo,

vielen Dank.

Aber wenn ich deine erste Zeile als Item speichere (Natürlich mit der richtigen IP)

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
Kommt das hier im Log:

Code: Alles auswählen

2019-11-29 19:42:02.668 [WARN ] [el.core.internal.ModelRepositoryImpl] - Configuration model 'coolstream.items' has errors, therefore ignoring it: [9,15]: mismatched character '(' expecting set null

[9,55]: missing EOF at '.'

2019-11-29 19:42:03.107 [INFO ] [b.core.service.AbstractActiveService] - HTTP Refresh Service has been shut down
Wenn ich nun diesen Code hier im als Item nehme:

Code: Alles auswählen

String MyItem "Programm [REGEX([0-9]* [0-9,a-f]* (.*)):%s]" {http="<[http://192.168.2.xxx/control/getchannel?format=plain&epg=true:600000:default]"} // Sender
Kommt der obige Fehler nicht aber dafür dieser hier:

Code: Alles auswählen

2019-11-29 19:52:10.809 [ERROR] [b.core.service.AbstractActiveService] - Error while executing background thread HTTP Refresh Service

java.lang.IllegalArgumentException: given transformation function 'default' does not follow the expected pattern '<function>(<pattern>)'

	at org.openhab.binding.http.internal.HttpBinding.splitTransformationConfig(HttpBinding.java:234) ~[?:?]

	at org.openhab.binding.http.internal.HttpBinding.execute(HttpBinding.java:187) ~[?:?]

	at org.openhab.core.binding.AbstractActiveBinding$BindingActiveService.execute(AbstractActiveBinding.java:144) ~[225:org.openhab.core.compat1x:2.4.0]

	at org.openhab.core.service.AbstractActiveService$RefreshThread.run(AbstractActiveService.java:166) [225:org.openhab.core.compat1x:2.4.0]
I am confused.....

Gruß
Peter

Re: [GELÖST] Coolstream Satreceiver Remote via Http

Verfasst: 29. Nov 2019 22:17
von PeterA
Hi Udo,

ich habe es nun über zwei Scripts und das exec Binding gelöst:

Zunächst zwei Scripts die mir den Sendernamen und die Sendung aus dem Json Request holen:

getsender.sh:

Code: Alles auswählen

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

Code: Alles auswählen

#!/bin/bash
curl -s 'http://192.168.2.116/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]
Thing exec:command:getinfo   [command="/etc/openhab2/scripts/./getinfo.sh", interval=15, timeout=5]
Die items dazu:

Code: Alles auswählen

String Sender "[%s]" {channel="exec:command:getsender:output"}
String Sendung "[%s]" {channel="exec:command:getinfo:output"}
Dnd die Sitemap:

Code: Alles auswählen

Text      label="Sender"           item=Sender        icon="none"
Text      label="Sendung"          item=Sendung       icon="none"
Funktioniert genau so wie ich es wollte!

Trotzdem vielen Dank Udo für deine Zeit.

Viele Grüße

Peter

Re: [GELÖST] Coolstream Satreceiver Remote via Http

Verfasst: 29. Nov 2019 22:41
von PeterA
Und hier noch die "Remote" für den Satreceiver:

coolstream.items:

Code: Alles auswählen

String Coolstream                  { http=">[*:POST:http://192.168.2.116/control/rcem?%2$s]" }
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"]
Und so kann das dann in der Sitemap aussehen:
Bildschirmfoto 2019-11-29 um 22.40.55.png

Re: [GELÖST] Coolstream Satreceiver Remote via Http

Verfasst: 29. Nov 2019 22:58
von udo1toni
Jep, Asche auf mein Haupt ;) das kommt davon, wenn man sowas aus dem Kopf hinschreibt. So sollte es stimmen:

Code: Alles auswählen

String CoolStreamSender   "Sender [REGEX([0-9]* [0-9,a-f]* (.*) \(.*)):%s]" {http="<[http://192.168.2.xxx/control/getchannel?format=plain&epg=true:60000:REGEX((.*))]"} 
String CoolStreamProgramm "Programm [REGEX([0-9]* [0-9,a-f]* (.*)):%s]"     {http="<[http://192.168.2.xxx/control/getchannel?format=plain&epg=true:60000:REGEX((.*))]"} 
Das http Binding benötigt zwingend eine Transformation, in diesem Fall also eine, die immer matcht.
Aber wenn Du ohnehin zwei Items verwendest, ist es natürlich sinnvoller, die REGEX gleich in das Binding einzutragen:

Code: Alles auswählen

String CoolStreamSender   "Sender [%s]"   {http="<[http://192.168.2.xxx/control/getchannel?format=plain&epg=true:60000:REGEX([0-9]* [0-9,a-f]* (.*) \(.*))]"} 
String CoolStreamProgramm "Programm [%s]" {http="<[http://192.168.2.xxx/control/getchannel?format=plain&epg=true:60000:REGEX([0-9]* [0-9,a-f]* (.*))]"} 

Re: [GELÖST] Coolstream Satreceiver Remote via Http

Verfasst: 3. Dez 2019 10:13
von PeterA
udo1toni hat geschrieben: 29. Nov 2019 22:58 Jep, Asche auf mein Haupt ;) das kommt davon, wenn man sowas aus dem Kopf hinschreibt. So sollte es stimmen:

Code: Alles auswählen

String CoolStreamSender   "Sender [REGEX([0-9]* [0-9,a-f]* (.*) \(.*)):%s]" {http="<[http://192.168.2.xxx/control/getchannel?format=plain&epg=true:60000:REGEX((.*))]"} 
String CoolStreamProgramm "Programm [REGEX([0-9]* [0-9,a-f]* (.*)):%s]"     {http="<[http://192.168.2.xxx/control/getchannel?format=plain&epg=true:60000:REGEX((.*))]"} 
Das http Binding benötigt zwingend eine Transformation, in diesem Fall also eine, die immer matcht.
Aber wenn Du ohnehin zwei Items verwendest, ist es natürlich sinnvoller, die REGEX gleich in das Binding einzutragen:

Code: Alles auswählen

String CoolStreamSender   "Sender [%s]"   {http="<[http://192.168.2.xxx/control/getchannel?format=plain&epg=true:60000:REGEX([0-9]* [0-9,a-f]* (.*) \(.*))]"} 
String CoolStreamProgramm "Programm [%s]" {http="<[http://192.168.2.xxx/control/getchannel?format=plain&epg=true:60000:REGEX([0-9]* [0-9,a-f]* (.*))]"} 
Hallo Udo,

noch mal eine Frage:

Der Satreceiver kann auch eine Uhrzeit ausgeben

Kommt dann so zurück:

Code: Alles auswählen

17:30:34
Wie müsste hier die RegEx expression aussehen ? (Weil ich wirklich nicht das ganze "Geklammere" verstehe. Leider)

Gruß Peter

Re: [GELÖST] Coolstream Satreceiver Remote via Http

Verfasst: 3. Dez 2019 14:37
von udo1toni
Was willst Du denn mit der Uhrzeit anfangen? openHAB bietet selbst die Uhrzeit über das NTP Binding.
Soll die Uhrzeit nur als Text angezeigt werden? das wäre dann

Code: Alles auswählen

String CoolStreamUhrzeit "Uhrzeit [%s]" {http="<[http://...:60000:REGEX((.*))]"}

Re: [GELÖST] Coolstream Satreceiver Remote via Http

Verfasst: 4. Dez 2019 09:21
von PeterA
Hi Udo, weils der Receiver halt kann :)

Danke für den Syntax.

Gruß Peter

Re: [GELÖST] Coolstream Satreceiver Remote via Http

Verfasst: 4. Dez 2019 09:42
von udo1toni
Peter Aschinger hat geschrieben: 4. Dez 2019 09:21 weils der Receiver halt kann :)
Ah, eine ehda Funktion ;)