[LUA] Bibliothèque de fonctions
Re: bibliothèque de fonctions pour scripts LUA
a priori JSON.lua est présent dans ton répertoire /home/pi/domoticz/scripts/lua/
Re: bibliothèque de fonctions pour scripts LUA
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/
-
vil1driver
- Messages : 5661
- Inscription : 30 janv. 2015, 11:07
- Localisation : Rennes (35)
Re: bibliothèque de fonctions pour scripts LUA
petite fonction que j'utilise pour agrémenter le script de luminosité virtuelle
http://www.domoticz.com/wiki/Real-time_ ... Lux_sensor...
du coups en plus de mon device virtuel indiquant l'angle
je reçois dans un device texte la direction cardinale
Pour moi c'est plus parlant
http://www.domoticz.com/wiki/Real-time_ ... Lux_sensor...
du coups en plus de mon device virtuel indiquant l'angle
je reçois dans un device texte la direction cardinale
Pour moi c'est plus parlant
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
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
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
Re: bibliothèque de fonctions pour scripts LUA
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 :
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'Re: bibliothèque de fonctions pour scripts LUA
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'
Intéressant, et avec le " module.lua" ca donne quoi ?
Domoticz V2022.2
sous Buster, Homebridge,RfLink
Raspberry pi3, Google home mini
plein de truc wifi !! de l'esp-01 jusque le nodemcu en passant par le wemos et même du DIY
sous Buster, Homebridge,RfLink
Raspberry pi3, Google home mini
plein de truc wifi !! de l'esp-01 jusque le nodemcu en passant par le wemos et même du DIY
Re: bibliothèque de fonctions pour scripts LUA
Désolé mais jai pas compris la question
Si tu parles des fonctions de vil1driver la fonction Pushbullet ne sert plus mais elle peut rester en place pas besoin de la supprimer.
Si tu parles des fonctions de vil1driver la fonction Pushbullet ne sert plus mais elle peut rester en place pas besoin de la supprimer.
Re: bibliothèque de fonctions pour scripts LUA
Bonjour,
j'aime bien l'idée de faire des fonctions Lua, je me permets d'attirer votre attentions sur mes fonctions de Log et autres :
https://easydomoticz.com/forum/viewtopi ... =10&t=4437
Si ça peut aider
j'aime bien l'idée de faire des fonctions Lua, je me permets d'attirer votre attentions sur mes fonctions de Log et autres :
https://easydomoticz.com/forum/viewtopi ... =10&t=4437
Si ça peut aider
-
landaisbenj
- Messages : 695
- Inscription : 12 mars 2017, 19:24
Re: bibliothèque de fonctions pour scripts LUA
Hello.
J'aurai voulu savoir si il etait possible de faire ca: (notamment la ligne 3)
Au vu du code je suppose que la fonction arrive a faire la différence avec le "OR" (bien que je ne sache pas comment ?) et donc qu'on peut rajouter aussi le fonctionnement pour une variable.
A la base je cherche a créer un timer.
Par exemple je passe mon script, si il n'est pas valide je met ma variable a 1. Et pour le repasser je veux tester le faite que ma variable soit au moins a 1 depuis plus de 10 minutes par exemple.
Genre:
J'aurai voulu savoir si il etait possible de faire ca: (notamment la ligne 3)
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
endA la base je cherche a créer un timer.
Par exemple je passe mon script, si il n'est pas valide je met ma variable a 1. Et pour le repasser je veux tester le faite que ma variable soit au moins a 1 depuis plus de 10 minutes par exemple.
Genre:
Code : 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
Rpbi3b: Domoticz + Homebridge + Monit + Freebox scripts + Shellinabox; Rpbi2: Jarvis
Domoticz: Derniere stable; RFLINK: Dernière stable; Xiaomi Gateway
Domoticz: Derniere stable; RFLINK: Dernière stable; Xiaomi Gateway
-
vil1driver
- Messages : 5661
- Inscription : 30 janv. 2015, 11:07
- Localisation : Rennes (35)
Re: bibliothèque de fonctions pour scripts LUA
le or device de cette ligne
permet de passer outre une valeur null retournée par otherdevices_lastupdate[device]
je m'en sers pour le script double clic ou send twice (qui ne sont d'ailleurs pas à jour...)
viewtopic.php?f=17&t=401
viewtopic.php?f=17&t=480
car dans ce script j'enregistre le lastupdate directement dans une variable
je fais donc ceci pour fournir à la fonction un lastupdate spécifique par lecture du contenu de la variable
dans ton cas sans modifier la fonction ceci doit fonctionner
ce que tu propose doit fonctionner également je pense, mais je me demande bien pourquoi tu n'as pas simplement fait l'essai.. tu aurais eu ta réponse sans attendre
Code : Tout sélectionner
timestamp = otherdevices_lastupdate[device] or deviceje m'en sers pour le script double clic ou send twice (qui ne sont d'ailleurs pas à jour...)
viewtopic.php?f=17&t=401
viewtopic.php?f=17&t=480
car dans ce script j'enregistre le lastupdate directement dans une variable
je fais donc ceci pour fournir à la fonction un lastupdate spécifique par lecture du contenu de la variable
Code : Tout sélectionner
lastSeen(uservariable['ma variable'])Code : Tout sélectionner
lastSeen(uservariable_lastupdate['ta variable'])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
/!\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: bibliothèque de fonctions pour scripts LUA
Merci pour l'info ca fonctionne effectivement.dans ton cas sans modifier la fonction ceci doit fonctionner:
lastSeen(uservariable_lastupdate['ta variable'])
J'ai fais l'essai, mais j'ai eu cette erreur:
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
Du coup apres ton explication j'ai verifié et il s'agissait bien du probleme de valeur null a cause du or device.
J'ai echangé:
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 deviceRpbi3b: Domoticz + Homebridge + Monit + Freebox scripts + Shellinabox; Rpbi2: Jarvis
Domoticz: Derniere stable; RFLINK: Dernière stable; Xiaomi Gateway
Domoticz: Derniere stable; RFLINK: Dernière stable; Xiaomi Gateway