Neues Modul - 74_Unifi - Für den Ubiquiti Networks (UBNT) - Unifi Controller

Begonnen von rapster, 23 August 2015, 02:12:04

Vorheriges Thema - Nächstes Thema

MadMax-FHEM

Langsam sollten "wir" den Thread "damit" verlassen...
...weil es ja (wenn überhaupt) nur ganz entferntest (evtl. Readings anders) noch mit dem Modul zu tun hat... ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

h-man-kl

Hi Wühler...
Danke für die Rückmeldung
Das Endgerät (iPhone) ist im Controller und in allem was ich prüfen konnte nicht doppelt. Zumal ich es auch neu mit alias und Hostnamen angelegt hatte.
Getreu dem Motto No Risk No Fun habe ich heute direkt mal iOS14 draufgebügelt.
Aktuell wird der Status korrekt angezeigt - ohne fhem oder CloudKey zu ändern.
Meine Frau hat das gleiche Modell und ,,leider" nicht die gleichen Probleme deswegen habe ich leider nicht wirklich herausgefunden woran es liegt.
Gerne liefere ich aber alle gewünschten Informationen zur weiteren Analyse
Gruß
H-Man
RasPi 3 mit MaxCube für FS20 , HM-Urart, HM-LAN, MiLight, HUE, Lightify, SONOS, Harmony, Unifi, FritzBox 7490... :-)
Ganz nach dem Motto: Normal? Normal is langweilig....

Wuehler

Zitat von: ComputerZOO am 15 September 2020, 22:07:04
1: Kann man die Health-Werte (Temperatur, Lüfter etc.) auch auslesen?
2: In der UDM( P ) ist ja auch nen 8-Port Switch, kann der auch ausgelesen, oder als UniFi-Switch-Device angelegt werden?

Edit: habe gerade mal im UniFi-API-Browser geschaut, die Werte werden wohl nicht zur Verfügung gestellt...

Kannst du bitte verbose auf 5 stellen und mir das Log per pm senden. Dann kann ich mal schauen, ob man zusätzlich ein FHEM-UnifiSwitch-Device anlegen lassen kann, wenn die UDM dazu dieselben Strukturen zurückliefert wie bei den anderen Switches. Dann wäre u.a. auch Temperatur usw. dabei.

Komme hoffentlich am Wochenende mal dazu den Patch einzubauen.

ComputerZOO

Zitat von: Wuehler am 17 September 2020, 22:37:55
Kannst du bitte verbose auf 5 stellen und mir das Log per pm senden. Dann kann ich mal schauen, ob man zusätzlich ein FHEM-UnifiSwitch-Device anlegen lassen kann, wenn die UDM dazu dieselben Strukturen zurückliefert wie bei den anderen Switches. Dann wäre u.a. auch Temperatur usw. dabei.

Komme hoffentlich am Wochenende mal dazu den Patch einzubauen.

Danke für das Hilfsangebot, aber ich glaube da brauchst du (z.Zt.) keine Mühen investieren, habe mir die JSONs die der Controller liefert mit dem UniFi API-Browser mal angesehen, da ist leider nix dabei.

Wuehler

OK. Kannst du mal nachsehen, was bei der UDM unter type steht? Bei Switches es es usw, bei Accesspoints uap. Brauche die Info um für eine UDM ggf. ein zusätzliches Switch-Device anlegen zu können.

Wuehler

Das war vielleicht etwas zu schnell geschrieben. In FHEM kannst du den type des Unifi-Devices nirgendwo erkennen. Daher bitte einmal am Unifi-Controller/UDM anmelden und auf devices gehen.
Dann:
1. STRG + SHIFT + I   (Entwicklertools öffnen sich)
2. Dort unter Netzwerk auf XHR klicken
3. Reload im Browser klicken
4. In der Liste auf "device-basic" klicken
5. Im rechten Teil auf Response klicken
6. Die Daten kopieren und hier posten oder mir per pm senden oder selbst heraussuchen, was die UDM für einen type hat.
-- helfen tut hierbei die Webseite https://jsonformatter.org/json-pretty-print

Es gibt für jedes Device darin folgenden Abschnitt:

    {
      "mac": "22:33:44:55:66:77",
      "state": 1,
      "adopted": true,
      "disabled": false,
      "type": "usw",
      "model": "US16P150",
      "name": "switch-HWR"
    },


Da ist hoffentlich auch eines dabei, das als Model irgendetwas mit UDM hat. Interessieren tut dann der Eintrag bei type.

kunze

Gerne:

        {
            "mac": "aa:bb:cc:dd:ee:ff",
            "state": 1,
            "adopted": true,
            "disabled": false,
            "type": "udm",
            "model": "UDMPRO"
        },

Wuehler

Moin und vielen Dank,

