Aller au contenu

Détection de présence avec points d'accès Wi-Fi Ubiquiti Unifi


Lazer

Messages recommandés

J'ai une petite question @Lazer. J'utilisais jusqu'à présent ta scene qui fonctionnait parfaitement pour moi (grand merci!!).

Je viens de passer de migrer le contrôleur d'une Cloud Key à une Dream Machine Pro, et je n'arrive pas à adapter la scène....

L'IP du contrôleur est désormais la même que le routeur.

On accède au contrôleur par https://IPROUTEUR/network

Mais https://IPROUTEUR/network/api/... ne pointe pas sur l'API du contrôleur et renvoie au dashboard....

Je n'ai pas trouvé d'info sur le sujet...

Aurais-tu des idées?

D'avance merci!!!

 

PS: j'ai bien trouvé ça, mais c'est du Chinois pour moi.... 

https://community.ui.com/questions/Unifi-API-on-an-Unifi-Dream-Machine/dcbda0aa-8c37-4a23-acdd-ee5fd11de588

Modifié par PdB
Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Essaie en https avec le port 8443 comme sur les ck.

Il faut peut être démarrer avec l’application téléphone en Bluetooth pour la première fois comme sur les cloud keys.


Envoyé de mon iPhone en utilisant Tapatalk

Lien vers le commentaire
Partager sur d’autres sites

J'ai avancé ici: https://ubntwiki.com/products/software/unifi-controller/api

 

Le endpoint pour l'API est https://IP/proxy/network

et pour le login:  /api/auth/login au lieu de api/login

 

En revanche j'ai une erreur de login

 

 

[DEBUG] 11:28:46: Need to login and get new cookie
[DEBUG] 11:28:46: Login
[DEBUG] 11:28:46: 2020-10-23 11:28:46.360354 [ error] Handshake error: certificate verify failed
[DEBUG] 11:28:46: httpClient:request() : Error : certificate verify failed
 

Lien vers le commentaire
Partager sur d’autres sites

Cool ça :)

 

Pour le certificat, c'est plus compliqué que ça.

Le checkcertificate = false est déjà dans les options de la requête http effectuée par le code LUA
 

Le problème, c'est la HC2 qui ne supporte pas la suite de chiffrement utilisée par Unifi.

En première page j'ai donné la modification à faire sur le fichier de configuration du contrôleur Unifi, je ne sais pas si c'est valable pour l'UDM.... encore faut-il avoir accès en root au système... est-ce le cas sur UDM ?

Lien vers le commentaire
Partager sur d’autres sites

C’est moi qui était repasse en checkcertificzte = true en tentant de bidouiller avant.

en repassant a false j’ai

 

[DEBUG] 12:02:43: Need to login and get new cookie
[DEBUG] 12:02:43: Login
[DEBUG] 12:02:43: Error : status=401
 

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

J'ai finalement réussi à avoir un accès en root, trouver le fichier system.properties et le modifier...

 

J'arrive à m'authentifier à l'UDM PRO sans souci en utilisant Postman:

 

389933464_Capturedcran2020-10-2621_11_51.thumb.png.7dc9056234305246c8f09f02271db6a8.png

 

Malgré tout la scène suivante me renvoie encore une erreur 401:

local credential = {username = "Fibaro", password = "XXXXXX"}
credential = json.encode(credential)

	local httpClient = net.HTTPClient()
	httpClient:request("https://192.168.0.254/api/auth/login", {
		success = function(response)
        print(json.encode(response.status))
		end,
		error = function(err)
		end,
		options = {
			method = 'POST',
			checkCertificate = false,
            data = credential
         }
		  
	})

Auriez-vous une idée de ce qui cloche???

Lien vers le commentaire
Partager sur d’autres sites

ALLELUIA !!!!! Ca y est, j'ai enfin réussi.

 

Pour ceux que cela intéresse donc sur un UDM-PRO:

- il faut activer la connection SSH dans le contrôleur 

- Se logger en "root" avec le mot de passe que vous avez choisi et accéder au fichier system.properties qui se trouve dans /data/unifi/data 

- et le modifier selon les consignes de @Lazer.

 

Il faut ensuite modifier un petit peu la scene de @Lazer

- pour le LOGIN : L'IP à utiliser est

 URL .. "/api/auth/login"

- dans les options de la requête HTTP pour le login, il faut rajouter: 

headers = {['Content-Type'] = 'application/json'},

 sinon erreur 401 systématique....

 

- dans la récupération du cookie, il faut supprimer la ligne:

                    

