SEPIA-Framework / sepia-docs

Documentation and Wiki for SEPIA. Please post your questions and bug-reports here in the issues section! Thank you :-)
https://sepia-framework.github.io/
237 stars 16 forks source link

Steuern von "Strings" in openHAB #53

Closed Smarthome-Creator closed 4 years ago

Smarthome-Creator commented 4 years ago

Wie gewünscht erstelle ich hierzu einen neuen Issue mit Bezug auf den geschlossen zum Thema MQTT an Node.js anbinden.

Ich habe deine kleines Toturial getestet und ich denke wir sind auf dem richtigen Weg. Sepia kann jetzt den Status ändern, z. B. von "Fernsehen gucken" auf "Film über Fernsehen gucken", führt aber die eigentliche Aktion die dahinter steckt noch nicht aus. Heißt die Soundbar wird beim Status "Film über Fernsehen gucken" nicht eingeschaltet.

Ich habe es live in openHAB gegengecheckt und dabei gesehen das beim Harmony Hub der Status "Fernsehen gucken" gesetzt wird, wenn ich auf den Status "Film über Fernseher gucken" ändere, dieser in openHAB nicht gesetzt wird. Ich glaube wir sind aber nahe dran die Lösung zu finden.

fquirin commented 4 years ago

Hier noch mal die Referenz zum letzten Post: https://github.com/SEPIA-Framework/sepia-docs/issues/37#issuecomment-647738308

Ok, also scheinbar wird die Aktion in openHAB anders getriggert als über den state Befehl :thinking: Ich lese mal ein bisschen über den Harmony Connector, vielleicht werde ich daraus schlau ;-)

fquirin commented 4 years ago

Kannst du für deine Harmony "Things" neue "Items" erstellen? Hier beispielhaft für meine Hue Lamp:

image

Smarthome-Creator commented 4 years ago

Hallo, bei mir würde das z.B. folgendermaßen aussehen:

TV

Und der Harmony Hub hat folgende Kanäle:

HH

Die beiden Starting Trigger lassen sich nicht mit etwas verlinken und daher kann ich kleider auch nicht ganz sagen wozu die da sind.

Der Button Press führt ins "leere". Ich glaube der simuliert nur die Knöpfe der FB, der Player Controll ist für einfaches Play/Pause, Vor/Zurück un der Current Activity ist letztlich der der die Aktionen schalten soll. Den Button Press und Player Control kann ich eigentlich auch wieder "unlinken" da ich die eh nicht nutze, die kannst du quasi ignorieren.

Im openHAB Control sieht das so aus:

Bsp

Oben der Harmony Hub mit den eingespeicherten Aktionen und unten symbolisch auch für meinen TV und die Soundbar mein Shield TV.

fquirin commented 4 years ago

Moin :-)

Danke für die Screenshots, das hilft auf jeden Fall wieder ein bisschen weiter fürs Verständnis. Ich habe gerade noch mal etwas über das Harmony HUB binding gelesen in der openHAB Doku. So ganz blicke ich da noch nicht durch, aber könntest du bei dem Teach-UI Befehl noch mal probieren den Befehl "Fernsehen gucken" zu ändern in "Fernsehen_gucken" und/oder "FERNSEHEN_GUCKEN". Ich habe nicht viel Hoffnung, dass das was bringt aber will es einmal ausschließen ;-) Wenn das nicht klappt müssten wir glaube ich im openHAB Forum fragen ob jemand weiß wie man die Harmony via REST API steuert.

Grüße

Smarthome-Creator commented 4 years ago

Hallo Florian,

ich habe es nun auch mit der anderen Schreibweise getestet und wie du schon erwartet hast funktioniert das leider auch nicht. Ich habe im openHAB Forum geschaut ob es da schon vergleichbare Diskussionen gibt konnte da aber nichts zu dem Thema finden.

Soll ich im Forum eine neue Anfrage stellen oder bist du dort schon irgendwie aktiv?

Gruß

BTW: Wie bringe ich denn Sepia bei Farben bei meinen Lampen einzustellen? Automatisch erkennt Sepia die Farbenzahlen als Prozenwerte, wenn ich das auf Feste Nummernwerte einstelle dimmt Sepia die Lampe leider nur. Hast du einen Tip?

sepia-assistant commented 4 years ago

Hi,

Soll ich im Forum eine neue Anfrage stellen oder bist du dort schon irgendwie aktiv?

