Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Old] Contrôle à la voix
#1
steevedu49 avril 2012
Bonjours à tous,
J ai découvert que Sara l équivalent de Siri sur iPhone permettrai de contrôler des systèmes domotique à la voix. Calaos est il compatible. Peut on envoyer des requête web pour interagir avec le server calaos ?

ArnaudTlse mai 2012
Je ne répondrai pas à leur place, mais ça me semble chaud quand même :-)
Siri vient de sortir, Sara semble être une béta via jailbreak... why not, mais on parle d'une maison là, donc il faut un minimum de pérennité et de fiabilité dans les outils supportés. Qui dit support, dit aussi, savoir gérer les problèmes qu'auront les clients avec le produit. Donc, un support officiel me parait douteux.

Par contre, Sara est coté client, donc rien ne t’empêche de l'utiliser pour envoyer des requêtes https à ta centrale. Ta centrale dispose d'un serveur web, sur lequel tu peux passer des commandes (pas tester).

Arnaud.

steevedu49 mai 2012
Bonjours,

Connais tu la forme de la requête https
Le langage utilisé par Sara est du php et calaos utilise du Json
https:/ip.centrale/nom d'utilisateur/mot de passe/action...
Merci...

ArnaudTlse mai 2012
Hello,

Pas testé. Après si Sara ne peut pas taper sur Calaos directement, rien n'empêche de monter un linux intermédiaire. Sara fait une requête simple à ton serveur, qui lui envoi une requête complexe à Calaos. C'est une idée en l'air car je n'ai rien testé Big Grin
raoulraoul mai 2012
D'après ce que j'ai lu de la doc de Sara, c'est possible en créant un plugin avec le SDK de Sara. Vu qu'il utilise php, on peut imaginer faire quelque chose comme ca:
<?
if($request == "allume la lumiere"){
$response->say("Ok, j'allume la lumiere");
$url = 'http://ip_calaos/api.php';
$data = '{"cn_user": "mail@example.com", "cn_pass": "the_password", "action": "set_state", "type": "output", "id": "output_0", "value": "true"}';
$response = http_post_data($url, $data);
$response->exitContext();
ok();
}

steevedu49 mai 2012
Dans $url = 'http://....' il doi y avoir une erreur "https". La dernière étape "http_post_data" ne fonctionne pas.

Une solution ?

ArnaudTlse mai 2012
Bonsoir Raoul,

De tête, la centrale n'est interrogeable qu'en https. Du coup j'ai l'impression que le http_post_data n'est pas vraiment utilisable, à moins qu'on puisse l'utiliser en https ?!

Sinon, c'est en wget comme indiqué ici:
http://support.calaos.fr/protocole_json?...&s[]=state
via un serveur intermédiaire...

steevedu49 mai 2012
Comment par un serveur intermédiaire ?

raoul mai 2012
J'ai l'impression que le http_post_data n'est pas dispo dans Sara. Je vais voir si il y a un autre moyen...

ArnaudTlse juillet 2012
Hiiiiiiiii ça fonctionne ! J'arrive à ouvrir un volet à la voix ! Smile) Big Grin Big Grin
Bon, un petit tuto rapido, et désolé c'est toujours en passant par le serveur Linux intermédiaire Smile

Fred 13 févr.
Est-ce que tu as avancé dans ce projet ?

Sinon il y a une nouvelle solution grace aux Rasberry Pi et Siri Proxy :
http://www.tomshardware.fr/articles/domo...36895.html

L'avantage serait de créer une interface all-in-one très abordable sans devoir passer par un nas (étant donné que nous avons des NAS différents) et d'utiliser le "vrai" Siri.
En théorie il suffirait d'y greffer un bout de code JSon/sh pour pouvoir commander la centrale Calaos.
Avis aux spécialistes...

ArnaudTlse 14 févr.
Non, j'avais juste essayé pour voir si ça fonctionnait, la réponse est oui, mais ça n'était pas vraiment exploitable. En fait, les mots reconnus par Sara ne doivent pas contenir d'accent.. et bien ça limite beaucoup ! "Vidéo", "écran" niet... donc après avoir testé avec "truc" "bidule" "machine" ça fonctionne mais bon... répéter 3 fois un ordre à son téléphone pour avoir une action.. c'est plus rapide de lancer un scénario Calaos ou d'aller appuyer sur un bouton :-)

Le Linux que j'ai utilisé était le Syno, mais ça pourrait être n'importe quoi avec un service http et du script sh:

#!/bin/sh
SERVER=https://192.168.0.100/api.php
result=`/usr/syno/bin/wget -q --no-check-certificate --post-file ouvrir_volets.json --output-document - "$SERVER" `
echo result=$result

et le fichier de la commande JSON ouvrir_volets.json:
{
"cn_user": "*****",
"cn_pass": "*****",
"action": "set_state",
"type": "output",
"id": "output_10",
"value": "toggle"
}

