Faire dire des données mesurées par Domoticz à Google Home

Posez ici vos questions d'utilisation, de configuration de DomoticZ, de bugs, de conseils sur le logiciel lui même dans son utilisation et son paramétrage.
Des forums spécifiques sont ouverts ci-dessous pour regrouper les différents sujets.
fab0030
Messages : 102
Inscription : 24 nov. 2016, 17:04

Re: Faire dire des données mesurées par Domoticz à Google Home

Message par fab0030 »

ok, je vais essayer d'expliquer...!
je me suis effectivement inspiré du travail fait sous jeedom ! (merci à eux)
N'ayant pas trouvé comment déclencher un script sur mon pi via une url à partir d'une autre machine je passe par ssh2.
Mon premier script sur le nas passe une commande de type ssh au pi.
Pour ça il faut installer la librairie libssh2 sur le pi

Code : Tout sélectionner

sudo apt-get install libssh2-1
et de mémoire j'ai installé également php-ssh2

Code : Tout sélectionner

sudo apt-get install php-ssh2
Puis sur le nas (synology) activer ssh2 :
Dans Web Station, aller dans Paramètre PHP, sélectionner la ligne PHP, cliquer Modifier, puis dans Extensions cocher SSH2.

Sur le nas j'ai un script qui sera appelé par IFTTT (pour répondre à par exemple ok google quelle est la température de la salle de bain) qui déclenchera le script sur le pi....(faut suivre !!)
J'ai créé un user sur le nas qui n'a accès qu'à l’exécution de scripts dans un dossier sous www

script sur le nas :

Code : Tout sélectionner

<?php
$hostname = 'IP_RASPBERRY';  // adresse de la machine distante (adresse ip ou nom de domaine)
$known_host = 'xxxxxxxxxxxxxxxxxxxxxxxxx'; // fingerprint de la machine distante
$username = 'xxxxxxxxxxx'; // nom de l'utilisateur pour la machine distante
$password = 'xxxxxxxxxxx';  // mot de passe de l'utilisateur
$commande = '///home/pi/domoticz/scripts/sh/xxxxxxxxxxx.sh';    // commande shell à envoyer à la machine cible
 
// Etablissement de la connexion ssh2, port 22
if (false === $connection = ssh2_connect($hostname, 22)) {
  echo 'pas de connexion<br />';
  exit();  // sortie si erreur
  }
else {
  echo 'connexion établie<br />';
  }
 
// Vérification du fingerprint
$fingerprint = ssh2_fingerprint($connection, SSH2_FINGERPRINT_MD5 | SSH2_FINGERPRINT_HEX);
if ($fingerprint != $known_host) {
  echo "La clé hôte ne correspond pas !<br />";
  echo "clé renvoyée: ".$fingerprint.'<br />';
  exit(); // sortie si erreur
  }
else {
  echo "fingerprint conforme <br />";
  }
 
//authentification utilisateur
if (false === ssh2_auth_password($connection, $username, $password)) {
  echo 'Echec identification<br />';
  exit(); // sortie si erreur
  }
else {
  echo 'Identification réussie !<br />';
  }
 
//exécution command shell sur la machine destinataire
if (false === $stream = ssh2_exec($connection, $commande)) {
  echo "erreur d'exécution commande shell<br />";
  }
 
fclose($stderr);
fclose($stream);
?>
à adapter IP, user, pwd, fingerprint, et chemin vers le script du pi.

Ensuite la partie TTS (sur le raspberry) :

Il faut installer stream2chromecast, de mémoire j'ai installé également pico2wave, sox et un module MP3

Code : Tout sélectionner

sudo apt-get install sox

Code : Tout sélectionner

sudo apt-get install libsox-fmt-mp3
Ensuite écrire le script qui récupère une donnée de domoticz, génère le MP3 et fait lire à google home ou chromecast

Code : Tout sélectionner

#!/bin/bash

function jsonValue() {
   KEY=$1
   num=$2
   awk -F"[,:}]" '{for(i=1;i<=NF;i++){if($i~/'$KEY'\042/){print $(i+1)}}}' | tr -d '"' | sed -n ${num}p
}
DOMOTICZ=`curl -s --connect-timeout 2 --max-time 5 "http://IPDOMOTICZ:8080/json.htm?type=devices&rid=42"`
if [ -z "$DOMOTICZ" ]
then
   exit 1
else
   DATA=$(echo $DOMOTICZ | jsonValue Data 1)
   
   #echo $DATA
   
   DATACLEAN="$(sed 's/.* \([0-9.]\{1,\}\) .*/\1/g' <<< "${DATA}")"		#enléve Watt après le résultat
   
   #echo $DATACLEAN
   
   DATACLEAN2=${DATACLEAN%%.*}		#arrondi en nombre entier ex : 605.0 devient 605
   
   #echo $DATACLEAN2
   
   #DATACLEAN3="$(sed 's/\./\,/g' <<< "${DATACLEAN2}")" #remplace le point par la virgule
   
