Lister les actions d'un tableau

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
domoboy
Messages : 5
Inscription : 27 janv. 2019, 22:31

Lister les actions d'un tableau

Message par domoboy »

Hi :)

A des fins de debuging est-il possible de lister les actions d'un tableau ?

Exemple:

Est-il possible d'afficher dans les logs la liste des actions à venir pour ce type de tableaux ?

Code : Tout sélectionner

commandArray[#commandArray + 1]= {['Lampe'] = 'Off AFTER 5400'}
Merci
landaisbenj
Messages : 695
Inscription : 12 mars 2017, 19:24

Re: Lister les actions d'un tableau

Message par landaisbenj »

Je ne comprend pas trop la fin de la question:
la liste des actions à venir pour ce type de tableaux ?
Met pour imprimer dans les logs c'est print, et pour manipuler un tableau (tu peux te servir de ca) tu peux renvoyer les differentes ligne du tableau avec le numéro de la ligne ou le nom de la clef exemple:

commandArray[1] renvoi la premiere valeur du tableau

et

commandArray['MonDevice'] renvoi la derniere valeur de MonDevice (ce sera donc celle affecté affecté a MonDevice en fin de script)

Et du coup pour toutes les valeurs d'un tableau il faut juste faire une boucle sur ton print...
Rpbi3b: Domoticz + Homebridge + Monit + Freebox scripts + Shellinabox; Rpbi2: Jarvis
Domoticz: Derniere stable; RFLINK: Dernière stable; Xiaomi Gateway
domoboy
Messages : 5
Inscription : 27 janv. 2019, 22:31

Re: Lister les actions d'un tableau

Message par domoboy »

@landaisbenj

Tout d'abord merci pour la réponse :)

Je me débrouille un peu sur Lua, et j'avais essayé avant de poster ma question ce que tu m'as proposé.
Et donc, si je vais un :

Print(commandArray[1])

Dans les logs, je n'ai rien.

Alors peut être que je n'ai pas posé correctement la question.

J'ai un script qui fait :

Code : Tout sélectionner

        
commandArray[1]= {['lampe'] = 'On AFTER 1800'}
commandArray[2]= {['lampe'] = 'Off AFTER 5400'}
J'aimerais pouvoir afficher le contenu du tableau, dans les logs ou ailleurs.

Merci par avance.
landaisbenj
Messages : 695
Inscription : 12 mars 2017, 19:24

Re: Lister les actions d'un tableau

Message par landaisbenj »

Normalement c'est ça. Mais après que ces deux commandes soient passées. J'essaie demain pour voir si j'ai raison.
Rpbi3b: Domoticz + Homebridge + Monit + Freebox scripts + Shellinabox; Rpbi2: Jarvis
Domoticz: Derniere stable; RFLINK: Dernière stable; Xiaomi Gateway
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: Lister les actions d'un tableau

Message par denis_brasseur »

Essaie ceci, il s'agit d'une fonction à placer en début de ton code

Code : Tout sélectionner

function tab_print(t)    
   for key,value in pairs(t) do
       print(key, value)
   end
end
tu l'utilise ensuite comme print() en mettant le nom de ton tableau entre parenthèses, avant return commandArray . Exemple :

Code : Tout sélectionner

tab_print(commandArray)
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
landaisbenj
Messages : 695
Inscription : 12 mars 2017, 19:24

Re: Lister les actions d'un tableau

Message par landaisbenj »

Si tu peux. Mais tu as raison, comme il s'agit d'un couple alors il faut jouer sur la clef et la variable.

Tu dois afficher pour la première itération de la table, la clef Ou la variable. Ou faire une boucle effectivement.

Code : Tout sélectionner

Essaie print( next(commandAray[1]) )
EDIT:

Code : Tout sélectionner

clef,valeur = next(commandArray[1])
print('Données :'.. clef ..' ' .. valeur)
Dernière modification par landaisbenj le 11 mars 2019, 12:31, modifié 1 fois.
Rpbi3b: Domoticz + Homebridge + Monit + Freebox scripts + Shellinabox; Rpbi2: Jarvis
Domoticz: Derniere stable; RFLINK: Dernière stable; Xiaomi Gateway
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Lister les actions d'un tableau

Message par vil1driver »

Salut,

ces commandes

Code : Tout sélectionner

dofile('/home/pi/domoticz/scripts/lua/modules.lua')
log(table_show(commandArray,"commandArray"))
pour

Code : Tout sélectionner

commandArray[1]= {['lampe'] = 'On AFTER 1800'}
commandArray[2]= {['lampe'] = 'Off AFTER 5400'}
produisent ceci

Code : Tout sélectionner

2019-03-11 14:47:02.032 Status: LUA: commandArray = {
2019-03-11 14:47:02.032 [1] = {
2019-03-11 14:47:02.032 ["lampe"] = "On AFTER 1800";
2019-03-11 14:47:02.032 };
2019-03-11 14:47:02.032 [2] = {
2019-03-11 14:47:02.032 ["lampe"] = "Off AFTER 5400";
2019-03-11 14:47:02.032 };
2019-03-11 14:47:02.032 };
2019-03-11 14:47:02.032
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
landaisbenj
Messages : 695
Inscription : 12 mars 2017, 19:24

Re: Lister les actions d'un tableau

Message par landaisbenj »

Voila comment cibler une des entrée du tableau (pour éviter la boucle):

Code : Tout sélectionner

clef,valeur = next(commandArray[1])
print('Données :'.. clef ..' ' .. valeur)
Rpbi3b: Domoticz + Homebridge + Monit + Freebox scripts + Shellinabox; Rpbi2: Jarvis
Domoticz: Derniere stable; RFLINK: Dernière stable; Xiaomi Gateway
Répondre