Seite 2 von 4

Re: Harmony Binding konfigurieren

Verfasst: 30. Sep 2020 18:07
von OliverCJ
Super, vielen Dank!

Mist.. jetzt hab ich noch ne Baustelle ;-)

Re: Harmony Binding konfigurieren

Verfasst: 30. Sep 2020 18:40
von OliverCJ
Okay, ein ganz, ganz kleines bisschen habe ich verstanden, was da drin steht. Im Grunde nur den Teil mit ng-click="sendCmd('HarmonyRemoteButton', 'Up')"...

Ich habe für meine Sitemap tatsächlich x Items angelegt und die jeweils mit dem gleichen Channel verlinkt. Im Grund braucht man das aber gar nicht. Udo hatte mir das mal in Bezug auf Philips Hue und den HSB-Channel erklärt. Egal, ich mags trotzdem so...

Brauchen tust Du aber nur ein Item, z.B. "HarmonyRemoteButton" welches mit dem buttonPress-Channel verbunden ist.

In einer Sitemap müsste ich dieses Item jetzt einfach immer wieder einfügen und nur jeweils das Mapping mit dem gewünschten Befehl anpassen, also z.B. "VolumeUp", "VolumeDown", etc.

In dem Custom Widget passiert das über ng-click und den entsprechenden sendCmd Befehl. Als erstes wird das Item genannt (es gibt nur eins, daher ist es immer das gleiche) und mit Komma getrennt, dann eben der Befehl.

Ich habe mir jetzt nur mal das otherButtons.widget.json angeschaut. Da sind jede Menge \ und \n drin. Die müssen da alle raus. Dann funktioniert bei mir zumindest schon mal die Anzeige.. das ist cool. Vielleicht baue ich ja doch noch mal ein HABPanel für den täglichen Einsatz...

Ich probier weiter... Frau und Kind sind beim Sport...

Re: Harmony Binding konfigurieren

Verfasst: 5. Okt 2020 09:27
von OliverCJ
Hi,

ein klein wenig ist hier nebenbei per PN gelaufen, ich möchte aber hier gerne kurz zeigen, was ich bis jetzt doch schon auf die Schnell geschafft habe und bei mir funktioniert. Vieleicht hilft es ja irgendjemandem mal...
HAPPanel-Harmony-Aktionen.JPG
Ich habe mir mal den linken Bereich aus dem Screenshot von Scotty vorgenommen (weil es da heute früh auch in der PN drum ging) und habe ihn auf meine Aktionen angepasst. dafür nimmt man sich im HABPanel ein leeres Template, wo dann der folgende Code eingefügt wird:

Code: Alles auswählen

<div ng-if="itemValue('Hub_EG_Aktion')=='PowerOff'">
	<button style="width: 60%; height: 4em; font-size: 16px; background: midnightblue" ng-click="sendCmd('Hub_EG_Aktion', 'PowerOff')">Power Off</button>
</div>
<div ng-if="itemValue('Hub_EG_Aktion')!='PowerOff'">
	<button style="width: 60%; height: 4em; font-size: 16px; background: black" ng-click="sendCmd('Hub_EG_Aktion', 'PowerOff')">Power Off</button>
</div>
<div ng-if="itemValue('Hub_EG_Aktion')=='Fernsehen'">
	<button style="width: 60%; height: 4em; font-size: 16px; background: midnightblue" ng-click="sendCmd('Hub_EG_Aktion', 'Fernsehen')">Fernsehen</button>
</div>
<div ng-if="itemValue('Hub_EG_Aktion')!='Fernsehen'">
  <button style="width: 60%; height: 4em; font-size: 16px; background: black" ng-click="sendCmd('Hub_EG_Aktion', 'Fernsehen')">Fernsehen</button>
</div>
<div ng-if="itemValue('Hub_EG_Aktion')=='BluRay schauen'">
	<button style="width: 60%; height: 4em; font-size: 16px; background: midnightblue" ng-click="sendCmd('Hub_EG_Aktion', 'BluRay schauen')">BluRay schauen</button>
</div>
<div ng-if="itemValue('Hub_EG_Aktion')!='BluRay schauen'">
	<button style="width: 60%; height: 4em; font-size: 16px; background: black" ng-click="sendCmd('Hub_EG_Aktion', 'BluRay schauen')">BluRay schauen</button>
</div>
<div ng-if="itemValue('Hub_EG_Aktion')=='Musik'">
  <button style="width: 60%; height: 4em; font-size: 16px; background: midnightblue" ng-click="sendCmd('Hub_EG_Aktion', 'Musik')">Musik</button>
