Erreur lors de l'envoi d'une commande vers une ampoule Yeelight en script

Forum dédié à la Gateway ZigBee Xiaomi.
Merci de ne pas poster de questions ici concernant les objets ZigBee Xiaomi, utilisez le forum ZigBee pour cela.
fleup
Messages : 12
Inscription : 24 févr. 2020, 13:47

Erreur lors de l'envoi d'une commande vers une ampoule Yeelight en script

Message par fleup »

Bonjour,

voici mon problème :
* j'ai plusieurs ampoule Yeelight dans mon réseau pour lesquelles j'ai une IP fixe et connue
* je viens de basculer mon système domoticz d'un serveur physique à un container Docker et j'ai tout reparamétré.

Tout fonctionne bien sauf l'envoi de commande vers mes ampoules Yeelight en script.

J'ai refait un script dzVents simple de test pour illustrer le problème (En pratique, j'ai un script un peu plus compliqué pour gérer une simulation d'aube au réveil, ceci n'est qu"un script de test qui allume/éteint l'ampoule toutes les minutes):

Code : Tout sélectionner

return {
	on = {
		timer = {
		    'every 1 minutes'
		}
	},

	logging = {
		level = domoticz.LOG_DEBUG,
		marker = "TEST_Yeelight"
        },

	execute = function(domoticz, triggeredItem)

	        if (triggeredItem.isTimer) then
			command = "echo -ne '{\"id\":1,\"method\":\"toggle\", \"params\":[]}\\r\\n' | nc -w1 192.168.1.91 55443";
			print("command : "..command);
            		local handle = io.popen(command);
        		local result = handle:read("*a");
			print("result : "..result);
			handle:close();
			print(result);
		end
	end
}

Lorsque la commande est envoyée à l'ampoule chaque minute, j'ai le retour suivant:
{"id":0, "error":{"code":-1, "message":"invalid command"}}

alors que si j'éxécute la même commande directement depuis la ligne de commande (shell) de mon container Domoticz, ça fonctionne correctement et j'ai le retour suivant :
{"id":1,"result":["ok"]}
{"method":"props","params":{"power":"off"}}


Avant de basculer domoticz vers Docker, je n'avais pas le problème... alors est ce que c'est lié ??

Je suis à l'écoute de toute piste, car là je sèche un peu
fleup
Messages : 12
Inscription : 24 févr. 2020, 13:47

[Résolu] Re: Erreur lors de l'envoi d'une commande vers une ampoule Yeelight en script

Message par fleup »

J'ai fini par trouver une solution pour contourner le problème.

Je ne comprends toujours pas pourquoi la commande passe depuis la console de mon container mais pas depuis le scripter, mais j'ai remplacé le script précedent par celui-ci :

Code : Tout sélectionner

return {
	on = {
		timer = {
		    'every 1 minutes'
		}
    },

	logging = {
        level = domoticz.LOG_DEBUG,
        marker = "Réveil Solaire"
    },

	execute = function(domoticz, triggeredItem)
        local now = os.time();
        local heure=string.sub(os.date("%X", os.time()), 0, 5);
        local heureDebut = domoticz.variables('aubeStartTime').value
        if(heure==heureDebut) then
            print("Démarrage du réveil solaire...");
            domoticz.executeShellCommand('/home/startAube.sh')
        else
            print("Aube programmée à : "..heureDebut);
        end
	end
}
et j'ai créer un fichier de commande startAube.sh :

Code : Tout sélectionner

#!/bin/bash
echo -ne '{"id":1,"method":"set_scene", "params":["cf",3,2,"600000,2,2700,70, 300000,2,5400,100, 1800000,2,5400,100"]}\r\n' | nc -w1 192.168.1.92 55443
exit
et comme ça je retrouve le comportement que j'avais avant mon passage sous docker.
Répondre