[JPI-APK android] Tel Android dedié domotique

Prochaine maj à venir :

Possibilité d’utiliser un speakerphone bluetooth pour la reconnaissance vocale.
Pour l’instant les handsets bluetooth (micros BT) ne fonctionnent pas avec JPI, seul le micro intégré à l’appareil est utilisé.

On pourra ainsi se retrouver ainsi avec une espèce de google home ou Alexa Like.
Voir peut être mieux avec un bon speakerphone de conférence.

Les premiers tests sont concluants…
J’attends de recevoir du matos pour valider (je ne peux tester pour l’instant qu’avec une oreillette kit main libre BT mais ça semble bien fonctionner)

1 « J'aime »

Bonjour @dJuL
J’ai hâte de découvrir ce nouveau joujou…

Pourtant j’ai vérifié l’ip et la clé API plusieurs fois… On peut voir le lien envoyé à jeedom dans le log ?

Que se passe t’il avec l’exécution d’une commande Jeedom ?

ex :

(edit) pourtant le symptôme ressemble à un protocole, une IP, un port ou une clef API mal renseignée…

J’ai fais exactement comme tes screens… Bon bha j’ai du faire une faute sur la clé API je vois que ça car le reste est bon.
Quand le lance la commande, ça m’envoie un popup rouge ERREUR « jeedom ne répond pas ! »
et je ne reçois rien dans Jeedom, j’ai à la place envoyé la requête communication http et la niquel.

Dans le log des erreurs de JPI tu as quoi comme raison, timeout ?
A voir sinon si la clef API ne dépasse pas les 128 caractères

Edit: (lors d’une erreur authentification, l’API Jeedom fait un sleep de 5s. Comme le réglage par défaut du timeout de JPI est de 2s c’est pour cela que cela soulève une erreur JPI)

Je te dis ça en fin d’aprem, la je n’ai pas accès à ma tablette.

Edit : Ma clé API fait 32 caractères.

Djul,

Petite question concernant mon affichage de design :

Actuellement j’ai un scenario qui se déclenche detection de présence et qui lance ces lignes :