</div>
<div ng-if="itemValue('Hub_EG_Aktion')!='Musik'">
	<button style="width: 60%; height: 4em; font-size: 16px; background: black" ng-click="sendCmd('Hub_EG_Aktion', 'Musik')">Musik</button>
</div>
<div ng-if="itemValue('Hub_EG_Aktion')=='Spielen'">
	<button style="width: 60%; height: 4em; font-size: 16px; background: midnightblue" ng-click="sendCmd('Hub_EG_Aktion', 'Spielen')">Spielen</button>
</div>
<div ng-if="itemValue('Hub_EG_Aktion')!='Spielen'">
	<button style="width: 60%; height: 4em; font-size: 16px; background: black" ng-click="sendCmd('Hub_EG_Aktion', 'Spielen')">Spielen</button>
</div>
<div ng-if="itemValue('Hub_EG_Aktion')=='ChromeCast'">
	<button style="width: 60%; height: 4em; font-size: 16px; background: midnightblue" ng-click="sendCmd('Hub_EG_Aktion', 'ChromeCast')">ChromeCast</button>
</div>
<div ng-if="itemValue('Hub_EG_Aktion')!='ChromeCast'">
	<button style="width: 60%; height: 4em; font-size: 16px; background: black" ng-click="sendCmd('Hub_EG_Aktion', 'ChromeCast')">ChromeCast</button>
</div>
<div ng-if="itemValue('Hub_EG_Aktion')=='Radio'">
	<button style="width: 60%; height: 4em; font-size: 16px; background: midnightblue" ng-click="sendCmd('Hub_EG_Aktion', 'Radio')">Radio</button>
</div>
<div ng-if="itemValue('Hub_EG_Aktion')!='Radio'">
	<button style="width: 60%; height: 4em; font-size: 16px; background: black" ng-click="sendCmd('Hub_EG_Aktion', 'Radio')">Radio</button>
</div>
In dem Div-Bereich wird zunächst über ng-if abgefragt, welche Harmony Aktion denn gerade läuft. Läuft z.B. Fernsehen, dann wird der Button blau dargestellt, läuft eine Aktion nicht (das sind dann logischerweise alle anderen), ist der Button schwarz.
Mit ng-click wird der Klick auf den Button "ausgewertet" und ein sendCmd geschickt. Dabei steht "Hab_EG-Aktion" bei mir für das entsprechende Item, welches mit dem Channel "CurrentActivity" verlinkt ist, der zweite Befehl ist genau die Aktion, die gestartet werden soll. Der Name richtet sich nach dem Aktionsnamen in der Harmony Software.

Was mir aufgefallen ist, dass die JSON-Dateien, die mir Scotty zur Verfügung gestellt hat, unheimlich viele Backslashes enthalten haben (oder Backslash + n). Die musste ich alle manuell rauslöschen, erst dann hat der Code funktioniert. Ich meine, einige Browser setzen das \n für einen Zeilenumbruch...

Re: Harmony Binding konfigurieren

Verfasst: 5. Okt 2020 10:55
von scotty
... Was mir aufgefallen ist, dass die JSON-Dateien, die mir Scotty zur Verfügung gestellt hat, unheimlich viele Backslashes enthalten haben (oder Backslash + n). Die musste ich alle manuell rauslöschen, erst dann hat der Code funktioniert. Ich meine, einige Browser setzen das \n für einen Zeilenumbruch...
Das war mir bekannt. Ich verwende den Firefox-Browser und musste nichts löschen. Die Anzeige funktionierte sofort einwandfrei.

Re: Harmony Binding konfigurieren

Verfasst: 7. Okt 2020 14:02
von scotty
Obwohl ich inzwischen denke, dass "Radio" je nach Hersteller des Gerätes eingestellt wird, möchte ich als Ergänzung zu diesem Thread https://openhabforum.de/viewtopic.php? ... 289#p24289 mal kurz beschreiben, wie ich bei der Bose Soundbar SB 700 vorgegangen bin:

Mit der Harmony Software eine weitere Aktion (Radio) einrichten: Gerät Bose-Verstärker -> Eingang Music -> SoundTouchSource (wenn nötig, noch eine Verzögerung hinzufügen).
Wie die Internetsender erreicht werden, habe ich in dem oben Thread beschrieben.

Die Aktion "Radio" wird in den Einstellungen des Widgets "harmony-entry" so hinzugefügt:

Code: Alles auswählen

