[JPI-APK android] Tel Android dedié domotique

En principe non, ça m’étonnerai beaucoup que j’ai fais ça.
De mémoire je scan la mémoire interne des données utilisateur et les potentielles sdcard si je trouve rien, le tout via les fonctions internes android mais faut que je check le code car c’est très vieux.

Vraiment pas de quoi être désolé, le but est que tout fonctionne sur 100% cas de figures (et c’est pas les cas de figure qui manquent avec les différentes versions Andoid, les surcouches et les ROMS…) :wink:

Ca a l’air plus compliqué que ça …
J’avais donc un premier lancement OK de JPI avec la GUI.
Je viens de re-tester la procédure (ba oui je suis sysadmin, mais pas de connaissance en dev android) : désinstallation paw + jpi, suppression du dossier paw, réinstall avec le chemin dans paw /storage/0/emulated … Et ba … le check ne marche plus !

EDIT : je n’arrive pas à reproduire à chaque fois le même comportement … Je continue de tester …
EDIT2 : je sens bien la race condition …
EDIT3 : si tu as une version qui balancerait un peu de débug dans le log de boot de JPI ça pourrait être intéressant (genre le retour de ta fonction environment.getExternalStorageDirectory())

En résumé la seule procédure où ça fonctionne chez moi :

  • On repart de zéro : suppression/désinstallation, suppression du dossier paw sur SD forcekill PAW+JPI.
  • mount bind de la SD vers /storage/0/emulated
  • Installation de JPI qui installe automatiquement PAW
  • Lancer PAW à la main pour extraire le content (le wait de la procédure est trop court pour mon tel, et sans le lancer à la main ça ne fonctionne pas forcément). Le Home de PAW n’est pas forcément /storage/0/emulated, il peut etre /storage/xxx-blabla/paw
  • Relancer JPI, le check du content passe dans la majorité des cas mais pas tout le temps.

Si ça ne fonctionne pas, il faut que je relance la procédure de 0 car ça ne fonctionnera jamais.

Je n’ai pas réussis à reproduire à coup sur le fonctionnement ou le non fonctionnement…

→ Si /storage/0/emulated n’est pas monté, je n’ai jamais réussis à avoir le check de JPI fonctionnel.

Ok c’est curieux tout ça.

Je viens de rentrer et comme prévu JPI ( si il ne trouve pas les chemins par défaut basés sur la racine retournée par Environment.getExternalStorageDirectory() + les répertoires possibles de Paw ) scanne ensuite le dossier complet retourné également par la fonction Environment.getExternalStorageDirectory()

Il y a donc un potentiel bug dans ta ROM car cette fonction devrait retourner null et non pas sorage/0/emulated vu que le dossier n’existe pas par défaut dans la ROM !
Sachant que ce dossier est également un point de montage virtuel dans toutes les ROMs, custom ou stock, c’est surement un oublie des devs de la ROM.

Après pourquoi parfois ça passe, et parfois non, ça je sais pas… Peut être que l’OS peut mettre un certain temps avant de détecter la liaison symbolique et de faire en sorte que la fonction retourne le chemin au lieu de null
Cela expliquerait également la réaction de paw sur la destination de l’extraction

Bon alors 1% j’étais gentil, ça doit être plutôt 0.1 % :yum:
En fait il semble, après recherches, que ce pb survient sur les très vieux modèles qui avaient besoin d’une carte SD physique pour fonctionner…

Bref j’ai ajouté un truc qui devrait marcher sans avoir besoin de faire un symlink.
Ce sera dans la prochaine version qui est prête et qui sera en ligne d’ici ce WE je pense.
Tu me diras si ça marche.

1 « J'aime »

Update du code v0.98 en ligne ! :grin:

Ajout du support du bluetooth pour la reconnaissance vocale, ajout d’actions Jeedom et d’action pour la gestion de l’écran, diverses corrections.

Change log :

