Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.
Moderatoren: seppy , udo1toni
udo1toni
Beiträge: 15698 Registriert: 11. Apr 2018 18:05
Answers: 254
Wohnort: Darmstadt
Beitrag
von udo1toni » 29. Nov 2019 15:51
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
openHAB5.1.3 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime - LXC, 4 Kerne, 3 GByte RAM)
Hostsystem Proxmox VE 9.1.9 - AMD Ryzen 5 3600 6 Kerne, 12 Threads - 64 GByte RAM - ZFS Pools: Raid Z1, 3 x 20 TB HDD -> 40 TByte und Raid Z0-Mirrored 4 x 1 TByte NVMe -> 2 TByte
PeterA
Beiträge: 1109 Registriert: 8. Feb 2019 12:12
Answers: 13
Beitrag
von PeterA » 29. Nov 2019 19:45
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
- OpenHab
#PWRUP
PeterA
Beiträge: 1109 Registriert: 8. Feb 2019 12:12
Answers: 13
Beitrag
von PeterA » 29. Nov 2019 22:17
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
- OpenHab
#PWRUP
PeterA
Beiträge: 1109 Registriert: 8. Feb 2019 12:12
Answers: 13
Beitrag
von PeterA » 29. Nov 2019 22:41
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
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
- OpenHab
#PWRUP
udo1toni
Beiträge: 15698 Registriert: 11. Apr 2018 18:05
Answers: 254
Wohnort: Darmstadt
Beitrag
von udo1toni » 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]* (.*))]"}
openHAB5.1.3 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime - LXC, 4 Kerne, 3 GByte RAM)
Hostsystem Proxmox VE 9.1.9 - AMD Ryzen 5 3600 6 Kerne, 12 Threads - 64 GByte RAM - ZFS Pools: Raid Z1, 3 x 20 TB HDD -> 40 TByte und Raid Z0-Mirrored 4 x 1 TByte NVMe -> 2 TByte
PeterA
Beiträge: 1109 Registriert: 8. Feb 2019 12:12
Answers: 13
Beitrag
von PeterA » 3. Dez 2019 10:13
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
- OpenHab
#PWRUP
udo1toni
Beiträge: 15698 Registriert: 11. Apr 2018 18:05
Answers: 254
Wohnort: Darmstadt
Beitrag
von udo1toni » 3. Dez 2019 14:37
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((.*))]"}
openHAB5.1.3 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime - LXC, 4 Kerne, 3 GByte RAM)
Hostsystem Proxmox VE 9.1.9 - AMD Ryzen 5 3600 6 Kerne, 12 Threads - 64 GByte RAM - ZFS Pools: Raid Z1, 3 x 20 TB HDD -> 40 TByte und Raid Z0-Mirrored 4 x 1 TByte NVMe -> 2 TByte
PeterA
Beiträge: 1109 Registriert: 8. Feb 2019 12:12
Answers: 13
Beitrag
von PeterA » 4. Dez 2019 09:21
Hi Udo, weils der Receiver halt kann
Danke für den Syntax.
Gruß Peter
- OpenHab
#PWRUP
udo1toni
Beiträge: 15698 Registriert: 11. Apr 2018 18:05
Answers: 254
Wohnort: Darmstadt
Beitrag
von udo1toni » 4. Dez 2019 09:42
Peter Aschinger hat geschrieben: 4. Dez 2019 09:21
weils der Receiver halt kann
Ah, eine ehda Funktion
openHAB5.1.3 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime - LXC, 4 Kerne, 3 GByte RAM)
Hostsystem Proxmox VE 9.1.9 - AMD Ryzen 5 3600 6 Kerne, 12 Threads - 64 GByte RAM - ZFS Pools: Raid Z1, 3 x 20 TB HDD -> 40 TByte und Raid Z0-Mirrored 4 x 1 TByte NVMe -> 2 TByte