Page 1 sur 1

Variateur lumière pour piloter script .sh (NanoLeaf)

Posté : 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)

Posté : 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)

Posté : 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)

Posté : 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)

Posté : 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)

Posté : 22 janv. 2020, 08:09
par marcus_54
Ça fonctionne,

bravo et merci tu es un chef :)