Ich bin da auch zu finden, aber es wäre gut, wenn du die Frage reinstellen könntest. Ich beteilige mich dann gerne an der Diskussion :slightly_smiling_face:. (Du kannst übrigens deinen GitHub Account dort verwenden falls du noch keinen Account im openHAB Forum hast).

BTW: Wie bringe ich denn Sepia bei Farben bei meinen Lampen einzustellen? Automatisch erkennt Sepia die Farbenzahlen als Prozenwerte, wenn ich das auf Feste Nummernwerte einstelle dimmt Sepia die Lampe leider nur. Hast du einen Tip?

Das geht zur Zeit leider nur über das Teach Interface via custom set Parameter. Konkret müsste man herausfinden, wie genau der Wert formatiert werden muss um eine Farbe zu senden (RGB, HEX, mit Klammern?) und diesen Wert dann für die jeweilige Farbe als Parameter eintragen. Im Teach-UI unter Smart Home gibt es ein Beispiel (Nr. 2), was das grob abbildet. Hat die Lampe verschiedene Kanäle für Helligkeit und RGB?

Grüße, Florian

Smarthome-Creator commented 4 years ago

Ich habe mal einen Topic im Forum erstellt und schauen wir mal was die Profis dort sagen.

Zur Lampe, ja für RGB gibt es einen eigenen Kanal, für das dimmen der Helligkeit nicht. Es gibt aber einen Kanal für die Farbtemperatur, was aber die Einstellung zwischen warm und kalt weiß ändert. Komischerweise ändert Sepia immer genau diesen Kanal wenn ich versuche auf "blau" zu ändern.

Aber lass uns uns erstmal auf die "String" Geschichte konzentrieren.

sepia-assistant commented 4 years ago

:+1: Hast du mal den Link, dann kann ich mitlesen ;-)

Celaeno1 commented 4 years ago

https://community.openhab.org/t/how-do-you-control-strings-of-the-harmonyhub-binding-via-the-rest-api/102174

Smarthome-Creator commented 4 years ago

Ich werde das mal basteln was @Celaeno1 beschrieben hat und dir dann feedback geben.

sepia-assistant commented 4 years ago

@Smarthome-Creator der Teach-UI Befehl, den wir ursprünglich erstellt hatten macht eigentlich genau was @Celaeno1 im openHAB Forum beschrieben hat:

Smart device: <tv>;;HarmonyFB
Action: <set>
Room: <livingroom> (optional)
Value: {"type":"text_raw","value":"Fernsehen gucken"}

Das sendet den HTTP POST String Fernsehen gucken zum Gerät http://192.168.0.25:8080/rest/items/HarmonyHub_ . Ich bin gespannt ob die Sitemap den entscheidenden Unterschied macht :-)

[EDIT] So wie ich die letzte Antwort im openHAB Forum verstehe bringt die "sitemap" doch gar nichts in dem Kontext :thinking: . Kannst du mal den Befehl testen, den @Celaeno1 in diesem Bild verwendet hat? Wenn das klappt muss irgendwas in der Teach-UI falsch gewesen sein.

Celaeno1 commented 4 years ago

Bitte noch prüfen, ob euer item HarmonyHub_ den Typ "string" hat.

fquirin commented 4 years ago

Bitte noch prüfen, ob euer item HarmonyHub_ den Typ "string" hat.

Gerade noch mal schnell in die REST API response vom Harmony Item geguckt. Type "string" vorhanden :+1:

Smarthome-Creator commented 4 years ago

Hallo, ich habe es jetzt nochmal getestet und zeige dir mal anhand der chronoligischen Screenshots was passiert oder eben auch nicht.

So sieht es im Smarthome HUB aus:

Smart Home HUB

So sieht es in der TeachUI aus:

TeachUI

Sepia fürt den Befehl ohne Fehlermeldung aus:

Befehl

Sepia ändert den Status im Smarthome HUB:

Sepia ändert Status

Aber die Soundbar bleibt aus. Ist bis hierhin soweit alles korrekt oder habe ich irgendwo einen Fehler eingebaut? Also auch mit der Sitmap ändert sich leider nichts.

fquirin commented 4 years ago

Hi,