Interface web : CONFIGURATION / Réglages de bases / Jeedom

  • Ajout d’un bouton pour tester la configuration de Jeedom
    Test effectué avec les paramètres des champs protocole, IP, port, chemin, clef API et timeout afin de valider la configuration à la volée avant même d’avoir à sauvegarder la configuration.

Interface web : CONFIGURATION / Réglages avancés

  • / Commande Vocale : Ajout d’une option pour utiliser un micro en bluetooth (si disponible) pour la reconnaissance vocale.
  • / Gestionnaire de fichiers : Refonte du bouton pour tester si le chemin racine est valide

Interface web :

  • Correction de bug de scrollbars inutiles qui pouvait apparaître sur certains appareils.
  • Maj du CSS

Interface web : Asssistant d’édition / exécution d’actions

  • Action Jeedom / setCmd : Ajout d’un menu magique pour récupérer directement les ID des commandes, classés par OBJETS / EQUIPEMENTS
  • Action Jeedom / getCmd : Ajout d’un menu magique idem a setCmd
  • Action Jeedom / scenario : Ajout d’un menu magique pour récupérer directement les ID des scénario, classés par OBJETS / GROUPES

NOTE: pour récupérer les ID de l’action Jeedom / scenario il faudra attendre une prochaine maj de Jeedom (le temps que la modif arrive dans la branche release), ou bien effectuer vous même cette ajout dans le fichier core/api/jeeApi.php : Update jeeApi.php by rulistaff · Pull Request #1578 · jeedom/core · GitHub

Ajout d’actions :

  • Jeedom / setVariable : Permet de définir ou modifier une variable Jeedom
  • Jeedom / getVariable : Permet de récupérer le contenu d’une variable Jeedom
  • Jeedom / message : Permet de publier un message dans le centre des messages Jeedom
  • Système / sleepScreen : Permet de définir la durée (en seconde) de mise en veille de l’écran, -1 pour jamais éteindre (Peut ne pas fonctionner sur certains appareils)
  • Informations / getScreenTime : Retourne la durée (en seconde) de mise en veille de l’écran

Core :

  • Corrections dans le moteur des journaux afin de supprimer certains caractères qui pouvait parfois compromettre l’intégrité du log (à la sauvegarde et à la lecture)
  • Maj de l’initialisation
  • Maj des fichiers de langues
  • Diverses corrections et optimisations

NOTE: Vous devez d’abord mettre à jour l’APK de JPI en v0.98 pour pouvoir avoir accès à cette mise à jour du code.


Update de l’APK v0.98 en ligne ! :grin:

  • Ajout du support du bluetooth pour la reconnaissance vocale
    Il est possible de connecter / déconnecter à chaud un handset BT pendant la reconnaissance vocale continue, la bascule est automatique. :slightly_smiling_face:
  • Ajout du support du bouton BT de lancement de l’assistant Google pour pouvoir lancer à la place la reconnaissance vocale de JPI (lors du premier clique il faut l’associer à JPI sur l’écran de l’appareil)
  • Lors de l’utilisation de la croix Rouge pour vider le log des erreurs, maintenant les notifications android des erreurs de JPI sont également vidées.
  • Il y avait un bug sur la vérification des permissions d’accès aux notifications si plusieurs applications avaient la permission accordée => corrigé
  • Nouvelle méthode pour trouver les dossiers de Paw, qui peuvent être n’importe où, en interne ou sur une carte SD externe, et même si le dossier racine ‹ paw › est renommé (Il est déconseiller de changer le chemin du répertoire créer par défaut au 1er lancement de Paw pour éviter à JPI de scanner partout et de rallonger le démarrage de JPI)
  • Rallongement du délais d’attente de l’extraction des données de paw lors de l’installation de JPI sur les plus vieux appareils.
  • Support des nouvelles actions
  • Divers corrections et optimisations

Change log versions précédentes:

