[TUTO] Piloter sa box Domoticz avec Google Assistant

Vous avez crée un script lua dont vous êtes fier, un .sh génial, un programme python hors du commun, un tuto , c'est ici que vous pouvez les partager.
Soyez précis quant aux prérequis, les manips à faire pour que votre bijou fonctionne (des chmod ?, un apt-get à faire ...)
Décrivez précisément son fonctionnement
Placez votre code entre [Quote] et {/Quote]
Phebus06
Messages : 197
Enregistré le : 26 janv. 2017, 09:25

Re: [TUTO] Piloter sa box Domoticz avec Google Assistant

Message par Phebus06 »

Re c'est encore moi :)

Afin de comprendre le script, puisque je suis une bille en programmation mais que j'aime bien bidouiller, j'aimerai savoir qu'elle phrase le script envoi en se servant du capteur virtuel texte ??? est ce un phrase en API json un peu du style de celle que l'on met dans webhook ???

Phebus06
Messages : 197
Enregistré le : 26 janv. 2017, 09:25

Re: [TUTO] Piloter sa box Domoticz avec Google Assistant

Message par Phebus06 »

Bon je me répond à moi même en fait il m 'a fallu juste digérer le fonctionnement général et finalement c'est l'action IFTTT qui est en API/json et c'est juste le programme en lua qui lit le capteur virtuel texte et qui envoi un ordre à Domoticz par un simple commandArray des plus classiques :lol:

Phebus06
Messages : 197
Enregistré le : 26 janv. 2017, 09:25

Re: [TUTO] Piloter sa box Domoticz avec Google Assistant

Message par Phebus06 »

Petit TUTO complément de ce super script pour commander aussi sa Tv mais en passant par un Broadlink pro :
Le fonctionnement :
Un ordre est donné par la voix Google Homme mini vers IFTTT vers Domoticz Capteur virtuel texte vers programme en Lua vers Interrupteur virtuel Chaîne Tv vers Broadlink pro vers ma TV en infra rouge :D

IFTTT :
IFTTT 01.png
IFTTT 01.png (27 Kio) Vu 3378 fois
IFTTT 2.png
IFTTT 2.png (41.49 Kio) Vu 3378 fois
Domoticz Interrupteur virtuel :
Interrupteur virtuel Tv.png
Interrupteur virtuel Tv.png (85.08 Kio) Vu 3378 fois
Interrupteur virtuel Tv 2.png
Interrupteur virtuel Tv 2.png (125.03 Kio) Vu 3378 fois
Bout de programme à rajouter

Code : Tout sélectionner

 elseif command == 'Tv' then										
            local text = get(deviceValue, 2):gsub("%W", ""):lower()
            local value = get(deviceValue, 3)
            for Tv,words in pairs(Tv) do
                for word in words:gmatch("%w+") do
                    if text == word then
                      local chaine = value
						if (tonumber(chaine) < 10) then
						local chaine = chaine *10
						commandArray[Tv] = 'Set Level: ' .. chaine
						
						elseif (tonumber(chaine) > 9) and (tonumber(chaine) ~= 10) and (tonumber(chaine) ~= 20) and (tonumber(chaine) ~= 30) and (tonumber(chaine) ~= 40) and (tonumber(chaine) ~= 50) then
						local chaine1 = (string.sub(chaine,1,1) *10)
						local chaine2 = (string.sub(chaine,2,2) *10)
						print (chaine1)
						print (chaine2)
						commandArray[1] = {[Tv] = 'Set Level: ' .. chaine1}
						commandArray[2] = {[Tv] = 'Set Level: ' .. chaine2 .. ' AFTER 1'}
						
						elseif (tonumber(chaine) == 10) or (tonumber(chaine) == 20) or (tonumber(chaine) == 30) or (tonumber(chaine) == 40) or (tonumber(chaine) == 50) then
						local chaine1 = (string.sub(chaine,1,1) *10)
						local chaine2 = (string.sub(chaine,2,2) +100)
						print (chaine1)
						print (chaine2)
						commandArray[1] = {[Tv] = 'Set Level: ' .. chaine1}
						commandArray[2] = {[Tv] = 'Set Level: ' .. chaine2 .. ' AFTER 1'}
						
                    end
                end
            end
        end
Et voilou....

Gleneroo
Messages : 24
Enregistré le : 05 juin 2018, 14:12

Re: [TUTO] Piloter sa box Domoticz avec Google Assistant

Message par Gleneroo »

Bonjour

J'ai mis en place cette solution et cela fonctionne bien pour allumer / éteindre les lumières, ainsi que descendre complètement ou monter complètement les volets roulants.

Par contre la fonction "règle" ne fonctionne pas avec les volets roulants.

Voici par exemple un volet roulant:
Image