also soweit sieht es erstmal richtig aus. Eine Kleinigkeit fällt mir allerdings auf. Im {"type": "text_raw", "value": " Film ... ist eine Leerstelle vor "Film". Ich bin nicht sicher ob das hier eine Rolle spielen kann, sowohl SEPIA als auch openHAB regieren eventuell darauf ... unwahrscheinlich aber wir sollte es als erstes ausschließen ^^.

Da der "State" der HarmonyFB später gesetzt ist gehe ich davon aus, dass der Befehl generell richtig verschickt wurde. Nichtsdestotrotz sollten wir einmal den HTTP POST Befehl direkt ausführen ohne Umwege über SEPIA. Kannst du in der Linux Konsole (z.B. auf dem SEPIA Server) Folgendes eingeben (ich hoffe ich habe das jetzt richtig zusammengebastelt ^^)?

curl -X POST --header "Content-Type: text/plain" --header "Accept: application/json" -d "Film über Fernseher gucken" "http://192.168.0.25:8080/rest/items/HarmonyHub_"

Nur um ganz sicherzugehen vielleicht auch in openHAB selber noch mal testen ob der Button "Film über Fernseher gucken" überhaupt noch funktioniert :sweat_smile:

Smarthome-Creator commented 4 years ago

@fquirin @Celaeno1,

ich habe den Fehler gefunden und es hat weder was mit der Sitemap in openHAB ncoh mit Sepia zu tun. ANWENDERFEHLER!!!

Der Fehler sieht wie folgt aus: Wenn man den TV oder daran angeschlossene Geräte mit der normalen Fernbedienung nutzt, senden die Geräte ihren Status nicht an den HarmonyHUB... eigentlich vollkommen logisch aber bis man drauf kommt dauert es eine Weile. Somit kennt Sepia den letzten Status nicht und kann diesen auch nicht ändern. Nutzt man ausschließlich den HarmonyHUB, kennt Sepia den Status und kann ihn ändern.

Problem gefunden und gelöst, danke für eure Hilfe.

fquirin commented 4 years ago

Hey, freut mich, dass das Problem gelöst wurde :-) So ganz habe ich aber noch nicht verstanden unter welchen Umständen die Steuerung nicht klappt :thinking: Ich hätte gedacht welcher Zustand im HarmonyHUB aktiv ist (aktuell oder nicht) sollte erstmal egal sein und wird einfach überschrieben vom nächsten Aufruf. Ist das nicht der Fall? Oder versagt es nur wenn man einen Zustand einstellen will der bereits fälschlicherweise "aktiv" ist?

Smarthome-Creator commented 4 years ago

Eigentlich ist es ganz logisch, der TV, die Soundbar oder die Playstation sind ja selbst keine Smartgeräte und wenn ich die mit der normalen TV Fernbedienung nutze, also z.B. damit die Playstation einschalte, übergeben die den Status nicht an openHAB. Wenn also als letzter Status TV gucken in openHAB steht kann ich über Sepia zwar PS4 spielen einstellen, Sepia ändert das dann auch in openHAB... ABER... ab hier ist dann Schluss, weil der HarmonyHUB der ja den eigentlichen Status beinhaltet eben nicht umschaltet.

Vereinfacht gesagt wird immer die App Einstellung bevorzugt. Das heißt wenn ich jetzt den TV mit der normalen TV Fernbedienung ausschalte hat der HarmonyHUB immer noch den Status PS4 spielen. Wenn ich den TV aber nachher über openHAB oder Sepia ausschalte dann kennt auch der HUB den letzten Status.

Ich hoffe ich konnte es etwas besser erklären.

sepia-assistant commented 4 years ago

Vereinfacht gesagt wird immer die App Einstellung bevorzugt. Das heißt wenn ich jetzt den TV mit der normalen TV Fernbedienung ausschalte hat der HarmonyHUB immer noch den Status PS4 spielen. Wenn ich den TV aber nachher über openHAB oder Sepia ausschalte dann kennt auch der HUB den letzten Status.

Das mit den fehlenden Status Updates ist ein Problem das häufiger vorkommt, vor allem wenn die Geräte ihren Zustand nicht von selbst mitteilen sondern nur auf Anfrage ausgeben, aber ... generell ist das kein Problem denn das Gerät empfängt ja nur den Befehl "schalte jetzt um auf XY" und prüft dabei normalerweise nicht den "ist" Zustand. Vielleicht habe ich noch ein falsches Bild von den internen Abläufen im HarmonyHUB :thinking: . Triggert das vielleicht nur beim Einschalten und kann nicht Umschalten?

Der Ablauf ist also jetzt wie folgt?

Grüße :-)

Smarthome-Creator commented 4 years ago

Der Ablauf ist also jetzt wie folgt?

Falls TV über openHAB eingeschaltet wurde -> SEPIA Befehle funktionieren
Falls TV nicht über openHAB eingeschaltet wurde -> ausschalten -> neu einschalten via openHAB/SEPIA

Genau so.