Aller au contenu

Commande netcat mais sur synology DS216J

Featured Replies

Posté(e)

Bonjour, 

Je me suis fait ma petite installation domotique sous Domoticz sur un Synology DS216J.

J'ai acheté depuis peu des Ampoules connectés Xiaomi Yeelight qui peuvent être piloté par tcp/ip, Je précise que par domoticz (dans les interrupteurs )tout se commande normalement donc l'installe est complète et fonctionnelle, mais je voudrais pouvoir les piloter via un script Lua sous domotics que voici :

commandArray = {}
    DomDevice = 'Yeelight';
    IP = '192.168.0.20'; --Ici mettre l'adresse IP Fixe de votre Lampe/Ampoule
    PORT = '55443'
 
    if devicechanged[DomDevice]=='Off' then -- turn off
        runcommandoff = "sudo echo -ne '{"id":1,"method":"set_power", "params":["off", "smooth", 500]}\r\n' | nc -w1 " ..IP.." " ..PORT.."";
        os.execute(runcommandoff);
        print(runcommandoff) 
     
    elseif devicechanged[DomDevice]=='Sunrise' then -- turn to sunrise from 0 to 100% on 15 minutes and keep bulb on
        runcommandsunrise = "sudo echo -ne '{"id":1,"method":"set_scene", "params":["cf",3,1,"50,1,16731136,1,360000,2,1700,10,540000,2,2700,100"]}\r\n' | nc -w1 " ..IP.." " ..PORT.."";
        os.execute(runcommandsunrise);
        print(runcommandsunrise) 
     
    elseif devicechanged[DomDevice]=='SunSet' then -- turn to sunset from 100% to 0 on 15 minutes and turn bulb off
        runcommandsunset = "sudo echo -ne '{"id":1,"method":"set_scene", "params":["cf",3,2,"50,2,2700,10,180000,2,1700,5,420000,1,16731136,1"]}\r\n' | nc -w1 " ..IP.." " ..PORT.."";
        os.execute(runcommandsunset);
        print(runcommandsunset) 
   
    end
return commandArray

Voyant que ça ne fonctionne pas, j'ai essayé directement via putty, ce qui m'a donné ça en retour :

-sh: nc: command not found

Linux n'étant pas ma spécialité, j'ai cherché sur le net et j'ai compris que netcat n'est pas installé sur synology.

Après pas mal des recherches et testes, je n'ai pas trouvé les fichiers nécessaires à l'installation de netcat pour DS216J, j'ai cherché après des commandes équivalentes et je n'ai rien trouvé. 😞

J'ai quand même essayé de me connecter à une yeelight en telnet via putty et envoyé une commande :

{"id":1,"method":"set_power", "params":["off", "smooth", 500]} //Eteint la Yeelight
{"id":1,"method":"set_power", "params":["on", "smooth", 500]}  //Allume la Yeelight

Et la Yeelight s'est allumé et éteinte. 🙂 

Est-ce que quelqu'un connaîtrait un bon tuto pour installer netcat ou quelque chose qui pourrait faire la même fonction??? ou encore mieux, une commande déjà intégré dans un synology. 🙂 

Merci d'avance pour vos futures réponses et à bientôt. 🙂 

 

Modifié par micmacx

Posté(e)
  • Auteur

Bonjour,

Je vais m'auto-répondre :

Pour installer netcat, c'est fait en suivant ce tuto, opkg puis netcat : https://www.codebuilder.fr/blog/installer-ipkg-opkg-java-8-serposcope-nas-synology-dsm-5-6/

Maintenant en me connectant à mon syno par putty avec mon pseudo admin, ça fonctionne, avec la commande "netcat" mais pas "nc", et toujours pas par le script.

Au passage j'ai un peu changé le script et maintenant je n'ai plus aucune erreur dans domoticz 

commandArray = {}
    DomDevice = 'Yeelight';
 
    if devicechanged[DomDevice]=='Off' then -- turn off
        runcommandoff = "sudo echo -ne '{\"id\":1,\"method\":\"set_power\", \"params\":[\"off\", \"smooth\", 500]}\\r\\n' | netcat -w1 192.168.0.20 55443";
        os.execute(runcommandoff);
        print(runcommandoff) 
    elseif devicechanged[DomDevice]=='On' then -- turn off
        runcommandon = "sudo echo -ne '{\"id\":1,\"method\":\"set_power\", \"params\":[\"on\", \"smooth\", 500]}\\r\\n' | netcat -w1 192.168.0.20 55443";
        os.execute(runcommandon);
        print(runcommandon) 
    end
return commandArray

Je pense que ça doit être une question de droits.

Maintenant, comment faire pour changer ces droits pour que domoticz via les scripts lua puisse lancer ces commandes???

 

Merci d'avance pour vos futures réponses (si il y a) et à bientôt. 🙂 🙂 🙂 

Modifié par micmacx

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.