Devolo Magic 2 und UBUS?

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

Vorheriges Thema - Nächstes Thema

xenos1984

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.

gestein

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

gestein

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

xenos1984

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.

gestein

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

xenos1984

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?

gestein

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

dyna

Hallo Zusammen,

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

Grüße
Jens

xenos1984

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.

dyna

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

xenos1984

Da ich die konkreten Geräte nicht kenne, kann ich nur generisch antworten, wie man es - vielleicht - herausfinden könnte:


  • Suche nach Infos zur Firmware im Netz
  • Web-Interface aufrufen und den Netzwerk-Verkehr im Browser beobachten
  • Ausprobieren ob das Gerät sich mit dem UBUS_CLIENT Modul ansprechen lässt (über Websocket oder HTTP POST)

gestein

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

dyna

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

dyna

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