Ce Forum passera en lecture seule en janvier 2020
Image
Merci de vous rendre sur https://community.jeedom.com maintenant pour vos prochains postes ;)

[JPI-APK android] Tel Android dedié domotique

Cette partie est dédiée à la programmation sur le logiciel JEEDOM
benj29
Actif
Messages : 3975
Inscription : 26 mars 2017, 09:57
Contact :

Re: [JPI-APK android] Tel Android dedié domotique

Message par benj29 » 16 févr. 2018, 12:37

OK, donc j'attends ta mise à jour ;) (tu décernes quand le prix du meilleur débuggueur ?) :D

En gros sur ce code :
mouvement / refresh à 60 secondes si mouvement de nouveau / sinon j'attends 240 secondes avec la page actuelle et screen off

Tu as compris que je teste la présence ou non pour afficher un design ou l'autre. La bonne manière de faire ? Cela ne va pas être trop gourmand de faire cela à chaque fois ?

Pour les SMS, je fais bien des sendSms à la suite. Je dois reprendre tout mon système de notifications car il était on ne peut plus simple pour y intégrer la notification TTS. S'il y a une meilleure manière de faire, n'hésite pas.

Et comme d'habitude, merci et bravo !

Avatar de l’utilisateur
dJuL
Actif
Messages : 1425
Inscription : 28 janv. 2016, 01:37
Localisation : Ile de France

Re: [JPI-APK android] Tel Android dedié domotique

Message par dJuL » 16 févr. 2018, 13:11

C'est de ma faute j'aurai du tester avant...
D'ailleurs je viens de voir qu'il y a une erreur dans le scénario que j'ai posté.
C'est SI {STATUS} == 1 qu'il faut mettre sous le sleep et non pas {RETURN}

Image
Dernière version de JPI
Un bouton donation se trouve dans la fenêtre DIVERS / A propos de l'interface web si vous souhaitez soutenir le projet.

Sartog
Actif
Messages : 502
Inscription : 27 août 2015, 14:54

Re: [JPI-APK android] Tel Android dedié domotique

Message par Sartog » 16 févr. 2018, 13:50

@djul et @benj29, pourriez-vous m’indiquer vos réglages de détection, svp ?
Box : smart, mini+, pi 2 et 3, ipbx800 v4
Protocole : Z-Wave (Fibaro & Qubino), Ikea, Bluetooth
Méteo : Netatmo
Audio : Sonos (Play 1 et 5)

benj29
Actif
Messages : 3975
Inscription : 26 mars 2017, 09:57
Contact :

Re: [JPI-APK android] Tel Android dedié domotique

Message par benj29 » 16 févr. 2018, 14:08

Ceux de base. Rien touché (de mémoire).
Djul sur le IF après la récupération de la présence, c'est aussi STATUS ? ou RETURN ? C'est quoi la différence ?

vf62
Timide
Messages : 104
Inscription : 16 juil. 2014, 11:12

Re: [JPI-APK android] Tel Android dedié domotique

Message par vf62 » 16 févr. 2018, 15:09

Bonjour,

petite question, est ce qu'en passant par jpi, est-on capable de passer des commandes vers google assistant ?
c'est possible de le faire via tasker + autoinput mais ça fait tres usine à gaz .. (http://forum.joaoapps.com/index.php?res ... asker.297/)

Je ne souhaite pas commander jeedom via google assistant (il existe des plugin et des IFTTT pour ça) mais bien l'inverse, passer des commandes à google assistant depuis jeedom.

Peut etre via un sendIntent ?

merci

Avatar de l’utilisateur
dJuL
Actif
Messages : 1425
Inscription : 28 janv. 2016, 01:37
Localisation : Ile de France

Re: [JPI] Tel Android dedié domotique

Message par dJuL » 16 févr. 2018, 15:57

dJuL a écrit :
09 févr. 2018, 14:49

edit8 :

Update du code patch v0.9678 en ligne :D

- CORE: correction d'un bug avec l'action sleep lorsqu'un nom lui est attribué
- CORE - Envois de SMS: met les SMS en file d'attente si un envoie est déjà en cours
- Interface web - Fenêtre SMS / MMS: Ajout de boutons afin de pouvoir tout sélectionner / désélectionner d'un seul coup (dans le mode Sélection)
- Diverses petites corrections

