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:
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
