FHEM Forum

FHEM - Hausautomations-Systeme => Sonstige Systeme => Thema gestartet von: gestein am 14 September 2021, 15:26:32

Titel: Devolo Magic 2 und UBUS?
Beitrag von: gestein am 14 September 2021, 15:26:32
Hallo,

ich habe zwar mittlerweile eine funktionierende Lösung um Informationen von meinen Devolo Magic 2 in fhem zu bekommen.
Am meisten interessiert mich dabei die Tabelle der pro Access Point via WLAN verbundenen Geräte.
Mit puppeteer klappt das schon mal sehr gut.
https://forum.fhem.de/index.php/topic,122659.0.html (https://forum.fhem.de/index.php/topic,122659.0.html)

In diesem Thread habe ich es via HTTPMOD versucht.
https://forum.fhem.de/index.php/topic,119022.msg1134616.html#msg1134616 (https://forum.fhem.de/index.php/topic,119022.msg1134616.html#msg1134616)

Beta-User hat mich dann auf das neue Modul UBUS gebracht:
https://forum.fhem.de/index.php/topic,122404.msg1169693.html#msg1169693 (https://forum.fhem.de/index.php/topic,122404.msg1169693.html#msg1169693)

Daher habe ich die letzte Version in mein fhem-System gespielt und dann ein Testdevice angelegt:
defmod UBUS_Test UBUS http://192.168.0.225/ubus
attr UBUS_Test room 0_Testing
attr UBUS_Test username root
attr UBUS_Test verbose 5


Passwort ist bei mir in der Standard-Einstellung leer.
Was müsste ich denn sonst noch einstellen?

Als Rückmeldung im log-File bekomme ich natürlich Fehlermeldungen, da die JSON-Abfrage nicht passt.
2021.09.14 15:24:41.638 5: UBUS (UBUS_Test) - sent: {"params":[null,"system","info",{}],"jsonrpc":"2.0","method":"call","id":1}
2021.09.14 15:24:41.789 5: UBUS (UBUS_Test) - received: {"jsonrpc":"2.0","id":1,"error":{"code":-32700,"message":"Parse error"}}
2021.09.14 15:24:41.789 1: PERL WARNING: Use of uninitialized value $error in numeric eq (==) at ./FHEM/72_UBUS.pm line 591


Der JSON-String müsste wohl wie hier aufgebaut sein:
https://forum.fhem.de/index.php/topic,122659.msg1172796.html#msg1172796 (https://forum.fhem.de/index.php/topic,122659.msg1172796.html#msg1172796)

Danke im Voraus
liebe Grüße
Gerhard
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: xenos1984 am 14 September 2021, 16:47:04
Das sieht ungewöhnlich aus. Die null sollte eigentlich eine Session-ID sein, die beim Login zurückgegeben wird. Hast du eine Zeile, die "session" und "login" enthält? (Bzw. eine mit "sent" und eine "received"?) Die Antwort wäre interessant, weil da eben die Session-ID sein sollte, aber scheinbar findet mein Modul die nicht.

Falls nicht, kann man einen erneuten Login durch deaktivieren und aktivieren provozieren:


set UBUS_Test disable
set UBUS_Test enable
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: gestein am 14 September 2021, 17:56:47
Ich habe nun noch folgendes eingetragen:
defmod UBUS_Test UBUS http://192.168.0.225/ubus
attr UBUS_Test disable 0
attr UBUS_Test interval_clients 20
attr UBUS_Test room 0_Testing
attr UBUS_Test username root
attr UBUS_Test verbose 5


