Skip to content
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

HmIP-Geräte mittels DevConfig nicht löschbar #2504

Closed
Baxxy13 opened this issue Nov 9, 2023 · 17 comments
Closed

HmIP-Geräte mittels DevConfig nicht löschbar #2504

Baxxy13 opened this issue Nov 9, 2023 · 17 comments
Labels
🐛 bug-report Something isn't working

Comments

@Baxxy13
Copy link
Contributor

Baxxy13 commented Nov 9, 2023

Describe the issue you are experiencing

Wenn man mit DevConfig ein HmIP-Gerät (mittels "Delete" oder "Delete And Reset") löschen möchte, funktioniert das nicht und es kommt zu einer Fehlermeldung.

Describe the behavior you expected

DevConfig sollte auch HmIP-Geräte löschen können.

Steps to reproduce the issue

  1. DevConfig aufrufen
  2. über "Device List" ein IP-Gerät heraussuchen und "Delete" oder "Delete And Reset" drücken
  3. Fehlermeldung erscheint
    ...

What is the version this bug report is based on?

3.71.12.20231020

Which base platform are you running?

rpi3 (RaspberryPi3)

Which HomeMatic/homematicIP radio module are you using?

RPI-RF-MOD

Anything in the logs that might be useful for us?

An internal error was detected in the service software:
Backtrace:
Transport error on xmlrpc call deleteDevice to xmlrpc://127.0.0.1:32010: Error in XmlRpcClient::parseResponse: Invalid response - no methodResponse. Response:

    while executing
"xmlrpc $url deleteDevice [list string $device] [list boolean $reset]"
    (procedure "cmd_delete" line 6)
    invoked from within
"cmd_$cmd"

CGI info:
_cgi(input): cmd=delete&device=001559939498CC&iface=HmIP-RF&sid=@zBUJY78fHY@
_cgi(queryencoding): utf-8

Environment info:
env(CONTENT_LENGTH)                 = 0
env(DOCUMENT_ROOT)                  = /www/
env(GATEWAY_INTERFACE)              = CGI/1.1
env(HTTP_ACCEPT)                    = text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8
env(HTTP_ACCEPT_ENCODING)           = gzip, deflate
env(HTTP_ACCEPT_LANGUAGE)           = de-DE,de
env(HTTP_CONNECTION)                = keep-alive
env(HTTP_HOST)                      = 192.168.113.150
env(HTTP_SEC_GPC)                   = 1
env(HTTP_UPGRADE_INSECURE_REQUESTS) = 1
env(HTTP_USER_AGENT)                = Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36
env(QUERY_STRING)                   = cmd=delete&device=001559939498CC&iface=HmIP-RF&sid=@zBUJY78fHY@
env(REDIRECT_STATUS)                = 200
env(REMOTE_ADDR)                    = 192.168.113.3
env(REMOTE_PORT)                    = 60560
env(REQUEST_METHOD)                 = GET
env(REQUEST_SCHEME)                 = http
env(REQUEST_URI)                    = /tools/devconfig.cgi?cmd=delete&device=001559939498CC&iface=HmIP-RF&sid=@zBUJY78fHY@
env(SCRIPT_FILENAME)                = /www/tools/devconfig.cgi
env(SCRIPT_NAME)                    = /tools/devconfig.cgi
env(SERVER_ADDR)                    = 192.168.113.150
env(SERVER_NAME)                    = 192.168.113.150
env(SERVER_PORT)                    = 80
env(SERVER_PROTOCOL)                = HTTP/1.1
env(SERVER_SOFTWARE)                =

Additional information

Versucht zu löschen habe ich einen HmIP-SWDM sowie das Funkmodul (RPI-RF-MOD)

@Baxxy13 Baxxy13 added the 🐛 bug-report Something isn't working label Nov 9, 2023
@jens-maus
Copy link
Owner

Danke für das Ticket. Ich denke es wird an folgendem statement liegen in der devconfig.cgi:

xmlrpc $url deleteDevice [list string $device] [list boolean $reset]