<div ng-if="itemValue('HarmonyHubCurrentActivity')!='Radio'">
<button style="width: 60%; height: 4em; font-size: 16px; background: black" ng-click="sendCmd('HarmonyHubCurrentActivity', 'Radio')">
Radio
</button>
</div> 
Das die Datei "Downloads.tar.gz" heruntergeladen, entpackt und die 4 *.json Dateien als Widjets eingefügt wurden, setzte ich voraus.

Viel Spaß damit!

Re: Harmony Binding konfigurieren

Verfasst: 24. Mär 2021 14:46
von Rothstein
Hallo Zusammen,

ich bin komplett neu hier. Sowohl im Forum (tolle Sache), als auch in Openhab bzw. Raspberry Pie Umfeld allgemein.
Generell habe ich in Openhab3, mit Hilfe der zahlreichen Dokumentationen, schon einiges auf die Beine gestellt und erfolgreich im System und Sitemap (z.B.Hue-Lampen-Steuerung, Tado Heizung) integriert.

Auch das Harmony Hub mit drei Geräten, die ich in erster Linie über Aktivitäten steuere, habe ich bereits erfolgreich eingebunden und mit "Current-Activity" und "Send Button" erfolgreich eine Fernbedienung in der Sitemap aufgebaut.

Meine Frage bezieht sich auf die verfügbaren "Ausprägungen" von "SendButton".
Die Standard Befehle (VolumeUp, VolumeDown, ...) funktionieren.

Ich schaffe es nicht per REST-API gemäß Doku die Auspägungen herauszufinden.
A complete list of names for device buttons values can be determined via the REST API for channel-types, http://YourServer:8080/rest/channel-types (opens new window). Search the JSON for "harmonyhub:device".
Sorry für die Anfängerfrage, aber wenn ich den Befehl im Browser eingebe,
bekomme ich nur einen Fehler "Authetication required".
Bestimmt muss ich die REST-API irgendwo anders aufrufen?!? Kann mir hier jmd. helfen.

Viele Grüße
Mathias

Re: Harmony Binding konfigurieren

Verfasst: 24. Mär 2021 15:13
von sihui
Rothstein hat geschrieben: 24. Mär 2021 14:46 Bestimmt muss ich die REST-API irgendwo anders aufrufen?!?
Folgender KlickiKlacka Weg funktioniert auch:

openHAB -> Developer Tools -> API Explorer -> channel-types -> channel-types -> Try it -> unter Prefixes harmonyhub:device eintragen, auf Execute klicken.
Im Fenster darunter siehst du dann das Ergebnis.

Re: Harmony Binding konfigurieren

Verfasst: 24. Mär 2021 16:21
von Rothstein
@sihui:
Vielen Dank für die schnelle Hilfe.
Auch wenn ich, sobald ich etwas tiefer drin stecke, gerne auch den nicht-KlickiKlacka Weg verstehen möchte,
war dies exakt das, was ich gesucht habe. (Solange ich noch übe, bin ich aber durchaus dankbar für die graphische Oberfläche)

Ich war auf der Suche nach einem gemeinsamen ChannelType "Eject", der sowohl für PS4, als auch für meinen HDDVD Player gilt.
Da ich diesen Befehl aber nur für den HDVD-Player (als EJECT) finde, kann ich dann wohl keinen context-sensitiven-Button (je Aktivität) für das ausgeben einer Disk implementieren.

Ich bin mir sicher, hier gibt es genug Profis, die auch diesen Fall abdecken können, ich bin aber erst einmal zufrieden. :D

Re: Harmony Binding konfigurieren

Verfasst: 24. Mär 2021 16:37
von sihui
Rothstein hat geschrieben: 24. Mär 2021 16:21 Ich bin mir sicher, hier gibt es genug Profis, die auch diesen Fall abdecken können, ich bin aber erst einmal zufrieden. :D
Das glaube ich kaum, wenn es keine Channel dafür gibt kann man leider keinen erfinden. Oder du schreibst an Logitech und lässt einen für dein Gerät in die Datenbank einbauen.

Re: Harmony Binding konfigurieren

Verfasst: 24. Mär 2021 16:58
von Rothstein
Das stimmt natürlich.

Ich dachte eher an so etwas wie:
"Wenn du dich in der (Current)Activity "PS4" befindest ist Channel "A" für den Auswurf der richtige, wenn du dich in der (Current)Activity "HDVD" befindest, dann ist der Button mit dem Channel "Eject" verknüpft.

Will es aber ja gerade eh erst einmal alles ruhiger angehen und lernen.
Daher werde ich einfach zwei Schalter bauen - einmal EJECT und einmal "Auswerfen_PS4".