Re: bibliothèque de fonctions pour scripts LUA
Publié : 14 mai 2017, 16:59
a priori JSON.lua est présent dans ton répertoire /home/pi/domoticz/scripts/lua/
Reprenez le contrôle de votre domotique
https://easydomoticz.com/forum/
J'ai sans doute une config un peu spéciale, je suis sous un ex box android Tronsmart sur laquelle j'ai installé Libreelec, et j'ai installé Domoticz via Docker. Je n'ai pas un package prêt à l'emploi. En tout cas dans ma config, même le dossier scripts n'existait pas... mais en l'ajoutant, aucun soucis ça fonctionne bienpapoo a écrit :a priori JSON.lua est présent dans ton répertoire /home/pi/domoticz/scripts/lua/
Code : Tout sélectionner
-- convertion degrés en direction cardinale
function cardinals(deg)
local cardinalDirections = {
['N'] = {348.75, 360},
['N'] = {0, 11.25},
['NNE'] = {11.25, 33.75},
['NE'] = {33.75, 56.25},
['ENE'] = {56.25, 78.75},
['E'] = {78.75, 101.25},
['ESE'] = {101.25, 123.75},
['SE'] = {123.75, 146.25},
['SSE'] = {146.25, 168.75},
['S'] = {168.75, 191.25},
['SSW'] = {191.25, 213.75},
['SW'] = {213.75, 236.25},
['WSW'] = {236.25, 258.75},
['W'] = {258.75, 281.25},
['WNW'] = {281.25, 303.75},
['NW'] = {303.75, 326.25},
['NNW'] = {326.25, 348.75}
}
local cardinal
for dir, angle in pairs(cardinalDirections) do
if (deg >= angle[1] and deg < angle[2]) then
cardinal = dir
break
end
end
return cardinal
end
Code : Tout sélectionner
commandArray['SendNotification']='subject#body#0#sound#extradata#kodi;pushbullet'papoo a écrit :A priori, plus besoin de fonctions de notification genre pushbullet,
la possibilité de choisir le type de notification dans ses scripts Lua est maintenant implémentée
https://www.domoticz.com/forum/viewtopi ... 84#p116009
Par exemple, si vous souhaitez utiliser kodi et pushbullet, vous avez besoin de quelque chose comme :Code : Tout sélectionner
commandArray['SendNotification']='subject#body#0#sound#extradata#kodi;pushbullet'
Code : Tout sélectionner
-- retourne le temps en seconde depuis la dernière maj du péréphérique
function lastSeen(device)
timestamp = otherdevices_lastupdate[device] or device or uservariable_lastupdate[device]
y, m, d, H, M, S = timestamp:match("(%d+)-(%d+)-(%d+) (%d+):(%d+):(%d+)")
difference = os.difftime(os.time(), os.time{year=y, month=m, day=d, hour=H, min=M, sec=S})
return difference
endCode : Tout sélectionner
if uservariables['Variable'] == "0" or (uservariables['Variable'] == "1" and lastSeen('Variable') > 600) then
if condition then
action
commandarray['Variable:Variable'] == "0"
else
commandarray['Variable:Variable'] == "1"
end
end
Code : Tout sélectionner
timestamp = otherdevices_lastupdate[device] or deviceCode : Tout sélectionner
lastSeen(uservariable['ma variable'])Code : Tout sélectionner
lastSeen(uservariable_lastupdate['ta variable'])Merci pour l'info ca fonctionne effectivement.dans ton cas sans modifier la fonction ceci doit fonctionner:
lastSeen(uservariable_lastupdate['ta variable'])
Et comme je m'attendais a ce que ça marche, je vous ai posé la question par reflex...in *** Test LUA: /home/limabravo/domoticz/scripts/lua/modules.lua:165: field 'day' missing in date table
Code : Tout sélectionner
timestamp = otherdevices_lastupdate[device] or device or uservariables_lastupdate[device] Code : Tout sélectionner
timestamp = otherdevices_lastupdate[device] or uservariables_lastupdate[device] or device