$jpi = $sc->load(‹ jpi ›, ‹ http://IP:8080 ›);
$jpi->ScreenOn;
$jpi->ACTION(’_designFS’, array(‹ id › => 16));

Mon problème :

A chaque detection, je lance l’allumage de l’écran puis le chargement du design. du coup j’ai une roue dentée qui apparait pendant 5secondes

Ma/Mes question(s) :

Comment puis je rajouter une condition « Si mon design n’est pas en premier plan alors… » ou "Si JPI vient de demarrer alors…’

L’idée serait d’allumer l’écran et afficher le design uniquement si JPI vient d’etre démarré ou (mieux) si le design est pas en premier plan, c’est faisable d’après toi ?

Comment puis je faire pour récupérer des infos via la tablette ?

D’avance merci à toi

Facile.

Il suffit d’afficher le design côté JPI au démarrage du service :

edit: scenario à importer dans JPI dans l’événement service OK :

{
	"event": "SERVICEOK_EVENT",
	"key": "__DEFAULT__",
	"data": [
		{
			"_designFS;0": "id=16"
		},
		{
			"screenOn": ""
		}
	]
}

Côté Jeedom il suffit juste de remettre JPI au 1er plan sur détection :

$jpi = $sc->load(‘jpi’, ‘http://IP:8080’);
$jpi->ScreenOn();
$jpi->showApp();

Le souci venait bien de la clé API, désolé mes yeux ont flanchés.

Du coup j’ai rajouté un bouton pour tester directement dans les réglages généraux si la configuration de Jeedom est valide.
Ce sera dans la prochaine version :wink:

1 « J'aime »

Au top :wink:

Djul,

Nickel pour le lancement du design.

J’ai créé un scenario pour le off car la tablette ne s’eteint pas toujours… Oo

Je testerai un peu plus en détail demain.

Encore merci à toi !

Bonjour,

Depuis qq temps j’ai plein de message d’erreur :


 - 14/01/20 18:30:40 - toInt(core) ERREUR: Format nombre non correct ! _NULL_
 - 14/01/20 18:31:19 - toInt(core) ERREUR: Format nombre non correct ! _NULL_
 - 14/01/20 18:32:17 - toInt(core) ERREUR: Format nombre non correct ! _NULL_
 - 14/01/20 18:32:43 - toInt(core) ERREUR: Format nombre non correct ! _NULL_

Le bandeau en haut d’écran est tout rouge d’alerte !!! :slight_smile:

JPI me sert essentiellement pour les sms et pour le lancement de fullykiosk et un peu pour les interactions.
Donc je ne vois pas ce qui provoque cette répétition, une idée ? une direction à creuser ?

Le plus simple est de le faire directement dans JPI, avec par exemple une action personnalisée _screenOn :

(ici le timer est de 10 minutes, il suffit pour cela de modifier time=600 pour changer la durée)

Code à importer dans l’événement Api HTTP :

{
	"event": "HTTP_EVENT",
	"key": "_screenOn",
	"data": [
		{
			"//": "type=info&text=Fonction+screenOn+personalis%C3%A9e%0A%0APermet+de+garder+l'%C3%A9cran+allum%C3%A9e+10+minutes.%0AEteins+l'%C3%A9cran+si+le+timer+n'est+pas+int%C3%A9rrompu+avant+(si+l'action+n'est+pas+relanc%C3%A9e+%C3%A0+nouveau+pendant+10+minutes)"
		},
		{
			"//": "type=comment&text=Stoppe+le+timer+ScreenOff"
		},
		{
			"sleep": "name=TimerScreOff&time=0"
		},
		{
			"//": "type=comment&text=Allume+l'%C3%A9cran"
		},
		{
			"screenOn": ""
		},
		{
			"//": "type=comment&text=Attends+10+minutes"
		},
		{
			"sleep": "name=TimerScreOff&time=600"
		},
		{
			"//": "type=comment&text=V%C3%A9rifie+se+le+timer+n'est+pas+pr%C3%A9matur%C3%A9ment+int%C3%A9rrompu+%3A"
		},
		{
			"__IF__": "paramL=%7BSTATUS%7D&operator=__EQUAL__&paramR=1"
		},
		{
			"//": "type=comment&text=Eteins+l'%C3%A9cran"
		},
		{
			"screenOff": ""
		},
		{
			"__END__": ""
		}
	]
}

Il suffit de lancer cette action au démarrage de JPI pour instancier le timer et de l’utiliser également dans Jeedom à la place de l’action ScreenOn de base avec :

$jpi->ACTION(’_screenOn’);

Je parie que cela vient du plugin JPI…
En tout cas cela signifie qu’une action JPI est exécutée avec des paramètres incorrectes (nombre attendu et autre chose reçu).

Faut vérifier dans le journal des événements à la même heure pour trouver le coupable

Re,

Je n’utilise pas le plugin JPI, je fais des appels direct en PHP pour les fonctions dont j’ai besoin

extrait du journal des événements autour de 18:32:43 qui est l’heure de la dernière erreur (cf ci dessus)

14/01/20 18:32:25 - appvoicecmd_event ------ __START_MODE__ ------
 - 14/01/20 18:32:25 - appvoicecmd_event - action: setVar => 1 [OK]
 - 14/01/20 18:32:25 - appvoicecmd_event - action: setVar => 1 [OK]
 - 14/01/20 18:32:25 - appvoicecmd_event - action: setVar => 1 [OK]
 - 14/01/20 18:32:25 - appvoicecmd_event - action: setVar => 1 [OK]
 - 14/01/20 18:32:25 - appvoicecmd_event - action: setVar => 1 [OK]
 - 14/01/20 18:32:25 - appvoicecmd_event - action: setVar => 1 [OK]
 - 14/01/20 18:32:25 - appvoicecmd_event - évaluer: SI ( "allume les lumières du bureau" match /annul(é|es?|er)|quitt(é|es?|er)|kit/gi ) => FAUX
 - 14/01/20 18:32:26 - appvoicecmd_event - évaluer: SINON SI ( "allume les lumières du bureau" match /(r?entres?r?|retournes?r?|mets(-|\\s)toi|mettre)\\s.*veille/gi ) => FAUX
 - 14/01/20 18:32:26 - appvoicecmd_event - FIN du bloc CONDITION
 - 14/01/20 18:32:26 - appvoicecmd_event ------ __START_MODE__ ------
 - 14/01/20 18:32:26 - appvoicecmd_event - action: setVolume => 1 [OK]
 - 14/01/20 18:32:26 - appvoicecmd_event - évaluer: SI ( "allume les lumières du bureau" match /affiche(s|r)?\\s.*design/gi ) => FAUX
 - 14/01/20 18:32:26 - appvoicecmd_event - évaluer: SINON SI ( "allume les lumières du bureau" match /recherche(s|r)?\\s.*google/gi ) => FAUX
 - 14/01/20 18:32:26 - appvoicecmd_event - évaluer: SINON SI ( "allume les lumières du bureau" match /écran\\s.*accueil/gi ) => FAUX
 - 14/01/20 18:32:26 - appvoicecmd_event - évaluer: SINON SI ( "allume les lumières du bureau" match /change(s|r)?\\s.*voi(x|e)|voi(x|e)\\s.*chang(é|es?)/gi ) => FAUX
 - 14/01/20 18:32:26 - appvoicecmd_event - évaluer: SINON SI ( "allume les lumières du bureau" match /(met(s|tre)?|règle(s|r)?|augmente(r|s)?|monte(r|s)?|baisse(r|s)?|change(r|s)?|modifie(r|s)?|(re)?défini(r|s|t)?)\\s.*volumes?/gi ) => FAUX
 - 14/01/20 18:32:26 - appvoicecmd_event - évaluer: SINON SI ( "allume les lumières du bureau" match /(inf|info|lampe|volet)\\s/gi ) => FAUX
 - 14/01/20 18:32:26 - appvoicecmd_event - lance: SINON
 - 14/01/20 18:32:26 - appvoicecmd_event - action: exit (voiceCmd)
 - 14/01/20 18:32:26 - appvoicecmd_event - voiceCmd: .JEEDOM INTER.
 - 14/01/20 18:32:26 - appvoicecmd_event (.JEEDOM INTER.) - SCÉNARIO DÉSACTIVÉ: void
 - 14/01/20 18:32:26 - appvoicecmd_event - action: voiceCmd => 1 [OK]
 - 14/01/20 18:32:26 - APPVOICECMD_EVENT terminé
 - 14/01/20 18:32:42 - APPVOICECMD_EVENT déclenché - mode: __ABORT_MODE__
 - 14/01/20 18:32:42 - appvoicecmd_event - scénario: __ABORT_MODE__
 - 14/01/20 18:32:43 - appvoicecmd_event - voiceCmd: .VEILLE
 - 14/01/20 18:32:43 - appvoicecmd_event (.VEILLE) ------ __START_MODE__ ------
 - 14/01/20 18:32:43 - appvoicecmd_event (.VEILLE) - action: setVar => 1 [OK]
 - 14/01/20 18:32:43 - appvoicecmd_event (.VEILLE) - action: setVar => 1 [OK]
 - 14/01/20 18:32:43 - appvoicecmd_event (.VEILLE) - action: setVar => 1 [OK]
 - 14/01/20 18:32:43 - appvoicecmd_event (.VEILLE) - action: setVar => 1 [OK]
 - 14/01/20 18:32:43 - appvoicecmd_event (.VEILLE) - action: setVar => 1 [OK]
 - 14/01/20 18:32:43 - appvoicecmd_event (.VEILLE) - action: setVar => 1 [OK]
 - 14/01/20 18:32:43 - appvoicecmd_event (.VEILLE) - évaluer: SI ( "veille" match /annul(é|es?|er)|quitt(é|es?|er)|kit/gi ) => FAUX
 - 14/01/20 18:32:43 - appvoicecmd_event (.VEILLE) - évaluer: SINON SI ( "veille" match /(r?entres?r?|retournes?r?|mets(-|\\s)toi|mettre)\\s.*veille/gi ) => FAUX
 - 14/01/20 18:32:43 - appvoicecmd_event (.VEILLE) - FIN du bloc CONDITION
 - 14/01/20 18:32:43 - appvoicecmd_event (.VEILLE) ------ __START_MODE__ ------
 - 14/01/20 18:32:43 - appvoicecmd_event (.VEILLE) - action: setVar => 1 [OK]
 - 14/01/20 18:32:43 - appvoicecmd_event (.VEILLE) - action: setVar => 1 [OK]
 - 14/01/20 18:32:43 - appvoicecmd_event (.VEILLE) - action: setVar => 1 [OK]
 - 14/01/20 18:32:43 - appvoicecmd_event (.VEILLE) - action: setVar => 1 [OK]
 - 14/01/20 18:32:43 - appvoicecmd_event (.VEILLE) - action: getVar => 2 [Je me met]
 - 14/01/20 18:32:43 - appvoicecmd_event (.VEILLE) - action: tts => 1 [OK]
 - 14/01/20 18:32:44 - appvoicecmd_event (.VEILLE) - action: unsetVar => 1 [OK]
 - 14/01/20 18:32:44 - appvoicecmd_event (.VEILLE) - action: unsetVar => 1 [OK]
 - 14/01/20 18:32:44 - appvoicecmd_event (.VEILLE) - action: exit (voiceCmd)
 - 14/01/20 18:32:44 - appvoicecmd_event (.VEILLE) - action: voiceCmd => 1 [OK]
 - 14/01/20 18:32:45 - appvoicecmd_event - action: voiceCmd => 1 [OK]
 - 14/01/20 18:32:45 - APPVOICECMD_EVENT terminé

Ok.
Curieux car je ne vois pas du tout d’où ça peut venir.
Rien dans le logs des événements ne semble lié à cette erreur…
L’erreur précédente 14/01/20 18:32:17 correspond t-elle également à appvoicecmd_event (.VEILLE) dans le log des événements ?

Ca se gate :frowning:
@dJuL Au vu de ces problèmes j’ai supprimé JPI puis je l’ai réinstallé via un apk de septembre, il m’a proposé une mise à jour, pas de soucis sauf que … dans les menus je n’ai plus la sauvegarde/restauration ni le gestionnaire de fichiers (et peut être d’autre) …
Par sécurité, peux tu me donner le lien du dernier apk, comme ça je recommencerais la désinstall / install au propre

Je ne pense pas que c’est une apk de septembre, surement une très vieille…
Le lien est dans le 1er post de ce fil :