J'imagine bien que c'est entre les lignes 73 et 82 que je dois changer un truc... Apparemment remplacer le 'set' par l'intruction qui va bien et faire qu'elle s'applique bien au type blinds... Je veux bien un peu d'aide.

Merci

Gleneroo
Messages : 24
Enregistré le : 05 juin 2018, 14:12

Re: [TUTO] Piloter sa box Domoticz avec Google Assistant

Message par Gleneroo »

Ca ne fonctionne pas (réglage position volets roulants).

J'ai essayé ça:
elseif command == 'set' then
local value = get(deviceValue, 3)
local text = get(deviceValue, 2):gsub("%W", ""):lower()
for blind,words in pairs(blinds) do
for word in words:gmatch("%w+") do
if text == word then
commandArray['SetSetPoint:' ..blind] = '' ..value
end
end
end

Et j'ai essayé ça:
elseif command == 'set' then
local value = get(deviceValue, 3)
local text = get(deviceValue, 2):gsub("%W", ""):lower()
for blind,words in pairs(blinds) do
for word in words:gmatch("%w+") do
if text == word then
commandArray[blind] = 'Set Level: ' .. value
end
end
end

Aucun des deux ne fonctionne

Gleneroo
Messages : 24
Enregistré le : 05 juin 2018, 14:12

Re: [TUTO] Piloter sa box Domoticz avec Google Assistant

Message par Gleneroo »

Réponse:
https://github.com/domoticz/domoticz/issues/3827
commandArray[blind] = 'Set Level: ' .. tostring(value)

Gleneroo
Messages : 24
Enregistré le : 05 juin 2018, 14:12

Re: [TUTO] Piloter sa box Domoticz avec Google Assistant

Message par Gleneroo »

Au lieu d'voir toujours "d'accord" comme réponse, pour avoir une réponse plus contextuelle, on peut modifier le script ainsi:

Code : Tout sélectionner

 
 elseif command == 'switch' then
            local appconnu=false
            local deja=false
            local value = get(deviceValue, 2)
            local text = get(deviceValue, 3):gsub("%W", ""):lower()
            for switch,words in pairs(switchs) do
                for word in words:gmatch("%w+") do
                    if text == word then
                        if otherdevices[switch]==value and value=='On' then
                            os.execute('curl -s --globoff "http://192.168.1.104:1880/nodered?mess=3"') -- déjà allumé
                            deja=true
                            print ("déjà allumé")
                        end
                        if otherdevices[switch]==value and value=='Off' then 
                            os.execute('curl -s --globoff "http://192.168.1.104:1880/nodered?mess=2"') -- déjà éteint
                            deja=true
                            print ("déjà éteint")
                        end
                        appconnu=true
                        commandArray[switch] = value
                        if deja == false then
                            os.execute('curl -s --globoff "http://192.168.1.104:1880/nodered?mess=1"') -- c'est bon
                            print ("c'est bon")
                        end
                    end
                end
            end
            for sensor,words in pairs(sensors) do
                for word in words:gmatch("%w+") do
                    if text == word then
                        commandArray[sensor] = value
                    end
                end
            end
            if appconnu==false then
                os.execute('curl -s --globoff "http://192.168.1.104:1880/nodered?mess=4"') -- pas trouvé d'appareil
                print ("pas trouvé d'appareil")
            end
    end
Cela permet d'avoir un message personalisé
si on demande d'allumer (ou d'éteindre) un appareil inconnu "appareil inconnu" "je ne vois pas d'appareil de ce nom" etc,
si l'appareil est déjà allumé (ou éteint) "c'est déjà allumé" "c'est déjà éteint" "c'est déjà le cas"
ou si l'opération a été faite "c'est fait" "voilà" "c'est bon" etc.

