Pour ceux qui ont rencontré des problèmes récemment avec jeedomix (dernier upgrade d’android concernant les normes de sécurité ssl), voici une mise à jour. Avec un clin d’oeil pour ceux de ma génération qui ont connu une certaine série
Pour les autres et pour rappel (Interactions Jeedom par la voix sur Android ), jeedomix permet de « remplacer » Google Home grâce aux opportunités infinies du module INTERACTIONS de Jeedom: vidéo de démo: jeedomix - demo.mp4 - Google Drive
Je rappelle que l’app n’est pas optimisée, mes connaissances du milieu sdk d’android étant limitées dans ce domaine et si des messages comme « jeedomix devrait être mis en veille » apparaissent de temps à autre, c’est sûrement dû à cela. Mais cela ne l’empêche pas de fonctionner.
Je rappelle aussi que l’idéal serait de l’héberger sur une machine dédiée et reliée au courant. J’essaie à présent de le faire fonctionner sur un raspberry flanqué de l’OS Android, mais je cale sur une histoire de micro…
L’apk (rappel: autoriser les sources inconnues): jeedomix.apk - Google Drive
Et enfin, une démo d’un plus pour mon utilisation personnelle: appel à l’IA: jeedomix_IA - demo.mp4 - Google Drive
(c’est cette utilisation qui justifie la syntaxe particulière des réponses dans les interactions illustrée ci-dessous)
Sur Samsung A3 et Samsung A32, la reconnaissance vocale fonctionne par contre aucune interaction dans les log Jdom (log interaction vide et log api sans trace d’envoi de samantha)
Sur Samsung A40, pas de reconnaissance vocale.
Le A3 est relié en permanence sur secteur et il ne sert qu’à Jeedom connect/reco vocale
Je ne sais pas s’il y a des log coté téléphone pour identifier le problème ?
(Je ne pense pas que cela vienne des interactions coté Jeedom car j’utilise actuellement les interactions via jeedom connect.)
Merci pour les retours concernant les appareils compatibles.
Pour ce qui est des appels aux interactions, l’app a été développée pour fonctionner en local autant qu’en déplacement => l’accès obligé en sécurisé par nom de domaine+https.
.
Vérifie: jeedomix.apk - Google Drive
Je me rends compte aussi que le bouton quitter l’appli n’apparaît pas sur la saisie d’écran de ton samsung (dû à sa taille plus petite), ça c’est du travail pour moi la semaine prochaine…
OK je regarde ça de prêt. Car ton concept d’utiliser speechrecognizer me va bien. C’est vrai que c’est suffisant pour faire la reco et ça évite de s’embéter avec les key picovoice.
J’ai fait un essai (sans trop creuser) en basculant en https (en local mais aussi sur mon adresse distante) mais ça n’a rien donné de positif (tjs rien dans les log).
Est ce qu’on peut mettre un autre port que 443 ? (https://monadresse.fr:666 par exemple)
Une sugestion/demande: est que ce serait possible d’envoyer le Query non pas vers le moteur d’interaction mais vers le moteur de scénario ? L’utilité d’envoyer vers un scénario:
Nettoyer la Query (supression des accents, passer tout en minuscule, remplacer certains mots)
et surtout gérer plusieurs appareils qui reçoivent une demande vocale simultanéement: bloquer les Query identiques dans une fenetre de qq secondes
Pour l’accès sécurisé sur un port différent, si tu sais accéder via un navigateur, je ne vois pas pourquoi ça n’irait pas.
Perso, jeedomix ne tourne plus sur mon Samsung S4. Le certificat fourni par let’s encrypt n’est plus valable pour des vieux android: okhttp - CertPathValidatorException connecting to a Let's Encrypt host on Android M or earlier - Stack Overflow
… et je ne sais pas trop si je vais passer mon temps pour une machine aussi obsolète d’autant que je ne comprends pas tout dans les explications. Et pourvu que ça tourne sur mon S21 et sur l’A7 de madame…
Pour tes suggestions:
1)Nettoyer la query:
Quel problème rencontres-tu avec les interactions qui, à ma connaissance, s’occupent de tout: les accents, les synonymes à leur renseigner, les majuscules-minuscules dont elles n’ont cure (ou alors je ne comprends pas ta demande);
2)gérer plusieurs appareils sollicités en même temps.
Là, je ne vois pas du tout de quoi il s’agit.
REM: je fais partie du 1/4 de la population qui comprend presqu’exclusivement à partir de schémas ou d’exemples. Peux-tu me donner des cas concrets pour 1 et 2?
C’était surtout pour confirmer la synthaxe dans le cas d’un port différent. Donc une adresse se terminant par :666 sera correctement prise en compte par ton apk?
C’est peut etre la raison pour laquelle ça ne fonctionne pas sur le samsung A3.
ça reste une manière de recycler les vieux telephones à la maison pour faire des satellites « Jeedomix ». Et je comprends ton point de vue.
Ca serait possible (facile?) pour toi de faire une « option » sans https pour une utilisation en local ?
Pour les suggestions:
Oui tu as raison, on peut grandement utiliser les interactions pour gérer tout ce que tu cites. J’ai qq exemples comme « Allume pendant 2 heures » qui est traduit en « allume pendant 2h ». Or le ‹ 2h › n’est pas identifié comme un nombre. Donc via scénario je sépare en ‹ 2 h ›. Il y a aussi la suppression des espaces quand il y a des tirets (porte - manteaux)
2 téléphones à porté de voix recoivent le message « Ferme les volets ». Donc il va y avoir 2 interactions identiques à qq 100aines de milliseconde d’écart. Pour certains volets, si on envoie un ordre de fermeture pendant qu’ils se ferment, alors les volets s’arretent. Idem pour le portail, la porte du garage et les telerupteurs.
Bon, ben je viens d’essayer en ajoutant « :443 » dans mes settings et ça marche.
Pour un accès en local, pourquoi pas, c’est une bonne idée. j’y regarde la semaine prochaine.
Et pour les suggestions, l’accès aux scénarios par API est du type " [http://#IP_JEEDOM#/core/api/jeeApi.php?apikey=#APIKEY#&type=scenario&id=#ID#&action=#ACTION#] avec action= start ou stop. Tout devrait être analysé (parsé, scanné) dans un unique scénario… ?
Pour la double interprétation, j’ai eu le cas avec ok google dans la voiture et sur mon smartphone à l’ouverture du portail. J’ai dû effectivement passer par un scénario « ouverture unique du portail » où un sleep gelait celui-ci pendant 10 secondes, lui interdisant donc de réagir au 2e ordre
Ouahhh absolument génial cet outil Jeedomix !!!
Enfin une solution simple et détachée des rouleaux compresseurs Alexa & GH …
Tout est en local si je comprends bien ?
Je n’ai pas encore essayé d’interagir avec Jeedom pour le moment mais j’ai installé l’APK et mis un mot clef ‘Jeedom’ pour faire des tests de reconnaissance, ça fonctionne très bien et les phrases énoncées apparaissent à l’écran.
Avec GH et IFTTT j’avais fait un simple script qui permettait de renvoyer à Jeedom la phrase énoncée vers un scénario et de la ce scénario découpait cette phrase et en fonction des mots clefs souhaités (exemple : allume lumière cuisine) contenus dans une phrase de type ‘allume la lumière de la cuisine’ le scénario déclenchait cette action sur l’équipement.
Du coup je me demande s’il était possible de légèrement modifier ton outils afin de passer en paramètres l’appel d’un scénario et en argument la phrase énoncée !
Bon j’ai reussi à faire fonctionner sur certain telephone (en l’occurence le A32. Sur le A3, j’ai la reco mais ça ne se transfert pas vers Jeedom et sur le A40, j’ai pas de reconnaissance). Et je te confirme qu’avec un port quelconque ça fonctionne également.
En quelque sortes. Mais je renvoie finalement vers les interactions. Pour info, mon scénario commence comme çà:
$tags = $scenario->getTags(); // Récupération des tags passés en paramètre.
foreach (array_keys($tags) as $data){
if (strpos(strtolower($data),'phrase') or strpos(strtolower($data),'query')) $tags["#phrase#"]=$tags[$data];
}
//J'ai donc un tag #phrase# qui contient la phrase énoncé
//Puis je traite/modifie la phrase
$tags["#phrase#"]=strtolower($tags["#phrase#"]); //tout en minuscules
// et enfin je renvoie vers le moteur d'interaction
phrase_interact=urlencode($tags["#phrase#"]); //encodage au format URL
//url d'appel interaction
$url="http://192.168.0.4/core/api/jeeApi.php?apikey=mykey&type=interact&query=".$phrase_interact;
//Exécution et récupération de la réponse des intéractions
$reponse_intraction=file_get_contents($url);
Tu veux dire que tu arrives a récupérer le phrase de Jeedomix dans un scenario?
Je n’y parviens pas … comment fais-tu exactement?
Concernant mon scenario pour interpréter les commandes, voici un petit extrait :
$tags = $scenario->getTags();
$tags['#GHMessage#'] = "";
$message = $tags['#phrase#']; // ceci est la phrase a récupérer de Jeedomix !
$message = trim(strtolower($message));
function contains_words($string, $array_of_words)
{
if (!$array_of_words) return false;
$i = 0;
foreach ($array_of_words as $words)
{
if (strpos($string, $words) !== FALSE) $i++;
}
return ($i == count($array_of_words)) ? true : false;
}
if(contains_words($message, array("allum", "lumi", "cuisine")))
{
$tags['#GHMessage#'] = "Lumière cuisine allumée";
}
if(contains_words($message, array("étein", "lumi", "cuisine")))
{
$tags['#GHMessage#'] = "Lumière cuisine éteinte";
}
$scenario->setTags($tags);
Puis on peut utiliser ‹ $tags[ ›#GHMessage#‹ ] ›, s’il n’est pas vide c’est qu’une commande valide a été reçue et on peut alors démarrer l’action et faire parler un GH ou un Alexa pour confirmer …
Avec cette méthode, pas besoin d’une phrase précise … seulement des mots clefs.
J’ai même fait une variante qui gère les pourcentages pour régler des lumières sur variateur.
Non, je n’arrive pas à récupérer la phrase avec Jeedomix (je montrais juste comment je traite actuellement ce qui vient de Jeedom et anciennement IFTTT). Mais on a la même demande: récupérer la phrase dans un scénario pour lancer des actions diverses et variées.
Je pense que ton explication sur la formulation pour appeler un scénario est largement plus utile pour @leglaude que mon exemple de code php
C’est marrant votre approche similaire pour combler les faiblesses de GH par un scénario. Astucieux .
Mais vous êtes fâchés avec le moteur des interactions à ce point?
Grâce à sa richesse et à sa souplesse, il gère les synonymes (allumer, allume, branche, connecte,…) , il gère les substitutions (chalet , abri [de jardin]), il gère les à-peu-près (distance de Levenstein)… Que du bonheur.
Rappel: pour les minuscules, jeedomix s’en charge et pour le porte - manteaux, pourquoi ne pas le renommer porte-manteau ?
Je ne comprends pas bien ce passage préliminaire par un scénario, à moins que quelque chose ne m’échappe (c’est vrai que je suis Leglaude )
Je ne me rappelle plus exactement comment j’en suis arrivé là (Surement que j’avais plusieurs mots composés et donc pour éviter de créer de multiple synonyme en fonction du type de tiret, du nombre d’espace combiné au pluriel/singulier des mots, j’ai fait un scénario qui me permet de réduire le nombre de synonyme à gérer. Après tu n’as peut être pas beaucoup d’équipement donc ça reste facile à géré ou alors tu as bien construit tes interactions dès le débuts)… mais j’utilise quand même largement les synonymes.
Toutefois il reste à gérer les commandes simultanées par plusieurs appareils… On doit pouvoir lancer une interaction qui lance un scénario « filtre » puis relance une interaction.
Si Jeedomix s’avère fiable et performant même sur des vieux appareils sans https, ça vaut le coup que je reconstruise les interactions…
Faut que je tente avec un rasperry + micro ext voir si ça marche…
Encore merci pour ton travail en tout cas!
… je peaufine la dernière version de jeedomix qui devrait permettre d’utiliser d’anciens smartphones pour écoute non-stop. J’ai finalement opté pour l’entrée des URL locale ET publique, l’app essayant la première (surtout pour les plus vieux android) et en cas d’échec, la publique. Ca devrait arriver pour ce WE.
Pour la mise à dispo d’un appel aux scénarios plutôt qu’aux interactions, je vais jeter un oeil pour voir si ça ne perturbe pas trop mon schéma, tout en restant sceptique quant à la souplesse d’une telle solution. Evidemment, je comprends qu’un scénario déjà présent évite un certain taf.
Bonjour,
Je crois que j’ai oublié quelque chose.
Su mon Galaxy S8 à la demande « allume le vestibule » j’ai ce texte qui s’affiche mais rien ne se produit !
mon interaction:
(je ne maitrise pas beaucoup) monJeedom=l’adresse IP loale, je suis en HTTP.
un petit coup de pouce pour utiliser cette appli qui m’intéresse beaucoup.
Bonne journée
Je crois que l’accès doit être pour toi en https. C’est galère de savoir à quelle catégorie on appartient. Quand je posterai la MAJ de mon app, je publierai un tableau avec les tests que j’ai fait sur 4 de mes machines.
Pour confirmer mon hypothèse, regarde tes logs (http.access, https.access et bien sûr interact)