une chose que j’aimerai de manière très spécifique c’est que lorsque je mets ma maison en mode « surveillance », quelque chose dans ma maison me dise :
« Surveillance active dans 30sec »
bip bip bip bip
« Surveillance activée »
Et l’inverse lorsqu’on entre :
« Présence détectée »
bip bip bip bip
→ je tapes mon code
« Surveillance désactivée »
Je possède un mini ampli bluetooth / plusieurs Rpi (1 et 3) / des petits hauts parleurs… je peux essayer de me bricoler un truc si quelqu’un connait un moyen !!
Bonne idée, j’avais justement envie d’avoir cette sorte de retour audio en cas d’action. Où est-ce que tu tapes ton code ? Tu as un clavier (quel type) ?
Voici l’idée qui me vient à l’esprit :
Sur un RPi dédié, qui contrôle une enceinte, créer un script qui sera connecté au réseau MQTT en tant que client
Ce client MQTT pourra recevoir plusieurs valeurs (disont, 1, 2 et 3) pour déclencher les 3 actions que tu as listé
Comme ça dans ta scène, Gladys peut faire lire les phrases ou les bips que tu auras programmé dans ton RPi dédié.
C’est très simpliste comme ça, mais ça fera le taf dans un premier temps.
Alors pour le code… je bluffais parce que je n’ai pas encore l’équipement, mais je pense acheter un truc de cette liste : Zigbee2MQTT
Je pense qu’en passant par Node-red je devrais pouvoir faire un lien avec gladys.
Je t’avoue que j’avais pensé au fait d’avoir un RPi qui est relié à une enceinte. Mais « créer un script qui sera connecté au MQTT en tant que client »… là ça dépasse mes compétences ^^
Je vais essayer de creuser un peu pour voir ce que je trouve, je partagerai mes trouvailles ici !
Si tu trouves un clavier Zigbee fonctionnel et abordable, je suis preneur. Mais de mes premières recherches, c’est étrangement pas simple à trouver en neuf.
Je comprends, en Python il existe des librairies, mais encore faut-il savoir dev un minimum. Hésite pas à partager tes trouvailles en tout cas oui
Salut, je mentionne @spenceur car il utilise Node red et ses sonos pour faire ça.
Je n’ai pas eu le temps de m’y repencher dessus.
Je voulais faire un tuto suite à ses explications, mais c’est assez complexe car il y a pas mal de chose à métriser et je n’ai pas encore réussi à faire ça.
bonsoir à tous, j’ai fait une demande de fonctionnalité le 5 aout pour que Alexa puisse faire ça via Gladys.1 seul vote pour le moment, le mien. Je me suis donc tourné vers node red et Alexa et maintenant j’arrive à faire dire une phrase à Alexa. il me reste plus qu’à réussir à déclencher cette phrase dans une scène via mqtt.
Je confirme et faut savoir que la lib ultimate-tts peut etre utiliser avec une enceintes Bluetooth
Chez moi jai un message sur ma sonos qui me dit alarme activé, alarme désactivé, les infos de mes calendriers (santés, anniversaires, etc)
Et côté gladys je passe par du rest pour taper sur node red et lire le message voulu
J’ai installé dans plusieurs pièces des RPi 0W, connectés via des d’ongles USB à des enceintes. Un serveur Pulse Audio tournure sur chacun, ça devient une enceinte connectée à 30€ pièce environs … Un serveur central dispose d’un script écrit en python utilisant Flask pour l’accès HTTP, picoTTS pour le « texte to speak » et connecté à l’ensemble des enceintes (choix de zones possible au besoin …). On appelle ce script via une requête HTTP, et on passe en paramètre de la requête ce qui doit être dit que les enceintes. Et voilà
J’utilise ce principe pour faire dialoguer Gladys … C’est assez dirty, mais ça fait le boulot attendu !
@guim31 : Je ne sais pas trop comment faire un vidéo sur le sujet, désolé … En revanche, voici le code pyhton à démarrer, qui écoute sur le port 1337 (désolé …), et auquel on passe une requête du type : http://IP/text2speak?text=« Truc à dire … ». Il faut toutefois disposer d’un ou plusieurs serveur Pulse vers lequel/lesquels envoyer le flux audio. Egalement, le script doit disposer de la librairie python « Flask » et du paquet « libttspico-utils ».
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from flask import Flask, request, jsonify
import os
app = Flask(__name__)
@app.route('/text2speak', methods=['GET'])
def prononce_texte():
texte = request.args.get('text')
if texte:
os.system('pico2wave -l fr-FR -w /tmp/temp.wav {}'.format(texte))
os.system('paplay -v -s Pulse --volume 32000 /tmp/temp.wav')
os.remove('/tmp/temp.wav')
return jsonify({'return':'OK !'})
else:
return jsonify({'return':'Missing text to speak ?!'})
if __name__ == '__main__':
app.run(host='0.0.0.0', port=1337)
Ensuite, j’utilise un bloc « HTTP » dans une scène et j’appelle le script pyhton :
Question liée à notre présent échange : j’ai voulu rendre ça un peu plus « propre » en passant par une méthode POST, mais que faut-il donc placer dans le champ « Body » du bloc HTTP de la scène ?