Devolo Magic 2 und UBUS?

Begonnen von gestein, 14 September 2021, 15:26:32

Vorheriges Thema - Nächstes Thema

gestein

Die u.a. log-Einträge bzgl. der logins ist gefiltert, damit man sieht, wie oft eingeloggt wird.
Bitte entschuldige die Verwirrung.

Ich habe versucht, das den Aufruf direkt nach dem login zu machen - gleiches Ergebnis.

Das har-File und das log-File kann ich Dir gerne per pm schicken.
Der Aufruf im Browser ist zweistufig.
Zuerst wird die Overview-Ansicht aufgerufen, erst dann die für mich interessante Seite mit all den Client.

lg, Gerhard

xenos1984

Zitat von: gestein am 14 September 2021, 23:42:05
Ich habe versucht, das den Aufruf direkt nach dem login zu machen - gleiches Ergebnis.
Da scheint also irgendwie die Session verloren zu gehen... Ich kann mal schauen, was da los ist.

gestein

Guten Morgen,

habe Dir die beiden Dateien sowie den aktuellen Zustand des Devices per pm geschickt.

Vielleicht hilft es Dir was.
Wenn Du noch etwas brauchst, dann gerne.
Zeit ist natürlich kein Problem ...

Wie gesagt, scheint Devolo direkt nach dem Login den Timeout abzufragen und dann ein Refresh zu senden (hoffe, das stimmt so).

Danke! lg, Gerhard

xenos1984

Danke für die Daten! Die sind mir in der Tat eine große Hilfe, auch wenn die Auswertung etwas dauert :)

Aber immerhin sehe ich schon, was da passiert. Derzeit fragt mein Modul direkt nach dem Login die Konfiguration der Telefonleitungen ab (das ist die Zeile mit "uci" und "get"). Mein Router teilt auf diesem Wege der GUI mit, welche davon belegt sind, und deren Status wird dann regelmäßig abgefragt. Dein Router erlaubt aber diesen "uci" / "get" Aufruf nicht und meldet einen Code 6 - Authentifizierungsfehler. Das interpretiert mein Modul so, dass ein erneuter Login erforderlich ist, löscht die alte Session-ID und wiederholt den Login. Dann beginnt das Spiel von vorne.

Es geht also kein Weg darum herum, die API-Aufrufe konfigurierbar zu machen, da wohl verschiedene Router auch verschiedene Funktionsaufrufe brauchen, um ihnen die jeweiligen Daten zu entlocken. Ich habe mir schon Gedanken dazu gemacht, wie man das umsetzen kann. Machbar ist es sicher, und vermutlich sogar "sauberer".

Übrigens enthält die erste Antwort, die nach dem Login kommt, und in der mit ubus_rpc_session die Session-ID mitgeteilt wird, auch eine Liste, was für Abfragen erlaubt sind. Bei mir steht da unter "uci" auch "voice_clients", bei dir nicht.

gestein

Gerne.
Deine Erklärung klingt logisch und nach viel Arbeit.

Dass bei den Devolos kein "voice_clients" in der Liste der möglichen Befehle steht, passt auch, weil das Powerline-Adapter mit LAN und WLAN sind.

Wenn Du noch etwas brauchst, lass es mich wissen.

lg, Gerhard

xenos1984

Ich habe nach einer Weile Probieren einmal etwas gebastelt, mit dem es möglich sein sollte, die Funktionsaufrufe zu konfigurieren:

http://forum.fhem.de/index.php/topic,122404.msg1199367.html#msg1199367

Da ist noch viel zu tun, aber für einen reinen Funktionstest, ob du Daten bekommst, könntest du etwas in dieser Richtung versuchen:


defmod UBUS_Test UBUS_CLIENT http://192.168.0.225/ubus
attr UBUS_Test username root

defmod UBUS_clients_ath1 UBUS_CALL network.info clients device=ath1
attr UBUS_clients_ath1 interval 60

defmod UBUS_unconnected_clients UBUS_CALL network.info unconnected_clients
attr UBUS_unconnected_clients interval 60

gestein

Hallo,

ich wollte eh schon mal nachfragen, aber ich dachte Du meldest Dich, wenn Du was hast ;)

Einspielen hat schon mal geklappt und die Geräte konnte ich auch so erzeugen.
Im Device "UBUS_unconnected_clients" stehen schon mal jede Menge readings drinnen, z.B.:
clients_10_02_B5_5B_4D_CA_disconnected_time  463195 2022-01-10 17:16:30
clients_10_02_B5_5B_4D_CA_radio 1 2022-01-10 17:12:30
clients_10_02_B5_5B_4D_CA_ssid PinkZeder_5G 2022-01-10 17:12:30
clients_10_02_B5_5B_4D_CA_vendor_description Intel Corporate 2022-01-10 17:12:30
clients_10_02_B5_5B_4D_CA_vendor_name IntelCor 2022-01-10 17:12:30