ich habe die UDM-Version von dir aus Post #1315 in Zeile 1446 um den type udm erweitert, so dass die Daten des Gerätes an das Modul UnifiSwitch weitergegeben werden.

                    if (defined $h->{type} && (($h->{type} eq "usw") || ($h->{type} eq "udm"))){


Da ich keine Ahnung habe, wie die Device-Daten aussehen kann das funktionieren, sofern dieselben Datenstrukturen verwendet werden. Meine Vermtung ist aber, dass sich die Informationen zum Switch in der UDM tiefer in den UDM-Datenstrukturen befinden, so dass man diese vermutlich noch herausextrahieren müsste. Wenn man Pech hat sind die Daten aber vollständig anders aufgebaut.

Vielleicht mag mal jemand testen. Ungefähr folgendermaßen müsste die Datenstruktur aussehen, die an das Modul UnifiSwitch übergeben wird (Ich habe hier im Post alle nicht verwendeten Daten entfernt):
    {
      "has_fan": false,
      "has_temperature": false,
      "model": "xxxxxx",
      "type": "udm",
      "name": "yyyyyyyy",
      "port_table": [
        {
          "port_idx": "1",
          "port_poe": true,
          "poe_mode": "off",
          "poe_current": "0.00",
          "poe_power": "0.00",
          "poe_voltage": "0.00",
          "speed": 1000,
          "name": "Port 8",
        },
        {
          "port_idx": "2",
          "port_poe": true,
          "poe_mode": "off",
          "poe_current": "0.00",
          "poe_power": "0.00",
          "poe_voltage": "0.00",

          "speed": 0,
          "name": "Port 8",
        },
        ...
      ],
      "type": "usw",
      "system-stats": {
        "cpu": "33.9",
        "mem": "22.3",
      },
      "ssh_session_table": [],
      "overheating": false
    }


Viele Grüße,
Dirk


kunze

Hi Dirk,

deine erzeugt bei mir einen Switch mit der WAN IP als Name.

Verbose output liefert folgendes:



unifi (UnifiSwitch_Parse) - executed. UnifiSwitch: message_json:
{
  "has_fan": false,
  "has_temperature": false,
  "model": "UDMPRO",
  "type": "udm",
  "port_table": [
    {
      "port_idx": 1,
      "port_poe": false,
      "speed": 1000,
      "name": "Port 1",
    },
  ],
  "system-stats": {
    "uptime": "801093",
    "mem": "48.1",
    "cpu": "8.1"
  },
  "overheating": false,
}


und sehr viel mehr...
Allerdings fehlen einige von dir erwähnten Daten.

Schöne Grüße
Michael

Wuehler

OK, dann müssen die Daten für die anderen 4 Ports woanders versteckt sein. Du könntest nochmal mit den Entwicklertools schauen und dann nicht auf den "devices-basic" gehen sondern auf "devices". Der Response dort zeigt die Daten aller Devices an. Eines davon sollte die UDM sein.
Ggf. kann man nach Zeile 1446 $h für udm neu aufbauen und an UnifiSwitch senden. Ohne eine UDM zu haben kann ich nur helfen und nicht so viel selbst machen.

kunze

Hi Dirk,

evtl. liegt hier ein Missverständnis vor,
die port_table enthält alle Switch ports.

Das UnifiSwitch modul legt für den Switch in der UDM (Pro) keine readings an.
Wie sehe ich woran das scheitert?

Im Log sieht das so aus:

2020.09.20 09:52:25 5: unifi: dispatch UnifiSwitch_SW_Abstellraum{"has_fan":false,...}
2020.09.20 09:52:25 5: unifi (UnifiSwitch_Parse) - executed. UnifiSwitch: Adress: SW_Abstellraum
2020.09.20 09:52:25 5: unifi (UnifiSwitch_Parse) - executed. UnifiSwitch: message_json: {"has_fan":false,...}
2020.09.20 09:52:25 5: unifi (UnifiSwitch_Parse) - executed. UnifiSwitch: message_json: {"has_fan":false,...}
2020.09.20 09:52:25 5: unifi (UnifiSwitch_Parse) - return: SW_Abstellraum
2020.09.20 09:52:25 5: unifi: dispatch UnifiSwitch_xxx.xxx.xxx.xxx{"bytes":1051123792,...,"internet":true,"has_fan":false}
2020.09.20 09:52:25 5: unifi (UnifiSwitch_Parse) - executed. UnifiSwitch: Adress: xxx.xxx.xxx.xxx
2020.09.20 09:52:25 5: unifi (UnifiSwitch_Parse) - executed. UnifiSwitch: message_json: {"bytes":1051123792,...,"internet":true,"has_fan":false}
2020.09.20 09:52:25 5: unifi (UnifiSwitch_Parse) - return: xxx.xxx.xxx.xxx


Also für den "normalen" Switch ein dispatch, dann kommt die Adress zurück. Danach noch zwei Parse Aufrufe.
Beim UDM Switch: dispatch, dann kommt die Adresss als IP zurück, dann noch ein Parse Aufruf.

Schöne Grüße
Michael

kunze

Ok, mit dieser kleinen Änderung in Zeile 295 in 74_UnifiSwitch.pm
        if( $apRef->{type} eq 'usw'  || $apRef->{type} eq 'udm' ){
tauchen die Readings auf.

Wuehler


kunze


Wuehler

Hallo zusammen,

im Anhang ein Merge der UDM-Version mit der bisherigen Version.
Anpassungen:

  • neues Attribut: isUDM
    Bitte nach dem Define auf 1 setzen, wenn ihr eine UDM habt
  • UnifiSwitch: Die Switch-Komponente der UDM wird als zusätzliches UnifiSwitch-Device angelegt.

Ich konnte das für UDM natürlich nicht testen. Mit dem normalen Controller scheint alles weiterhin zu funktionieren.
Ggf. versuche ich später noch eine Art autodetection einzubauen.

Bitte Feedback.

Viele Grüße,
Dirk
EDIT: Anhänge entfernt