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

kunze

Also als POST request funktioniert es:


curl -k -X POST -H "Content-Type: application/json" -i 'https://192.168.x.x/api/auth/login' --data '{"username":"xxx","password":"yyy","rememberMe":false}'

kunze

Mit diesem Patch funktioniert das Modul für mich mit der UDM Pro:


From 5995e6db43863722e6bc4525ec0e048238994454 Mon Sep 17 00:00:00 2001
From: Michael Kunzmann <michael.kunzmann@gmail.com>
Date: Sat, 12 Sep 2020 14:21:47 +0200
Subject: [PATCH] allow unifi for UDM Pro - breaks normal controllers

---
fhem/FHEM/74_Unifi.pm | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/fhem/FHEM/74_Unifi.pm b/fhem/FHEM/74_Unifi.pm
index 172877050..f703eda6f 100644
--- a/fhem/FHEM/74_Unifi.pm
+++ b/fhem/FHEM/74_Unifi.pm
@@ -209,7 +209,7 @@ sub Unifi_Define($$) {
             CONNECTED   => 0,
             eventPeriod => int(AttrVal($name,"eventPeriod",24)),
             interval    => $a[6] || 30,
-            url         => "https://".$a[2].(($a[3] == 443) ? '' : ':'.$a[3]).'/api/s/'.(($a[7]) ? $a[7] : 'default').'/',
+            url         => "https://".$a[2].(($a[3] == 443) ? '' : ':'.$a[3]).'/proxy/network/api/s/'.(($a[7]) ? $a[7] : 'default').'/',
         },
     );
     $hash->{httpParams} = {
@@ -899,13 +899,15 @@ sub Unifi_Login_Send($) {
     my $password = $hash->{helper}{password};
     $user = Unifi_decrypt( $user );
     $password = Unifi_decrypt( $password );
-    ( $loginurl = $hash->{unifi}->{url} ) =~ s/api\/s.+/api\/login/;
-    $logindata = '{"username":"'.$user.'", "password":"'.$password.'"}';
+    ( $loginurl = $hash->{unifi}->{url} ) =~ s/proxy\/network\/api\/s.+/api\/auth\/login/;
+    $logindata = '{"username":"'.$user.'", "password":"'.$password.'", "rememberMe":true}';

     HttpUtils_NonblockingGet( {
                  %{$hash->{httpParams}},
         url      => $loginurl,
         data     => $logindata,
+        method   => "POST",
+        header   => "Content-Type: application/json",
         callback => \&Unifi_Login_Receive
     } );
     return undef;
@@ -922,7 +924,7 @@ sub Unifi_Login_Receive($) {
         if ($param->{code} == 200 || $param->{code} == 400 || $param->{code} == 401 || $param->{code} == 200) {
             eval { $data = decode_json($data); 1; } or do { $data = { meta => {rc => 'error.decode_json', msg => $@} }; };

-            if ($data->{meta}->{rc} eq "ok") {
+            if ($data->{meta}->{rc} eq "ok" || $data->{username} ne '') {
                 Log3 $name, 5, "$name ($self) - state=ok";
                 $hash->{httpParams}->{header} = '';
                 for (split("\r\n",$param->{httpheader})) {
--
2.24.3 (Apple Git-128)


Falls jemand das "vernünftig" ins Modul einbauen kann würde ich mich freuen.
Leider reichen meine Perl/FHEM Kenntnisse dazu noch nicht aus.

Maui

Als diff code schnipsel ist zwar super, aber häng mal bitte die komplette Datei an also die geänderte.
Dann können das leichter andere "weniger versierte" testen  ;)

kunze


Fillip

Wie muss denn das define dazu nun sein? Also welcher Port? Wollte das ganze gerade einmal testen, ohne Port jedoch nimmt er das ncht an...

knochenmuehle

habs mit 443 gemacht, läuft ... und die Anwesenheitskennung auch wieder !

Fillip

Zitat von: knochenmuehle am 12 September 2020, 16:21:48
habs mit 443 gemacht, läuft ... und die Anwesenheitskennung auch wieder !
Heißt:

IP Port User Passwort
192.168.19.1 443 User Passwort

?

EDIT: Ich sollte auch die richtige IP der UDM angeben und nicht den vom alten Controller  :-X Ja so wie oben angegebn läuft es nun, danke!  ;D

F-Spezi

Läuft, Danke!

Wobei ich von der UDM-Pro z.Z. noch nicht überzeugt bin. Der WAN-Durchsatz ist wohl mit aktiviertem IPS höher, aber dafür fehlt der interne SNTP-Server und der Controller ist langsamer als unter Windows.
Mal abwarten, was Ubiquiti mit den nächsten Updates noch nachliefert.
3x FHEM (HyperV Debian, RasPi 3B NFS, NanoPi Neo Plus2)
UniFi, 1-Wire, ESP8266, ESP32, Shelly, Sonoff, ConBee/ZigBee, S7 Logo, BLE, iSpy uvm.
Standort: Saarland

F-Spezi

Liefert der Controller der UDM bei euch Readings zu den APs?
Vorher waren Readings beginnend mit -AP_ da, die kommen bei mir jetzt nicht mehr.

Und bei den WLAN-Clients steht jetzt der verwendete AP im Reading xxx_accesspoint immer auf unknown, die SSID wird im Reading xxx_essid geliefert.
3x FHEM (HyperV Debian, RasPi 3B NFS, NanoPi Neo Plus2)
UniFi, 1-Wire, ESP8266, ESP32, Shelly, Sonoff, ConBee/ZigBee, S7 Logo, BLE, iSpy uvm.
Standort: Saarland

kunze

Neue Version. Diesmal kommen auch die APs wieder.

Es scheint die UDM Pro akzeptiert für manche API aufrufe nur GET und nicht POST.
Musste das in
Unifi_GetUnarchivedAlerts_Send
Unifi_GetEvents_Send
Unifi_GetAccesspoints_Send
noch anpassen.


F-Spezi

Klasse, jetzt funktioniert auch meine Anwesenheitserkennung wieder vollständig, inkl. Verbindungs-AP.
3x FHEM (HyperV Debian, RasPi 3B NFS, NanoPi Neo Plus2)
UniFi, 1-Wire, ESP8266, ESP32, Shelly, Sonoff, ConBee/ZigBee, S7 Logo, BLE, iSpy uvm.
Standort: Saarland

Maui

Jetzt muss nur noch jemand das per Attribut und if einschränken, sodass es getestet werden kann, ob die Anpassungen (ohne url) bei allen ohne udm pro auch gehen.

Wuehler

Moin,
Klasse, dass sich ein UDM-Besitzer gefunden hat, das Modul anzupassen. Das Einarbeiten werde ich versuchen zeitnah zu übernehmen.
Viele Grüße, Dirk

Fs79

Ich nutze eine UDM (ohne Pro) in 1.8.1 rc3 und mit Controller Version 6.0.20.
Das Modul läuft bei mir.

Vielen Dank für die Anpassung des Moduls für die UDM.

h-man-kl

Hallo zusammmen,
da mir an anderer Stelle geraten wurde meine Frage hier zu posten hoffe ich auf Tips zur Lösung....
Mein Fhem läuft auf einem Raspi und ist aktuell
Mein Unifi läuft auf einem Cloudkey Gen2 und ist ebenfalls aktuell
Seit einiger Zeit habe ich das Problem, dass mein Handy nicht mehr korrekt in Fhem erkannt wird und so meine Anwesenheitsautomatik nicht geht.
Im Unifi selbst wird der Status korrekt angezeigt. Im Unifi-Device in Fhem passieren willkürlich folgende Dinge:
- das Handy hat den State Unknowen
- das Handy wechselt minütlich von diconnected auf connected egal ob ich da bin oder nicht => ich bin für Fhem dauerhaft connected
- das Handy wechselt minütlich von connected auf disconnected egal ob ich da bin oder nicht => ich bin für Fhem dauerhaft disconnected

Starte ich Fhem oder das Unifi Modul oder UNifi selbst neu, kann es sein, dass es funktoiniert.
Kennt jemand das Problem, was braucht ihr noch für Angaben?
Danke und 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....