KNX Data Secure Unterstützung
für KNX Logger und KNX Busmonitor

KNX Diagnose Monitor, Import des ETS Projektes deutlich beschleunigt, Suche in der Navigation
Mehr Informationen dazu hier im Forum

Insider Version 6 zur 4.5 jetzt für alle Mitglieder des Insider Clubs installierbar
Alle Infos zum Update im Timberwolf Wiki

[Gelöst] [V4.0 IP3] Anfängerfrage json body für Squeezebox HTTP-Request

Wissen, Planung & Diskussion zur Unterstützung von Rest-API & Webabfragen im Timberwolf Server.
Stellt uns hier Eure Projekte und Ideen vor.
Forumsregeln
  • Denke bitte an aussagekräftige Titel und gebe dort auch die [Firmware] an. Wenn ETS oder CometVisu beteiligt sind, dann auch deren Version
  • Bitte mache vollständige Angaben zu Deinem Server, dessen ID und dem Online-Status in Deiner Signatur. Hilfreich ist oft auch die Beschreibung der angeschlossener Hardware sowie die verwendeten Protokolle
  • Beschreibe Dein Projekt und Dein Problem bitte vollständig. Achte bitte darauf, dass auf Screenshots die Statusleiste sichtbar ist
  • Bitte sei stets freundlich und wohlwollend, bleibe beim Thema und unterschreibe mit deinem Vornamen. Bitte lese alle Regeln, die Du hier findest: https://wiki.timberwolf.io/Forenregeln
Antworten

Ersteller
MaxPower
Reactions:
Beiträge: 17
Registriert: Sa Okt 02, 2021 6:56 pm
Hat sich bedankt: 1 Mal
Danksagung erhalten: 6 Mal

[V4.0 IP3] Anfängerfrage json body für Squeezebox HTTP-Request

#1

Beitrag von MaxPower »

Hallo Zusammen,

könnte mir Jemand einen Anfängertipp geben (gerne auch einen Verweis zum Nachlesen), wie ich die Selektoren bei HTTP Anfragen (Post) bezeichnen muss, so dass sich das json mit Listenwerte (in eckigen Klammern) aufbaut?

Ich verstehe die Anleitung zum Zerlegen von verschachtelten json Antworten und das funktioniert auch gut (bekomme entsprechende Werte auf den KNX-Bus). Im MQQT Video erklärt Stefan, dass sich das für den Request einfach umdrehen lässt (hatte ich zumindest so verstanden). Ich bekomme Werte auf die gleiche Ebene, aber sobald ich anfange im Selektor mit eckigen Klammern zu arbeiten, bringe ich das „HTTP-API Subsystem“ zum Absturz.

Ich möchte gerne meine Squeezebox Player steuern. Der LMS läuft problemlos im Timberwolf Docker Container. In der Anleitung wird folgender json body beschrieben:

{'method': 'slim.request', 'params': [<player_mac_address>, <command>]}

Per jeweiliger Multiplexer (String) Logik würde ich „slim.request“, MAC Adresse Player, „status“ und „-„ an die Abfragegruppe senden mit dem Ziel den Status abzufragen:

{'method': 'slim.request', 'params': [b8:27:eb:57:94:12, ["status","-"]]}

Aber wie bekomme ich die Listeneinträge an die richtige Stelle?

Ich stehe hier (ich habe die Listenwerte nur zum Test auf die gleiche Ebene gebracht):
Screenshot 2023-04-03 183217.jpg
LG
Stephan
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von Mibr85 am Mo Apr 03, 2023 7:08 pm, insgesamt 1-mal geändert.
TWS 3500XL ID1422 - VPN geschlossen, Reboot nach Rücksprache

Ersteller
MaxPower
Reactions:
Beiträge: 17
Registriert: Sa Okt 02, 2021 6:56 pm
Hat sich bedankt: 1 Mal
Danksagung erhalten: 6 Mal

#2

Beitrag von MaxPower »

Hallo Zusammen,

hat keiner einen Tipp für mich bzw. eine Idee, wie ich die Selektoren benennen müsste?

Oder bin ich mit meiner Fragestellung auf den Holzweg bzw. gäbe es einen anderen Ansatz oder Workaround?

VG Stephan
TWS 3500XL ID1422 - VPN geschlossen, Reboot nach Rücksprache

MrWilson
Reactions:
Beiträge: 284
Registriert: Do Dez 27, 2018 2:19 pm
Wohnort: Borgsdorf
Hat sich bedankt: 46 Mal
Danksagung erhalten: 168 Mal

#3

Beitrag von MrWilson »

Hey Stephan,

man kann leider nicht sehen, wie du die Selektoren angelegt hast, daher wäre mein Vorschlag jeweils folgende Selektoren anzulegen:

method -> slim request
params[0] -> 00:04:20:10:2a
params[1][0] -> status
params[1][1] -> -

So sollte dann das Ergebnis aussehen:

{"method": "slim request", "params": ["00:04:20:10:2a", ["status", "-"]]}

Nachtrag Variante 2:

Du kannst übrigens auch beim Anlegen der Ressource bei "Request Content-Type" auf "text/plain" umstellen und dann einfach {"method": "slim request", "params": ["00:04:20:10:2a", ["status", "-"]]} als String komplett rausschicken. Musst nur schauen, ob diese Variante für andere Befehle zweckmäßig ist.

Herzliche Grüße

Willy
Zuletzt geändert von MrWilson am Sa Apr 15, 2023 2:59 pm, insgesamt 5-mal geändert.
TWS 2500 ID: 341 + PBM ID: 463, VPN offen, Reboot nur nach Absprache

Ersteller
MaxPower
Reactions:
Beiträge: 17
Registriert: Sa Okt 02, 2021 6:56 pm
Hat sich bedankt: 1 Mal
Danksagung erhalten: 6 Mal

#4

Beitrag von MaxPower »

Hi Willy,

Mega, vielen Dank!

Variante 1 haut bei mir leider nicht hin. Bei mir meldet der TWS dann den Fehler "No callee registered for procedure" und dann hängt sich immer der HTTP-API Subsystem Dienst auf (passiert, sobald ich eckige Klammern setze).

Aber mit der reinen Text Lösung haut es hin und die Player lassen sich steuern. Damit komme ich schon weiter!

Vielen Dank!!!
TWS 3500XL ID1422 - VPN geschlossen, Reboot nach Rücksprache

MrWilson
Reactions:
Beiträge: 284
Registriert: Do Dez 27, 2018 2:19 pm
Wohnort: Borgsdorf
Hat sich bedankt: 46 Mal
Danksagung erhalten: 168 Mal

#5

Beitrag von MrWilson »

Naja, das du mit Klammern ein System zum Absturz bekommst sollte man vielleicht etwas genauer betrachten.

Schön das ich helfen konnte.
TWS 2500 ID: 341 + PBM ID: 463, VPN offen, Reboot nur nach Absprache
Antworten

Zurück zu „HTTP-API, REST & Web-Abfragen“