fi

sudo pico2wave -l fr-FR -w /tmp/MonMessage.wav "la consommation électrique instantanée est de $DATACLEAN2 watt"
	# on récupère la variable texte et on la transforme en fichier wave
sudo sox /tmp/MonMessage.wav -r 48k /tmp/MonMessage.mp3
	# on la passe en MP3 en débit 48 K pour réduire sa taille et on la stocke dans un répertoire temporaire - vous pouvez changer la valeur de 48 K
sudo python /home/pi/stream2chromecast/stream2chromecast.py -devicename 192.168.1.62 /tmp/MonMessage.mp3
	# alors la on se trompe pas : /home/pi/stream2chromecast/stream2chromecast.py doit bien correspondre à votre répertoire
	# -devicename 192.168.1.26 : remplacer l'IP google home par la votre .....
	# sudo python : on exécute le code python avec les doits sudo

A adapter avec votre ip domoticz, votre n° de device, votre ip google home et votre phrase à faire lire ("la consommation....)
un coup de chmod +x nomduscript
et test pour voir...ou entendre si tout va bien !!
comme à chaque fois y a surement mieux mais ça fonctionne et sans laisser accessible tout domoticz sur le cloud...
js-martin
Messages : 487
Inscription : 22 mars 2015, 22:08
Contact :

Re: Faire dire des données mesurées par Domoticz à Google Home

Message par js-martin »

merci d'avoir passer du temps à expliquer ce que tu as fait !

Ta solution est intéressante.

Si j'ai bien compris, tu fais faire le traitement de TTS sur ton pi dédié à la domotique. Peut-être que l'on pourrait faire ce travail au niveau du NAS qui ne fera qu'une requête curl pour aller chercher les informations souhaitées sur le pi. Sauf si tu as une bonne raison de le faire faire par ton pi...
Dernière modification par js-martin le 17 janv. 2018, 17:19, modifié 2 fois.
Domotisation de : mes compteurs EDF, solaire, eau / mon alarme / ma Chaudière Viessamnn / mon congel / ma sonnette. Matériels : Pi2 - RFXTrx433e - Zwave+ Aeotec, ampoules Hue - Détecteur et prises Fibaro - Capteurs Oregon - présentation installation => lien
fab0030
Messages : 102
Inscription : 24 nov. 2016, 17:04

Re: Faire dire des données mesurées par Domoticz à Google Home

Message par fab0030 »

de rien!
oui je fais le traitement TTS sur le pi, mais sur le nas ça doit être jouable aussi.
J'ai un script par action, pour n'avoir qu'un seul script il faudrait passer des mots clés dans la requête IFTTT, récupérer ces mots et adapter le script TTS...j'ai pas regardé si c'est possible.
Je mis le TTS sur le pi car ça me paraissait plus simple de déclencher une sortie vocale sur un événement autre que "OK google..." avec IFTTT, on peut faire facilement une sortie vocale sur un événement déclenché par domoticz par exemple.
Pour résumer chez moi : 2 cas pour le faire parler
soit lui demander quelque chose : "OK google..." + IFTT vers nas puis TTS sur pi puis retour vocal sur GH
soit un changement d'état domoticz puis TTS sur pi puis retour vocal sur GH
js-martin
Messages : 487
Inscription : 22 mars 2015, 22:08
Contact :

Re: Faire dire des données mesurées par Domoticz à Google Home

Message par js-martin »

Tu dois du coup laisser le port 80 de ton NAS ouvert. Tu as fait une redirection de port pour le protéger un peu ?

Il faut que je teste...
Domotisation de : mes compteurs EDF, solaire, eau / mon alarme / ma Chaudière Viessamnn / mon congel / ma sonnette. Matériels : Pi2 - RFXTrx433e - Zwave+ Aeotec, ampoules Hue - Détecteur et prises Fibaro - Capteurs Oregon - présentation installation => lien
js-martin
Messages : 487
Inscription : 22 mars 2015, 22:08
Contact :

Re: Faire dire des données mesurées par Domoticz à Google Home

Message par js-martin »

Premiers tests réussis pour faire parler ma Google Home avec stream2chromecast.

Pour récupérer ce code pyhton :

Code : Tout sélectionner

git clone https://github.com/bronche/stream2chromecast
Je trouve cela pratique pour les notifications de Domoticz.

Il est possible de régler le volume de la Google Home (pour faire varier le volume en fonction de l'heure... ) :

Code : Tout sélectionner

sudo python /home/pi/stream2chromecast/stream2chromecast.py -devicename votre-ip -setvol 0.8
(0.8 = 80% du volume)

Je suis toujours en local, tout va bien :lol:
Domotisation de : mes compteurs EDF, solaire, eau / mon alarme / ma Chaudière Viessamnn / mon congel / ma sonnette. Matériels : Pi2 - RFXTrx433e - Zwave+ Aeotec, ampoules Hue - Détecteur et prises Fibaro - Capteurs Oregon - présentation installation => lien
DavidTrier
Messages : 62
Inscription : 07 nov. 2017, 20:05

Re: Faire dire des données mesurées par Domoticz à Google Home

Message par DavidTrier »

Bonjour,

Merci pour vos éléments qui ont l'air de fonctionner. Malheureusement, mon niveau ne me permet pas de comprendre tout ce que vous avez fait ni de le refaire chez moi.

Serait-il possible d'avoir un petit tuto "pour les nuls"... :oops:

En particulier, voici ce que je ne comprends pas :
- comment configurer IFTTT pour que le GH réponde à une demande spécifique qui va lui faire énoncer une valeur lue chez Domoticz? Ex. : "combien fait-il dans la chambre?" Quelle applet pour que IFTTT envoie le script à Domoticz?
- faut-il passer par IFTTT pour qu'une notification de Domiticz soit lue par le GH?
- à quoi sert la connection SSH2 évoquée par fab0030 ici : https://easydomoticz.com/forum/viewtopi ... =10#p47935

Merci d'avance!
js-martin
Messages : 487
Inscription : 22 mars 2015, 22:08
Contact :

Re: Faire dire des données mesurées par Domoticz à Google Home

Message par js-martin »

DavidTrier a écrit : En particulier, voici ce que je ne comprends pas :
- comment configurer IFTTT pour que le GH réponde à une demande spécifique qui va lui faire énoncer une valeur lue chez Domoticz? Ex. : "combien fait-il dans la chambre?" Quelle applet pour que IFTTT envoie le script à Domoticz?
Tu dois ouvrir ton serveur Domoticz pour faire cela.

Pour des commandes simples (je n'ai pas fait cela car j'ai peur de laisser mon serveur sur Internet):
https://easydomoticz.com/forum/viewtopic.php?t=4617
Pour des commandes plus complexes (température par exemple) :
https://www.controlicz.com/
mais il faut encore laisser un accès à ton serveur
DavidTrier a écrit : - faut-il passer par IFTTT pour qu'une notification de Domiticz soit lue par le GH?
non, c'est ce qui est expliqué dans ce sujet.
DavidTrier a écrit : - à quoi sert la connection SSH2 évoquée par fab0030 ici : https://easydomoticz.com/forum/viewtopi ... =10#p47935
Ce script sert à ne pas ouvrir directement son serveur Domoticz mais il passe par une autre machine (son NAS) qui envoie la commande à Domoticz. Cela améliore un peu la sécurité. L'idée est bonne et supérieure à ce que j'ai pu voir même si je n'ose toujours pas :lol:

Pour le moment, je configure mes notifications en local.
Domotisation de : mes compteurs EDF, solaire, eau / mon alarme / ma Chaudière Viessamnn / mon congel / ma sonnette. Matériels : Pi2 - RFXTrx433e - Zwave+ Aeotec, ampoules Hue - Détecteur et prises Fibaro - Capteurs Oregon - présentation installation => lien
DavidTrier
Messages : 62
Inscription : 07 nov. 2017, 20:05

Re: Faire dire des données mesurées par Domoticz à Google Home

Message par DavidTrier »

Un grand merci à toi pour tes précisions.

J'en reviens donc à Controlicz qui semble répondre à mon besoin, mais je n'arrive toujours pas à m'y connecter.

Je vais continuer à chercher ;) Si vous connaissez un bon tuto Controlicz pour les très nuls, je suis preneur !!!
js-martin
Messages : 487
Inscription : 22 mars 2015, 22:08
Contact :

Re: Faire dire des données mesurées par Domoticz à Google Home

Message par js-martin »

DavidTrier a écrit :Serait-il possible d'avoir un petit tuto "pour les nuls"... :oops:

- faut-il passer par IFTTT pour qu'une notification de Domiticz soit lue par le GH?
Cela peut répondre à ta question :

Je vous propose une solution de notification totalement intégrée à Domoticz (via notification HTTP), générique (pas besoin de faire un script par message) et sans avoir besoin d'ouvrir de port (comme la solution IFTTT).

https://easydomoticz.com/forum/viewtopi ... =17&t=5914
Domotisation de : mes compteurs EDF, solaire, eau / mon alarme / ma Chaudière Viessamnn / mon congel / ma sonnette. Matériels : Pi2 - RFXTrx433e - Zwave+ Aeotec, ampoules Hue - Détecteur et prises Fibaro - Capteurs Oregon - présentation installation => lien
Répondre