Page 1 sur 1
Variateur lumière pour piloter script .sh (NanoLeaf)
Publié : 21 janv. 2020, 10:09
par marcus_54
Bonjour,
J'ai acheté un ensemble de NanoLeaf.
Je me suis fait une série de commande dont un sélecteur de luminosité de 10% 25 50 75 100% en utilisant des scripts "nano_lum25.sh"
Code : Tout sélectionner
#!/bin/bash
curl --location --request PUT 'http://192.168.0.17:16021/api/v1/BxEautevcodebidonU8kJVATc6CuIkY/state' \
--header 'Content-Type: application/json' \
--data-raw '{"brightness" : {"value":25}}'
Pensez-vous qu'il serait possible de réaliser un "Dimmer" pour permettre une plus grande finesse de réglage ?
Marc
Re: Variateur lumière pour piloter script .sh (NanoLeaf)
Publié : 21 janv. 2020, 11:50
par boum
C'est relativement simple à faire en dzVents. Il suffit de créer un dummy Switch, puis de le modifier pour le changer en Dimmer.
Ensuite, le script permet de changer le niveau, il faut rajouter la commande pour éteindre l'appareil :
Code : Tout sélectionner
return {
on = {
devices = {
'DimmerLeaf'
}
},
execute = function(domoticz, item)
domoticz.log('Device ' .. item.name .. ' was changed', domoticz.LOG_INFO)
if item.active then
local level = item.level
local command = [[curl --location --request PUT 'http://192.168.0.17:16021/api/v1/BxEautevcodebidonU8kJVATc6CuIkY/state' --header 'Content-Type: application/json' --data-raw '{"brightness" : {"value":%d}}' &]]
command = string.format(command, level)
os.execute(command)
else
-- Commande pour couper la lampe
end
end
}
Pas testé (à part la syntaxe).
Il est possible d'utiliser domoticz.openURL() plutôt qu'un os.execute(curl) (cf.
https://www.domoticz.com/wiki/DzVents:_ ... P_requests ). Mais ça ne devrait pas changer grand chose.
Re: Variateur lumière pour piloter script .sh (NanoLeaf)
Publié : 21 janv. 2020, 13:22
par marcus_54
Merci super,
je teste aujourd'hui et je vous tient au courant
Re: Variateur lumière pour piloter script .sh (NanoLeaf)
Publié : 21 janv. 2020, 17:12
par marcus_54
Bonsoir,
La commande de variation fonctionne super bien
J'ai été un peu vite la commande off ne fonctionne pas, le curseur reprend sa position après quelques secondes...
Code : Tout sélectionner
return {
on = {
devices = {
'NanoLeaf Lum'
}
},
execute = function(domoticz, item)
domoticz.log('Device ' .. item.name .. ' was changed', domoticz.LOG_INFO)
if item.active then
local level = item.level
local command = [[curl --location --request PUT 'http://192.168.0.17:16021/api/v1/BxEcodebidonIkY/state' --header 'Content-Type: application/json' --data-raw '{"brightness" : {"value":%d}}' &]]
command = string.format(command, level)
os.execute(command)
else
local command = [[curl --location --request PUT 'http://192.168.0.17:16021/api/v1/BxEcodebidonIkY/state' --header 'Content-Type: application/json' --data-raw '{"on": {"value": false}}' &]]
end
end
}
Re: Variateur lumière pour piloter script .sh (NanoLeaf)
Publié : 21 janv. 2020, 22:33
par boum
La commande est-elle exécutée ? Je ne vois pas le os.execute dans ce cas.
Pour factoriser et faciliter de futurs changements, on peut réécrire comme ça :
Code : Tout sélectionner
return {
on = {
devices = {
'NanoLeaf Lum'
}
},
execute = function(domoticz, item)
domoticz.log('Device ' .. item.name .. ' was changed', domoticz.LOG_INFO)
local command = [[curl --location --request PUT 'http://192.168.0.17:16021/api/v1/BxEcodebidonIkY/state' --header 'Content-Type: application/json' --data-raw '{"%s" : { "value": %s }}' &]]
if item.active then
local level = item.level
command = string.format(command, 'brightness', tostring(level))
else
command = string.format(command, 'on', 'false')
end
os.execute(command)
end
}
Re: Variateur lumière pour piloter script .sh (NanoLeaf)
Publié : 22 janv. 2020, 08:09
par marcus_54
Ça fonctionne,
bravo et merci tu es un chef

Re: Variateur lumière pour piloter script .sh (NanoLeaf)
Publié : 30 nov. 2023, 16:52
par marcus_54
Bonjour
Depuis ce dernier message j'ai acheté un nouvel ensemble nanoleaf, et j'ai voulu le piloter de la même façon que le précédent.
J’ai réalisé le même widget avec un gradateur.
J'ai fait un copier-coller du script qui est présenté un peu plus haut. Et bien évidemment ça ne fonctionne pas
J’ai cette erreur :Error: EventSystem: Lua script NanoLinesLum did not return a commandArray
Je pense que c'est juste la nouvelle syntaxe qui est utilisée pour les dzvents
Est-ce que quelqu'un pourrait me corriger le code pour qu'il fonctionne s'il vous plait ?
Code : Tout sélectionner
return {
on = {
devices = {'NanoLines_Lum'}
},
execute = function(domoticz, item)
domoticz.log('Device ' .. item.name .. ' was changed', domoticz.LOG_INFO)
local command = [[curl --location --request PUT 'http://192.168.0.21:16021/api/v1/4K6CtAtwcodebidonwtYMYL/state' --header 'Content-Type: application/json' --data-raw '{"%s" : { "value": %s }}' &]]
if item.active then
local level = item.level
command = string.format(command, 'brightness', tostring(level))
else
command = string.format(command, 'on', 'false')
end
os.execute(command)
end
}
Merci
Re: Variateur lumière pour piloter script .sh (NanoLeaf)
Publié : 30 nov. 2023, 18:56
par Keros
L'erreur indique que le script n'a pas les sorties normales pour du LUA. Ce qui est normal puisque que le code est du DzVents.
Tu as mis ce script où ? Je pense que tu as dû faire un micmac quelque part.
Re: Variateur lumière pour piloter script .sh (NanoLeaf)
Publié : 30 nov. 2023, 19:10
par marcus_54
Effectivement,
J'étais persuadé que c'était du LUA.
Je l'ai remis en DZvent et ça fonctionne nickel.
Un grand merci