Aller au contenu
Lazer

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

Recommended Posts

Tu es certain que c'est le même port ?

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Non désolé je ne sais pas, mais tu n'as pas répondu à ma question, es-tu certain que c'est le même port ?

 

Mais si l'API a changé, ça va être compliqué...

Partager ce message


Lien à poster
Partager sur d’autres sites

J’avais pas vu.... Non pas certain pour le port...

Partager ce message


Lien à poster
Partager sur d’autres sites

Rien trouvé sur le port ou l'API qui aurait changé juste l'adresse de l'API qui est introuvable...

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
Partager sur d’autres sites

bjr, non rien avec https://IP:8443/network/api/s/default/stat/sta hélas....

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

 

J'ai aussi une dream machine pro. Je n'ai pas réussi a faire fonctionner la detection de presence. Je pense que l'api a changer.

 

@Lazer On est sur le port ssl 443.

 

 

 

Modifié par yoim

Partager ce message


Lien à poster
Partager sur d’autres sites

C'est bien dommage.... :(

 

Espérons que ça évolue...

Partager ce message


Lien à poster
Partager sur d’autres sites

Je pense pas que l’API ait changée, mais juste son accès via l’UDM Pro...

Partager ce message


Lien à poster
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
 

Partager ce message


Lien à poster
Partager sur d’autres sites

Il faut désactiver la vérification de validité des certificats au niveau de la scène.

Il y avait un post là-dessus mais je ne l’ai pas en tête.


Envoyé de mon iPhone en utilisant Tapatalk

Partager ce message


Lien à poster
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 ?

Partager ce message


Lien à poster
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
 

Partager ce message


Lien à poster
Partager sur d’autres sites

Google => HTTP 401 => Unauthorized

 

problème d'authentification donc....

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui... je creuse...

Partager ce message


Lien à poster
Partager sur d’autres sites

Impossible en tout cas d’accéder au system.properties sur le nouveau UDM PRO....

Partager ce message


Lien à poster
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???

Partager ce message


Lien à poster
Partager sur d’autres sites

Après avoir modifié le fichier le fichier system.properties il faut rebooter l’udm pro.


Envoyé de mon iPhone en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 8 heures, nasp a dit :

Après avoir modifié le fichier le fichier system.properties il faut rebooter l’udm pro.


Envoyé de mon iPhone en utilisant Tapatalk

 

Déjà fait hélas...

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
Partager sur d’autres sites

Cool, bravo @PdB :60:

 

J'ajoute un lien en première page vers ton message

Partager ce message


Lien à poster
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 ?

Partager ce message


Lien à poster
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 :(

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
Partager sur d’autres sites

×