Skip to content

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

XML-RPC ist inkonsitent #2024

Closed
jonaswre opened this issue Oct 28, 2022 · 19 comments
Closed

XML-RPC ist inkonsitent #2024

jonaswre opened this issue Oct 28, 2022 · 19 comments
Labels
🐛 bug-report Something isn't working

Comments

@jonaswre
Copy link

jonaswre commented Oct 28, 2022

Describe the issue you are experiencing

Die XML-RPC Api ist inkonsistent.
Wenn ich die Methode getLinks order getParamset aufrufe, werden die Daten underschiedlich formatiert.
Das ParameterSet ist in getLinks und getParamset unterschiedlich formatiert.

<?xml version="1.0" encoding="ISO-8859-1"?>
<methodResponse>
   <params>
       <param>
           <value>
               <array>
                   <data>
                       <value>
                           <struct>
                               <member>
                                   <name>SENDER</name>
                                   <value>das:1</value>
                               </member>
                               <member>
                                   <name>RECEIVER</name>
                                   <value>das:4</value>
                               </member>
                               <member>
                                   <name>FLAGS</name>
                                   <value>
                                       <i4>0</i4>
                                   </value>
                               </member>
                               <member>
                                   <name>NAME</name>
                                   <value>das:01 das:04</value>
                               </member>
                               <member>
                                   <name>DESCRIPTION</name>
                                   <value>NO_DESCRIPTION</value>
                               </member>
                               <member>
                                   <name>SENDER_PARAMSET</name>
                                   <value>
                                       <struct></struct>
                                   </value>
                               </member>
                               <member>
                                   <name>RECEIVER_PARAMSET</name>
                                   <value>
                                       <struct>
                                           <member>
                                               <name>SHORT_CT_ON</name>
                                               <value>VALUE_GE_LO</value>
                                           </member>
                                           <member>
                                               <name>LONG_PROFILE_ACTION_TYPE</name>
                                               <value>PROFILE_ACTION_TYPE_INACTIVE</value>
                                           </member>
                                           <member>
                                               <name>LONG_OFF_TIME_MODE</name>
                                               <value>number 0</value>
                                           </member>
                                           <member>
                                               <name>SHORT_OFFDELAY_TIME_BASE</name>
                                               <value>BASE_100_MS</value>
                                           </member>
                                           <member>
                                               <name>SHORT_JT_OFFDELAY</name>
                                               <value>OFF</value>
                                           </member>
                                           <member>
                                               <name>LONG_CT_OFFDELAY</name>
                                               <value>number 0</value>
                                           </member>
                                           <member>
                                               <name>LONG_CT_OFF</name>
                                               <value>number 0</value>
                                           </member>
                                           <member>
                                               <name>SHORT_COND_VALUE_LO</name>
                                               <value>
                                                   <i4>50</i4>
                                               </value>
                                           </member>
                                           <member>
                                               <name>SHORT_OFFDELAY_TIME_FACTOR</name>
                                               <value>
                                                   <i4>0</i4>
                                               </value>
                                           </member>
                                           <member>
                                               <name>LONG_JT_ON</name>
                                               <value>number 4</value>
                                           </member>
                                           <member>
                                               <name>LONG_OFF_TIME_FACTOR</name>
                                               <value>number 31</value>
                                           </member>
                                           <member>
                                               <name>SHORT_COND_VALUE_HI</name>
                                               <value>
                                                   <i4>150</i4>
                                               </value>
                                           </member>
                                           <member>
                                               <name>SHORT_OFF_TIME_MODE</name>
                                               <value>TIME_IS_ABSOLUTE</value>
                                           </member>
                                           <member>
                                               <name>SHORT_CT_ONDELAY</name>
                                               <value>VALUE_GE_LO</value>
                                           </member>
                                           <member>
                                               <name>SHORT_OFF_TIME_FACTOR</name>
                                               <value>
                                                   <i4>31</i4>
                                               </value>
                                           </member>
                                           <member>
                                               <name>LONG_MULTIEXECUTE</name>
                                               <value>number 0</value>
                                           </member>
                                           <member>
                                               <name>LONG_ONDELAY_TIME_FACTOR</name>
                                               <value>number 0</value>
                                           </member>
                                           <member>
                                               <name>SHORT_ON_TIME_FACTOR</name>
                                               <value>
                                                   <i4>31</i4>
                                               </value>
                                           </member>
                                           <member>
                                               <name>LONG_ON_TIME_FACTOR</name>
                                               <value>number 31</value>
                                           </member>
                                           <member>
                                               <name>LONG_CT_ONDELAY</name>
                                               <value>number 0</value>
                                           </member>
                                           <member>
                                               <name>SHORT_ON_TIME_BASE</name>
                                               <value>BASE_1_H</value>
                                           </member>
                                           <member>
                                               <name>SHORT_MULTIEXECUTE</name>
                                               <value>
                                                   <boolean>0</boolean>
                                               </value>
                                           </member>
                                           <member>
                                               <name>LONG_JT_OFF</name>
                                               <value>number 6</value>
                                           </member>
                                           <member>
                                               <name>SHORT_JT_ONDELAY</name>
                                               <value>OFF</value>
                                           </member>
                                           <member>
                                               <name>LONG_ONDELAY_TIME_BASE</name>
                                               <value>number 0</value>
                                           </member>
                                           <member>
                                               <name>SHORT_PROFILE_ACTION_TYPE</name>
                                               <value>PROFILE_ACTION_TYPE_JUMP</value>
                                           </member>
                                           <member>
                                               <name>LONG_ON_TIME_MODE</name>
                                               <value>number 0</value>
                                           </member>
                                           <member>
                                               <name>LONG_JT_OFFDELAY</name>
                                               <value>number 6</value>
                                           </member>
                                           <member>
                                               <name>LONG_OFF_TIME_BASE</name>
                                               <value>number 7</value>
                                           </member>
                                           <member>
                                               <name>LONG_OFFDELAY_TIME_FACTOR</name>
                                               <value>number 0</value>
                                           </member>
                                           <member>
                                               <name>LONG_COND_VALUE_LO</name>
                                               <value>number 50</value>
                                           </member>
                                           <member>
                                               <name>SHORT_OFF_TIME_BASE</name>
                                               <value>BASE_1_H</value>
                                           </member>
                                           <member>
                                               <name>SHORT_ON_TIME_MODE</name>
                                               <value>TIME_IS_ABSOLUTE</value>
                                           </member>
                                           <member>
                                               <name>LONG_JT_ONDELAY</name>
                                               <value>number 6</value>
                                           </member>
                                           <member>
                                               <name>LONG_COND_VALUE_HI</name>
                                               <value>number 150</value>
                                           </member>
                                           <member>
                                               <name>SHORT_CT_OFF</name>
                                               <value>VALUE_GE_LO</value>
                                           </member>
                                           <member>
                                               <name>LONG_ON_TIME_BASE</name>
                                               <value>number 7</value>
                                           </member>
                                           <member>
                                               <name>SHORT_JT_OFF</name>
                                               <value>OFF</value>
                                           </member>
                                           <member>
                                               <name>SHORT_ONDELAY_TIME_FACTOR</name>
                                               <value>
                                                   <i4>0</i4>
                                               </value>
                                           </member>
                                           <member>
                                               <name>LONG_CT_ON</name>
                                               <value>number 0</value>
                                           </member>
                                           <member>
                                               <name>SHORT_ONDELAY_TIME_BASE</name>
                                               <value>BASE_100_MS</value>
                                           </member>
                                           <member>
                                               <name>LONG_OFFDELAY_TIME_BASE</name>
                                               <value>number 0</value>
                                           </member>
                                           <member>
                                               <name>SHORT_CT_OFFDELAY</name>
                                               <value>VALUE_GE_LO</value>
                                           </member>
                                           <member>
                                               <name>SHORT_JT_ON</name>
                                               <value>OFF_DELAY</value>
                                           </member>
                                       </struct>
                                   </value>
                               </member>
                               <member>
                                   <name>SENDER_DESCRIPTION</name>
                                   <value></value>
                               </member>
                               <member>
                                   <name>RECEIVER_DESCRIPTION</name>
                                   <value></value>
                               </member>
                           </struct>
                       </value>
                       <value>
                           <struct>
                               <member>
                                   <name>SENDER</name>
                                   <value>das:2</value>
                               </member>
                               <member>
                                   <name>RECEIVER</name>
                                   <value>das:4</value>
                               </member>
                               <member>
                                   <name>FLAGS</name>
                                   <value>
                                       <i4>0</i4>
                                   </value>
                               </member>
                               <member>
                                   <name>NAME</name>
                                   <value>das:02 das:04</value>
                               </member>
                               <member>
                                   <name>DESCRIPTION</name>
                                   <value>NO_DESCRIPTION</value>
                               </member>
                               <member>
                                   <name>SENDER_PARAMSET</name>
                                   <value>
                                       <struct></struct>
                                   </value>
                               </member>
                               <member>
                                   <name>RECEIVER_PARAMSET</name>
                                   <value>
                                       <struct>
                                           <member>
                                               <name>SHORT_CT_ON</name>
                                               <value>VALUE_GE_LO</value>
                                           </member>
                                           <member>
                                               <name>LONG_PROFILE_ACTION_TYPE</name>
                                               <value>PROFILE_ACTION_TYPE_INACTIVE</value>
                                           </member>
                                           <member>
                                               <name>LONG_OFF_TIME_MODE</name>
                                               <value>TIME_IS_ABSOLUTE</value>
                                           </member>
                                           <member>
                                               <name>SHORT_OFFDELAY_TIME_BASE</name>
                                               <value>BASE_100_MS</value>
                                           </member>
                                           <member>
                                               <name>SHORT_JT_OFFDELAY</name>
                                               <value>ON</value>
                                           </member>
                                           <member>
                                               <name>LONG_CT_OFFDELAY</name>
                                               <value>VALUE_GE_LO</value>
                                           </member>
                                           <member>
                                               <name>LONG_CT_OFF</name>
                                               <value>VALUE_GE_LO</value>
                                           </member>
                                           <member>
                                               <name>SHORT_COND_VALUE_LO</name>
                                               <value>
                                                   <i4>50</i4>
                                               </value>
                                           </member>
                                           <member>
                                               <name>SHORT_OFFDELAY_TIME_FACTOR</name>
                                               <value>
                                                   <i4>0</i4>
                                               </value>
                                           </member>
                                           <member>
                                               <name>LONG_JT_ON</name>
                                               <value>ON_DELAY</value>
                                           </member>
                                           <member>
                                               <name>LONG_OFF_TIME_FACTOR</name>
                                               <value>
                                                   <i4>31</i4>
                                               </value>
                                           </member>
                                           <member>
                                               <name>SHORT_COND_VALUE_HI</name>
                                               <value>
                                                   <i4>150</i4>
                                               </value>
                                           </member>
                                           <member>
                                               <name>SHORT_OFF_TIME_MODE</name>
                                               <value>TIME_IS_ABSOLUTE</value>
                                           </member>
                                           <member>
                                               <name>SHORT_CT_ONDELAY</name>
                                               <value>VALUE_GE_LO</value>
                                           </member>
                                           <member>
                                               <name>SHORT_OFF_TIME_FACTOR</name>
                                               <value>
                                                   <i4>31</i4>
                                               </value>
                                           </member>
                                           <member>
                                               <name>LONG_MULTIEXECUTE</name>
                                               <value>
                                                   <boolean>0</boolean>
                                               </value>
                                           </member>
                                           <member>
                                               <name>LONG_ONDELAY_TIME_FACTOR</name>
                                               <value>
                                                   <i4>0</i4>
                                               </value>
                                           </member>
                                           <member>
                                               <name>SHORT_ON_TIME_FACTOR</name>
                                               <value>
                                                   <i4>31</i4>
                                               </value>
                                           </member>
                                           <member>
                                               <name>LONG_ON_TIME_FACTOR</name>
                                               <value>
                                                   <i4>31</i4>
                                               </value>
                                           </member>
                                           <member>
                                               <name>LONG_CT_ONDELAY</name>
                                               <value>VALUE_GE_LO</value>
                                           </member>
                                           <member>
                                               <name>SHORT_ON_TIME_BASE</name>
                                               <value>BASE_1_H</value>
                                           </member>
                                           <member>
                                               <name>SHORT_MULTIEXECUTE</name>
                                               <value>
                                                   <boolean>0</boolean>
                                               </value>
                                           </member>
                                           <member>
                                               <name>LONG_JT_OFF</name>
                                               <value>ON_DELAY</value>
                                           </member>
                                           <member>
                                               <name>SHORT_JT_ONDELAY</name>
                                               <value>ON</value>
                                           </member>
                                           <member>
                                               <name>LONG_ONDELAY_TIME_BASE</name>
                                               <value>BASE_100_MS</value>
                                           </member>
                                           <member>
                                               <name>SHORT_PROFILE_ACTION_TYPE</name>
                                               <value>PROFILE_ACTION_TYPE_JUMP</value>
                                           </member>
                                           <member>
                                               <name>LONG_ON_TIME_MODE</name>
                                               <value>TIME_IS_ABSOLUTE</value>
                                           </member>
                                           <member>
                                               <name>LONG_JT_OFFDELAY</name>
                                               <value>ON</value>
                                           </member>
                                           <member>
                                               <name>LONG_OFF_TIME_BASE</name>
                                               <value>BASE_1_H</value>
                                           </member>
                                           <member>
                                               <name>LONG_OFFDELAY_TIME_FACTOR</name>
                                               <value>
                                                   <i4>0</i4>
                                               </value>
                                           </member>
                                           <member>
                                               <name>LONG_COND_VALUE_LO</name>
                                               <value>
                                                   <i4>50</i4>
                                               </value>
                                           </member>
                                           <member>
                                               <name>SHORT_OFF_TIME_BASE</name>
                                               <value>BASE_1_H</value>
                                           </member>
                                           <member>
                                               <name>SHORT_ON_TIME_MODE</name>
                                               <value>TIME_IS_ABSOLUTE</value>
                                           </member>
                                           <member>
                                               <name>LONG_JT_ONDELAY</name>
                                               <value>ON</value>
                                           </member>
                                           <member>
                                               <name>LONG_COND_VALUE_HI</name>
                                               <value>
                                                   <i4>150</i4>
                                               </value>
                                           </member>
                                           <member>
                                               <name>SHORT_CT_OFF</name>
                                               <value>VALUE_GE_LO</value>
                                           </member>
                                           <member>
                                               <name>LONG_ON_TIME_BASE</name>
                                               <value>BASE_1_H</value>
                                           </member>
                                           <member>
                                               <name>SHORT_JT_OFF</name>
                                               <value>ON_DELAY</value>
                                           </member>
                                           <member>
                                               <name>SHORT_ONDELAY_TIME_FACTOR</name>
                                               <value>
                                                   <i4>0</i4>
                                               </value>
                                           </member>
                                           <member>
                                               <name>LONG_CT_ON</name>
                                               <value>VALUE_GE_LO</value>
                                           </member>
                                           <member>
                                               <name>SHORT_ONDELAY_TIME_BASE</name>
                                               <value>BASE_100_MS</value>
                                           </member>
                                           <member>
                                               <name>LONG_OFFDELAY_TIME_BASE</name>
                                               <value>BASE_100_MS</value>
                                           </member>
                                           <member>
                                               <name>SHORT_CT_OFFDELAY</name>
                                               <value>VALUE_GE_LO</value>
                                           </member>
                                           <member>
                                               <name>SHORT_JT_ON</name>
                                               <value>ON_DELAY</value>
                                           </member>
                                       </struct>
                                   </value>
                               </member>
                               <member>
                                   <name>SENDER_DESCRIPTION</name>
                                   <value></value>
                               </member>
                               <member>
                                   <name>RECEIVER_DESCRIPTION</name>
                                   <value></value>
                               </member>
                           </struct>
                       </value>
                   </data>
               </array>
           </value>
       </param>
   </params>
