RCoid und die neue config.xml seit V10

Antworten
HarryGr
Beiträge: 11
Registriert: Do 28. Sep 2017, 14:23

Mo 21. Jun 2021, 17:53

Hallo liebes JBMedia-Team.

mir wurden in letzter Zeit mehrfach Anfragen geschickt, weil RCoid und der LMair seit dem Update auf V10 nicht mehr richtig harmonieren.
Das Problem:
Der Anwender kann in RCoid eine Scene auswählen, diese wird vom LMair aber nicht mehr ausgeführt.
Die Urasche:
RCoid bezieht alle Daten vom LMair über die config.xml. Diese hat seit dem Update auf V10 ein völlig neues Aussehen.
So sind z.B. super viele Scenen dazu gekommen, die es zuvor nicht gab. Alle möglichen zeitgesteuerten Aktionen und von Funk-Fernbedienungen gertiggerte Aktionen sind nun alle als Scene aufgelistet. Das wäre auch nicht weiter schlimm, hätte sich nicht auch der Parameter geändert. So stand z.B. in der config.xml(V9.8) für eine Scene:

Code: Alles auswählen

<scene>
<name>AZ Alles Aus</name>
<param>scene=2</param>
</scene>
Für die selbe Scene steht nun in der config.xml(V10)

Code: Alles auswählen

<scene>
<name>AZ Alles Aus</name>
<param>scene=0&scene=57</param>
</scene>
Die URLs mit der diese Scene aufgerufen werden konnten lauteten in V9.8:
http://ip.of.your.device/control?key=2
und
http://ip.of.your.device/control?scene=2

Die URLs mit der diese Scene heute aufgerufen werden kann lauten:
http://ip.of.your.device/control?key=2
und
http://ip.of.your.device/control?scene=57

Der Parameter namens "Key" wäre am intuitivsten und würde mir daher am besten gefallen. Der wird aber in der config.xml nicht mit aufgeführt und somit kennt ihn RCoid auch nicht.

Der Parameter namens "Scene", der eigentlich der Index ist, würde mir und meiner App auch genügen, doch leider steht der nicht so in der config. Denn da steht statt "<param>scene=57</param>" nunmal "<param>scene=0&scene=57</param>". RCoid sendet also
http://ip.of.your.device/control?scene=0&scene=57 zu den LMair, doch der reagiert darauf nicht.

Und hier liegt IMHO ein Bug bei euch vor.

Zur Lösung habe ich 2 Vorschläge:
:idea: 1. Ihr ändert die config so, dass dieses "scene=0&" verschwindet. Der Sinn hinter diesem Wort erschließt sich mir eh nicht. Falls es einen gibt, würde ich um eine Erklärung bitten.
oder 2. Ihr ändert den LightManager derart, dass er die Parameter aus der config.xml versteht.

Mir bestem Dank
Harry Grünewald
Benutzeravatar
jbmedia
Administrator
Beiträge: 3051
Registriert: Mi 17. Feb 2016, 13:42

Di 22. Jun 2021, 10:23

Hallo Harry,

kurz zum Hintergrund der Änderungen. Es wurde im Laufe der Zeit immer wieder gewünscht, dass alle Szene im Web-Interface ansteuerbar sind, also nicht nur manuelle Szenen, sondern auch Zeit-, Temperatur-, Luftfeuchte- und Funkbus-Szenen. Dies ist der Grund, warum plötzlich mehr Szenen in der config.xml vorhanden sind. Das kann übrigens per Optionen > Nur manuelle Szenen im Web-Interface abgeschaltet werden.

Aufgrund dieser Änderung musste auch der scene Parameter angepasst werden. Dieser erwartet nicht mehr die Szenennummer, welche nur bei manuellen Szenen existiert, sondern den Index. Dieser kann per Ansicht > Zeige Index angezeigt werden.

Der Paramter key ist erhalten geblieben und erwartet weiterhin die Szenennummer. Diesen könnte man für RCoid benutzen, aber auch RCoid User möchten eventuell alle Szenen ansteuern können. Daher würden wir von key abraten.