Les tests étaient plus une maquette mais pas vraiment exploitable Smile)

L'alternative avec un SiriProxy est probablement une bonne piste, tiens nous au courant Big Grin



Florian 15 févr.
Je vous signale une expérience interressante à base de raspberry et d'un pc windows qui utilise la librairie Speech To Text de Microsoft :

http://blog.idleman.fr/?p=1788

Fred 18 févr.
Sympa cette expérience, seul bémol il faut avoir un PC sous Windows allumé en permanence. Par contre on pourrait installer par exemple des micros dans les pièces et pouvoir commander à la voix sans utiliser un accessoire (iphone+Siri)...un peu comme HAL dans l'odyssée de l'espace de Kubrick :-)

pour en revenir à l'autre expérience j'ai commandé un Raspberry, je vous tiens au courant dès qu'il sera arrivé.

Fred 24 févr.
Pendant ce dimanche neigeux et maussade, j'ai pu avancer un peu en attendant la livraison du Raspberry.
Donc j'ai utilisé une machine virtuelle tournant sous Ubuntu et installé Siriproxy. Grâce à l'étude de quelques plug-ins Ruby pour siriproxy et un add-on "httparty" (similaire au http_post_data cité plus haut), j'ai pu créer une première maquette :


elle a également l'avantage de reconnaitre les caractères spéciaux grâce à l’utilisation de l'utf-8 (très fréquents dans notre langue contrairement à l'anglais).
Je vais essayer de structurer tout cela dans les prochains temps. J'ai dans l'idée de rechercher le nom des entrées/sorties et le id directement depuis la config calaos. Par contre j'aurai certainement besoin d'un petit coup de main pour la programmation avancée...
Au final on pourrait avoir une passerelle Siri-Calaos peu couteuse et économe en énergie.

ArnaudTlse 26 févr.
"Amènes moi une bière fraiche" Big Grin

Fred 13 mars
Je voulais vous tenir un peu au courant concernant ce projet.
Entretemps j'ai reçu le Raspberry PI modèle B et commencé à le "personaliser" Smile
photoiur.jpg
Cette image a été redimensionnée pour tenir dans la page. Cliquez pour agrandir.

A celà j'utilise une carte SD Transcend 8GB Class 10 TS8GSDHC10 (compatible avec le PI) et pour le moment un transformateur 5V avec une prise usb au format micro-USB car au final, on pourra brancher le PI directement sur la prise USB situé sur la box internet du fournisseur d'accès pour l'alimenter et sur une des prises réseaux.
Clavier + souris USB pour le configurer mais par la suite un simple accès SSH suffira.

Coté logiciel, j'ai utilisé le firmware déjà tout fait de ce projet (c'est la fameuse video qui circule sur le woueb " Garage Door" : voir ici ) et suivi les instructions fournies pour le configurer :
http://sourceforge.net/p/siriproxyrpi/wiki/Home/

Puis afin de connaitre un peu mieux le langage Ruby (je ne suis pas programmateur à la base...donc ça prend un plus de temps, lol), j'ai créé quelques scripts pour tester deux fonctions principales : lire la config calaos avec JSON et envoyer et lire des valeurs sur la centrale, ce qui marchent très bien. Maintenant c'est de metre toutes ces fonctions dans un seul process et palier aux inperfections de Siri, un simple exemple quand je dis LED, siri reconnait le mot comme "laide"... Undecided
Il faut aussi trouver un certain format de prononciation, par exemple :
nom de la pièce / éléments / action (ex : salon / lumière principale / allumer).
Des phrases complètes, on ne pourra jamais avoir...il aura un peu trop de mal à tout reconnaitre notre ami Siri ;-)

Pour le moment j'ai un prototype assez fonctionel, mais à la place de lire la config depuis la centrale calaos j'utilise un fichier csv avec le nom des éléments que je veux tester et l'ID de la sortie ou de l'entrée :
objname, objid
lumière table,output_37
températures salon,input_91

Je vous mettrai les sources prochainement en ligne dès que tout celà sera un peu plus structuré.....Big Grin

@ArnaudTlse : on pourrait aussi par exemple adapter ton module historique des températures en Ruby sur le PI.

ArnaudTlse 14 mars
Intéressant ton truc, surtout si ça permet d'avoir la mustang qui va avec le garage Smile

jayzy 14 mars
c'est clair bon travail déjà!!! Je serais incapable de faire ce que tu fait..
Bravo et preneur de la mustang aussi.. lol

captainigloo 18 avril
Ca a l'air top ce truc !

raoul 27 avril
Sympa! Ca a l'air de marcher bien en plus Smile

@Fred, Motivé pour qu'on intègre ca dans une prochaine maj directement?
Calaos v1.1.20 sur Advantech x86 | Calaos Home écran tactile RS232 | Wago 750-841 | DMX RGB LED
Calaos-OS v2.0 sur Advantech x86 | Clé USB
Squeezebox | Raspberry & Scripts maison
Reply
#2
Un autre exemple envoyé par CaptainIgloo sur le contrôle à la voix:
http://encausse.wordpress.com/s-a-r-a-h/

