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 :P

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. :roll:
Je l'ai remis en DZvent et ça fonctionne nickel.

Un grand merci