Die config.xml wurde ursprünglich für ImperiHome eingeführt, was bekanntlich nicht mehr weiterentwickelt wird. IH verwendet den XML-Parameter scene=... und macht daraus key=..., bevor das Kommando an den Light-Manager gesendet wird. Warum das so ist, lässt sich heute kaum noch sagen, die Implementierung liegt 10 Jahre zurück. Um auch mit IH alle Szenen steuerbar zu machen, verwenden wir den Trick mit scene=0. So sendet IH nämlich key=0, was keine Auswirkung hat. Dahinter folgt dann das eigentliche Kommando (&scene=xxx), was IH unverändert weitergibt. Dadurch werden alle Szenen erreichbar.

Statt die config.xml weiter zu verbiegen und zu riskieren, dass es entweder mit IH oder RCoid nicht sauber läuft, würden wir vorschlagen, eine rcoid Datei anzulegen. Statt XML würde man heutzutage eher JSON verwenden. Wenn das OK ist, würden wir einfach mal einen Entwurf machen und diesen als Vorschlag posten.

Alternativ könnte man natürlich auch die bestehende config.xml verwenden und das führende "scene=0&" aus der <param> Zeile löschen.
Wir wünschen viel Spaß mit den Produkten und einen erfolgreichen Tag! Ihr jbmedia Team :)

HarryGr
Beiträge: 11
Registriert: Do 28. Sep 2017, 14:23

Sa 3. Jul 2021, 09:42

Hallo JBmedia,

danke für die ausführliche Antwort.
It's not a bug, it's a feature. 😆

Wenn der Lightmanager ein ersten Parameter "key=0" ignoriert, um dann den 2. Parameter "scene=123" zu verarbeiten, könnte der Lightmanager dann nicht auch den "scene=0" Parameter ignorieren, um den 2. "Scene"-Parameter auszuwerten?

Das wäre meiner Meinung nach das einfachste und logischste. Denn der LM würde halt nur die Parameter seiner eigenen config.xml verstehen müssen.
Ein weiteres Gleis nur für RCoid zu zu erschaffen, halte ich für übertrieben. Das zu erzeugen und zukünftig zu pflegen macht ja auch bei euch unnötig zusätzliche Arbeit.

Mein Problem:
Ich habe gerade erhebliche Schwierigkeiten ein Update zu veröffentlichen. Google hat einiges umgestellt, was die Berechtigungen des Dateizugriffs angeht. Ich glaube mit meinem nächsten Update darf ich nicht mehr einfach auf das Dateisystem zugreifen. Die Fernbedienungs-Dateien liegen aber einfach in RCoid-Ordner auf dem Handy. Eine Anpassung meiner App würde einen derart tiefen Einschnitt bedeuten, dass ich schon darüber nachdenke, RCoid komplett neu zu programmieren.
Auf jeden Fall werde ich Monate brauchen, um eine Anpassung meiner App umzusetzen. RCoid ist halt auch nur ein Freizeit-Projekt. Ich habe noch einen Hauptberuf und eine Familie zu bespaßen 🤷
Daher wäre es mir wirklich wirklich lieb, wenn Ihr die Kompatibilität wieder herstellen könntet.

Die dritte erwähnte Möglichkeit, die Parameter manuell anzupassen, wäre zwar gegeben, aber nur versteckt.
RCoid ruft die config vom LM ab und listet alle Aktionen auf. Ich wüsste nicht, wie der Anwender hier schon die config anzupassen können sollte.
Der Anwender wählt also seine Aktion aus und hat dann den Parameter mit 2x "Scene" auf der Taste.
Eigentlich hat er keine Möglichkeit, dieses Parameter zu ändern. Ich habe die Möglichkeit nur aus Easteregg eingebaut:
Wenn er 10x auf die kleine Bezeichnung der Aktion klickt
Screenshot_20210703-093135_RCoid.jpg
Screenshot_20210703-093135_RCoid.jpg (350.09 KiB) 603 mal betrachtet
dann wird der Parameter anpassbar.
Screenshot_20210703-093208_RCoid.jpg
Screenshot_20210703-093208_RCoid.jpg (351.15 KiB) 603 mal betrachtet
Und dann kam das "scene=0&" gelöscht werden.
Screenshot_20210703-093333_RCoid.jpg
Screenshot_20210703-093333_RCoid.jpg (438.95 KiB) 603 mal betrachtet
Das ist aber eher eine Krücke, die ich eigentlich keinem Anwender zumuten möchte.
Benutzeravatar
jbmedia
Administrator
Beiträge: 3051
Registriert: Mi 17. Feb 2016, 13:42