Und das für alle Clients, die verbunden sind. Toll. Danke!

Wenn ich einen zweiten Client (zweiter Devolo-Adapter) anlege, dann geht dieser auf "stopped".

Was soll ich testen und was benötigst du dann?
lg, Gerhard

xenos1984

Wenn du zwei UBUS_CLIENT Geräte hast, müssen die UBUS_CALL wissen, mit welchem sie sprechen sollen. Dafür brauchen sie ein weiteres Attribut:


attr UBUS_unconnected_clients IODev UBUS_Test


Dann sollte es eigentlich auch mit mehreren UBUS_CLIENT parallel laufen. Den Fall habe ich bisher nicht getestet (ich habe nur ein Gerät), von daher kann ich nicht ausschließen, dass da noch etwas an DevIO anders eingestellt werden muss.

gestein

Klingt gut, aber das UBUS_unconnected_clients hat kein Attribut IODev:
UBUS_unconnected_clients: unknown attribute IODev. Type 'attr UBUS_unconnected_clients ?' for a detailed list.
Das Internal "IODev" hat es aber. Woher eigenlich?
Wenn ich ein weiteres "UBUS_unconnected_clients_226" anlege, hat das auf einmal das richtige IODev.

Benötige ich dann auch noch ein weiteres "UBUS_clients_ath1"?
Wenn ich ein weiteres "UBUS_clients_ath1" anlege, hat das auf einmal das richtige IODev.

Folgendes ist mir aufgefallen:
- der Status von UBUS_unconnected_clients ist immer "???"
- der Status von einem UBUS_CLIENT ist immer "active", der vom anderen immer "stopped".
  Erst wenn ich den "stopped" auf "enabled" umstelle, geht was.
- Durch einen Fehler war das Device nicht erreichbar.
  Im log steht folgendes, aber der Status ist trotzdem "active"
2022.01.10 21:58:00.249 1 : UBUS (UBUS_Test) - error performing request: 192.168.0.225: Keine Route zum Zielrechner (113)
2022.01.10 21:58:01.321 1 : UBUS (UBUS_Test) - error performing request: connect to http://192.168.0.225:80 timed out


Aber es scheint prinzipiell zu funktionieren.
lg, Gerhard

gestein

ich habe nun probiert für einen anderen Devolo (221) alle drei Devices anzulegen.

Klappt, aber beim Anlegen des "UBUS_CLIENT" kommt eine Fehlermeldung im log:
2022.01.10 22:53:08.526 1 : UBUS (UBUS_Test_221) - login error
2022-01-10 22:53:08.577 UBUS_CLIENT UBUS_Test_221 stopped


Wenn ich dann auf "set UBUS_Test_221 enable" setze, kommt folgendes:
2022-01-10 22:54:42.589 UBUS_CLIENT UBUS_Test_221 active
2022-01-10 22:54:42.641 UBUS_CLIENT UBUS_Test_221 active
2022.01.10 22:54:42.642 1 : password Keystore handle for Device (UBUS_Test_221) - No password in file
2022.01.10 22:54:48.052 1 : UBUS (UBUS_Test_221) - login error
2022-01-10 22:54:48.104 UBUS_CLIENT UBUS_Test_221 stopped


lg, Gerhard

xenos1984

Hm... Das wundert mich. Hast du bei allen UBUS_CLIENT mit

set <name> password <password>

das Passwort gesetzt?

attr IODev muss ich tatsächlich noch auf die Attribut-Liste setzen...

gestein

#26
Ich habe (noch) keine Passwörter vergeben. Sollte also leer sein.

Witzig, dass die Zuordnung der IODevs aber richtig funktioniert...

gestein

Man sollte aber wahrscheinlich den User richtig setzen.
Habe nun überall user=root und password="" gesetzt.

Leider klappt es immer noch nicht.

lg, Gehard

gestein

Im UBUS_clients_ath1 gibt man bei der Definition folgendes an:
network.info clients device=ath1

Was genau soll man da bei "device=" eintragen, wenn man mehrere hat?

lg, Gerhard

xenos1984

Zitat von: gestein am 10 Januar 2022, 23:27:42
Man sollte aber wahrscheinlich den User richtig setzen.
Habe nun überall user=root und password="" gesetzt.

Leider klappt es immer noch nicht.
In dem Fall wäre es gut, in dem UBUS_CLIENT verbose auf 5 zu setzen und mal zu schauen, was im Log als Antwort beim Login-Versuch kommt.

Zitat von: gestein am 10 Januar 2022, 23:34:44
Im UBUS_clients_ath1 gibt man bei der Definition folgendes an:
network.info clients device=ath1

Was genau soll man da bei "device=" eintragen, wenn man mehrere hat?
Das kommt darauf an, wie die Ports beim Devolo heißen. Ich kenne das Gerät nicht, aber ich würde vermuten, ath2, ath3...