Und bekomme damit (nach dem disable/enable) die folgenden Log-Einträge:
2021.09.14 17:47:52.352 5: UBUS (UBUS_Test) - sent: {"id":1,"method":"call","params":[null,"router.network","clients",{}],"jsonrpc":"2.0"}
2021.09.14 17:47:52.356 5: UBUS (UBUS_Test) - sent: {"method":"call","id":2,"params":[null,"system","info",{}],"jsonrpc":"2.0"}
2021.09.14 17:47:52.360 5: UBUS (UBUS_Test) - sent: {"params":[null,"network.device","status",{}],"method":"call","id":3,"jsonrpc":"2.0"}
2021.09.14 17:47:52.364 5: UBUS (UBUS_Test) - sent: {"id":4,"method":"call","params":[null,"network.interface","dump",{}],"jsonrpc":"2.0"}
2021.09.14 17:47:52.368 5: UBUS (UBUS_Test) - sent: {"params":[null,"router.wireless","radios",{}],"method":"call","id":5,"jsonrpc":"2.0"}
2021.09.14 17:47:52.371 5: UBUS (UBUS_Test) - sent: {"method":"call","id":6,"params":[null,"asterisk","status",{}],"jsonrpc":"2.0"}
2021.09.14 17:47:53.725 5: UBUS (UBUS_Test) - received: {"jsonrpc":"2.0","id":6,"error":{"code":-32700,"message":"Parse error"}}
2021.09.14 17:47:53.729 5: UBUS (UBUS_Test) - received: {"jsonrpc":"2.0","id":4,"error":{"code":-32700,"message":"Parse error"}}
2021.09.14 17:47:53.738 5: UBUS (UBUS_Test) - received: {"jsonrpc":"2.0","id":3,"error":{"code":-32700,"message":"Parse error"}}
2021.09.14 17:47:53.742 5: UBUS (UBUS_Test) - received: {"jsonrpc":"2.0","id":1,"error":{"code":-32700,"message":"Parse error"}}
2021.09.14 17:47:53.745 5: UBUS (UBUS_Test) - received: {"jsonrpc":"2.0","id":2,"error":{"code":-32700,"message":"Parse error"}}
2021.09.14 17:47:53.749 5: UBUS (UBUS_Test) - received: {"jsonrpc":"2.0","id":5,"error":{"code":-32700,"message":"Parse error"}}
2021.09.14 17:48:02.377 5: UBUS (UBUS_Test) - sent: {"method":"call","id":7,"params":[null,"asterisk","status",{}],"jsonrpc":"2.0"}
2021.09.14 17:48:02.415 5: UBUS (UBUS_Test) - received: {"jsonrpc":"2.0","id":7,"error":{"code":-32700,"message":"Parse error"}}
2021.09.14 17:48:12.359 5: UBUS (UBUS_Test) - sent: {"params":[null,"router.network","clients",{}],"method":"call","id":8,"jsonrpc":"2.0"}
2021.09.14 17:48:12.374 5: UBUS (UBUS_Test) - sent: {"jsonrpc":"2.0","params":[null,"router.wireless","radios",{}],"id":9,"method":"call"}
2021.09.14 17:48:12.393 5: UBUS (UBUS_Test) - sent: {"id":10,"method":"call","params":[null,"asterisk","status",{}],"jsonrpc":"2.0"}
2021.09.14 17:48:12.436 5: UBUS (UBUS_Test) - received: {"jsonrpc":"2.0","id":9,"error":{"code":-32700,"message":"Parse error"}}
2021.09.14 17:48:12.442 5: UBUS (UBUS_Test) - received: {"jsonrpc":"2.0","id":8,"error":{"code":-32700,"message":"Parse error"}}
2021.09.14 17:48:12.451 5: UBUS (UBUS_Test) - received: {"jsonrpc":"2.0","id":10,"error":{"code":-32700,"message":"Parse error"}}
2021.09.14 17:48:22.401 5: UBUS (UBUS_Test) - sent: {"params":[null,"asterisk","status",{}],"id":11,"method":"call","jsonrpc":"2.0"}
2021.09.14 17:48:22.435 5: UBUS (UBUS_Test) - received: {"jsonrpc":"2.0","id":11,"error":{"code":-32700,"message":"Parse error"}}
2021.09.14 17:48:32.450 5: UBUS (UBUS_Test) - sent: {"jsonrpc":"2.0","method":"call","id":12,"params":[null,"router.network","clients",{}]}
2021.09.14 17:48:32.454 5: UBUS (UBUS_Test) - sent: {"jsonrpc":"2.0","params":[null,"router.wireless","radios",{}],"method":"call","id":13}
2021.09.14 17:48:32.458 5: UBUS (UBUS_Test) - sent: {"jsonrpc":"2.0","id":14,"method":"call","params":[null,"asterisk","status",{}]}
2021.09.14 17:48:32.592 5: UBUS (UBUS_Test) - received: {"jsonrpc":"2.0","id":13,"error":{"code":-32700,"message":"Parse error"}}
2021.09.14 17:48:32.600 5: UBUS (UBUS_Test) - received: {"jsonrpc":"2.0","id":14,"error":{"code":-32700,"message":"Parse error"}}
2021.09.14 17:48:32.609 5: UBUS (UBUS_Test) - received: {"jsonrpc":"2.0","id":12,"error":{"code":-32700,"message":"Parse error"}}
2021.09.14 17:48:44.358 5: UBUS (UBUS_Test) - sent: {"jsonrpc":"2.0","params":[null,"asterisk","status",{}],"id":15,"method":"call"}
2021.09.14 17:48:45.372 5: UBUS (UBUS_Test) - received: {"jsonrpc":"2.0","id":15,"error":{"code":-32700,"message":"Parse error"}}
2021.09.14 17:48:52.384 5: UBUS (UBUS_Test) - sent: {"jsonrpc":"2.0","method":"call","id":16,"params":[null,"system","info",{}]}
2021.09.14 17:48:52.389 5: UBUS (UBUS_Test) - sent: {"id":17,"method":"call","params":[null,"network.device","status",{}],"jsonrpc":"2.0"}
2021.09.14 17:48:52.393 5: UBUS (UBUS_Test) - sent: {"method":"call","id":18,"params":[null,"network.interface","dump",{}],"jsonrpc":"2.0"}
2021.09.14 17:48:52.423 5: UBUS (UBUS_Test) - received: {"jsonrpc":"2.0","id":16,"error":{"code":-32700,"message":"Parse error"}}
2021.09.14 17:48:52.446 5: UBUS (UBUS_Test) - received: {"jsonrpc":"2.0","id":18,"error":{"code":-32700,"message":"Parse error"}}
2021.09.14 17:48:52.453 5: UBUS (UBUS_Test) - received: {"jsonrpc":"2.0","id":17,"error":{"code":-32700,"message":"Parse error"}}
2021.09.14 17:48:52.455 5: UBUS (UBUS_Test) - sent: {"jsonrpc":"2.0","id":19,"method":"call","params":[null,"router.network","clients",{}]}
2021.09.14 17:48:52.460 5: UBUS (UBUS_Test) - sent: {"jsonrpc":"2.0","params":[null,"router.wireless","radios",{}],"method":"call","id":20}
2021.09.14 17:48:52.524 5: UBUS (UBUS_Test) - received: {"jsonrpc":"2.0","id":20,"error":{"code":-32700,"message":"Parse error"}}
2021.09.14 17:48:52.527 5: UBUS (UBUS_Test) - received: {"jsonrpc":"2.0","id":19,"error":{"code":-32700,"message":"Parse error"}}
2021.09.14 17:48:54.391 5: UBUS (UBUS_Test) - sent: {"jsonrpc":"2.0","params":[null,"asterisk","status",{}],"id":21,"method":"call"}
2021.09.14 17:48:54.416 5: UBUS (UBUS_Test) - received: {"jsonrpc":"2.0","id":21,"error":{"code":-32700,"message":"Parse error"}}


Aber kein login.
Vielleicht liegt es daran, dass das Passwort leer ist?

lg, Gerhard
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: xenos1984 am 14 September 2021, 18:20:39
Hm... An und für sich sollte bei einem leeren / nicht angegebenen Passwort automatisch eine leere Zeichenkette als Standardwert übergeben werden. Der Login sollte aber trotzdem stattfinden. Den Ablauf bei einer HTTP / POST Verbindung hatte ich allerdings nicht testen können, weil mein Router stattdessen Websocket benutzt. Ich hänge mal eine neue Version an, die jeden Login-Versuch protokolliert - damit solltest du im Log etwas sehen.
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: gestein am 14 September 2021, 21:11:56
Das klärt das Ganze auf.
Nach disable/enable kommt im log:
2021.09.14 20:49:54.316 4: password Keystore handle for Device (UBUS_Test) - Read password from file
2021.09.14 20:49:54.316 1: password Keystore handle for Device (UBUS_Test) - No password in file
2021.09.14 20:49:54.317 5: UBUS (UBUS_Test) - login of user user
2021.09.14 20:49:54.317 5: UBUS (UBUS_Test) - sent: {"params":["00000000000000000000000000000000","session","login",{"password":"","username":"user"}],"method":"call","id":0,"jsonrpc":"2.0"}
2021.09.14 20:49:54.364 5: UBUS (UBUS_Test) - received: {"jsonrpc":"2.0","id":0,"result":[6]}
2021.09.14 20:49:54.364 1: UBUS (UBUS_Test) - login error


Ich habe mal versucht mir die Kommunikation zwischen den Devolos und einem Browser anzusehen (Chrome mit Entwicklertools).
Da hat der JSON-Aufruf schon eine id.
Woher die kommt, weiß ich nicht.

Da steht z.B.:
{"jsonrpc":"2.0","method":"call","id":"87ab9fff-9857-4dd2-808b-104306ccb74d","params":["00000000000000000000000000000000","session","login",{"username":"root","password":"","timeout":900}]}HTTP/1.1 200 OK
Connection: Keep-Alive
Transfer-Encoding: chunked
Keep-Alive: timeout=20
Content-Type: application/json

