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

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
marcus_54
Messages : 425
Inscription : 28 févr. 2018, 12:15

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

Message 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
Domoticz 2024.7
Domoticz sur RPI 4B+ : MQTT; MQTTMapper; Zigbee; RFlink DIY 433; Téléinfo; DS18B20; Capteur; compteur eau wmbusmeter, NanoLeaf...
boum
Messages : 233
Inscription : 18 janv. 2019, 11:34
Localisation : France

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

Message 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.
Domoticz v2022.2 sur linux-mint / Z-Wave-JS / RFXCom / Zigbee2MQTT
marcus_54
Messages : 425
Inscription : 28 févr. 2018, 12:15

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

Message par marcus_54 »

Merci super,
je teste aujourd'hui et je vous tient au courant
Domoticz 2024.7
Domoticz sur RPI 4B+ : MQTT; MQTTMapper; Zigbee; RFlink DIY 433; Téléinfo; DS18B20; Capteur; compteur eau wmbusmeter, NanoLeaf...
marcus_54
Messages : 425
Inscription : 28 févr. 2018, 12:15

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

Message 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
}
Domoticz 2024.7
Domoticz sur RPI 4B+ : MQTT; MQTTMapper; Zigbee; RFlink DIY 433; Téléinfo; DS18B20; Capteur; compteur eau wmbusmeter, NanoLeaf...
boum
Messages : 233
Inscription : 18 janv. 2019, 11:34
Localisation : France

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

Message 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
}
Domoticz v2022.2 sur linux-mint / Z-Wave-JS / RFXCom / Zigbee2MQTT
marcus_54
Messages : 425
Inscription : 28 févr. 2018, 12:15

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

Message par marcus_54 »

Ça fonctionne,

bravo et merci tu es un chef :)
Domoticz 2024.7
Domoticz sur RPI 4B+ : MQTT; MQTTMapper; Zigbee; RFlink DIY 433; Téléinfo; DS18B20; Capteur; compteur eau wmbusmeter, NanoLeaf...
marcus_54
Messages : 425
Inscription : 28 févr. 2018, 12:15

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

Message 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
Domoticz 2024.7
Domoticz sur RPI 4B+ : MQTT; MQTTMapper; Zigbee; RFlink DIY 433; Téléinfo; DS18B20; Capteur; compteur eau wmbusmeter, NanoLeaf...
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

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

Message 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.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
marcus_54
Messages : 425
Inscription : 28 févr. 2018, 12:15

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

Message 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
Domoticz 2024.7
Domoticz sur RPI 4B+ : MQTT; MQTTMapper; Zigbee; RFlink DIY 433; Téléinfo; DS18B20; Capteur; compteur eau wmbusmeter, NanoLeaf...
Répondre