FHEM Forum

FHEM - Hausautomations-Systeme => MQTT => Thema gestartet von: Christian. am 31 Mai 2020, 07:11:19

Titel: [gelöst] Problem: Kein Decoding von JSON-Strings in json2nameValue()
Beitrag von: Christian. am 31 Mai 2020, 07:11:19
Ich verwende tvheadend-mqtt (https://github.com/git-developer/tvheadend-mqtt) für die Integration von EPG-Informationen aus Tvheadend in FHEM über MQTT & JSON.

Ursprünglich habe ich das mit den Modulen MQTT_DEVICE und expandJSON gemacht.
Kürzlich habe ich auf das Modul MQTT2_DEVICE und die sub json2nameValue() umgestellt.

Seit der Umstellung werden Zeilenumbrüche und Anführungszeichen im erzeugten Reading nicht korrekt dargestellt.

Beispiel:

Für mich sieht es so aus, als ob der Inhalt des JSON-Strings nicht dekodiert, sondern 1:1 in einen Perl-String übernommen wird.

Der Aufruf

{ JSON->new->allow_nonref->decode('"'.ReadingsVal("mqtt_tvheadend", "finished_entries_10_disp_description", undef).'"') }


liefert die korrekte Darstellung:

Zitat
Lola sorgt für ein Verkehrschaos auf dem Freeway, als sie vor laufender Kamera die Aufmerksamkeit ihres Ehemannes Norman zu erlangen versucht. Während zwischen Maddie und Chimney mehr als Freundschaft zu sein scheint, versucht Neu-Single Buck wieder an der Dating-Front anzugreifen. In einer Bar läuft ihm die Reporterin Taylor Kelly über den Weg.

Regie: Varda Bar-Kar
Drehbuch: Matthew Hodgson
Komponist: Todd Haberman, Mac Quayle
Kamera: Duane Mieliwocki
Schnitt: Greg Sirota

Darsteller:
Angela Bassett (Det. Athena Grant)
Peter Krause (Bobby Nash)
Jennifer Love Hewitt (Maddie Kendall)
Oliver Stark (Evan "Buck" Buckley)
Aisha Hinds (Henrietta "Hen" Wilson)
Kenneth Choi (Howie "Chimney" Han)
Ryan Guzman (Eddie Diaz)
Rockmond Dunbar (Michael Grant)
Romy Rosemont (Lola)

In der String-Verarbeitung von json2nameValue() (https://svn.fhem.de/trac/browser/tags/FHEM_6_0/fhem/fhem.pl#L5113) scheint keine Dekodierung für JSON-Strings implementiert zu sein. Ist das so Absicht?
Titel: Antw:Problem: Kein Decoding von JSON-Strings in json2nameValue()
Beitrag von: rudolfkoenig am 31 Mai 2020, 11:35:52
Weniger Absicht, eher der Tatsache geschuldet, dass bisher keiner es vermisst hat.
Habe es jetzt implementiert.
Titel: Antw:Problem: Kein Decoding von JSON-Strings in json2nameValue()
Beitrag von: Christian. am 03 Juni 2020, 07:05:14
Habe das Update jetzt im Einsatz. Es funktioniert. Vielen Dank!
Titel: Antw:Problem: Kein Decoding von JSON-Strings in json2nameValue()
Beitrag von: Beta-User am 03 Juni 2020, 09:14:58
Hi Christian.,

leider funktioniert der Link aus dem ersten Post nicht...
Wollte mal nachsehen, ob es auch für andere von Interesse sein könnte? Wenn ja, können wir gerne ein attrTemplate dafür basteln.

Falls du Unterstützung dafür benötigst: mir würde ein RAW von dem Device weiterhelfen (und ein Link auf das Projekt).

Ansonsten: [gelöst]?
Titel: Antw:Problem: Kein Decoding von JSON-Strings in json2nameValue()
Beitrag von: hoppel118 am 03 Juni 2020, 13:31:04
Finde ich interessant. Habe TVHeadend auch im Einsatz. Bin allerdings gerade für ein paar Wochen auf Reise. :D

Viele Grüße Hoppel
Titel: Antw:Problem: Kein Decoding von JSON-Strings in json2nameValue()
Beitrag von: Christian. am 03 Juni 2020, 19:25:23
Zitat von: Beta-User am 03 Juni 2020, 09:14:58
leider funktioniert der Link aus dem ersten Post nicht...

Habe ich gerade repariert, danke für den Hinweis.

Zitat von: Beta-User am 03 Juni 2020, 09:14:58
Wollte mal nachsehen, ob es auch für andere von Interesse sein könnte? Wenn ja, können wir gerne ein attrTemplate dafür basteln.

Ich selbst habe keinen Bedarf für ein Template. Die auf der Projekt-Seite dokumentierte (https://github.com/git-developer/tvheadend-mqtt#using-a-mqtt2_device) Kombination von MQTT2_DEVICE und readingsGroup deckt meinen Anwendungsfall vollständig ab. In der FHEM-Oberfläche sieht es damit aus wie auf dem angehängten Bildschirmfoto.
Titel: Antw:[gelöst] Problem: Kein Decoding von JSON-Strings in json2nameValue()
Beitrag von: Beta-User am 04 Juni 2020, 09:19:48
Thx für den Link und die optische Darstellung.

Ein RAW wäre trotzdem interessant gewesen, dann hätte ich mal spielen können, ob man die Darstellung auch dirket via stateFormat/devStateIcon hinbekäme (ähnlich wie bei den Tasmota bzw. eQ3-update-Templates...)

(Interessantes Projekt!).
Titel: Antw:[gelöst] Problem: Kein Decoding von JSON-Strings in json2nameValue()
Beitrag von: Beta-User am 06 Juni 2020, 13:56:05
Hoffe, hier noch eine (bzgl. FHEM ziemliche OT-Frage) stellen zu dürfen:

Habe jetzt auch tvheadend auf meinem Wohnzimmer-Rechner installiert, das läuft auch soweit. Was aber gar nicht will, ist die mqtt-Bridge; irgendwie scheint das mit dem Anmelden nicht zu klappen, ich bekomme immer diese Rückmeldung auf sudo docker exec tvheadend-mqtt /app/bin/main get_subscriptions
ZitatError: Failed to connect to host. URL: http://localhost:9981/api/status/subscriptions
Die credential-Variablen für  sollten eigentlich passen, aber auch, wenn ich das über den Browser eingebe, brauche ich mit den in der yml hinterlegten Werten zwei Anläufe...
TVHEADEND_USER:/TVHEADEND_PASSWORD: habe ich jetzt mit und ohne Quotes versucht, mal mit externen Adressen, mal mit localhost (Netzwerkbereiche für den user entsprechend freigegeben), immer kein Glück...

tvheadend Version ist die von hier: https://launchpad.net/~mamarley/+archive/ubuntu/tvheadend-git-stable
Falls jemand eine Idee hat und mir die verraten mag: Danke!
Titel: Antw:[gelöst] Problem: Kein Decoding von JSON-Strings in json2nameValue()
Beitrag von: Christian. am 06 Juni 2020, 14:23:04
Das ist eine Frage zu tvheadend-mqtt. Die würde ich in einem separaten Thread in Multimedia (https://forum.fhem.de/index.php/board,53.0.html)-Forum stellen. Vielleicht kann ein Moderator das verschieben?

Der ursprüngliche Inhalt dieses Beitrags wurde vom Autor gelöscht, da er inhaltlich falsch war.
Titel: Antw:[gelöst] Problem: Kein Decoding von JSON-Strings in json2nameValue()
Beitrag von: Christian. am 06 Juni 2020, 14:50:04
Die Fehlermeldung
Error: Failed to connect to host. URL: http://localhost:9981/api/status/subscriptions
deutet aber eigentlich nicht auf fehlerhafte Zugangsdaten hin. Es sieht eher nach einem Verbindungsproblem aus. Firewall? Du könntest mal von dem Rechner aus, auf dem tvheadend-mqtt läuft, per curl die Tvheadend-Seite aufrufen:
curl -u username:password http://localhost:9981/api/status/subscriptions
Titel: Antw:[gelöst] Problem: Kein Decoding von JSON-Strings in json2nameValue()
Beitrag von: Christian. am 06 Juni 2020, 15:09:44
Falls das funktioniert, wäre die nächste Stufe

docker exec tvheadend-mqtt curl -u username:password http://<tvheadend-host>:9981/api/status/subscriptions


Hierbei wird localhost als Hostname nicht funktionieren, da sich dahinter der Docker-Container von tvheadend-mqtt verbirgt.

Es ist also wichtig, dass die Umgebungsvariable TVHEADEND_HOST im Container einen von localhost abweichenden Namen hat.
Titel: Antw:[gelöst] Problem: Kein Decoding von JSON-Strings in json2nameValue()
Beitrag von: Beta-User am 06 Juni 2020, 15:10:54
Danke!

Das hat mir sehr weitergeholfen, diese Variante mit der Parameter-Übergabe war hilfreich rauszufinden, mit welcher Variante es klappt - das mit der Nutzerberechtigung ist nämlich schon irgendwie "verbogen"...

Über localhost wollte das z.B. nicht...

Jedenfalls spricht das jetzt auch mit meinem FHEM :) .

Mal sehen, wie das dann weitergeht, das sieht mir irgendwie "noch nicht fertig" aus...