</methodResponse>

Es ist nicht nur zwischen zwei Endpunkten unterschiedlich sondern auch innerhalb der Datensätze eines Endpunktes. Ein Beispiel sind die LONG_MULTIEXECUTE Werte

<member>
    <name>LONG_MULTIEXECUTE</name>
    <value>number 0</value>
</member>
<member>
    <name>LONG_MULTIEXECUTE</name>
    <value>
        <boolean>0</boolean>
    </value>
</member>

Das macht Integration schwierig.

Describe the behavior you expected

Die Formatierung sollte einheitlich sein.

Steps to reproduce the issue

  1. XML-RPC Anfrage machen

What is the version this bug report is based on?

3.65.11.20221005

Which base platform are you running?

rpi3 (RaspberryPi3)

Which HomeMatic/homematicIP radio module are you using?

n/a

Anything in the logs that might be useful for us?

Nein

Additional information

No response

@jonaswre jonaswre added the 🐛 bug-report Something isn't working label Oct 28, 2022
@jens-maus
Copy link
Owner

Bitte nur konkrete Beispielauszüge mit dargelegten unterschieden samt curl payload hier zeigen und nicht ein kompletten xml tree. Denn es ist schwer das zu reproduzieren bzw deiner Argumentation zu folgen wenn nicht klar ersichtlich ist wie genau dieser tree erzeugt wurde.