v0.974: jpi-apk-android-tel-dedie-domotique/10014/22
v0.973: jpi-apk-android-tel-dedie-domotique/10014/22
v0.97 à 0.972: viewtopic.php?f=27&t=18283&start=3020#p627896


NOTE : Cette version est probablement à prendre comme une “V1” et devrait être relativement stable. (testé sous Android v5 à v9)


NOTE² : pour les vieilles version d’android (< V6) les designs de Jeedom V4 nécessitent la mise à jour de l’appli système WebView. Il faut parfois bidouiller et avoir l’accès root pour pouvoir la faire.

Symptômes : Mauvaises couleurs des fonds et des textes dans les designs qui sont dues aux variables CSS présentes dans Jeedom V4 et qui ne sont pas supportées par les vieux moteurs WebView

Ex pour résoudre le pb (nécessite un accès root) :

Testé avec succès sur des tablettes android V5.1 où il n’était pas possible de mettre à jour ou de choisir la version de webview.

:wink:


L’application restera gratuite. un bouton donation se trouve dans la fenêtre DIVERS / A propos de l’interface web si vous souhaitez soutenir le projet. :green_heart:


Screen shots :

Nouveau bouton de Test de la configuration de Jeedom :

Nouveaux menus magique pour récupérer directement les id Jeedom :

Nouvelles actions :


Vidéo de démo du bluetooth pour les interactions :


L’application restera gratuite. un bouton donation se trouve dans la fenêtre DIVERS / A propos de l’interface web si vous souhaitez soutenir le projet. :green_heart:


1 « J'aime »

Bravo @dJuL !
Le réglage du temps de veille est géniale (testé, nickel), mais la prochaine version essaye de la publier au moins une semaine avant de l’avoir faite :slight_smile: Ca me fera gagner du temps !!! :smile: .

Par contre la fonction getScreenTime est introuvable :frowning: . Je compte l’utiliser pour le sleep du contrôle de mouvement pour gagner en lisibilité dans les logs en diminuant les appels ResumeMotionDetector

PS : comme elle a l’air sympa, tu peux nous donner la référence de ton boitier musical magique ?

PS2 : testé toutes les new fonctions, all OK !!! (horsgetScreenTime)

C’est marqué dans le changelog, getScreenTime se trouve dans la catégorie Informations (comme la plupart des actions de ce type)

Sinon la référence du boitier est emeet m2, relativement cher car c’est un truc à la base fait pour les conférences, mais le son de ce boitier est vraiment bon pour sa taille (on s’en rend déjà un peu compte dans la vidéo surtout avec la musique), et la captation des micros est vraiment bonne et incomparable avec le micro d’origine. Idem pour le design et la qualité générale qui sont de bonne facture.

Ps: ce n’est pas un boitier de musique, il se comporte comme n’importe quel handset bluetooth capable de faire une conversation téléphonique.
JPI donc peut marcher avec une oreillete BT, un casque Bose, ou bien ce type de boitier…