---------- ---------- ----------

benj29 a écrit :
16 févr. 2018, 14:08
Djul sur le IF après la récupération de la présence, c'est aussi STATUS ? ou RETURN ? C'est quoi la différence ?
Non uniquement sur le dernier IF
Je te laisse regarder dans le menu des mot clef #, il y a l'aide en bas, tu verras la différence.

vf62 a écrit :
16 févr. 2018, 15:09
petite question, est ce qu'en passant par jpi, est-on capable de passer des commandes vers google assistant ?
c'est possible de le faire via tasker + autoinput mais ça fait tres usine à gaz .. (http://forum.joaoapps.com/index.php?res ... asker.297/)

Je ne souhaite pas commander jeedom via google assistant (il existe des plugin et des IFTTT pour ça) mais bien l'inverse, passer des commandes à google assistant depuis jeedom.

Peut etre via un sendIntent ?
Comme ça aucune idée, ton lien est coupé en plus.
Mais je ne pense pas que ce soit possible sans tasker si il faut autoinput car ce dernier émule des actions utilisateurs sur l'écran...
Dernière version de JPI
Un bouton donation se trouve dans la fenêtre DIVERS / A propos de l'interface web si vous souhaitez soutenir le projet.

vf62
Timide
Messages : 104
Inscription : 16 juil. 2014, 11:12

Re: [JPI-APK android] Tel Android dedié domotique

Message par vf62 » 16 févr. 2018, 16:06

merci pour ton retour
Je remets le lien : http://forum.joaoapps.com/index.php?res ... asker.297/

Effectivement, il passe par des émulations de click et d'envoi de texte à l'écran. Et du coup, c'est très usine à gaz :(

benj29
Actif
Messages : 3975
Inscription : 26 mars 2017, 09:57
Contact :

Re: [JPI-APK android] Tel Android dedié domotique

Message par benj29 » 16 févr. 2018, 16:09

Arf, merci pour la correction.
Par contre, je dois être bête, mais du coup, je ne comprends pas ce que je dois utiliser dans mon cas après avoir fait un getCMD ?
J'ai bien l'impression que c'est RETURN et non STATUS, oui. Mais j'aimerai comprendre.

Image

Avatar de l’utilisateur
dJuL
Actif
Messages : 1425
Inscription : 28 janv. 2016, 01:37
Localisation : Ile de France

Re: [JPI-APK android] Tel Android dedié domotique

Message par dJuL » 16 févr. 2018, 16:19

RETURN retourne le résultat de l'action, donc c'est bien ça que tu dois utiliser pour avoir le retour de ton action getCmd.

STATUS retourne le statut (en chiffre comme indiqué) du résultat de l'action
Si getCMD retourne le texte "1" alors le Statut sera "2" (Autre), si une erreur se produit alors le statut sera 0 ou -2

Du coup si STATUS < 1 on peut être sur que l'action n'a pas marché
Si STATUS > 0 on est sur qu'il n'y a pas eu d'erreur.

Dans le cas de Sleep, Sleep retourne soit "OK" soit 'INTERROMPU" (en langue française mais ça pourrait "OK" et "INTERRUPTED" en anglais)
Voilà pourquoi il est plus simple d'utiliser le statut qui sera donc soit 1 (OK) soit 2 (INTERRUPTED)
Le statut sera toujours juste peut importe la langue utilisée.

edit : tiens d'ailleurs je viens de vois qu'il y a une erreur dans l'exemple de { JSON }...
(C'est INTERROMPU qui doit retourner 2 et pas OK pour l'action sleep)

edit 2 : J'ai corrigé le texte de l'aide, si vous avez déjà fait la maj il faut faire un forceMaj car j'ai pas changé le numéro de version
Dernière version de JPI
Un bouton donation se trouve dans la fenêtre DIVERS / A propos de l'interface web si vous souhaitez soutenir le projet.


Avatar de l’utilisateur
dJuL
Actif
Messages : 1425
Inscription : 28 janv. 2016, 01:37
Localisation : Ile de France

Re: [JPI-APK android] Tel Android dedié domotique

Message par dJuL » 16 févr. 2018, 16:44