if jsonTable.meta and jsonTable.meta.rc and jsonTable.meta.rc == "ok" then

et en miroir:         

else
        Message("red", "Error : status = " .. tostring(response.status) .. " - rc = " .. (jsonTable.meta and jsonTable.meta.rc or "???") .. " - msg = " .. (jsonTable.meta and jsonTable.meta.msg or "???"))
end

qui ne correspondent plus au format de la réponse.
             

Dans GetDevices(): il faut modifier l'URL cible par :  

URL .. "/proxy/network/api/s/default/stat/sta"

 

Enfin, si besoin, il faut modifier le fichier system.properties. Pour cela:

- il faut activer la connection SSH dans les reglages de l'UDM PRO 

- Se logger en "root" avec le mot de passe que vous avez choisi et accéder au fichier system.properties qui se trouve dans /data/unifi/data 

- et le modifier selon les consignes de @Lazer.

 

 

Et tout roule chez moi ...

Merci à ceux qui m'ont aidé!!!!

  • Like 2
  • Thanks 1
Lien vers le commentaire
Partager sur d’autres sites

@PdB Merci pour tout ca. J'ai fais les modifications que tu as proposé.

 

Malgré la suppression de la ligne du cookie j'ai toujours cette erreur :

 

[DEBUG] 15:42:43: 27/10/2020 : Scene instance autostart
[DEBUG] 15:42:43: GetDevices
[DEBUG] 15:42:43: Need to login and get new cookie
[DEBUG] 15:42:43: Login
[DEBUG] 15:42:43: Error : status=401

Une idée ?

Lien vers le commentaire
Partager sur d’autres sites

Le 26/10/2020 à 22:17, PdB a dit :

Bonjour,

 

J'ai finalement réussi à avoir un accès en root, trouver le fichier system.properties et le modifier...

 

J'arrive à m'authentifier à l'UDM PRO sans souci en utilisant Postman:

 

389933464_Capturedcran2020-10-2621_11_51.thumb.png.7dc9056234305246c8f09f02271db6a8.png

 

Malgré tout la scène suivante me renvoie encore une erreur 401:


local credential = {username = "Fibaro", password = "XXXXXX"}
credential = json.encode(credential)

	local httpClient = net.HTTPClient()
	httpClient:request("https://192.168.0.254/api/auth/login", {
		success = function(response)
        print(json.encode(response.status))
		end,
		error = function(err)
		end,
		options = {
			method = 'POST',
			checkCertificate = false,
            data = credential
         }
		  
	})

Auriez-vous une idée de ce qui cloche???

J'ai essayé ca aussi.

 

J'ai toujours mon erreur 401 :(

Lien vers le commentaire
Partager sur d’autres sites

@yoim As-tu modifié la scène de Lazer?

Dans la partie Login tu dois avoir ca:

 

--
-- Login function
--
function Login(command)

	Message("fuchsia", "Login")

	local httpClient = net.HTTPClient()
	if debug then
		Message("grey", URL .. "/api/login")
	end
	-- Login
	httpClient:request(URL .. "/api/auth/login", {
		success = function(response)
			if debug then
				Message("gray", json.encode(response))
			end
			if response.status == 200 then
				if response.data and response.data ~= "" then
					local jsonTable = json.decode(response.data)
						-- Get cookie
						if response.headers and response.headers['Set-Cookie'] then
							-- "Set-Cookie": "unifises=L1IADETuhsX6AwY44w72nCKftDOa1c1j; Path=\/; Secure; HttpOnly, csrf_token=b5y9pwpKD5dIcLqAxfHxUO2dQ6HUuvcL; Path=\/; Secure",
							if debug then
								Message("yellow", response.headers['Set-Cookie'])
							end
							-- Store cookie
							Cookie = response.headers['Set-Cookie']
							fibaro:setGlobal(VG_Unifi_Cookie, Cookie)
							-- Execute given function as argument
							if command and type(command) == "function" then
								setTimeout(function() command() end, 0)
							end
						else
							Message("red", "Error : missing Cookie in Response Headers")
						end
					else
					Message("red", "Error : empty response")
				end
			else
				Message("red", "Error : status=" .. tostring(response.status))
			end
		end,
		error = function(err)
			Message("red", 'httpClient:request() : Error : ' .. err)
		end,
		options = {
			method = 'POST',
			checkCertificate = false,
			headers = {['Content-Type'] = 'application/json'},
			data = json.encode({username=username, password=password, strict=true})
		}
	})

end -- function

 

  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...