Samantha, allume la télé ou Interactions jeedom par déclenchement vocal (suite)

Malheureusement je suis en http :cold_face:

Hate d’essayer !
Sur ma tablette lenovo, l’appli se fige au bout de quelques heures => jeedomix n’affiche plus les commandes vocales. Un redémrrage de l’appli et ça repart. As tu constater ce problème ? (je n’y connais rien en Android donc si y a des log qq parts, je peux te les transmettre)

@naif Tu n’accèdes pas à Jeedom de l’extérieur?
Ce problème de certification, je m’y attelle depuis un certain temps. Posant la question à mon ami ChatGPT, j’ai:

Citation
Depuis Android 9 (API 28), les connexions non sécurisées en HTTP sont désactivées par défaut pour des raisons de sécurité. Voici plusieurs solutions pour résoudre ce problème :### 1. Autoriser le HTTP dans le fichier network_security_config.xml
Crée un fichier de configuration pour permettre les connexions HTTP vers ton serveur local.
Étapes :
Créer le fichier res/xml/network_security_config.xml
etc…

Plusieurs « solutions » s’offrent à moi. Je vais y regarder ce we. Je dois d’abord terminer la version en cours :slight_smile:

Avec l’http,c’est aussi un problème à régler. Comme expliqué dans mon historique, Android n’est pas ma tasse de thé pour ce qui est du multitâches et je crois que c’est là le problème: écoutant non-stop, il doit à un moment donné saturer le système. Des messages comme « Jeedomix pose problème », « vous devriez mettre jeedomix en veille », etc. ne doivent pas inquiéter. J’ai supprimé un maximum de services et d’app tournant en arrière-plan mais l’idéal serait qu’un pro d’android m’indique quelle instruction je pourrais greffer pour générer des micro-interruptions ne nuisant pas à son écoute « S3600 ».

1 « J'aime »

Bonjour,
l’accès en local ou de l’extérieur (adresse NO-IP) me rend une petite clochette (diling diling) puis m’affiche l’ordre donné mais pas d’execution (lalampe ne s’allume pas)
merci pour ton écoute et bravo pour ton boulot

Le retour sonore indique que l’ordre est en partance vers jeedom. Est-il seulement arrivé? Ca, tu peux le voir dans les logs que je t’ai renseignés plus haut. Je suppose que tu as aussi testé ta requête dans un navigateur?

je n’ai que le log « http error » qui est vide je n’ai aucun des autres

Ah OK, j’ai dû les installer moi-même il y a longtemps.
Restent mes 2 autres questions: le log d’interact et surtout: ta requête aboutit-elle dans un navigateur??

avec Chrome voilà ce que j’obtiens (IP locale ou NO-IP)
{« jsonrpc »:« 2.0 »,« id »:99999,« error »:{« code »:1,« message »:"Requ\u00eate invalide. Version JSON-RPC invalide : "}}
par contre je ne trouve pas de log interact

Il faudrait me communiquer aussi ta requête : quelle est l’URL complète ? (masque ta clé api)
Et pour le log d’interaction, il faut les activer (de mémoire : réglages, système, config, logs)

Bonjour,
l’URL: http://192.168.x.xx/core/api/jeeApi.php?apikey=xxxxxxx
du côté des logs, je n’ai absolument rien ainsi que dans « http error »
Je ne suis pas très à l’aise avec ces choses là.
J’ai une clé api globale dans la configuration mais j’ai une clé api dans la configuration generale (clé api d’installation) alors…
quand au log j’ai mis celui des interact sur debug puis sauvegarder
merci pour ta patience

C’est quoi cette URL? As-tu bien lu la doc: https://doc.jeedom.com/fr_FR/core/4.4/api_http
Et pour les logs, je t’ai donné le parcours pour les activer.

samantha

Dernière version de Jeedomix
Enfin un accès pour toutes les versions d’android?

La solution trouvée est d’autoriser sans restriction l’accès http … avec les risques inhérant à ce type de connexion.
Le but est de pouvoir utiliser des machines anciennes et d’avoir une indépendance totale vis-à-vis d’internet d’où une latence quasi nulle. Et tant qu’on reste à usage personnel et sur serveur local, le risque devrait être faible.
De toute façon, en aucun cas je ne pourrais être tenu responsable de la saisie d’une IP locale dans les paramètres de configuration. J’ai cédé à des demandes gentiment formulées :slight_smile:

Fonctionnement:

  • on rentre l’IP locale: accès pour les anciennes versions
  • on rentre le nom de domaine: accès aux versions postérieures à Android 8.
  • on rentre les 2: Jeedomix essaie d’abord l’http (+rapide et indépendant du net) et en cas d’erreur, tente l’https

En retour,
soit la réponse de jeedom-interaction suivie (pour infos de debugging) du type d’accès
soit « aucune URL valable renseignée »
Ce serait sympa de me fournir en retour les résultats suivant le modèle de machine (accès local o/n, accès public o/n)