Je ne comprends pas trop la question...
Avec le framework il est facile de récupérer la valeur d'une variable Jeedom

$maVariable = $sc->getVar('maVariableJeedom', 'valeur si variable non définie');

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

edit : tu a édité ton post entre temps donc ma réponse n'a plus de sens... :lol:
Dernière version de JPI
Un bouton donation se trouve dans la fenêtre DIVERS / A propos de l'interface web si vous souhaitez soutenir le projet.

benj29
Actif
Messages : 3975
Inscription : 26 mars 2017, 09:57
Contact :

Re: [JPI-APK android] Tel Android dedié domotique

Message par benj29 » 16 févr. 2018, 16:48

Argh, tu as été trop rapide, j'ai édité, j'ai trouvé.

Mais par contre, ça je n'ai pas trouvé car je ne connais pas assez la syntaxe, j'avoue.

En fait j'aimerai récupérer le numéro de la caméra pour construire la syntaxe du chemin... en gros faire

Code : Tout sélectionner

$imagePath = $files->getLastFile('/mnt/QNAP-STOCKAGE/Cameras/45', 'jpg|png|gif|bmp', true);
par :

Code : Tout sélectionner

$imagePath = $files->getLastFile('/mnt/QNAP-STOCKAGE/Cameras/'+$variable_cam, 'jpg|png|gif|bmp', true);
Faire une concaténation en fait, c'est trivial, mais je trouve pas dans la documentation (j'ai trouvé pour la variable du coup).

EDIT : oui tu as vu !! :lol: :lol: :lol:

Avatar de l’utilisateur
dJuL
Actif
Messages : 1425
Inscription : 28 janv. 2016, 01:37
Localisation : Ile de France

Re: [JPI-APK android] Tel Android dedié domotique

Message par dJuL » 16 févr. 2018, 16:51

C'est pas dans la doc du framework car ça c'est de la syntaxe php basique et c'est pas lié au framework...
Il faut utiliser le '.' en php pour concaténer du texte.

Code : Tout sélectionner

$imagePath = $files->getLastFile('/mnt/QNAP-STOCKAGE/Cameras/' . $variable_cam, 'jpg|png|gif|bmp', true);
Dernière version de JPI
Un bouton donation se trouve dans la fenêtre DIVERS / A propos de l'interface web si vous souhaitez soutenir le projet.


benj29
Actif
Messages : 3975
Inscription : 26 mars 2017, 09:57
Contact :

Re: [JPI-APK android] Tel Android dedié domotique

Message par benj29 » 16 févr. 2018, 16:52

Ah, au fait, alors ces envois de SMS à la queue alors... une idée ? Car j'en loupe des textos :(
Je vais repenser mon système de notification. Faut-il mettre des sleeps, faire une action d'envoi sur plusieurs numéros d'un coup ?

Tu as des règles de bonne pratique ?

Avatar de l’utilisateur
dJuL
Actif
Messages : 1425
Inscription : 28 janv. 2016, 01:37
Localisation : Ile de France

Re: [JPI-APK android] Tel Android dedié domotique

Message par dJuL » 16 févr. 2018, 17:03

C'est modifié dans le dernier patch, le queue est automatique donc tu n'as rien à faire... Sauf voir si maintenant ça marche mieux... (En espérant que ça venait de là...)
Dernière version de JPI
Un bouton donation se trouve dans la fenêtre DIVERS / A propos de l'interface web si vous souhaitez soutenir le projet.

benj29
Actif
Messages : 3975
Inscription : 26 mars 2017, 09:57
Contact :

Re: [JPI-APK android] Tel Android dedié domotique

Message par benj29 » 16 févr. 2018, 17:04

Et une dernière promis !

Les MMS étant très peu utilisés, je pense que je ne vais pas les intégrer dans les notifications.
J'aimerai par le biais d'une variable (sur les principes des notifications avancées) pouvoir envoyer un MMS à une personne, l'autre ou les 2.
Je voulais donc setter une variable dans Jeedom façon 1/2/3 etc et en fonction dans le code SC pouvoir envoyer l'action MMS sur les mots-clés définis.

Du coup plusieurs questions :

- comment faire le if en question ?

façon

Code : Tout sélectionner

