[LUA] Lexique des commandes

Vous avez créé un script LUA dont vous êtes fier, un .sh génial, un programme Python hors du commun, un Tuto, c'est ici que vous pouvez les partager.
landaisbenj
Messages : 695
Inscription : 12 mars 2017, 19:24

[LUA] Lexique des commandes

Message par landaisbenj »

Bonjour.

Existe-t-il, a part certaines pages du wiki domotique, un lexique complet des tableau et de leurs entrées LUA ?
:D

Car quand je lis ca:

Code : Tout sélectionner

for i, v in pairs(devicechanged) do print("    " .. i .. ' : ' .. v)
ou ca:

Code : Tout sélectionner

timeofday['Nighttime']
J'aimerai bien savoir comment trouver ces tables et leur contenu par moi meme... Car le wiki n'est pas forcement bien organisé la dessus...
Dernière modification par landaisbenj le 28 juil. 2017, 12:04, modifié 3 fois.
Rpbi3b: Domoticz + Homebridge + Monit + Freebox scripts + Shellinabox; Rpbi2: Jarvis
Domoticz: Derniere stable; RFLINK: Dernière stable; Xiaomi Gateway
landaisbenj
Messages : 695
Inscription : 12 mars 2017, 19:24

Re: Lexique des commandes en LUA

Message par landaisbenj »

devicechanged['MyDeviceName'] == 'On'

devicechanged['devicename_Temperature'] = value
devicechanged['devicename_Humidity'] = value
devicechanged['devicename_Barometer'] = value

otherdevices['yourotherdevicename'] = "On"
otherdevices_lastupdate['yourotherdevicename'] = "2015-12-27 14:26:40"
otherdevices_svalues['yourotherthermometer'] = string of svalues
otherdevices_idx['yourotherdevicename'] retourne le numero de device

otherdevices_scenesgroups['yourotherscenegroupename'] return stat of group or scene
otherdevices_scenesgroups_idx['yourotherscenegroupename']

otherdevices_temperature['yourdevice'] =
otherdevices_humidity['yourdevice'] =
otherdevices_barometer['yourdevice'] =

uservariables['yourvariablename'] = 'Test Value'
uservariables_lastupdate['yourvariablename'] = '2015-12-27 11:19:22'
uservariablechanged['yourvariablename']

timeofday['Nighttime'] = true or false
timeofday['SunriseInMinutes'] = number
timeofday['Daytime'] = true or false
timeofday['SunsetInMinutes'] = number

globalvariables['MySecurityDevice'] = 'Disarmed', 'Armed Home' or 'Armed Away'
commandArray['MySecurityDevice'] = 'Arm Away' delai de 60s, 'Arm Home' delai 60s or 'Disarm'

commandArray['MyOtherDeviceName1']='On'
commandArray['MyOtherDeviceName2']='On'
commandArray['MyOtherDeviceName3']='Off'
commandArray['MyOtherDeviceName4']='On FOR 10' -- Passe à On pendant 10 secondes ?
commandArray['MyOtherDeviceName5']='Off RANDOM 30' -- Off aleatoire pendant 30 secondes ?
commandArray['MyOtherDeviceName6']='On REPEAT 5 INTERVAL 5' -- Repete la commande 5 fois toutes les 5 secondes ?
commandArray['MyOtherDeviceName7']="On FOR 2 SECONDS REPEAT 9 INTERVAL 4 SECONDS" -- Passe un device a ON 9 fois toutes les 4 secondes
commandArray[#commandArray+1]={['MyOtherDeviceName1'] = 'On'}
commandArray['Scene:MyScene']='On'
commandArray['Group:MyGroup']='Off AFTER 30' -- Passe à OFF apres 30 secondes ?
commandArray['SendNotification']='subject#body#extraData#priority#sound'
commandArray['OpenURL']='www.yourdomain.com/api/movecamtopreset.cgi'
commandArray['SendEmail']='subject#body#to'
commandArray['Variable:MyVar']='Some value'
commandArray['SetSetPoint:MySetPointIdx']='20.5'
commandArray['SendCamera:1'] = 'SubjectOfMessage AFTER 5' -- Envoie une image de la camera 1 avec comme sujet "Subject of Message" après 5 secondes. Le 1 est l'ID de la camera pas son nom.
commandArray['UpdateDevice']='idx|nValue|sValue' -- Mettre a jour un device. Ex: '96|0|Hello World'

--Afficher dans les logs le device qui active le script:
print ( "Device: '..next(devicechanged)..'" - Etat: '..devicechanged[next(devicechanged)] )

--Afficher dans les logs, tous les devices, variables ainsi que leurs etats

for deviceName,deviceValue in pairs(otherdevices) do
print ( "Device: '..deviceName..'" - Etat: '..deviceValue)
end



for variableName,variableValue in pairs(uservariables) do
print ( "Variable: '..variableName..'" - Valeur: '..variableValue)
end


-- Verifie le debut du nom du device
device=tostring(next(devicechanged))
if ((device:sub(1,3) == 'PIR') == 'On') then


-- Verifie plusieurs device
local capteurs = { "Porte entree/couloir", "Porte terrasse" }

function verifcapteur()

local capteurp = ' '
local dooropen = 0

print("Verification des capteurs...")

for cle, valeur in ipairs(capteurs) do
if otherdevices[valeur] == 'Open' then
capteurp = capteurp..' -> '..valeur..' '
dooropen = dooropen + 1
end
end

if (dooropen == 1) then
message = "Attention ! La porte :"..capteurp.."est ouverte"
return true

elseif (dooropen >= 2) then
message ="Attention ! Les portes :"..capteurp.."sont ouvertes"
return true

else
message = "Aucune portes ouvertes detecte"
return false
end

print(message)
end



--creation d'une table et lecture simple:

user = { apple = { test1 = '12' ; test2 = '34'} ; android = { test1 = '56' ; test2 = '78' } }
info(user.apple.test1..' '..user.android.test1)

for user,credentials in pairs(users.apple) do

print(script..'Test de variable: '..credentials.username)

end

*******************************************************************************************************************
device=next(devicechanged)

print(string.match(device, ' %a+', 0))


--Concatenation de la table avec etat ouvert ou non, parse cette table et verifie que rien n'est ouvert:
local contact={
otherdevices['Contact Garage'],
otherdevices['Contact Entree'],
otherdevices['Contact Baie'],
otherdevices['Contact Baie 2'],
}
print(table.concat(contact,", "))
local maison = string.match(table.concat(contact),'Open')
if maison == 'Open' then
print('Maison ouverte')
else
print('Maison ferme')
end
Dernière modification par landaisbenj le 21 févr. 2019, 09:38, modifié 5 fois.
Rpbi3b: Domoticz + Homebridge + Monit + Freebox scripts + Shellinabox; Rpbi2: Jarvis
Domoticz: Derniere stable; RFLINK: Dernière stable; Xiaomi Gateway
georges.attali
Messages : 58
Inscription : 19 févr. 2016, 21:35

Re: Lexique des commandes en LUA

Message par georges.attali »

landaisbenj
Messages : 695
Inscription : 12 mars 2017, 19:24

Re: Lexique des commandes en LUA

Message par landaisbenj »

georges.attali a écrit :tu peux aussi voir des explications ici : https://www.domoticz.com/wiki/Events#Lu ... _Interface

aussi dzvents : https://www.domoticz.com/wiki/%27dzVent ... _scripting

Bye
GD
Merci pour le deuxieme. Pas mal d'exemple en plus.

[EDIT]: J'avais pas pris le temps de regarder mais ca ouvre d'autre perspective oO. Maintenant que je m'habituais au LUA faut que je passe au LUA 2.0 :/ ^^
Rpbi3b: Domoticz + Homebridge + Monit + Freebox scripts + Shellinabox; Rpbi2: Jarvis
Domoticz: Derniere stable; RFLINK: Dernière stable; Xiaomi Gateway
Répondre