(même nom mais pas même projet/techno précise Raoul Smile )
Impressionnant quand même !
Calaos v1.1.20 sur Advantech x86 | Calaos Home écran tactile RS232 | Wago 750-841 | DMX RGB LED
Calaos-OS v2.0 sur Advantech x86 | Clé USB
Squeezebox | Raspberry & Scripts maison
Reply
#3
Bonjour,
J'essaie de créer un plugin calaos pour le projet SARAH si dessus.
Je suis bloquer sur l'envoi de requête http, je ne sais pas quelle forme lui donner.
J'ai des exemples d'envoi de requête sur des box domotiques du type https://ip_server/api.php?data...
Pour calaos j'aurais besoin d'un exemple pour avancer...
Merci
Steeve MARTINS
Calaos User

Calaos v3 sur Intel BOXNUC5CPYH | Wago 750-842 (2.0)| Eco-Devices
Reply
#4
(01-02-2014, 11:13 PM)steevedu49 Wrote: Bonjour,
J'essaie de créer un plugin calaos pour le projet SARAH si dessus.
Je suis bloquer sur l'envoi de requête http, je ne sais pas quelle forme lui donner.
J'ai des exemples d'envoi de requête sur des box domotiques du type https://ip_server/api.php?data...
Pour calaos j'aurais besoin d'un exemple pour avancer...
Merci

Bonsoir Steeve,
regarde ici tout est expliqué
http://www.calaos.fr/wiki/protocole_json
Reply
#5
C seulement expliquer pour une requête via Wget...
Steeve MARTINS
Calaos User

Calaos v3 sur Intel BOXNUC5CPYH | Wago 750-842 (2.0)| Eco-Devices
Reply
#6
Oui l'utilisation de wget est un moyen de montrer d'une maniére générique comment fonctionne l'api.
Ensuite tout dépends du language de programmation que tu utilises pour faire les requêtes. Quel est le language de programmation utilisé pour ce projet ?
Reply
#7
C du json...
Steeve MARTINS
Calaos User

Calaos v3 sur Intel BOXNUC5CPYH | Wago 750-842 (2.0)| Eco-Devices
Reply
#8
En fait, tu as un exemple en haut de page sur une requête wget et un fichier json indépendant.

La 2éme solution, plus propre, est de ne pas utiliser un fichier json (écriture disque, etc) mais de construire les données directement dans le scripte comme ici:

http://photozoaire.com/Domotique/Entrees...chube.html

C'était un script qui prenait les températures depuis la Centrale en wget/json, et qui les poste sur Pachube (ancien nom de Xively).

3éme exemple, le dernier en date: je vais aussi poster le script que j'utilise pour le CurrentCost dans le sujet associé.

En espérant que ça te soit plus clair :-)
Calaos v1.1.20 sur Advantech x86 | Calaos Home écran tactile RS232 | Wago 750-841 | DMX RGB LED
Calaos-OS v2.0 sur Advantech x86 | Clé USB
Squeezebox | Raspberry & Scripts maison
Reply
#9
(01-03-2014, 12:56 AM)steevedu49 Wrote: C du json...

Le json n'est pas un language de programmation, c'est un format de fichier issu du javascript :
http://fr.wikipedia.org/wiki/JavaScript_Object_Notation
Cela permet facilement d'échanger des données entre deux programmes.
As tu un lien vers de la documentation expliquant ce que tu cherches a faire ?
Reply
#10
exports.action=function(data, callback, config){

var url= "https://www.calaos.fr/calaos_network/api.php"

var json={
"cn_user": "****",
"cn_pass": "****",
"action": "get_ip",
}
var request = require('request');
request({
'uri': url,
'method': 'POST',
'json': json,
'timeout': 3000,
}, function (err, response, body){
if (err || response.statusCode != 200) {
callback({'tts':'error'});
console.dir(response);
return;
}

callback({'tts':'ok'});
console.dir(response);
});

}

Voici le contenu du fichier calaos.js que j'ai créer pour le plugin dans SARAH.
Jusque la ça fonctionne, je recupere bien les informations de la centrale (private_ip, public_ip....).
Par contre quand je remplace action par set_state et que je rajoute "type": "output", "id": "output_0" et "value": "true", la il ne ce passe plus rien, pas de reponse.....


Pour communiquer avec l'API de la centrale faut-il obligatoirement poster un fichier fichier comme dans l'exemple avec Wget dans le wiki de Calaos.

Après plusieurs essais seule l'action get_ip obtient une réponse, l'action get_home ne fonctionne pas.
Une idée ?
Steeve MARTINS
Calaos User

Calaos v3 sur Intel BOXNUC5CPYH | Wago 750-842 (2.0)| Eco-Devices
Reply


Forum Jump:


Users browsing this thread: 6 Guest(s)