if $condition = 1 then
//Envoie le MMS
$jpi->sendMms('{MY_NUMBER}', $url, $message);
elseif $condition = 2 then
$jpi->sendMms('{MY_NUMBER2}', $url, $message);
else
$jpi->sendMms('{MY_NUMBER}', $url, $message);
$jpi->sendMms('{MY_NUMBER2}', $url, $message);
- est-ce la bonne manière de faire pour envoyer le même message à plusieurs destinataires ?

- et du coup est-ce aussi une manière de faire pour les SMS

EDIT : mince, je vois que tu as répondu entre temps à ma question précédente !

benj29
Actif
Messages : 3975
Inscription : 26 mars 2017, 09:57
Contact :

Re: [JPI-APK android] Tel Android dedié domotique

Message par benj29 » 16 févr. 2018, 21:35

Bon, côté gestion Kiosk, j'avance et ça commence à être pas mal :).

Le scénario est bien plus compliqué car en vrai il faut gérer si l'écran est déjà allumé ou éteint...

Code : Tout sélectionner

{
	"event": "MOTIONDETECTED_EVENT",
	"key": "__DEFAULT__",
	"data": [
		{
			"//": "type=info&text=%C3%89v%C3%A9nement+se+d%C3%A9clenchant+lorsque+la+fonction+modtionDetector+d%C3%A9tecte+un+mouvement."
		},
		{
			"//": "type=comment&text=Remonte+l'info+de+mouvement+de+la+tablette"
		},
		{
			"setCmd": "id=6676"
		},
		{
			"__IF__": "paramL=%7BIS_SCREEN_ON%7D&operator=__EQUAL__&paramR=0"
		},
		{
			"!toast": "message=J'allume+l'%C3%A9cran+car+il+est+%C3%A9teint"
		},
		{
			"screenOn": ""
		},
		{
			"//": "type=comment&text=R%C3%A9cup%C3%A8re+s'il+y+a+quelqu'un+%C3%A0+la+maison"
		},
		{
			"getCmd": "id=6257"
		},
		{
			"//": "type=comment&text=Lance+le+bon+design+(digicode+si+absent%2C+sinon+design+defaut)"
		},
		{
			"__IF__": "paramL=%7BRETURN%7D&operator=__EQUAL__&paramR=0"
		},
		{
			"_designFS;1": "id=23"
		},
		{
			"__ELSE__": ""
		},
		{
			"goToView": "id=11"
		},
		{
			"configureLayout": "buttons=0&webTitleBar=0&webZoomEnabled=1&webTextSize=100&androidFullScreen=1"
		},
		{
			"__END__": ""
		},
		{
			"resumeMotionDetector": ""
		},
		{
			"sleep": "name=Sleep_OFF&time=600"
		},
		{
			"//": "type=comment&text=Lib%C3%A8re+le+capteur+de+mouvement+et+%C3%A9teint+la+tablette+et+attends+10+min+et+si+pas+de+mouvement%2C+on+%C3%A9teint+l'%C3%A9cran+!"
		},
		{
			"!toast": "message=J'ai+atteint+5+min+donc+j'%C3%A9teins+si+pas+de+mouvement"
		},
		{
			"!sleep": "time=1"
		},
		{
			"__IF__": "paramL=%7BSTATUS%7D&operator=__EQUAL__&paramR=1"
		},
		{
			"screenOff": ""
		},
		{
			"__END__": ""
		},
		{
			"__ELSE__": ""
		},
		{
			"//": "type=comment&text=L'%C3%A9cran+est+donc+d%C3%A9j%C3%A0+allum%C3%A9"
		},
		{
			"//": "type=comment&text=Annule+le+sleep+en+cours+s'il+existe+(si+d%C3%A9tection+pr%C3%A9c%C3%A9dente)"
		},
		{
			"!toast": "message=J'annule+le+sleep+pr%C3%A9c%C3%A9dent+et+je+conserve+l'%C3%A9cran+allum%C3%A9"
		},
		{
			"sleep": "name=Sleep_OFF&time=0"
		},
		{
			"resumeMotionDetector": ""
		},
		{
			"__END__": ""
		}
	]
}
Là, le code est en mode "debug" avec des toasts et des temporisations pas bonnes (je passe de 30 à 300 secondes soit 5min).

