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
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:
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).

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
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
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