Autor Thema: Devolo Magic 2 und UBUS?  (Gelesen 891 mal)

Offline gestein

  • Sr. Member
  • ****
  • Beiträge: 985
Devolo Magic 2 und UBUS?
« 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

In diesem Thread habe ich es via HTTPMOD versucht.
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

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

Danke im Voraus
liebe Grüße
Gerhard

Offline xenos1984

  • Developer
  • Full Member
  • ****
  • Beiträge: 416
Antw:Devolo Magic 2 und UBUS?
« Antwort #1 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

Offline gestein

  • Sr. Member
  • ****
  • Beiträge: 985
Antw:Devolo Magic 2 und UBUS?
« Antwort #2 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

Offline xenos1984

  • Developer
  • Full Member
  • ****
  • Beiträge: 416
Antw:Devolo Magic 2 und UBUS?
« Antwort #3 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.

Offline gestein

  • Sr. Member
  • ****
  • Beiträge: 985
Antw:Devolo Magic 2 und UBUS?
« Antwort #4 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

Offline xenos1984

  • Developer
  • Full Member
  • ****
  • Beiträge: 416
Antw:Devolo Magic 2 und UBUS?
« Antwort #5 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.

Offline gestein

  • Sr. Member
  • ****
  • Beiträge: 985
Antw:Devolo Magic 2 und UBUS?
« Antwort #6 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

Offline gestein

  • Sr. Member
  • ****
  • Beiträge: 985
Antw:Devolo Magic 2 und UBUS?
« Antwort #7 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

Offline xenos1984

  • Developer
  • Full Member
  • ****
  • Beiträge: 416
Antw:Devolo Magic 2 und UBUS?
« Antwort #8 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.

Offline gestein

  • Sr. Member
  • ****
  • Beiträge: 985
Antw:Devolo Magic 2 und UBUS?
« Antwort #9 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.

Offline gestein

  • Sr. Member
  • ****
  • Beiträge: 985
Antw:Devolo Magic 2 und UBUS?
« Antwort #10 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

Offline xenos1984

  • Developer
  • Full Member
  • ****
  • Beiträge: 416
Antw:Devolo Magic 2 und UBUS?
« Antwort #11 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).

Offline gestein

  • Sr. Member
  • ****
  • Beiträge: 985
Antw:Devolo Magic 2 und UBUS?
« Antwort #12 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

Offline gestein

  • Sr. Member
  • ****
  • Beiträge: 985
Antw:Devolo Magic 2 und UBUS?
« Antwort #13 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

Offline xenos1984

  • Developer
  • Full Member
  • ****
  • Beiträge: 416
Antw:Devolo Magic 2 und UBUS?
« Antwort #14 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.

 

decade-submarginal