{"jsonrpc":"2.0","id":"87ab9fff-9857-4dd2-808b-104306ccb74d","result":[0,{"ubus_rpc_session":"e77de02368674acd426142230109abce","timeout":900,"expires":899,"acls":{"access-group":{"accounts":["write"],"acd":["read","write"],"admin":["read","write"],"avahi":["read","write"],"backup":["read","write"],"buzzer":["read"],"configsync":["read","write"],"core":["read"],"cron":["read","write"],"customization":["read"],"delos":["read"],"diagnostics":["read"],"factorydefault":["read","write"],"firewall":["read","write"],"fwuagent":["read","write"],"ghn":["read","write"],"homeplug":["read","write"],"hostnames":["read","write"],"hyd":["read","write"],"lbd":["read","write"],"leds":["read","write"],"mdnsresponder":["read","write"],"network":["read","write"],"parental_control":["read","write"],"powerline":["read","write"],"radius":["read","write"],"repacd":["read","write"],"repeater":["read","write"],"snmp":["read","write"],"software":["read","write"],"startup":["read","write"],"station_quota":["read","write"],"status":["read"],"system":["read","write"],"systeminformation":["read"],"tr069":["read","write"],"unauthenticated":["read"],"upgrade":["read","write"],"upnpd":["read","write"],"users":["read","write"],"vlan":["read","write"],"wifi_schedule":["read","write"],"wifitoggle":["read"],"wsplcd":["read","write"]},"base-cgi":{"backup":["read"],"upload":["write"]},"ubus":{"ath10k.peerstat":["get"],"buzzer":["*"],"fwuagent":["force_poll","get_deployment","accept_deployment"],"iwinfo":["devices","info","assoclist","phyname","scan","freqlist"],"luci2.network":["conntrack_count","dhcp_leases","dhcp6_leases","arp_table","routes","routes6","ping","ping6","traceroute","traceroute6","nslookup","switch_list","switch_info","switch_status","device_list"],"luci2.network.bwmon":["devices","statistics"],"luci2.opkg":["list","list_installed","find","config_get","install","remove","update","config_set"],"luci2.system":["diskfree","syslog","dmesg","process_list","init_list","init_action","sshkeys_get","sshkeys_set","password_set","rclocal_get","rclocal_set","crontab_get","crontab_set","led_list","usb_list"],"luci2.ui":["*"],"network":["get_proto_handlers"],"network.device":["status"],"network.ghntool":["ghninfo","get_settings","version","pushbtn","set_npw","factory_reset","set_settings"],"network.info":["*"],"network.interface":["status","dump"],"network.interface.*":["status"],"network.interface.wwan":["up","down"],"network.plctool":["fw_version","identity","membership","avlninfo","get_pibsettings","defaults","pushbtn","set_nmk","set_npw","add_secid","set_pibsettings"],"network.powerline":["get_compat_mode","get_user_notches","set_compat_mode","set_user_notches"],"network.swconfig":["list","status","info"],"network.wifi":["*"],"network.wireless":["status"],"network.wps":["*"],"repeater":["*"],"service":["list"],"session":["access","destroy","get","get_timeout","login"],"station_quota":["status"],"system":["info","board"],"system.accounts":["password_set"],"system.date":["get"],"system.info":["syslog","image","timezones"],"system.init":["list"],"system.management":["reboot","version"],"system.management.backup":["get","list","clean","set","restore","restore_state"],"system.management.factorydefault":["test","start"],"system.management.upgrade":["test","start","clean"],"system.thermal":["get"],"tr069":["notify","inform","command"],"tr069.cacert":["get_properties","set"],"tr069.cert":["get_properties","set"],"uci":["get","*"],"wifitoggle":["remaining","toggle"]},"uci":{"acd":["read","write"],"avahi":["read","write"],"configsync":["read","write"],"customization":["read"],"delos":["read"],"dhcp":["read","write"],"dropbear":["read","write"],"easycwmp":["read","write"],"firewall":["read","write"],"fwuagent":["read","write"],"ghn":["read","write"],"hyd":["read","write"],"lbd":["read","write"],"luci":["read","write"],"mDNSResponder":["read","write"],"network":["read","write"],"parental_control":["read","write"],"plc":["read","write"],"radius":["read","write"],"repacd":["read","write"],"repeater":["read","write"],"rpcd":["read","write"],"snmpd":["read","write"],"station_quota":["read","write"],"system":["read","write"],"tr069_stun":["read","write"],"tr069_upnp":["read","write"],"tr069_xmpp":["read","write"],"upgrade":["read","write"],"upnpd":["read","write"],"vlan":["read","write"],"wifi_schedule":["read","write"],"wireless":["read","write"],"wsplcd":["read","write"]}},"data":{"username":"root"}}]}GET /11.dede90d56040bff348a6.js HTTP/1.1
Host: 192.168.0.225
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36
Accept: */*
Referer: http://192.168.0.225/
Accept-Encoding: gzip, deflate
Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7
If-None-Match: "12e-3652b-5f6b5091"
If-Modified-Since: Wed, 23 Sep 2020 13:41:37 GMT


Hilft das was?

lg, Gerhard
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: xenos1984 am 14 September 2021, 21:17:20
Oh ja, das tut es - da war ein Fehler in meinem Code. Das Attribut "username" hast du korrekt gesetzt - mein Code hat aber fälschlicherweise nach "user" gesucht... Ich habe es korrigiert, die verbesserte Version ist angehängt. Damit sollte der Login funktionieren und es sollten zumindest Daten kommen.
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: gestein am 14 September 2021, 21:21:57
Jetzt kommt das:
2021.09.14 21:19:29.476 5: UBUS (UBUS_Test) - login of user root
2021.09.14 21:19:29.476 5: UBUS (UBUS_Test) - sent: {"jsonrpc":"2.0","method":"call","id":0,"params":["00000000000000000000000000000000","session","login",{"username":"root","password":""}]}
2021.09.14 21:19:37.998 1: UBUS (UBUS_Test) - error performing request: write to http://192.168.0.225:80 timed out


Bei mir steht im Request noch ein Parameter beim login - nämlich Timeout "900".
Liegt das vielleicht daran?

lg, Gerhard
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: gestein am 14 September 2021, 21:30:38
habe jetzt mal in der Funktion Login folgendes ergänzt:
        my $param = {
                'username' => AttrVal($name, 'username', 'user'),
                'password' => $password,
                'timeout' => "900"
        };


Und siehe da, das log-File geht über vor lauter weiteren Einträgen.
Zumindest bin ich nun mal drinnen.
Alles weitere muss ich mir nun in Ruhe anschauen.
Da wurden 100 Readings angelegt.

Danke schon mal!
lg, Gerhard
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: xenos1984 am 14 September 2021, 21:41:40
Ich habe die Datei jetzt auch so angepasst, dass man den Timeout über ein Attribut "timeout" ändern kann:


attr UBUS_Test timeout 900


Mit deiner Änderung geht das natürlich auch.

Mich wundert es trotzdem etwas, weil der Timeout eigentlich angibt, wie lange die Session gültig bleibt, wenn keine Abrufe erfolgen. Standard sind wohl 300 Sekunden, wenn man nichts angibt, dein Router benutzt über JavaScript 900 Sekunden. Der "write to http://192.168.0.225:80 timed out" sollte eigentlich etwas anderes sein, da hat der Router nicht innerhalb des von FHEM erwarteten Zeitfensters geantwortet... Vielleicht war es ein temporäres Problem. Oder der Router antwortet tatsächlich nur, wenn man ihm einen Timeout setzt.

Sag Bescheid, wenn du Hilfe bei den Readings brauchst oder etwas auslesen möchtest, dass du nicht in den Readings findest. Die scheinen sich zwischen verschiedenen Geräten (und Firmware-Versionen) zu unterscheiden. Ich habe sie nach meinem Router angelegt, aber deine Router-Antwort (die mit "ubus_rpc_session":"..." aus dem Chrome Log) sieht etwas anders aus.
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: gestein am 14 September 2021, 21:43:56
Danke.
EDIT: Aber da ist kein Anhang dabei ;-)

Ich hätte eh schon ein paar Fragen:

Was stellt man eigentlich mit den "Intervall_.*" ein?

Warum schickt das Modul immer wieder solche Abfragen?
2021.09.14 21:36:51.678 5: UBUS (UBUS_Test) - sent: {"jsonrpc":"2.0","params":["2bb4c69027bbde8910d7f7cedf28aa11","router.wireless","radios",{}],"id":40,"method":"call"}
2021.09.14 21:36:51.717 5: UBUS (UBUS_Test) - received: {"jsonrpc":"2.0","id":40,"error":{"code":-32000,"message":"Object not found"}}
2021.09.14 21:36:53.747 5: UBUS (UBUS_Test) - sent: {"jsonrpc":"2.0","method":"call","id":41,"params":["2bb4c69027bbde8910d7f7cedf28aa11","voice.asterisk","status",{}]}
2021.09.14 21:36:53.792 5: UBUS (UBUS_Test) - received: {"jsonrpc":"2.0","id":41,"error":{"code":-32000,"message":"Object not found"}}

Habe ich da was falsch eingestellt?

Wie kann ich z.B. die folgende Abfragen an den Devolo schicken?
[{"jsonrpc":"2.0","method":"call","id":"78a2761d-6790-4cdd-97eb-7dc85800426f","params":["b82870f7cfa5bbac3238390d941904d8","network.info","clients",{"device":"ath1"}]},{"jsonrpc":"2.0","method":"call","id":"58aed52d-af44-47bb-9725-dbe427b682c9","params":["b82870f7cfa5bbac3238390d941904d8","network.info","clients",{"device":"ath0"}]}]HTTP/1.1 200 OK

{"jsonrpc":"2.0","method":"call","id":"19b14120-0ae6-4c64-86ff-ba691ad384b2","params":["b82870f7cfa5bbac3238390d941904d8","network.info","unconnected_clients",{}]}HTTP/1.1 200 OK
Connection: Keep-Alive
Transfer-Encoding: chunked
Keep-Alive: timeout=20
Content-Type: application/json


Danke, lg, Gerhard

p.s.: Leider wird die Hilfe unter "Device specific help" nicht angezeigt.
Da steht nur "UBUS" in Fett.
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: gestein am 14 September 2021, 21:52:30
Danke für Deine tolle Arbeit!

Anscheinend muss man nur den Parameter "Timeout" angeben.
Der Default-Wert tut es auch.

lg, Gerhard
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: xenos1984 am 14 September 2021, 22:01:14
Zitat von: gestein am 14 September 2021, 21:43:56
Was stellt man eigentlich mit den "Intervall_.*" ein?
Die Häufigkeit, mit der bestimmte Abfragen wiederholt werden, z.B. wird "voice.asterisk" alle 10 Sekunden ausgeführt.

Zitat
Warum schickt das Modul immer wieder solche Abfragen?
...
Habe ich da was falsch eingestellt?
Nein, hast du nicht. Wie gesagt:
Zitat von: xenos1984 am 14 September 2021, 21:41:40
Die scheinen sich zwischen verschiedenen Geräten (und Firmware-Versionen) zu unterscheiden. Ich habe sie nach meinem Router angelegt, aber deine Router-Antwort (die mit "ubus_rpc_session":"..." aus dem Chrome Log) sieht etwas anders aus.
Bei meinem Router liefern diese Abfragen den Status des Wifi und der Telefonleitung. Dein Router kennt die Befehle aber nicht, und da muss ich das Modul erst anpassen (aber mit den von dir geposteten Daten sollte ich das hinbekommen).

Zitat von: gestein am 14 September 2021, 21:43:56
Wie kann ich z.B. die folgende Abfragen an den Devolo schicken?
Indem ich sie implementiere ;) Die zweite kannst du schon mal testen, weil sie ohne Parameter auskommt, indem du aufrufst:


set UBUS_Test rpc network.info unconnected_clients


Im Log solltest du dann die Daten sehen, auswerten und in Readings eintragen kann mein Modul sie aber noch nicht. Die andere wird (noch) nicht unterstützt - da muss ich mir erst einmal das Format ansehen und sie dann einbauen, und mir eine Möglichkeit überlegen, es konfigurierbar zu machen (vielleicht so ähnlich wie beim MQTT2_DEVICE Modul, bei dem man Topics und Readings selbst angibt).

Zitat
p.s.: Leider wird die Hilfe unter "Device specific help" nicht angezeigt.
Da steht nur "UBUS" in Fett.
Ich vermute, die Hilfe wird erst kompiliert, wenn man commandref_join.pl im FHEM-Verzeichnis ausführt (bei einem regulären Update passiert das automatisch, beim manuellen Einfügen eines Moduls nicht).
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: gestein am 14 September 2021, 22:37:33
Danke sehr.

Beim Aufruf von "set UBUS_Test rpc network.info unconnected_clients" kommt leider folgendes:
2021.09.14 22:05:40.457 5: UBUS (UBUS_Test) - sent: {"params":["00000000000000000000000000000000","network.info","unconnected_clients",{}],"id":1,"method":"call","jsonrpc":"2.0"}
2021.09.14 22:05:41.105 5: UBUS (UBUS_Test) - received: {"jsonrpc":"2.0","id":1,"error":{"code":-32002,"message":"Access denied"}}


Kann es sein, dass das Problem an dem "000000..." liegt?
Im Browser steht dort eine Zahl.

Hilft es Dir, wenn ich Dir die gesamte Kommunikation aus Chrome/Entwicklertools schicke?

lg, Gerhard
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: gestein am 14 September 2021, 23:07:06
Das Modul loggt sich auch sehr oft ein:
2021.09.14 22:50:00.420 5: UBUS (UBUS_Test) - login of user root
2021.09.14 22:50:04.526 5: UBUS (UBUS_Test) - login of user root
2021.09.14 22:50:06.848 5: UBUS (UBUS_Test) - login of user root
2021.09.14 22:50:10.797 5: UBUS (UBUS_Test) - login of user root
2021.09.14 22:50:22.686 5: UBUS (UBUS_Test) - login of user root
2021.09.14 22:50:24.568 5: UBUS (UBUS_Test) - login of user root
2021.09.14 22:50:36.198 5: UBUS (UBUS_Test) - login of user root
2021.09.14 22:50:38.760 5: UBUS (UBUS_Test) - login of user root
2021.09.14 22:50:43.892 5: UBUS (UBUS_Test) - login of user root
2021.09.14 22:50:52.117 5: UBUS (UBUS_Test) - login of user root
2021.09.14 22:50:53.855 5: UBUS (UBUS_Test) - login of user root
2021.09.14 22:50:57.601 5: UBUS (UBUS_Test) - login of user root
2021.09.14 22:51:02.471 5: UBUS (UBUS_Test) - login of user root
2021.09.14 22:51:07.153 5: UBUS (UBUS_Test) - login of user root
2021.09.14 22:51:11.595 5: UBUS (UBUS_Test) - login of user root
2021.09.14 22:51:20.050 5: UBUS (UBUS_Test) - login of user root
2021.09.14 22:51:26.338 5: UBUS (UBUS_Test) - login of user root
2021.09.14 22:51:38.980 5: UBUS (UBUS_Test) - login of user root
2021.09.14 22:51:44.670 5: UBUS (UBUS_Test) - login of user root
2021.09.14 22:51:48.867 5: UBUS (UBUS_Test) - login of user root
2021.09.14 22:51:53.829 5: UBUS (UBUS_Test) - login of user root
2021.09.14 22:51:57.468 5: UBUS (UBUS_Test) - login of user root
2021.09.14 22:52:05.685 5: UBUS (UBUS_Test) - login of user root
2021.09.14 22:52:06.699 5: UBUS (UBUS_Test) - login of user root
2021.09.14 22:52:14.862 5: UBUS (UBUS_Test) - login of user root
2021.09.14 22:52:15.744 5: UBUS (UBUS_Test) - login of user root
2021.09.14 22:52:24.225 5: UBUS (UBUS_Test) - login of user root
2021.09.14 22:52:28.993 5: UBUS (UBUS_Test) - login of user root


Der Browser ruft hingegen direkt nach dem login folgendes auf:
params: ["acd0d5f6a198102e30136a3fcee04681", "session", "get_timeout", {}]
Response: {"jsonrpc":"2.0","id":"7b74f830-70a0-443e-9a56-591be88ff436","result":[0,{"ubus_rpc_session":"acd0d5f6a198102e30136a3fcee04681","timeout":900,"expires":899}]}


Und dann wird aufgerufen:
params: ["7f6b4fbb57faff3569fc1049f9caa98c", "session", "refresh", {}]
Response: {"jsonrpc":"2.0","id":"6a5cfb57-b80c-428e-9cf9-580c80d1e2ec","result":[0]}


lg, Gerhard
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: xenos1984 am 14 September 2021, 23:13:23
Zitat von: gestein am 14 September 2021, 22:37:33
Kann es sein, dass das Problem an dem "000000..." liegt?
Im Browser steht dort eine Zahl.
Ja, das tut es. Die Zahl sollte die Session sein. Ich vermute, dass der Router die Session schließt, wenn innerhalb von <timeout> Sekunden keine gültige Abfrage kommt. Mit list UBUS_test bzw. unter Internals solltest du die Session-ID auch sehen. Ab besten rufst du den set-Befehl kurz nach einem Login auf, so lange die Session noch besteht.

Zitat
Hilft es Dir, wenn ich Dir die gesamte Kommunikation aus Chrome/Entwicklertools schicke?
Ja, das würde es - dann sehe ich, wie die Abfragen und Antworten strukturiert sind. Je nachdem wie groß die Daten sind bzw. ob sensible Daten dabei sind wäre es wohl am besten, sie entweder hier als Datei anzuhängen oder per Mail an mich zu schicken (Adresse kann ich dir per PM schicken).

Die häufigen Logins wundern mich, und auch, dass danach nichts passiert... Man sieht weder den eigentlichen Aufruf, noch die Antwort. Wenn du mir einmal das komplette Log (bzw. alle UBUS-Meldungen daraus) schicken könntest, könnte ich mir ansehen, was unmittelbar davor passiert, und wie dieser Zustand zu Stande kommt.
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: gestein am 14 September 2021, 23:42:05
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
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: xenos1984 am 15 September 2021, 06:24:26
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.
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: gestein am 15 September 2021, 08:58:25
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
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: xenos1984 am 15 September 2021, 19:58:17
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.
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: gestein am 15 September 2021, 21:37:13
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
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: xenos1984 am 09 Januar 2022, 19:31:29
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
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: gestein am 10 Januar 2022, 17:29:59
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
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: xenos1984 am 10 Januar 2022, 19:13:39
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.
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: gestein am 10 Januar 2022, 22:34:44
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
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: gestein am 10 Januar 2022, 23:03:26
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
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: xenos1984 am 10 Januar 2022, 23:10:59
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...
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: gestein am 10 Januar 2022, 23:14:58
Ich habe (noch) keine Passwörter vergeben. Sollte also leer sein.

Witzig, dass die Zuordnung der IODevs aber richtig funktioniert...
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag 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.

lg, Gehard
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag 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?

lg, Gerhard
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: xenos1984 am 11 Januar 2022, 06:22:43
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...
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: gestein am 11 Januar 2022, 11:57:18
Hallo,

ich habe alle Geräte auf verbose=5, aber sehr gesprächig sind sie nicht ;)

Das "UBUS_Test_221" habe ich zuerst auf "disable" und dann auf "enable" gesetzt.
Hier die log-Einträge:
2022.01.11 09:26:05.020 1 : password Keystore handle for Device (UBUS_Test_221) - No password in file
2022.01.11 09:26:08.147 1 : UBUS (UBUS_Test_221) - decode_json error: ':' expected, at character offset 92 (before "},"InterferenceMitig...") at ./FHEM/72_UBUS_CLIENT.pm line 522.

Dann ist die sessionID=0.

Aber auf einmal geht es und die Readings werden upgedatet (nur die Änderungen) - das passt soweit sehr gut.
Nach ca. 8 Minuten hören die log-Einträge aber leider auf, dann kommen keine Einträge mehr.
Wenn ich dann beim "UBUS_Test_221" wieder "disable"/"enable" mache, geht es wieder.

Hier werden die Mac-Adressen als Teil der Readings-Namen verwendet und als Trennzeichen ein "_".
Wäre es möglich kein Trennzeichen zu verwenden, wäre leichter lesbar.

lg, Gerhard

p.s.: Anscheinend muss man ath1 verwenden.
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: xenos1984 am 11 Januar 2022, 12:35:42
Zitat von: gestein am 11 Januar 2022, 11:57:18
ich habe alle Geräte auf verbose=5, aber sehr gesprächig sind sie nicht ;)
Das wundert mich - eigentlich sollte dann sämtliche Kommunikation im Log auftauchen.
Zitat
Aber auf einmal geht es und die Readings werden upgedatet (nur die Änderungen) - das passt soweit sehr gut.
Nach ca. 8 Minuten hören die log-Einträge aber leider auf, dann kommen keine Einträge mehr.
Wenn ich dann beim "UBUS_Test_221" wieder "disable"/"enable" mache, geht es wieder.
Den automatischen Neu-Login bei abgelaufener Session muss ich noch in das physikalische Modul einbauen, damit sollte das behoben werden.
Zitat
Hier werden die Mac-Adressen als Teil der Readings-Namen verwendet und als Trennzeichen ein "_".
Wäre es möglich kein Trennzeichen zu verwenden, wäre leichter lesbar.
Möglich ist alles ;) In der JSON-Antwort kommen offenbar als Key die Mac-Adressen mit Doppelpunkt als Trennzeichen vor. Wenn man keine eigene Auswertungsfunktion benutzt, werden diese Keys mit makeReadingName in gültige Reading-Namen umgewandelt und das ersetzt eben u.a. Doppelpunkt durch Unterstrich. Um andere Namen zu erhalten, musst du in UBUS_CALL das Attribut readings setzen, z.B. auf:

{FHEM::UBUS_CALL::DefaultReadings($RAW =~ s/([a-fA-F0-9]):([a-fA-F0-9]):([a-fA-F0-9]):([a-fA-F0-9]):([a-fA-F0-9]):([a-fA-F0-9])/$1$2$3$4$5$6/r)}
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: gestein am 11 Januar 2022, 13:04:20
Du hast recht. Entschuldige bitte.
Im Webbrowser werden nicht alle log-Einträge angezeigt.
Im log-File per "tail -f ..." natürlich schon. Da sind alle JSON-Daten zu sehen.

Ich habe im UBUS_CALL das Attribut readings wie angegeben gesetzt, aber die Namen werden trotzdem mit "_" dargestellt.

Einen Vorschlag noch:
Könntest Du ein fixes Reading in den UBUS_CALL jedesmal mit updaten (Änderung der ReadingsTime).
So könnte man abfragen, ob die Daten abgefragt werden.
Aber wahrscheinlich wird das obsolet, wenn mal alles klappt.

Danke, lg, Gerhard
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: xenos1984 am 11 Januar 2022, 14:17:27
Zitat von: gestein am 11 Januar 2022, 13:04:20
Ich habe im UBUS_CALL das Attribut readings wie angegeben gesetzt, aber die Namen werden trotzdem mit "_" dargestellt.
Da war noch ein Tippfehler in der Regex:

{FHEM::UBUS_CALL::DefaultReadings($RAW =~ s/([a-fA-F0-9][a-fA-F0-9]):([a-fA-F0-9][a-fA-F0-9]):([a-fA-F0-9][a-fA-F0-9]):([a-fA-F0-9][a-fA-F0-9]):([a-fA-F0-9][a-fA-F0-9]):([a-fA-F0-9][a-fA-F0-9])/$1$2$3$4$5$6/r)}

Zitat
Einen Vorschlag noch:
Könntest Du ein fixes Reading in den UBUS_CALL jedesmal mit updaten (Änderung der ReadingsTime).
So könnte man abfragen, ob die Daten abgefragt werden.
Aber wahrscheinlich wird das obsolet, wenn mal alles klappt.
Baue ich auch noch ein (z.B. den Fehlercode).
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: gestein am 11 Januar 2022, 15:18:25
Ich habe zwar keine Ahnung, was das Regex genau macht, aber nun ändert er die erste Readingsgruppe, alle anderen sind wieder mit "_".
Also so in etwa:
clients_04D6AAA0EA16_disconnected_time
clients_04D6AAA0EA16_radio
clients_04D6AAA0EA16_ssid
clients_04D6AAA0EA16_vendor_description
clients_04D6AAA0EA16_vendor_name
clients_12_9E_F3_02_2F_BA_disconnected_time
clients_12_9E_F3_02_2F_BA_radio
clients_12_9E_F3_02_2F_BA_ssid
clients_12_9E_F3_02_2F_BA_vendor_name
clients_50_14_79_04_27_22_disconnected_time
clients_50_14_79_04_27_22_radio
clients_50_14_79_04_27_22_ssid
clients_50_14_79_04_27_22_vendor_description
clients_50_14_79_04_27_22_vendor_name
clients_68_C6_3A_FA_DE_63_disconnected_time
clients_68_C6_3A_FA_DE_63_radio
clients_68_C6_3A_FA_DE_63_ssid
clients_68_C6_3A_FA_DE_63_vendor_description
clients_68_C6_3A_FA_DE_63_vendor_name


lg, Gerhard
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: xenos1984 am 11 Januar 2022, 16:14:02
Zitat von: gestein am 11 Januar 2022, 15:18:25
Ich habe zwar keine Ahnung, was das Regex genau macht, aber nun ändert er die erste Readingsgruppe, alle anderen sind wieder mit "_".
Ah, da fehlt noch ein g am Ende:

{FHEM::UBUS_CALL::DefaultReadings($RAW =~ s/([a-fA-F0-9][a-fA-F0-9]):([a-fA-F0-9][a-fA-F0-9]):([a-fA-F0-9][a-fA-F0-9]):([a-fA-F0-9][a-fA-F0-9]):([a-fA-F0-9][a-fA-F0-9]):([a-fA-F0-9][a-fA-F0-9])/$1$2$3$4$5$6/rg)}
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: gestein am 11 Januar 2022, 16:38:32
Passt. Danke!
Dann freue ich mich auf die nächste Version  ;)
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: gestein am 01 Februar 2022, 19:11:25
Hallo,

ich habe mir heute die neue Version runtergeladen und installiert.
https://forum.fhem.de/index.php/topic,122404.msg1204498.html#msg1204498 (https://forum.fhem.de/index.php/topic,122404.msg1204498.html#msg1204498)
Nach einem Restart konnte sich der Client nicht mehr verbinden.

Heute Abend habe ich beim Client wieder "disable/enable" gesetzt und dann ging es wieder.
Von alleine ist es leider nicht gestartet.
Ich konnte auch erst am Abend "verbose 5" einstellen.
Die log-Einträge schicke ich Dir wieder per pm.

Nach kurzer Zeit kam dann ein "unexpected session" und der Client ging auf "disconnected".
Von alleine kommt er auch nicht mehr raus.

lg, Gerhard
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: xenos1984 am 01 Februar 2022, 19:50:54
Hallo Gerhard,

das sieht ungewöhnlich aus...

Also, die ersten Einträge (bis 13:43) sprechen von einem Timeout. Da scheint irgendwie die Verbindung zum Gerät nicht innerhalb der notwendigen Zeit zu antworten. Davon bekommt mein Modul aber nur das Symptom mit und kann da selbst nichts machen, da dürfte auch das Update keinen Einfluss haben. War das auch schon mit der alten Version der Fall?

Interessanter sind die anderen Einträge...

Auf "list" antwortet der Devolo scheinbar u.a. mit einem Eintrag {"unknown"} - das ist kein gültiges JSON, und da beschwert sich decode_json zu Recht. Gültige Einträge haben entweder die Form ["unknown"] (Array) oder {"key":"value"} (Objekt). Das, was der Devolo da antwortet, kann decode_json nicht verarbeiten.

Außerdem mag der Devolo offenbar das Überprüfen, ob die aktuelle Session noch gültig ist, ebenfalls nicht. Da kommt ein "Access denied" zurück und keine Session-Nummer. Und ohne die funktionieren auch die weiteren Abfragen nicht mehr.

Von den genannten Punkten kann ich versuchen, den letzten dadurch zu beheben, dass ich das regelmäßige Prüfen der Session abschaltbar mache. Dann müsste man aber anders erkennen, falls die Session abgelaufen sein sollte. Das mit dem Verbinden nach Neustart sehe ich mir auch noch mal an, das könnte aber ein Nebeneffekt nach dem Aktualisieren sein. (Bei mir läuft das Modul sofort an.)

Bei ungültigem JSON weiß ich mir leider auch nicht zu helfen, weil hier das Gerät sich nicht an den Standard hält und nicht das schickt, was der Standard verspricht...
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: gestein am 02 Februar 2022, 08:54:53
Hallo,

Danke für die Infos. Das muss ich mir in Ruhe anschauen.

Wegen dem Restart nach ,,disconnect" habe ich mir mal ein notify gemacht:
defmod n_UBUS notify UBUS_unconnected_clients:disconnected {
my $IODev=InternalVal("$NAME","IODev","");
fhem("set ".$IODev->{NAME}." disable;; sleep 4;; set ".$IODev->{NAME}." enable");
}


Lg, Gerhard
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: xenos1984 am 08 März 2022, 09:17:36
Ich habe noch einen Workaround für das ungültige JSON eingebaut - kannst du noch mal die Version im Anhang testen? Damit sollte der UBUS_CLIENT als Readings die unterstützten Funktionsaufrufe anzeigen.
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: gestein am 08 März 2022, 11:06:04
Cool, das probiere ich heute Abend gleich mal.
lg, Gerhard
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: gestein am 21 März 2022, 16:51:39
Hallo,

leider hatte ich ziemlich viel um die Ohren in letzter Zeit, daher kann ich mich jetzt erst wieder melden.^

Danke für die neue Version.
Die Funktionsaufrufe erscheinen nun im UBUS_CLIENT.

Leider gibt das UBUS_CALL-Device für die Wifi-Verbindungen nach ein paar Mal verbinden auf und bekommt dann die Antwort:
2022.03.21 16:18:00.068 5 : UBUS (devolo_697_GD) - sent: {"jsonrpc":"2.0","params":["28acb7fa0eb8d8a27da99079c1bb5945","network.info","clients",{"device":"ath1"}],"method":"call","id":"devolo_697_GD_ath:call:12"}
2022-03-21 16:18:00.121 UBUS_CALL devolo_697_GD_ath updating
2022.03.21 16:18:01.266 5 : UBUS (devolo_697_GD) - received: {"jsonrpc":"2.0","id":"devolo_697_GD_ath:call:12","error":{"code":-32002,"message":"Access denied"}}
2022.03.21 16:18:01.267 5 : devolo_697_GD: dispatch {"jsonrpc":"2.0","id":"devolo_697_GD_ath:call:12","error":{"code":-32002,"message":"Access denied"}}


Es wird aber nirgendwo ein Status auf "Fehler" oder error-Reading gesetzt.
Damit kann man auf den Fehler auch niicht reagieren.

Wenn man dann wieder disabel/enable beim UBUS_CLIENT macht, dann geht es wieder ein paar Mal.

Soll ich Dir ein log als pm schicken?

Danke, lg, Gerhard

Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: xenos1984 am 21 März 2022, 18:22:45
Hier eine geänderte UBUS_CALL Version, die im Fehlerfall das Reading state auf "Error -32002: Access denied" setzen sollte.
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: gestein am 22 März 2022, 17:36:43
Hallo,

vielen Dank.
Nun bin ich mal beim Testen ;-)
Das Reading state wird aber nicht nur auf "Error -32002: Access denied" gesetzt, sondern auch auf "disconnect".
Wobei ich noch nicht rausgefunden habe, wann was kommt.

Eine Bitte noch:
wäre es möglich im Device UBUS_CLIENT und/oder im UBUS_CALL ein Reading mit der IP-Addresse zu setzen?
Ansonsten muss man sich die umständlich aus der Def oder dem Internal url des UBUS_CALL extrahieren.

Danke, lg, Gerhard
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: xenos1984 am 24 März 2022, 09:25:08
Zitat von: gestein am 22 März 2022, 17:36:43
Das Reading state wird aber nicht nur auf "Error -32002: Access denied" gesetzt, sondern auch auf "disconnect".
Wobei ich noch nicht rausgefunden habe, wann was kommt.
"Error..." sollte dann kommen, wenn eine Antwort mit "error":{...} empfangen wurde. "disconnected" kommt, wenn das UBUS_CLIENT Gerät einen Verbindungsabbruch feststellt (keine aktive Session mehr vorhanden oder session ID = 0).

Zitat
Eine Bitte noch:
wäre es möglich im Device UBUS_CLIENT und/oder im UBUS_CALL ein Reading mit der IP-Addresse zu setzen?
Ansonsten muss man sich die umständlich aus der Def oder dem Internal url des UBUS_CALL extrahieren.
Nicht so ohne weiteres. Das UBUS_CALL Modul hat mit der ganzen Kommunikation mit dem physikalischen Gerät gar nichts zu tun, kennt also weder URL noch IP. Das UBUS_CLIENT Modul übergibt die Verbindungsparameter, die in der DEF angegeben sind, auch nur so wie sie sind an den eigentlichen Kommunikations-Layer (mittels DevIo oder HttpUtils) und bekommt davon auch nichts weiter mit, kennt also i.A. die IP auch nicht.

Falls dein Router ein Reading mit der IP liefert, könnte das helfen. Meiner tut das z.B. über network.interface dump.
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: gestein am 24 März 2022, 10:05:26
Hallo,

verstehe. Danke.

Ich habe mir nun mit einem userreading IP geholfen.
So oft ändert sich die IP-Adresse des Devolo nicht ;-)

Momentan läuft das Ganze einigermaßen.
Die Verbindungsabbrüche sind halt nervig.
Aber mit einem notify auf das "disconnect" bzw. den "error..." kann ich ganz gut leben.
Zu mehr Debuggen fehlt mir momentan einfach die Zeit.

Danke!
lg, Gerhard
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: gestein am 28 März 2022, 13:51:27
Hallo,

Mit dem folgenden Device bekommt man die richtige Liste der per WLAN verbundenen Geräte:
defmod devolo_745_WZ_5G_clients UBUS_CALL network.info clients device=ath0
attr devolo_745_WZ_5G_clients IODev devolo_745_WZ
attr devolo_745_WZ_5G_clients event-on-change-reading .*
attr devolo_745_WZ_5G_clients group UBUS
attr devolo_745_WZ_5G_clients interval 60


Mit dem Parameter ,,device=ath0" kann man die Schnittstelle für 2,4GHz und mit ,,device=ath1" die für 5GHz abfragen.

Um alle Geräte zu bekommen, müsste ich 2 Devices anlegen. Stimmt das?
Oder könnte man mehrere Funktionsaufrufe in einem Device definieren?
Das Auswerten wird sonst ganz schön aufwändig.

Danke, lg, Gerhard
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: xenos1984 am 28 März 2022, 18:08:12
Du kannst eine kommagetrennte Liste angeben, damit der Funktionsaufruf mal mit dem einen, mal mit dem anderen Wert erfolgt:


defmod devolo_745_WZ_clients UBUS_CALL network.info clients device=ath0,ath1


Damit die Readings unterscheidbar sind, kannst du eine eigene Auswertefunktion angeben, die den Inhalt des Parameters berücksichtigt:


attr devolo_745_WZ_clients readings {\
  my $p = $PARAMS{device};;\
  return FHEM::UBUS_CALL::DefaultReadings($RAW, $p . '_');;\
}


Dann sollten da Readings wie ath0_client_0_xxx o.ä. auftauchen.
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: gestein am 28 März 2022, 19:19:18
Hallo und danke für die rasche Antwort.

Das klappt ja schon mal. Darauf wäre ich nicht gekommen. Toll.

Der einzige Wermutstropfen ist, dass nun nur jeweils ein Client mit ath1 und einer mit ath0 angelegt wird.
Es müssten aber zumindest 7 mit ath0 sein.

Lg, Gerhard
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: xenos1984 am 28 März 2022, 19:47:04
Zitat von: gestein am 28 März 2022, 19:19:18
Der einzige Wermutstropfen ist, dass nun nur jeweils ein Client mit ath1 und einer mit ath0 angelegt wird.
Es müssten aber zumindest 7 mit ath0 sein.

Das sollte eigentlich nicht passieren, die Readings müssten die gleichen sein, nur eben mit einem Präfix... Wie sehen denn die Readings aus, wenn du die Clients einzeln bzw. kombiniert abfragst?
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: gestein am 28 März 2022, 21:30:01
Anscheinend ist beim Umdefinieren etwas durcheinander gekommen.
Ich habe nun alle Readings aus den Devices gelöscht und etwas gewartet.

Nun passt es.
Alle Clients samt athX werden in einem Device aufgelistet.

Danke!
Lg, Gerhard
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: dyna am 18 Juli 2022, 18:32:25
Hallo Zusammen,

funktioniert das Modul mit der original Firmware oder muss OpenWRT installiert werden?

Grüße
Jens
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: xenos1984 am 18 Juli 2022, 18:35:50
Das kommt darauf an, was die Original-Firmware ist und ob sie das Ubus-Protokoll implementiert. Auf meinem Gerät ist OpenWRT bereits als Teil der Original-Firmware installiert.

Das Modul läuft mit jeder Firmware, die eine Ubus-Schnittstelle anbietet.
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: dyna am 18 Juli 2022, 18:56:09
Danke für die schnelle Antwort.

Ich nutze Devolo Magi 2 LAN DINrail, Devolo Magic 2 LAN 1-1 und Devolo Magic 2 WiFi 2-1.
Ob da OpenWRT drauf ist oder UBUS direkt implemenitiert weiß ich nicht. Wie kann ich das rausfinden?

Grüße
Jens
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: xenos1984 am 18 Juli 2022, 19:36:59
Da ich die konkreten Geräte nicht kenne, kann ich nur generisch antworten, wie man es - vielleicht - herausfinden könnte:

Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: gestein am 19 Juli 2022, 11:18:05
Hallo,

bei mir klappt das einfach out-of-the-box mit den Originalteilen von Devolo.
Ich wusste gar nicht, dass man da eine alternative FW aufspielen kann.

lg, Gerhard
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: dyna am 20 Juli 2022, 19:14:13
Hallo,

funktioniert bei mir leider nicht ootb.
Im Log steht
2022.07.20 19:10:11 1: UBUS (Devolo_Keller) - decode_json error: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "<html><head><title>4...") at ./FHEM/72_UBUS_CLIENT.pm line 494.

Das List des Devices sieht folgerndermaßen aus
Internals:
   DEF        http://192.168.67.73/ubus
   FUUID      62d83620-f33f-a551-ff28-797d69f96c09d67f
   NAME       Devolo_Keller
   NR         594
   STATE      active
   TYPE       UBUS_CLIENT
   eventCount 1
   lastid     0
   method     http
   session    00000000000000000000000000000000
   url        http://192.168.67.73/ubus
   READINGS:
     2022-07-20 19:09:52   state           active
   helper:
   rpc:
     Devolo_Keller:call:0:
       id         Devolo_Keller:call:0
       jsonrpc    2.0
       method     call
       params:
         00000000000000000000000000000000
         session
         login
         HASH(0x564120165d80)
Attributes:
   username   root


Grüße
Jens
Titel: Antw:Devolo Magic 2 und UBUS?
Beitrag von: dyna am 26 Juli 2022, 11:38:41
Hallo Zusammen,

ich habe festgestellt, dass UBUS bei den Magic 2 WiFi 2-1 funktioniert. Für die Devolos ohne WLAN habe ich es nicht hinbekommen.

Grüße
Jens