Aller au contenu
DrPepper

Identifier un utilisateur lanceur de scène en LUA

Recommended Posts

Bonjour à tous !

 

Je cherche à identifier l'id de l'utilisateur qui lance une scène quand elle n'est pas lancée automatiquement ! J'ai cherché, rien trouvé...

 

Vous avez une idée de comment le récupérer ?

 

Y'a bien http://ip_box//api/users qui donne la liste des users, mais comment avoir CELUI qui lance la scène ...

 

Merci de votre aide !

 

++

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Pas sûr que ça soit la meilleure méthode, mais au début de ta scène, tu peux commencer par regarder le user qui a la plus faible valeur de "lastActivity" dans /api/userActivity

Normalement, si tu as un 0 dans ce champ, c'est que c'est l'utilisateur actif.

 

Le risque c'est qu'un autre utilisateur fasse une action au même moment, du coup tu aurais 2 utilisateurs avec cette valeur à 0, donc impossible à différencier.

Partager ce message


Lien à poster
Partager sur d’autres sites

Trouvé, en fait il faut regarder directement dans /api/loginStatus

{
	"status": true,
	"userID": 2,
	"username": "user@domaine.com",
	"type": "superuser",
	"analyticsUserIdHash": "abcdefghijklmnopqrstuvwxyz"
}
{
	"status": true,
	"userID": 127,
	"username": "Lazer",
	"type": "user",
	"analyticsUserIdHash": "abcdefghijklmnopqrstuvwxyz"
}

 

Donc au début de ta scène, tu vas chercher cette info avec api:get("/loginStatus"), puis tu l'affiches dans le debug de ta scène.

Ainsi, en regardant la zone de debug, tu verras tous les utilisateurs qui ont exécuté ta scène, avec l'heure précise.

 

Modifié par Lazer
  • Like 2

Partager ce message


Lien à poster
Partager sur d’autres sites

local user = api.get("/loginStatus")

print(user.username)

local user = api.get("/loginStatus")

print(user.username)

 

Ca marche ... NICKEL !!!

 

:19:

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Ca marchait et bim... depuis la 4.55 ca ne marche plus !

 

Ce qui est étonnant, car en pointant l'URL vers

http://<ip>/api/loginStatus 

on a bien les éléments du tableau

 

Mais dans le code LUA, on a autre chose..
 

 

{
['limit'] = 5,
['timeLeft'] = 0,
['status'] = false,
['retryNumber'] = 0
}


Une idée ?

Mes fonctions buguent...

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

Ca veut dire que le code LUA est exécuté sans qu'il y aie un utilisateur de connecté.

Pour cela, il faut d'abord tester 'status' et si il est à true alors prendre le 'username'.

Voilà ... :D

 

Modifié par Kana-chan

Partager ce message


Lien à poster
Partager sur d’autres sites

Comment un utilisateur ne peut pas etre connecté, puisque j'utilise le code dans une fonction à déclenchement manuel ?

(donc forcément connecté pour y avoir accès...)

 

Je vais faire quelques tests !

Merci pour l'explication !

Partager ce message


Lien à poster
Partager sur d’autres sites

Tu devrais poser la question au support Fibaro, car ce changement de comportement ressemble à un nouveau bug.

Partager ce message


Lien à poster
Partager sur d’autres sites

×