Mo 12. Jul 2021, 17:46

HarryGr hat geschrieben:
Sa 3. Jul 2021, 09:42
Wenn der Lightmanager ein ersten Parameter "key=0" ignoriert, um dann den 2. Parameter "scene=123" zu verarbeiten, könnte der Lightmanager dann nicht auch den "scene=0" Parameter ignorieren, um den 2. "Scene"-Parameter auszuwerten?
So machen wir das! Die Firmware geht morgen online.
Wir wünschen viel Spaß mit den Produkten und einen erfolgreichen Tag! Ihr jbmedia Team :)

Benutzeravatar
jbmedia
Administrator
Beiträge: 3051
Registriert: Mi 17. Feb 2016, 13:42

Di 13. Jul 2021, 13:44

Die Version ist online unter

https://jbmedia.de/airstudio/airStudio101.zip

Sobald die Kompatiblität mit RCoid bestätigt ist, würden wir diese im Download-Bereich einbinden.
Wir wünschen viel Spaß mit den Produkten und einen erfolgreichen Tag! Ihr jbmedia Team :)

HarryGr
Beiträge: 11
Registriert: Do 28. Sep 2017, 14:23

Di 13. Jul 2021, 16:35

Ich habe V10.1 getestet und damit funktioniert RCoid wieder.
Danke für die Arbeit.

Wenn ich irgendwann wieder ein Update veröffentliche, dann hübsche ich die Sache noch etwas auf, aber bis dahin funktioniert RCoid und LMAir erst mal wieder zusammen. Super!

Für meine Anwender bedeutet das, dass die Scenen in RCoid neu angelernt werden müssen.
Denn das was früher Scene XY war, ist jetzt Index UVW. Also einmal neu abrufen vom LM, aus der nun längeren Liste raus suchen, speichern und fertig :D

Nochmal herzlichen Dank für die Kooperation!
Benutzeravatar
jbmedia
Administrator
Beiträge: 3051
Registriert: Mi 17. Feb 2016, 13:42

Mi 14. Jul 2021, 11:18

HarryGr hat geschrieben:
Di 13. Jul 2021, 16:35
Ich habe V10.1 getestet und damit funktioniert RCoid wieder.
Danke für die Arbeit.

Wenn ich irgendwann wieder ein Update veröffentliche, dann hübsche ich die Sache noch etwas auf, aber bis dahin funktioniert RCoid und LMAir erst mal wieder zusammen. Super!
Super, dann geht die Version gleich offiziell an den Start!
Für meine Anwender bedeutet das, dass die Scenen in RCoid neu angelernt werden müssen.
Denn das was früher Scene XY war, ist jetzt Index UVW. Also einmal neu abrufen vom LM, aus der nun längeren Liste raus suchen, speichern und fertig :D
Das ist leider notwendig. Dafür haben die User den Vorteil, dass nun alle Szenen zur Verfügung stehen. :)
Wir wünschen viel Spaß mit den Produkten und einen erfolgreichen Tag! Ihr jbmedia Team :)

Benutzeravatar
VisualDigits
Beiträge: 5
Registriert: Di 1. Dez 2020, 17:46
Wohnort: Hamburg
Kontaktdaten:

Di 20. Jul 2021, 21:49

Moin,

vielen Dank an JBMedia für die Erklärung mit der Veränderung bei dem scene Parameter.
Seit V10 wird die Konfiguraion ja im json Format gespeichert und nicht mehr in einem proprietären Format.
Könnte man noch einen Endpunkt einbauen, der das json rausrückt (/config.json statt /config.xml)?
Das wäre super!

Gruß,
Stephan
Antworten