@jonaswre
Copy link
Author

jonaswre commented Oct 29, 2022

Tut mir leid ich dachte es wäre eindeutig genug. Hier nochmal der curl request. Ich könnte auch eine Postman Collection zur Verfügungstellen falls das hilft.

curl --location --request POST 'http://<ip>:2010' \
--header 'Authorization: Basic <auth>' \
--header 'Content-Type: application/xml' \
--data-raw '<?xml version="1.0"?>
<methodCall>
    <methodName>getLinks</methodName>
    <params>
        <param>
            <value>
                <string>deviceid:4</string>
            </value>
        </param>
        <param>
            <value>
                <int>6</int>
            </value>
        </param>
    </params>
</methodCall>`

Danke

@jens-maus
Copy link
Owner

Danke. Und dann bitte noch einzeln/genauer thematisieren welche konkreten probleme / Inkonsistenzen du siehst bzw problematisch ansiehst.

@jonaswre
Copy link
Author

Im XML sind 2 Links.
Im ParameterSet gibt es den LONG_MULTIEXECUTE Parameter. Dieser wird im ersten Link mit dem wert "number 0" zurückgegeben. Im zweiten Link wird der selbe Parameter korrekt formatiert.

<member>
    <name>LONG_MULTIEXECUTE</name>
    <value>number 0</value>
</member>
<member>
    <name>LONG_MULTIEXECUTE</name>
    <value>
        <boolean>0</boolean>
    </value>
</member>

Desweiteren sind die Parameter auch im folgenden getParamset nicht so formatiert wie im getLinks.

curl --location --request POST 'http://<ip>:2010' \
--header 'Authorization: Basic <auth>' \
--header 'Content-Type: application/xml' \
--data-raw '<?xml version="1.0"?>
<methodCall>
    <methodName>getParamset</methodName>
    <params>
        <param>
            <value>
                <string>deviceid:4</string>
            </value>
        </param>
        <param>
            <value>
                <string>deviceid:1</string>
            </value>
        </param>
    </params>
</methodCall>'

@jp112sdl
Copy link
Contributor

Die Anfragen werden ja direkt vom HMIPServer beantwortet.

Fixen kann das nur eQ-3.
Daher wäre die Frage wohl dort beim Support besser aufgehoben.
Oder im OCCU: https://github.com/eq-3/occu/issues
Wobei sich da auch nix tut.

@jonaswre
Copy link
Author

Kann man die Anfrage nicht abfangen und vorher bearbeiten?

Aber ich werde mich Mal an den Support wenden.

Danke.

@SukramJ
Copy link

SukramJ commented Oct 30, 2022

Laut XmLRPC Spec ist liegt hier kein Fehler vor:

<member>
    <name>LONG_MULTIEXECUTE</name>
    <value>number 0</value>
</member>

Wenn kein Typ spezifiziert wurde ist der Typ string.

Warum eq-3 hier mit einem String number 0 arbeitet weiss ich auch nicht.

@jonaswre
Copy link
Author

Mich stört gar nicht Mal das sie die Typen nicht richtig ausweisen. Es stört vorallem das ich mich nicht darauf verlassen kann, dass es zumindest innerhalb einer Methode gleich ist. Ich kann nicht glauben, dass ich der erste bin dem das aufällt.

@SukramJ
Copy link

SukramJ commented Oct 30, 2022

Ich kann nicht glauben, dass ich der erste bin dem das aufällt.

Die meisten werden wohl nicht das XML parsen, sondern eine XmlRPC-Client Bibliothek verwenden.

@jonaswre
Copy link
Author

jonaswre commented Oct 30, 2022

Das mach ich auch. Aber auch die weiß nicht das number 0 manchmal boolean false heißt. Zu mindestens generische nicht. Und für Dart hat noch keiner einen Client für Homematic gebaut. - Das wollte ich machen.

@jens-maus
Copy link
Owner

Vielleicht sollte ich dieses Issue Ticket besser in einen Diskussionsbeitrag konvertieren, denn ich sehe nicht wie im Zuge der RaspberryMatic Entwicklung man hier etwas verbessern könnte solange diese Teile closed-source sind. Die Art der XMLRPC Antworten sind so wie sie sind und damit muss man irgendwie leben.

Auch kommt man erfahrungsgemäß um eine Mischung aus XMLRPC, JSON-RPC und direktes ReGa-Skripting nicht drumherum und das nutzen im Grunde alle anderen Middlewares wie ioBroker, HomeAssistant & Co und das auch aus gewissen guten Gründen (z.b. um den DutyCycle gering zu halten bei Abfragen)

@jonaswre
Copy link
Author

Ich glaube aber auch das viele der Middelwares nicht die Konfiguration des Systems also Scope haben. Dann interessieren einen die Paramsets normalerweise recht wenig.

@jens-maus
Copy link
Owner

Ich glaube aber auch das viele der Middelwares nicht die Konfiguration des Systems also Scope haben. Dann interessieren einen die Paramsets normalerweise recht wenig.

Das stimmt teilweise (Homematic Manager bietet das prinzipiell auch). IMHO sollte man den Aufwand (wie du ja merkst) nicht unterschätzen und am besten die Idee von einer kompletten Konfigurationsoberfläche abseits der CCU WebUI verwerfen und besser vllt an der Restrukturierung bzw neuausrichtung der WebUI (siehe #1511) mitarbeiten.

@jonaswre
Copy link
Author

Das stimmt teilweise (Homematic Manager bietet das prinzipiell auch). IMHO sollte man den Aufwand (wie du ja merkst) nicht unterschätzen und am besten die Idee von einer kompletten Konfigurationsoberfläche abseits der CCU WebUI verwerfen und besser vllt an der Restrukturierung bzw neuausrichtung der WebUI (siehe #1511) mitarbeiten.

Ich will tatsächlich auch nicht umbedingt eine gesamte Konfigurations Oberfläche nachbauen. Ich finde aber das gewisse Konfigurationen Mobil besser funktionieren.

Ich arbeite gerade an einer mobilen App. Die App ermöglicht Konfigurationen an Geräten, wie beispielsweise Zeitpläne oder Direktverbindungen direkt am Gerät vorzunehemen.

Das zu konfigurierende Geräte wird per Knopfdruck ausgewählt.
Die App empfängt das Klick Event und wählt das Gerät dann als Empfänger der Direkt Verbindungen aus.
Für alle weiteren ausgewählten Geräte werden Direkt Verbindungen mit dem Empfänger angelegt.

Dadurch spart man sich das nervige einrichten einer Direktverbindung für jeden Empfänger.

Eine Flurschaltung mit 4 Schaltern und 2 Lampen benötigt, da jeweils 2 Verbindungen pro Sender pro Empfänger benötigt werden, 16 Direktverbindungen. Das ist eine Menge die man nicht im aktuellen WebUI machen möchte.

Es gab aber noch ein Problem, dass mein Vorgehen unmöglich gemacht hat. Das wurde jetzt aber in #1567 gelöst.
Ich hab jetzt auch schon einen Weg gefunden die Inkonsistenz in der API, im Client auszugleichen.

@jens-maus
Copy link
Owner

Ich arbeite gerade an einer mobilen App.

Yet Another App?!? Wäre es nicht sinnvoller sich an bereits existierenden Apps (tinyMatic, PocketControl, etc.) zu beteiligen als das Rad neu erfinden zu wollen, weil prinzipiell wirst du auf die selben Dinge stoßen wie die Apps?

Und wenn man die CCU WebUI irgendwann sogar responsive hinbekommen würde wäre es ja sogar möglich einfach via smartphone auf die WebUI zuzugreifen und gut ist.

Eine Flurschaltung mit 4 Schaltern und 2 Lampen benötigt, da jeweils 2 Verbindungen pro Sender pro Empfänger benötigt werden, 16 Direktverbindungen. Das ist eine Menge die man nicht im aktuellen WebUI machen möchte.

All das könnte man der existierenden WebUI auch beibringen und müsste hier nicht eine neue App&co bauen die dann wieder andere Limitationen haben wird.

@jonaswre
Copy link
Author

Yet Another App?!? Wäre es nicht sinnvoller sich an bereits existierenden Apps (tinyMatic, PocketControl, etc.) zu beteiligen als das Rad neu erfinden zu wollen, weil prinzipiell wirst du auf die selben Dinge stoßen wie die Apps?

Der Zweck meiner App is sehr begrenzt es geht um das konfigurieren von Geräten. Die meisten Apps, soweit ich weiß, sind dadrauf ausgelegt die Geräte zu steuern aber nicht Sie zu konfigurieren.

Und wenn man die CCU WebUI irgendwann sogar responsive hinbekommen würde wäre es ja sogar möglich einfach via smartphone auf die WebUI zuzugreifen und gut ist.

Die ganze WebUI responsive zu machen ist vermutlich sehr viel Aufwand. Die App bietet mir erstmal einen Weg die Technik/UX relativ einfach zu testen. (Sowohl das Problem mit der inkonsitenten API als auch mit der versteckten Direktverbindung wäre in der WebUI auch aufgekommen)

All das könnte man der existierenden WebUI auch beibringen und müsste hier nicht eine neue App&co bauen die dann wieder andere Limitationen haben wird.

Ich hab tatsächlich schon dadrüber nachgedacht. Und das wäre der leichteste Weg die Funktionalität möglichst vielen zur Verfügung zustellen. Native Apps haben immer den Nachteil, dass Sie erst über die Stores zur Verfügung gestellt werden müssen. Das WebUI wird mit direkt zur Verfügung gestellt.

Ich werde erstmal wie geplant einen Prototypen erstellen wenn der gut funktioniert würde ich mich freuen wenn wir nochmal dadrüber reden könnten ob/wie mein Prototyp in der WebUI funktionieren kann.

@jonaswre
Copy link
Author

Falls dieses Ticket wirklich nicht durch RaspberryMatic zu reparieren ist schließt es gerne. Und danke für die Geduld!

@jens-maus
Copy link
Owner

Ich werde erstmal wie geplant einen Prototypen erstellen wenn der gut funktioniert würde ich mich freuen wenn wir nochmal dadrüber reden könnten ob/wie mein Prototyp in der WebUI funktionieren kann.

Wenn das wirklich eine mögliche Option von dir ist solltest du dir in der Tat mal #1511 näher anschauen, denn arg weit weg von der originalen WebUI dürfen wir uns auch nicht wegbewegen wegen Kompatibilität und zukünftiger Updates und da stellt #1511 einen guten Kompromiss dar eine aktuelle js API einzuführen aber das Look&Feel zu versuchen beizubehalten.

@jens-maus
Copy link
Owner

Falls dieses Ticket wirklich nicht durch RaspberryMatic zu reparieren ist schließt es gerne. Und danke für die Geduld!

Ich werde das mal in eine Diskussion konvertieren damit das ganze nicht ganz untergeht.

Repository owner locked and limited conversation to collaborators Nov 11, 2022
@jens-maus jens-maus converted this issue into discussion #2042 Nov 11, 2022

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

Labels
🐛 bug-report Something isn't working
Projects
None yet
Development

No branches or pull requests

4 participants