Il faut installer node red (tient bien sur le même rPi), mettre à jour les adresses, et se mettre un petit programmer dans node red avec:
- http GET avec /mess dans mon cas
- un switch pour recueillir la situation (1/2/3/4 dans mon cas ; vous pouvez aussi transmettre directement le message à faire dire en Base64 si vous préférez, mais BASE64 marche pas bien pour les accents alors j'ai tout mis sur node red directement)
- un random et un autre switch si comme moi vous aimez bien varier aléatoirement les réponses.
- le node dédié pour faire parler le google home (actuellement c'est cast2 je crois)

Le flow node red:
Image


Dans IFTTT, enlever le "d'accord" et remplacer par le gros point (comme dans l'IFTTT pour la température).

Un autre tuto ou le contributeur a fait une manip similaire:
viewtopic.php?t=4617&start=110
neosqualls 06/02/2018 06:39
Modifié en dernier par Gleneroo le 29 janv. 2020, 19:45, modifié 1 fois.

djksage
Messages : 190
Enregistré le : 16 déc. 2015, 19:42

Re: [TUTO] Piloter sa box Domoticz avec Google Assistant

Message par djksage »

Mais c'est ce qu'il manque au GH, des réponses plus naturelle que le OK, d'accord,...

Par contre un petit tuto dédié à cette fonction serait vraiment appréciable de tous car en lisant l'autre poste et le tiens j'ai pas l'impression de pouvoir le faire fonctionner par manque de connaissance et compréhension de mode red.

En tous cas merci

Envoyé de mon HD1913 en utilisant Tapatalk


Gleneroo
Messages : 24
Enregistré le : 05 juin 2018, 14:12

Re: [TUTO] Piloter sa box Domoticz avec Google Assistant

Message par Gleneroo »

djksage a écrit :
29 janv. 2020, 07:52
Mais c'est ce qu'il manque au GH, des réponses plus naturelle que le OK, d'accord,...

Par contre un petit tuto dédié à cette fonction serait vraiment appréciable de tous car en lisant l'autre poste et le tiens j'ai pas l'impression de pouvoir le faire fonctionner par manque de connaissance et compréhension de mode red.

En tous cas merci Image

Envoyé de mon HD1913 en utilisant Tapatalk
Hello ! Je ne vais pas faire un tuto plus détaillé, mais si tu essaies de le mettre en place et que tu as des questions précises, je peux t'aider. La première étape est d'installer node red. Il y a plein de tutos disponibles en ligne. Voici comment l'installer sur raspberry: https://nodered.org/docs/getting-started/raspberrypi :D

J'ai édité mon post plus haut pour ajouter le flow node red. Ce n'est probablement pas idéal (mon premier essai avec node red), mais ça fonctionne nickel.

viju
Messages : 2
Enregistré le : 08 avr. 2018, 12:18

Re: [TUTO] Piloter sa box Domoticz avec Google Assistant

Message par viju »

Bonsoir à tous,
Tout d’abord merci pour l’animation, les super tutos de vous proposez , je vous lis tous les jours avec un grand plaisir .
J’avais installé GNOTIFY ( je ne retrouve plus comment …)sur ma carte SD qui a laché .J’ai voulu réinstaller gnotify : Impossible de faire coexister avec DOMOTICZ . Au démarrage de Domoticz j’ai la version:
2020-01-23 21:42:53.946 Status: PluginSystem: Started, Python version '3.4.4'.
(J’ai été obligé de désynstaller python 3.7 car domoticz bug,j’ai réinstallé python 3.4 domoticz refonctionne mais je n’ai plus pip3 ..)et toujours plus de control des volets , ma TV par la voix..
Comment faire pour avoir pip3 avec une version acceptée par DOMOTICZ ?
voila mes logs
Lorsque je lance l’installation de gnotify j’ai un échec :
pi@raspberrypi:~ $ sudo pip3 install pip --upgrade
sudo: pip3 : commande introuvable
pi@raspberrypi:~ $ python -V
Python 2.7.16
pi@raspberrypi:~ $ python3 -V
-bash: python3 : commande introuvable
pi@raspberrypi:~ $ pip2 --version
pip 18.1 from /usr/lib/python2.7/dist-packages/pip (python 2.7)
pi@raspberrypi:~ $ pip3 --version
-bash: pip3 : commande introuvable
Voila les versions installées:
pi@raspberrypi:~ $ ls /usr/bin/python*
/usr/bin/python /usr/bin/python3.4
/usr/bin/python2 /usr/bin/python3.4-config
/usr/bin/python2.7 /usr/bin/python3.4m
/usr/bin/python2.7-config /usr/bin/python3.4m-config
/usr/bin/python2-config /usr/bin/python-config
/usr/bin/python2-pbr
pi@raspberrypi:~ $

pi@raspberrypi:~ $ dpkg --get-selections | grep libpython
libpython-all-dev:armhf install
libpython-dev:armhf install
libpython-stdlib:armhf install
libpython2-dev:armhf install
libpython2-stdlib:armhf install
libpython2.7:armhf install
libpython2.7-dev:armhf install
libpython2.7-minimal:armhf install
libpython2.7-stdlib:armhf install
libpython3.5:armhf install
libpython3.5-dev:armhf install
libpython3.5-minimal:armhf install
libpython3.5-stdlib:armhf install
libpython3.7-minimal:armhf deinstall

j'ai essayé update-alternatives ...NOK
Au démarrage Domoticz j’ai la version:
2020-01-23 21:42:53.946 Status: PluginSystem: Started, Python version '3.4.4'.
J’ai été obligé de désynstaller python 3.7 car domoticz bug, mais forcément je n’ai plus pip3 ..
Comment faire pour avoir pip3 avec une version acceptée par DOMOTICZ ?
Merci pour votre aide, j'ai beaucoup lu surpython,beaucoup testé , beaucoup planté mais la je suis sec....

Répondre