Image

Le principe est le suivant :
si détection de mouvement
j'envoie la commande sur jeedom (pour d'autres scénarios)
si écran éteint
alors j'allume l'écran
je teste si présence ou non
je lance le design correspond (digicode ou design vue pour l'instant)
je relance la détection de mouvement
j'attends 10 min (ici 30 secondes pour le principe)
si pas de mouvement (status = 1, cf explication de djul)
alors j'éteints l'écran
sinon si écran allumé
alors j'annule le sleep précédent
je relance la détection de mouvement

Mais j'ai un souci, bein oui !

Si jamais je fais un power off pour mettre la tablette en veille, dans les 10 min qui viennent je ne peux plus allumer la tablette par la détection de mouvement... comme si le capteur n'était plus fonctionnel.

A l'origine, j'ai allongé ce délai à 10 min car si j'utilise une application télé (mycanal ou autre) et que je ne suis pas à côté de la tablette dans le délai du sleep, elle s'éteint... du coup, le waf n'est pas respecté et madame ne reste pas à côté quand elle cuisine...

J'avoue que je sèche car je ne sais pas trop comment tester si un apk est lancé ou dans les options de JPI sur les conditions.... mais je n'ai rien trouvé.

Image

Je me dis au pire, le sleep faut pas mettre 5 min mais au moins 15 min car statistiquement on repasse bien devant quand même ! Mais c'est bourrin... ça c'est ce que j'ai fait. Et du coup, la tablette ne se réveille plus durant un délai de X min...

EDIT : je pense avoir trouvé.
En gros si on ne repasse pas devant la tablette que ce soit un film ou un design, ça s'éteint au bout de 10 minutes.
Si l'écran est éteint, quelque soit l'état précédent, ça relance le design...

Code : Tout sélectionner

{
	"event": "MOTIONDETECTED_EVENT",
	"key": "__DEFAULT__",
	"data": [
		{
			"//": "type=info&text=%C3%89v%C3%A9nement+se+d%C3%A9clenchant+lorsque+la+fonction+modtionDetector+d%C3%A9tecte+un+mouvement."
		},
		{
			"//": "type=comment&text=Remonte+l'info+de+mouvement+de+la+tablette"
		},
		{
			"setCmd": "id=6676"
		},
		{
			"__IF__": "paramL=%7BIS_SCREEN_ON%7D&operator=__EQUAL__&paramR=0"
		},
		{
			"!toast": "message=J'allume+l'%C3%A9cran+car+il+est+%C3%A9teint"
		},
		{
			"screenOn": ""
		},
		{
			"//": "type=comment&text=R%C3%A9cup%C3%A8re+s'il+y+a+quelqu'un+%C3%A0+la+maison"
		},
		{
			"getCmd": "id=6257"
		},
		{
			"//": "type=comment&text=Lance+le+bon+design+(digicode+si+absent%2C+sinon+design+defaut)"
		},
		{
			"__IF__": "paramL=%7BRETURN%7D&operator=__EQUAL__&paramR=0"
		},
		{
			"_designFS;1": "id=23"
		},
		{
			"__ELSE__": ""
		},
		{
			"goToView": "id=11"
		},
		{
			"configureLayout": "buttons=0&webTitleBar=0&webZoomEnabled=1&webTextSize=100&androidFullScreen=1"
		},
		{
			"__END__": ""
		},
		{
			"resumeMotionDetector": ""
		},
		{
			"sleep": "name=Sleep_OFF&time=600"
		},
		{
			"//": "type=comment&text=Lib%C3%A8re+le+capteur+de+mouvement+et+%C3%A9teint+la+tablette+et+attends+10+min+et+si+pas+de+mouvement%2C+on+%C3%A9teint+l'%C3%A9cran+!"
		},
		{
			"!toast": "message=J'ai+atteint+5+min+donc+j'%C3%A9teins+si+pas+de+mouvement"
		},
		{
			"!sleep": "time=1"
		},
		{
			"__IF__": "paramL=%7BSTATUS%7D&operator=__EQUAL__&paramR=1"
		},
		{
			"screenOff": ""
		},
		{
			"__END__": ""
		},
		{
			"__ELSE__": ""
		},
		{
			"//": "type=comment&text=L'%C3%A9cran+est+donc+d%C3%A9j%C3%A0+allum%C3%A9"
		},
		{
			"//": "type=comment&text=Annule+le+sleep+en+cours+s'il+existe+(si+d%C3%A9tection+pr%C3%A9c%C3%A9dente)"
		},
		{
			"!toast": "message=J'annule+le+sleep+pr%C3%A9c%C3%A9dent+et+je+conserve+l'%C3%A9cran+allum%C3%A9+avec+une+dur%C3%A9e+plus+longue"
		},
		{
			"resumeMotionDetector": ""
		},
		{
			"sleep": "name=Sleep_OFF&time=600"
		},
		{
			"__IF__": "paramL=%7BSTATUS%7D&operator=__EQUAL__&paramR=1"
		},
		{
			"screenOff": ""
		},
		{
			"__END__": ""
		},
		{
			"__END__": ""
		}
	]
}
Dernière édition par benj29 le 16 févr. 2018, 22:31, édité 2 fois.

rodfred
Timide
Messages : 179
Inscription : 15 janv. 2015, 13:12
Localisation : Bretagne

Re: [JPI-APK android] Tel Android dedié domotique

Message par rodfred » 16 févr. 2018, 21:46

dJuL a écrit :
16 févr. 2018, 00:49
rodfred a écrit :
15 févr. 2018, 19:22
Merci, maintenant j'attends la prochaine version pour qu'il envoi la dernière photo.
C'est en ligne, il faut mettre à jour le Famework SC
viewtopic.php?f=27&t=17645&start=320#p586683

Puis :
$imagePath = $files->getLastFile('/var/www/html/plugins/camera/data/records', 'jpg|png|gif|bmp', true);

;)
Merci ça fonctionne Nickel