Appareil Version accès local accès public
S4 android 5 oui non
S21 android 14 oui oui
A7 android 10 non oui
TAB S6 lite android 13 non oui
TAB S6 android 12 non non

Téléchargement: jeedomix.apk - Google Drive
PS: Il me restera à trouver comment éviter le plantage sur certaines machines obsolètes: manque de ressources pour une écoute non-stop? Faiblesse avouée de mes connaissances dans la gestion des processus android? (si un pro passait par là…)

1 « J'aime »

Merci @leglaude

Oui bien sur (bien que je n’utilise pas l’acces public)

Je te réponds ici @naif car ton intervention d’hier (plus haut) m’a échappé.
Je t’invite à lire la doc interactions (https://doc.jeedom.com/fr_FR/core/4.4/interact?theme=light)
et de tester sans jeedomix avec un lien correct (
https://doc.jeedom.com/fr_FR/core/4.4/api_http) c-a-d qqch du genre:
http://#IP_JEEDOM#/core/api/jeeApi.php?apikey=#TON API KEY GLOBALE#&type=interact&query=allume la cuisine.
Entre cette URL dans un navigateur et tant que tu n’as pas de résultat, oublie jeedomix: il n’est qu’une interface vocale remplaçant l’action précédente.
Quand ça fonctionne, télécharge la dernière version ci-dessus et profite :slight_smile:
(Quant aux logs, ils n’apparaîtront que quand tes requêtes seront bien formulées dans ton URL)

Salut,

@leglaude , cette derniere version plante sur un Xiaomi Redmi Note 8 Pro avec cette erreur:

java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
	at com.cdh.service.ListeningService.handleServerResponse(ListeningService.java:416)
	at com.cdh.service.ListeningService.lambda$fetchData$2$com-cdh-service-ListeningService(ListeningService.java:330)
	at com.cdh.service.ListeningService$$ExternalSyntheticLambda5.run(Unknown Source:4)
	at java.lang.Thread.run(Thread.java:919)

Pourtant l’interaction Jeedom est bien appelée !!!
C’est après l’appel que l’application Jeedomix se ferme sur le téléphone.
Peux-tu corriger ce plantage?

Pour info, si je ne mets pas d’IP alors ça ne plante pas et j’ai juste le message demandant de spécifier l’URL …

@Djelau , j’ai trouvé comment récupérer la phrase dictée et l’utiliser directement dans un scenario, sans besoin de modifier Jeedomix !

  • Jeedomix va construire l’URL d’appel d’une interraction comme ceci :
http://192.168.1.15/core/api/jeeApi.php?apikey=MaClefAPI&type=interact&query=Test Jeedomix
  • On va alors créer une interaction ou l’on va spécifier « #dictation# » dans le champs demande et créer une action qui va appeler un scenario, comme ceci :


    et

  • Finalement notre scenario « Jeedomix » avec un bloc code:

$_tags = $scenario->getTags();

if (!isset($_tags['#dictation#'])) {
 return; 
}
    
$dictation = $_tags['#dictation#'];

$scenario->setlog('Phrase : ' . $dictation);

Voici le résultat dans le log du scenario :

Sébastien

Bonjour,
Un grand merci pour ton écoute et tes indications.
J’ai réussi avec l’URL à partir de mon téléphone (Samsung S8). Mais je ne sais pas comment on écrit après le « query » afin que Jeeomix interprète la commande:
query=
Effectivement les logs sont apparus :grinning:
Encore merci pour ton aide efficace

@Sattaz super, ton adaptation…mais n’oublie pas que tu la greffes sur un algorithme prévu à d’autres fins => l’obligation de respecter le retour d’interaction : #equipement#@@@Voilà@@@Equipement #equipement# activé
@naif je t’invite à lire et relire les docs. Query attend l’ordre à exécuter

Salut @leglaude

Je ne comprends pas ce que tu expliques…
Tu parles de Jeedom et du moteur d’interactions lui-même ou tu parles de Jeedomix ?

Avec mon adaptation je récupère la phrase et j’ignore complètement le moteur d’interactions de Jeedom, il ne fait rien à part appeler le même scénario à chaque demande… du coup avec Jeedomix (quand il fonctionnera sur mon téléphone), chaque demande vers l’URL d’interactions Jeedom lancera ce scénario qui lui récupérera la phrase, et de là je pourrais utiliser mon script pour découper la phrase et identifier les parties de mots clef qui déclencheront une action.

As-tu pu identifier la cause du plantage de Jeedomix avec le log que je t’ai donné ?

Merci,

Sébastien

Tu vois bien: tu appelles une interaction qui doit avoir comme réponse les 3 champs que je renseigne dans mes posts d’introduction. On voit dans ton log d’erreur un array problématique, ce qui me fait penser que c’est sûrement ça car jeedomix les exige