Pour revenir aux interaction, j’ai intégré mon moteur à JPI, cela fonctionne nickel mais … au bout d’un certain temps il n’y a plus de reconnaissance vocale, JPI « n’entend plus rien », par ailleurs cela ne fonctionne que avec des phrase très courtes, au bout de 5-6 mots il ne capte plus :frowning:
Donc ou j’ai oublié quelques choses ou mon code d’intégration n’est pas bon (j’ai remplacé ton appel au moteur jeedom par les miennes, j’appelle un scénario jeedom avec le message JPI en tag et je lis TTS le retour de jeedom via une variable. tous le reste du code JPI est d’origine
peut faire mieux ?

Ça doit venir de ton appareil je pense (Manque de cpu ?)…
J’ai pas ce problème et j’utilise également un scénario (qui est relativement lourd et puissant) pour les interactions Jeedom :

Apparemment la grosse différence est que moi je lis une variable pour le retour et toi tu utilise la valeur de retour du scénario … mais :frowning: je dois être bête mais comment fait on en php dans jeedom (bloc code) pour retourner une valeur en fin de scénario ? J’ai peur d’avoir loupé un épisode :frowning:

J’utilise le framework sc :

http://rulistaff.free.fr/sc/doc/?class-sc#_scenario_return

Salut Djul,

J’aimerai comprendre la différence entre ScreenON/OFF et sleepScreen.
Le sleep il faut lui donner un temps de veille. Alors que le screenOff il reste éteint ?

Le problème c’est que suivant les tablettes, il faut souvent rallumer car elles perdent le wifi …

C’est pourtant relativement simple :

  • SleepScreen permet de modifier le paramètre android de la durée avant la mise en veille de l’écran. C’est comme aller le faire à la main dans les paramètres android, sauf qu’on peut régler le temps qu’on veut à la seconde près sans être limité aux valeurs pré-définies dans les settings android.
  • getScreenTime permet de récupérer la valeur en seconde du setting de mise en veille de l’écran.
  • ScreenOff permet d’éteindre l’écran tout de suite (sans changer la valeur du paramètre android de mise en veille de l’écran)
  • ScreenOn permet d’allumer l’écran

Quand aux tablettes qui perdent le wifi écran éteint, ça je n’y peut rien. Il y a pourtant un wakeLock et dans Paw et dans JPI sensé éviter cela. C’est probablement forcé dans la ROM, de mon côté je n’ai aucun appareil (heureusement) qui réagi comme cela…
Un scénario Cron côté JPI devrait pouvoir résoudre cela en rallumant l’écran si éteint .

1 « J'aime »

bonjour
j’utilise JPI entre autr pour le streaming de la camera .

mais souvent dans mon synology surveillance station j’ai le logo de JPI qui apparaît .

malgré avec mis le démarrage de la fonction streaming je suis obliger de la relancer …; je n’est pas de mise en veille wifi d’activer .
pour info je trouve le server paw arrête des fois .

ma tablette n’est pas rooter .

Bonjour,

A propos du détecteur de mouvement via caméra
Après 2-3 heures et pas mal de signalement de mouvement la détection s’arrète avec ce message dans le journal de l’application :
« - 20/01/20 13:50:36 - CAMERA Erreur ligne 151:
j »

C’est juste " j " le message ? :thinking:

sorry, copier/coller trop rapide :

  • 20/01/20 13:52:39 - CAMERA Erreur ligne 151:
    java.lang.RuntimeException: Fail to connect to camera service

Mise à jour réalisée. Juste un souci sur les 3 devices sur load config en erreur. Mais visiblement il restaure et mets le bon fichier… et il parle d’une option qui n’existe pas (peut être que tu as ajouté AppVoiceCmd_bluetoothMic ?)

- 20/01/20 06:23:27 - Service stop
 - 20/01/20 06:23:35 - Update apk to v0.98
 - 20/01/20 06:23:39 - Application Quit
 - 20/01/20 06:23:50 - Activity start
 - 20/01/20 06:23:52 - ERREUR CONFIG: AppVoiceCmd_bluetoothMic is missing, check in file config.json.dist
 - 20/01/20 06:23:58 - Update code to v0.98
 - 20/01/20 06:24:14 - Service start
 - 20/01/20 06:24:14 - 0 cron task(s) loaded
 - 20/01/20 15:29:06 - START Streaming (Front camera - 20fps)
 - 20/01/20 15:29:06 - RESTART Video Recording (Front camera - 6fps)
 - 20/01/20 15:29:38 - STOP Video Recording (duration has been reached)
 - 20/01/20 15:32:19 - STOP Streaming

Par contre, depuis 2/3 mises à jour, j’ai un souci de recharge de téléphone. J’ai l’impression que la batterie de mon tél déconne. Mais j’avais monté le niveau faible à 25%, le faible à 10.

Mon tél étant rooté, une idée pour recalibrer la batterie ?

Je vois aussi cette option ?