benj29
Actif
Messages : 3975
Inscription : 26 mars 2017, 09:57
Contact :

Re: [JPI-APK android] Tel Android dedié domotique

Message par benj29 » 16 févr. 2018, 21:55

Et voilà j'ai réussi à faire ce que je voulais via un scénario et du code.
J'utilise 3 variables, y a certainement mieux mais ça fait le boulot.

Image

1 = moi, 2 = madame, 3 ou autres cas, les 2.

Avant le code php, voilà le scénario...

Image

Un sleep est nécessaire car j'ai eu des loupés de test, visiblement, il faut laisser un peu de temps à camera pour envoyer la photo sur mon nas (montage sur la vm).

Code : Tout sélectionner

//charge la librairie JPI
$jpi = $sc->load('jpi', 'http://192.168.2.126:8080');

//récupère la variable à afficher du texte
$message = $sc->getVar('notification_message');
$camera = $sc->getVar('numero_camera');
$priority = $sc->getVar('mms_priority');

//charge la librairie files
$files = $sc->load('files');

//Récupère le chemin du fichier image dans une commande de type info
//$imagePath = $sc->getCmd('#[Sécurité][Détection Caméra Portail][Nom du dernier fichier]#');
//Stockage dans /mnt/QNAP-STOCKAGE/Cameras/
//380 = Nord Parking
//43 = Atelier Garage
//44 = Arrière Garage
//45 = Sud Portail
//46 = Ouest Forêt
$imagePath = $files->getLastFile('/mnt/QNAP-STOCKAGE/Cameras/' . $camera, 'jpg|png|gif|bmp', true);

//génère le lien, avec une validité de 30 secondes
$url = $files->makeDownloadUrl($imagePath, '192.168.2.23', 30);
//génère le lien, avec une validité de 30 secondes - version HTTPS + port différent
//$url = $files->makeDownloadUrl($imagePath, '192.168.0.1', 30, false, 8090);

//Envoie le MMS
if ($priority == 1) 
{
	$jpi->sendMms('{MY_NUMBER}', $url, $message);
} 
elseif ($priority == 2)
{
    $jpi->sendMms('{MY_NUMBER2}', $url, $message);
} 
else 
{
	$jpi->sendMms('{MY_NUMBER}', $url, $message);
    $jpi->sendMms('{MY_NUMBER2}', $url, $message);
}

Répondre

Revenir vers « Développements sur Jeedom »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 9 invités