Das Problem wird sein das dort das [list boolean $reset] falsch ist laut Doku (https://www.eq-3.de/Downloads/eq3/download%20bereich/hm_web_ui_doku/HM_XmlRpc_API.pdf - Seite 16). Laut dokumentation ist das ja kein boolean sondern ein integer als bitfeld. D.h. hier müsste sowas wie [list int 1] sein wenn ein reset erfolgen soll. Ggf. müsste man dann auch noch die anderen Optionen (force und defer) mit umsetzen damit man dort entsprechend auch löschen kann.

Kannst du das mal mit [list int 1] z.B. einfach durch Anpassung der devconfig.cgi testen und zurückmelden?

@jens-maus
Copy link
Owner

Sehe gerade noch das in der neueren HmIP Legacy XMLRPC Doku (https://www.eq-3.de/Downloads/eq3/download%20bereich/hm_web_ui_doku/HMIP_XmlRpc_API_Addendum.pdf) unter 2.3.4 davon die Rede ist das es bei homematicIP die Flags 0x01 und 0x04 nicht mehr gibt und quasi immer gesetzt sind. d.h. bei HmIP kann man nur mit 0x02 (force) das löschen erzwingen wenn ein Gerät nicht erreichbar ist.

@jp112sdl
Copy link
Contributor

jp112sdl commented Nov 9, 2023

d.h. bei HmIP kann man nur mit 0x02 (force) das löschen erzwingen wenn ein Gerät nicht erreichbar ist.

So hatte ich es auch Baxxy geschrieben, um das CCU-Gerät loszuwerden
https://homematic-forum.de/forum/viewtopic.php?f=65&t=80496&p=784099#p784070

xmlrpc http://127.0.0.1:2010 deleteDevice [list string 001F98A9A57E0C] [list int 2]]

Die Flags hatte ich aus der generischen deletedevice.tcl
https://github.com/eq-3/occu/blob/master/WebUI/www/api/methods/interface/deletedevice.tcl

@jens-maus
Copy link
Owner

Danke. Dann sollte das ja nen easy fix werden von devconfig. Die Frage ist nur inwieweit wir die anderen flags auch noch implementieren wollen/sollen wenn wir schon dabei sind? ;-)

@Baxxy13
Copy link
Contributor Author

Baxxy13 commented Nov 9, 2023

Müssen wir jetzt alles umbauen?
Wenn ich es richtig verstanden habe geht bei IP nur 0x02 (0x01 & 0x04 sind "mit drin")
Bei HM gehen alle 3:
0x01 = Deleted
0x02 = Deleted and Reset
0x04 = später löschen

Das würde doch aber bedeuten daß wir die Optionen:

  • Interface abhängig ausblenden müssten
  • oder bei IP alles auf 0x02 mappen müssten

@jens-maus
Copy link
Owner

  • oder bei IP alles auf 0x02 mappen müssten

Laut Doku macht das der HMIPServer wohl selbstständig da dort immer 0x01 und 0x04 gesetzt sind.

@jp112sdl
Copy link
Contributor

jp112sdl commented Nov 9, 2023

Wenn ich den Code richtig verstehe, ist es bei HMIP egal, ob 1, 2 oder 4.

2 bildet die Ausnahme, wenn das zu löschende Gerät tatsächlich nicht erreichbar ist.
Es wird dann das Löschen aus dem Geräteinventar erzwungen, ohne einen Request an das Gerät zu schicken bzw. dessen ACK einzuholen.

Wie das nun im konkreten Fall des RPI-RF-MOD Gerätes aussieht, weiß ich nicht. Das kann Baxxy vielleicht noch testen, ob es auch mit den Flags 0x01 oder 0x04 ginge.

@jens-maus jens-maus added this to the next release milestone Nov 9, 2023
@jens-maus
Copy link
Owner

Bitte mal die von mir angepasste devconfig.cgi hier runterladen (https://github.com/jens-maus/RaspberryMatic/blob/master/buildroot-external/patches/occu/0037-WebUI-DevConfig/occu/WebUI/www/tools/devconfig.cgi) und dann ausprobieren ob damit nun das delete geht und die entsprechenden optionen für das delete auch genutzt werden können.

@Baxxy13
Copy link
Contributor Author

Baxxy13 commented Nov 9, 2023

Bezüglich löschen des Funkmoduls sieht das nun so aus:
Delete+Force sowie Delete+Reset+Force funktionieren sauber und problemlos.

Alle anderen Optionen:

  • "WebUI-Crash" mit Reload
  • Gerät bleibt in der ReGa
  • Gerät ist aus der Schnittstelle raus
  • Funkmodul-LED blinkt gelb, aber keine Servicemeldungen

Da das Funkmodul ja "besonders" ist müsste man alle Optionen auch mit z.B. IP-Schaltsteckdosen und IP-Batteriesensoren testen.
Da fehlt mir aber aktuell die Zeit auch weil das extrem Zeitaufwendig ist.

@jens-maus
Copy link
Owner

Danke fürs Testen. Ist ja nicht ganz so wichtig, geht ja nur um devconfig und nicht um die allgemeine WebUI. Hauptsache wir haben da jetzt eine Methode die definitiv die Dinge rauslöscht. Und wenn das mit Force geht, dann sei es so.

Was heisst aber "WebUI-Crash"? Was passiert da? vielleicht kann man das ja noch irgendwie abfangen.

@Baxxy13
Copy link
Contributor Author

Baxxy13 commented Nov 9, 2023

GIF 09 11 2023 16-32-21

@jens-maus
Copy link
Owner

Nichts unter /usr/local/tmp/cgimail.*?

@Baxxy13
Copy link
Contributor Author

Baxxy13 commented Nov 9, 2023

Nein.
In der Browserkonsole sehe ich ganz kurz was mit "Internal Server Error", bekomme es aber nicht eingefangen. Und für jeden neuen Versuch ist ein Reboot nötig.

@Baxxy13
Copy link
Contributor Author

Baxxy13 commented Nov 9, 2023

GIF 09 11 2023 17-10-52

@jens-maus
Copy link
Owner

Nein. In der Browserkonsole sehe ich ganz kurz was mit "Internal Server Error", bekomme es aber nicht eingefangen. Und für jeden neuen Versuch ist ein Reboot nötig.

Wenn da ein 500 status code zurückkommt dann logged vielleicht der lighttpd irgendetwas diesbzgl. gibt es da oder in anderen logfiles unter /var/log etwas auffälliges?

@jens-maus
Copy link
Owner

Und vielleicht mal in der Browserkonsole unter "Network" nachschauen ob du da was aufgezeichnet bekommst und dann schauen kannst was da passiert...

@Baxxy13
Copy link
Contributor Author

Baxxy13 commented Nov 9, 2023

Sorry Jens, ich bekomme nichts eingefangen und es gibt auch nichts auffälliges in den Logs.
Da musst du wohl mal selbst ein Funkmodul löschen. Nach einem Reboot ist es ja wieder da. 😉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🐛 bug-report Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants