Page 1 sur 1

[LUA] Lexique des commandes

Publié : 28 juil. 2017, 09:27
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...

Re: Lexique des commandes en LUA

Publié : 28 juil. 2017, 10:40
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

Re: Lexique des commandes en LUA

Publié : 28 juil. 2017, 18:12
par georges.attali

Re: Lexique des commandes en LUA

Publié : 31 juil. 2017, 10:57
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 :/ ^^