Aller au contenu
TitiXsi

Utilisation de liste de Portables dans les Scénarios

Recommended Posts

Bonjour à tous,

 

je cherche à rendre générique certains codage de scène en LUA et je souhaiterai pouvoir définir en variables globale la liste des Portables à notifier par un Push.

Ensuite je voudrais récupérer cette liste et l’attribuer dans les Push :

hub.alert('simplePush', portables, '['..currentTime..']'..'TEST Portables 'false'')

 

J'ai essayé divers codage et je dois le rendre à l'évidence, je ne maitrise pas les Tables ou array en lua :-)

Impossible pour moi de déclarer une table dans les variables globales et impossible de manipuler ce-dis codage dans mon code lua...

 

Si vous avez déjà un truc qui traine, je suis preneur.

Merci

Rémi

Modifié par TitiXsi

Partager ce message


Lien à poster
Partager sur d’autres sites

je n'ai AUCUNE expérience en la matière, donc si je raconte des bêtises, soit indulgent ...

 

Je CROIS que la table des variable globales s'appelle  _G (c'est ce que je crois me souvenir avoir lu un jour de @Lazer)

 

Tu pourrais alors faire un petit code LUA qui écrit le tableau souhaité dans la VG.

Ensuite, YAK ...

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci @jojo, pour ta contribution :)

C'est pas trop le souci d'aller écrire dans la VG car c'est une liste figée, donc on peut écrire à la main.

Il faut par contre savoir quoi/comment écrire pour ensuite récupérer l'info dans chaque script.

 

En fait, on peut peut-être faire plus simple dans ce cas de liste de portables...

Si il est possible de récupérer la liste des tous les devices déclarés comme portables directement via une fonction fibaro, le tour est joué, je pose cet appel en haut de chacun de mes scripts et roule :)

 

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 1 heure, jojo a dit :

Je CROIS que la table des variable globales s'appelle  _G (c'est ce que je crois me souvenir avoir lu un jour de @Lazer)

Attention à la confusion des termes, _G c'est la super variable globale de type table, mais qui n'indexe que les variables globales en LUA !

Dans ce cas, "globale" s'entend sur la portée (scope) du code LUA en cours d'exécution.

 

La demande de @TitiXsi concerne les variables globales de la HC3 qui sont accessibles avec les fonction getGlobalVariable et setGlobalVariable, et stockées de façon persistantes dans la DB.

 

Une astuce qu'on utilise depuis la HC2, c'est de stocker un JSON dans la variable globale, donc tu peux utiliser json.encode et json.decode avant/après l'écriture et la lecture de la VG. Il y a quelques exemples sur le forum.

Ou alors, tu stockes simplement tes ID de portage dans une VG, séparés par des virgules, puis tu utilises une fonction split() pour décomposer la string en une table.... seul souci, la fonction split n'existe pas en LUA, mais tu trouveras des exemples sur le forum, sur Internet, ou bien dans ma librairie tools qui est intégrée à quasiment tous mes Quickapps.

Partager ce message


Lien à poster
Partager sur d’autres sites

dans les Paramètres->Accès, on voit la liste des mobiles par utilisateur

cif2.jpg

 

et via l'api, il te retourne un json avec les devices IOS

http://192.168.xxx.xxx/api/iosDevices


[
  {
    "id": 25,
    "name": "iPad",
    "udid": "970C8A8B-2D80-40E8-A0CB-6E2E312320F4",
    "push": true
  },
  {
    "id": 52,
    "name": "OnePlus 9 Pro",
    "udid": "0cd713841dde957b",
    "push": true
  },
  {
    "id": 769,
    "name": "rk3288",
    "udid": "dd5e55cf8bb6e06a",
    "push": true
  }
]
http://192.168.1.141/api/iosDevices

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci @Lazer, j'ai effectivement essayer de stocker une liste séparée par des virgules mais je suis trop mauvais car impossible de reconstruire une table tel quelle dois être ...

 

Je souhaiterai stocker dans les VG

List_Portables = 20,115

 

et créer la table dans ma variable local comme ceci (Ca c'est la bonne syntaxe pour créer une table et l'utiliser dans le Push)

local portables = {[1] = 20, [2] = 115, } -- Titi + Tablette

 

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 1 minute, jojo a dit :

dans les Paramètres->Accès, on voit la liste des mobiles par utilisateur

cif2.jpg

 

et via l'api, il te retourne un json avec les devices IOS

http://192.168.xxx.xxx/api/iosDevices


[
  {
    "id": 25,
    "name": "iPad",
    "udid": "970C8A8B-2D80-40E8-A0CB-6E2E312320F4",
    "push": true
  },
  {
    "id": 52,
    "name": "OnePlus 9 Pro",
    "udid": "0cd713841dde957b",
    "push": true
  },
  {
    "id": 769,
    "name": "rk3288",
    "udid": "dd5e55cf8bb6e06a",
    "push": true
  }
]

http://192.168.1.141/api/iosDevices

Effectivement, c'est surement parsable, mais pour le moment au dessus de mes récentes compétences :-)

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 13 minutes, Lazer a dit :

Attention à la confusion des termes, _G c'est la super variable globale de type table, mais qui n'indexe que les variables globales en LUA !

 

là, tu viens d'atteindre mes limites intellectuelles : _G ne contient donc pas les VG globales définies dans Paramètres->Global->Variables ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Non, seulement les variables globales en sein du code LUA.
Par opposition aux variables de type "local" et définies comme telles dans le code LUA, et dont la portée est la fonction ou la boucle en cours d'exécution.

 

Revoir ce bon vieux tuto :

 

 

 

Et pour voir un exemple pratique d'utilisation de _G :

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 24 minutes, Lazer a dit :

Non, seulement les variables globales en sein du code LUA.

ah, ok les variables globale d'un LUA (je comprends vite si on m'explique longuement ...), mais dont la portée est limitée au LUA, et donc rien à voir avec les variable Globales définies dans Paramètres->Général->Variables

Partager ce message


Lien à poster
Partager sur d’autres sites

quand je relis mes notes, on n'envoye pas des notifs vers des potables, mais vers de utilisateurs à qui on a associé des portables.

Donc, tu créerais un utilisateur (Notif) et y associerait les portables que tu veux, et il n'y a rien à programmer.

fibaro.alert(alert_type, user_ids, notification_content)
	 alert_type  one of the notification types: email”, sms or push
	 user_ids  list of user identifiers to send the notification to
	 notification_content  content of the notification to send

 

  • Thanks 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Hello.

Si c'est effectivement les users id qui sont envoyés via push, alors je peux figer cette liste dans mon script. Merci pour la précision

Modifié par TitiXsi

Partager ce message


Lien à poster
Partager sur d’autres sites

Avec grand plaisir !

Tiens nous informés du résultat de tes tests

Partager ce message


Lien à poster
Partager sur d’autres sites

×