Aller au contenu
Kriek

Alternative À L'appli Fibaro Sous Android

Recommended Posts

Bonjour à  tous,

 

Je vous propose de partager ma petite expérience de passer par Tasker pour obtenir une alternative à  l'appli fibaro en permettant de récupérer des états de module, et d'agir dessus via quelques icones sous le springboard Android.

 

J'admets pour l'instant cela demande de bien préparer son travail et c'est un peu rébarbatif à  programmer mais on arrive assez vite à  avoir quelque chose de sympa est surtout très réactif.

 

Bon pour l'instant ce sont encore des essais... Donc pour ceux qui veulent essayer il faudra bricoler.

 

Donc importez déjà  les quelques tâches des fichiers joints à  ce post.

Vous aurez la possibilité avec ces tâches :

- de lire la valeur d'une variable globale stockée sous l'HC en lançant la tâche HC2_globvar_val et en initailisant la variable %HC_ID avec le nom de la variable globale que vous souhaiter lire. La valeur de cette variable sera récupérable dans la variable %HC_RESULT

- d'agir sur un bouton d'un module virtuel (via la tâche HC2_module_action en initialisant ID du module dans %HC_ID et id du bouton dans %HC_ACTION),

- de lancer/stopper une scène (via HC2_scene et Scène ID stockée dans %HC_ID et start ou stop dans la variable %HC_ACTION)

- d'actionner un switch (via HC2_switch et IDmodule dans HC_ID et turnOn ou turnOff dans la variable %HC_ACTION)

 

Avant tout il vous faudra tout de même initialiser la variable %URL_HC2 avec l’adresse IP extérieure de votre HC2 avec login et mot de passe. Typiquement ça doit vous donner un truc du style : login :motdepasse@XXX.XXX.XXX.XXX :PPPP où XXX.XXX.XXX.XXX :PPPP est l’dresse de connexion depuis l’extérieur de votre HC2 avec le port PPPP correspondant.

 

A partir de là , il vous reste à  faire les tâches que vous souhaitez et via les widget tâches de tasker vous les mettre sous le spring board.

Pour rappel, il est possible avec Tasker de changer une icone du springboard.

 

A titre d'exemple j'ai créé une tâche alarme comme suit :

- Affecter à  %HC_ID la valeur variablealarme

- Effectuer la tâche HC2_globvar_val

- Affecter à  %HC_ID la valeur 40 (l'ID du module contrôlant le mode de mon alarme)

- Affecter à  %HC_ACTION la valeur 2 (id du bouton mise en marche alarme) SI %HC_RESULT=0 (ce qui signifie que mon alarme n'était pas en marche)

- Affecter à  %HC_ACTION la valeur 4 (id du bouton d'arrêt de l'alarme) SI %HC_RESULT=1 (ce qui signifie que mon alarme était activée)

- effectuer la tâche HC2_module_action

- effectuer la tâche Rafraichissement

 

La tâche Rafraichissement, est une tâche qui va lire l'état de mes variables globales et change l'icône en fonction des valeurs de ces variables.

La tâche rafraichissement est aussi relancée à  chaque fois que j'allume mon téléphone après déverrouillage (via tasker toujours).

 

Et voilà  : J'ai donc une page de mon spring board qui me permet instantanément de voir l'état de certaines de mes variables globales (pour l'instant) par un affichage d'icones et lorsque j'appuie sur les icônes en questions je peux changer l'état de celles-ci, ou agir sur un switch, un module, une scène.

 

Bon j'admets que pour l'instant c'est un peu à  l'état d'ébauche, mais je suis assez content du résultat car c'est beaucoup plus accueillant que l'appli fibaro !

 

 

Tasker HC2 interface.zip

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Je profite de ce post également pour remercier Steven qui m'a fait découvrir Tasker àtravers ses posts sur cette merveille !!!!

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci. Et elles sont ou les captures d'écran, pour voir ce que cela donne ? ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

Pour les images ça viendra un peu plus tard...

Faut que je progresse un peu sur ce que je veux faire remonter... A la base je ne souhaitais faire que retour état alarme avec possibilité d'activer et de désactiver.

Partager ce message


Lien à poster
Partager sur d’autres sites

Intéressant ça, j'attends tes retours avec impatience. ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut, dans ton zip, il n'y a pas la tache "rafraîchissement"... tu pourrais la partager stp.

 

Dans un 1er temps je voudrais juste afficher sur le springboard, quelques états de variables.

 

Merci

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut Moicphil,

 

dans l'idée la tâche "rafraîchissement" (que j'ai appelée chez moi info fibaro) fonctionne de la manière suivante :

 

va lire une variable globale et si elle vaut la valeur X change l'image de la tâche "Truc" (widget tasker sur le springboard) par l'icône "bidule".

Mais il est possible de faire plein de chose comme changer le nom du widget par exemple, changer le papier peint, changer un minimalistic text etc... Ton imagination est la seule limite.

 

Pour l'instant j'ai travaillé uniquement sur des changement d'icône.

Je te joins ma tâche "info fibaro" qui est l'équivalent de la tâche "rafraîchissement" dont je parlais dans mon premier post.

 

A+

 

Info_Fibaro.tsk.xml

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci.

 

Et donc pour le changement d'icone à  la volée, selon l'état de la variable, comment gère tu cela ?

Une tache qui scrute toutes les x sec l'état de la variable sur la HC2 ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Au début c'est ce que j'avais fait.. mais comme on ne regarde pas son tel toutes les 5 minutes, surtout en pleine nuit, cela faisait des échanges de données inutiles plus de 90% du temps.

 

Du coup j'ai fait le choix de faire des mises à  jour de l'affichage à  chaque allumage du téléphone (Profil activé sur "Affichage déverrouillé") et à  chaque fois qu'une action est menée sur la HC2 via Tasker.

 

Il y a une autre solution en faisant des pushes depuis la HC2 vers Tasker grâce à  Autoremote (payant à  3€ je crois).

Lorsque tu crées ton compte autoremote tu as accès à  une page depuis laquelle tu peux envoyer des message depuis un PC vers Tasker. Sur la droite de la page le lien URL correspondant à  ton message t'est donné. Le message n'est en fait que la fin de l'URL.

Il suffit donc de créer un module virtuel qui enverra un message sur cette URL avec le bon message.

Le message est écrit par des actions GEA  qui actionne aussi actionne le module virtuel pour générer le push vers Tasker avec ce message

 

Tu crées des profils Tasker réagissant à  des mots clefs de ces pushes, et tu peux lancer des tâches comme par exemple mettre à  jour tes icônes sur le springboard en cas de réception d'un message autoremote exactement égal à  "MAJ ICONES FIBARO".

 

Comme je ne suis pas sà»r d'être très clair, voici le code du module virtuel de push de la HC2 vers Tasker via autoremote :

local message = fibaro:getGlobal("AutoremoteMessage")

fibaro:debug(message)

HC2 =  Net.FHttp("autoremotejoaomgcd.appspot.com")
response = HC2:GET("/sendmessage?key=XXXXXXXXXX&message="..message);

Dans le code ci dessus le XXXXX correspond à  la clef Autoremote que tu obtiendras lors de ton inscription au service.

 

Ensuite il suffit de faire une action GEA du type :

 GEA.add(id["FENETRE_SDB"], -1, "", {{"Global", "AutoremoteMessage", "MAJ ICONES FIBARO"},{"VirtualDevice", id["AUTOREMOTE"], 1}})

 

Dans ce cas, l'ouverture de la fenêtre de la salle de bain, enverra à  Tasker le message "MAJ ICONES FIBARO".

 

Voilà ...

 

N'hésite pas si tu as d'autres questions... je suis en train de réfléchir à  des "modules" Tasker (en fait des tâches qui automatiserait la plupart des actions classiques) pour rendre tout cela plus simple... Mais je découvre encore Tasker et je galère un peu...

 

PS : je fais partie des irréductibles de la V3.6... Il y a donc peut-être quelques ajustements à  faire si tu es en 4.XX

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Petite avancée du week end :

L'affichage des boutons d'un module virtuel sur le springboard (ci dessous un example pour mon alarme)

11425_Screenshot_2015_05_03_08_59_57.png

 

Pour cela c'est assez simple, il suffit d'importer un module virtuel avec la tâche Import_Infos_Modules_HC2 

Celle-ci va créer une variable dans laquelle seront stocké les labels des boutons et leur position (pour pouvoir agir dessus ensuite)

Pour l'instant je ne me suis intéressé qu'aux boutons, et c'est limité à  5 boutons.

 

Pour faire appel à  la scène qui affichera les bouton il suffit depuis une tâche d'appeler la tâche Android_VD en ayant au préalable enregistré le numéro du module de la HC2 auquel on fait appel dans la variable HC_ID.

L'ID du bouton sur lequel l'utilisateur a agit sera stocké dans HC_RESULT.

Si vous voulez ensuite appuyer sur ce bouton sur la HC2, il faudra stocker la valeur de HC_RESULT dans HC_ACTION et lancer la tâche HC2_module_action qui était fournie dans le premier package de ce post.

 

Je sais tout arrive par morceau... Dès que tout cela commencera à  être complet, j'éditerai le premier message et ferai un mode d'emploi plus complet.

 

 

Android_VD.tsk.xml

Import_Infos_Modules_HC2.tsk.xml

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonsoir à  tous,

 

Voici une version plus construite de mes tâches Tasker pour palier à  l'inertie de l'appli fibaro et obtenir un visuel sur le springboard Android de l'état de votre système domotique.

Voici ce que ça donne chez moi à  titre d'exemple :

50000_Screenshot_2015_05_21_23_47_11_res

Les icones Alarme, Lave-linge, radiateur, chauffage changent de nom et d'apparence en fonction de leur état.

L'icône température change de nom pour afficher la température mesurée.

L'icone alarme est cliquable et me donne accès aux boutons de mon module virtuel correspondant sur la fibaro.

Les icones lave-linge, chauffage, radiateur sont des switch, en cliquant dessus je permute la position de ce switch.

L'icone PhotoCam est un bouton d'un module virtuel sur lequel j'appuie tout simplement.

 

L'icone Rafraichir est une tâche de rafraichissement des icones et valeurs affichées de cet écran, mais en fait je lance ce rafraîchissement à  chaque allumage de téléphone.

 

Pour réaliser cela j'ai créé plusieurs tâches de base :

HC2_globvar_val permet d'aller lire le contenu de la variable globale dont le nom est stocké sous la varaibale Tasker %HC_ID. Le contenu de la variable est retourné dasn la variable %HC_RESULT.

HC2_scene permet de lancer arrêter une scène dont l'id est stocké sous la vaiable tasker %HC_ID et l'action (start ou stop) dans %HC_ACTION

HC2_status permet de connaitre l'état d'un switch ou d'une sonde et le résultat est donné dasn %HC_RESULT

HC2_switch permet de permuter le switch dont l'id est donné par %HC_ID

VD_info permet d'aller lire le contenu du Label1 sous le module virtuel dont l'id est donné par la variable Tasker %HC_ID. Le résultat est stocké sous %HC_RESULT.

Import_Infos_Module_HC2 est une tâche d'import sous tasker des boutons d'un module virtuel. Il est indispensable de lancer cette tâche avant de pouvoir utiliser la tâche HC2_module_action. En fait on stocke sous une variable tasker nommée MODULEXX avec XX l'id du module virtuel l'ensemble des id des boutons du module ainsi que leur label. 

Android_VD : permet d'afficher un dialogue avec les 5 premiers boutons d'un module virtuel préalablement importé (cf tâche précédente). L'ID du bouton à  actionner est retourné dasn la variable %HC-RESULT

HC2_module_Action : Agit sur le bouton dont l'id correspond à  %HC_ACTION du module virtuel dont l'id est donné par %HC_ID.

 

Voilà  pour ce qui est des différentes tâches de base.

Maintenant il faut réaliser des tâche dédiées à  chaque module sur lesquels vous voulez agir et desquels vous voulez remonter un affichage (via icone ou via label de l'icone).

Pour cela j'ai choisi de faire deux tâche une qui va gérer ce qu'il se passe lorsque je clique l'icône et une autre qui va gérer son affichage.

 

Par exemple pour un switch comme celui de mon radiateur (il est allumé ou éteint).

J'ai une première tâche qui s'appelle Radiateur pour l'action, c'est également cette tâche que je vais mettre en widget sur le springboard.

Mon autre tâche est Radiateur Aff pour l'affichage.

 

Voici ce que j'ai mis dans Radiateur :

Affecter à  la variable %HC_ID la valeur 49 (ou 49 est l'ID de mon module)
Effectuer la tâche HC2_switch

Pour la tâche Radiateur Aff :

Affecter à  la variable %HC_ID la valeur 49 (ID du module)
Effetcuer la tâche HC2_status (permet de connaitre l'état du switch)
Changer libellé widget radiateur avec le libellé "Eteint" si %HC_RESULT=0
Changer icone widget radiateur avec icone "Radiateur Eteint "si %HC_RESULT=0
Changer libellé widget radiateur avec le libellé "En chauffe" si %HC_RESULT=1
Changer icone widget radiateur avec icone "Radiateur Allumé"si %HC_RESULT=1

A noter que pour les tâche HC2_switch et HC2module-action un rafraichissement de l'affichage est inclu dans ces tâches pour vérifier que le changement a bien eu lieu.

 

Prenons un exemple plus compliqué : celui du module virtuel avec boutons, celui de l'alarme :

Tout d'abord vous devez importer les labels des botons sous tasker.

En supposant que mon module alarme porte l'id 50, je lance manuellement la tâche Import_module_HC2 et renseigne que je veux importer les infos du module 50.

 

Ensuite je crée mes deux tâches Alarme (pour l'action du clic) et Alarme Aff (pour l'affichage).

 

Alarme se détaille comme suit :

Affecter à  la variable %HC_ID la valeur 50
Effectuer la tâche Android_VD
Affecter à  la variable %HC_ACTION la valeur de la variable %HC_RESULT
Effectuer la tâche HC2_module_Action
Effectuer la tâche Alarme Aff

Et Alarme Aff comme cela :

Affecter à  la variable %HC_ID la valeur etatalarme (en supposant que la variable etatalarme soit mon indicateur d'état d'alarme)
Effectuer la tâche HC2_globvar_val
Changer icone du widget Alarme avec icone "Alarme ON" si %HC_RESULT=1 ou si %HC_RESULT=2
Changer icone du widget Alarme avec icone "Alarme OFF" si %HC_RESULT=0
Affecter à  la variable %HC_ID la valeur 50 (id de mon module virtuel dans lequel le Label1 indique aussi l'état de l'alarme)
Effectuerla tâche VD_info
Changer libellé widget Alarme avec le libellé %HC_RESULT

Avec ces deux exemples je pense que vous êtes armés pour faire votre propre écran de contrôle de votre système domotique depuis le springboard de votre téléphone/tablette Android.

 

Dernière chose, vous pouvez choisir de mettre une tâche pour forcer le rafraichissement des données, dans ce cas il s'agit juste d'effectuer les tâche d'affichage de chaque module reporté sur votre springboard.

Ou alors vous pouvez créer cette même tâche mais la lancer à  l'allumage du téléphone par exemple ou à  intervalle régulier (toutes les minutes par exemple...), etc...

 

 

Voilà , j'espère que mes explications sont claires, si vous avez besoin d'aide, ou si vous voulez que soient développé d'autre tâches pour faire je ne sais quoi, n'hésitez pas...

 

Android_VD.tsk.xml

HC2_globvar_val.tsk.xml

HC2_module_action.tsk.xml

HC2_scene.tsk.xml

HC2_status.tsk.xml

HC2_switch.tsk.xml

Import_Infos_Modules_HC2.tsk.xml

VD_info.tsk.xml

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour, sujet très intéressant merci de cette présentation.

Comment fonctionne ta tâche rafraichissement ? J'ai par exemple une scène, mes icônes changent de statut quand je lance ma scène mais ensuite non. Il faut que je la relance pour avoir une nouvelle lecture des variables. Donc tu rafraichies comment ? Quelle est l'action de variable ? (je ne sais pa si je suis clair....)

Sur ta page d'accueil tu as les icônes avec les textes. Est-ce que c'est une scène ? Sinon comment as-tu fait pour afficher les icônes avec leur statuts ?

Merci et beau boulot :)

post-462-0-65470600-1444379043_thumb.jpg

post-462-0-80071700-1444379067_thumb.jpg

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

 

Pou le rafraichissement des icônes plusieurs options se présentent à  toi :

- rafraichir au réveil de la tablette,

- rafraichir toutes les X minutes

- rafraichir à  la demande avec une icône à  cliquer

...

 

Le tout se paramètre à  travers un profil sous tasker, à  toi de voir ce qui correspond à  ton besoin pour bien définir ce profil.

 

Quant aux icônes avec le texte dans mon cas comme il ne s'agit pas d'une scène mais directement sur le springboard du téléphone ce sont des widgets Tasker (tâche ou raccourci de tâche). Le texte et l'icône est modifiable à  travers Tasker ("changer icône widget" et "changer libellé widget")...

Par contre je me suis rendu compte que le comportement des ces widgets Tasker sont différents en fonction de l'appareil : sur ma tablette chinoise que j'utilise en interface à  la maison le texte n'apparait pas alors que sur mon téléphone Samsung il apparait bien mais il est décalé de l'icône dans le cas d'un widget "raccourci de tâche" et est positionné proprement dans le cas d'un widget "tâche"...

 

Dans le cas d'une scène comme toi, l'image affecté est modifiable par la tâche "image de l'élément". En revanche attention les tâches de modification de scène ne fonctionnent que si la scène est active.

 

A essayer donc de ton côté avec ton appareil sur le comportement obtenu.

Partager ce message


Lien à poster
Partager sur d’autres sites

Pour un rafraichissement moins gourmand en relecture de données sur la HC2, il y a aussi la possibilité de passer par autoremote (plugins tasker) pour recevoir des pushes de la HC2.

Je t'invite à  aller voir le tuto suivant http://www.domotique-fibaro.fr/index.php/topic/5055-alternative-au-service-popup-du-notification-center-avec-possibilité-d’action-hc2-via-le-popup/?hl=autoremote

Il explique comment envoyer des pushes depuis la HC2 vers un système tasker en utilisant autoremote.

Il te suffit ensuite d'envoyer des pushes avec (par exemple) l'introduction "MAJ=:=" pour indiquer à  Tasker qu'il faut faire un rafraichissement (il faut créer les triggers sur HC2 et le profil sur Tasker qui vont bien pour cela bien entendu).

 

Je suis au boulot... Donc je réponds brièvement...

Si tu as besoin de plus d'explication n'hésite pas, dis moi juste précisément quelle solution tu veux développer et je t'aiderai... Ca fera un exemple pour tous les membres du forum qui souhaitent avancer sur ce type de solution très personnalisable (mais qui dit personnalisation dit temps de développement...)

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci pour ces réponses :-)

En fait j'avais oublié de rajouter le changement d'état dans ma scène dans la tâche d'interrogation (refresh).

Le but a été de créer une scène sur laquelle sont affichés les différents capteurs, modules et données du contrôleur domotique. Sur cette scène on a également un retour vocal des actions effectuées, de l'état des capteurs et un changment de texte et d'icônes.

Le soucis est que si un actionneurs était modifié par une télécommande (ou autre) je n'avais pas de changement d'état sur la scène.

L'oubli était de modifié l'élément dans la scène lors de l'interrogation du capteur. (refresh)

Du coup j'ai créé deux profils qui sont lancés àune minute d'intervale (on ne peut pas faire un profil toutes les minutes c'est minimum deux minutes) et qui demandent l'état des capteurs. Suivant l'état, ça modifie la scène.

Tous les changments effectués depuis l'interface sont en temps réel, ceux effectués par un autre chanel sont actualisés toutes les minutes (faute de mieux).

Effectivement je connaissais le changement de l'icône sur la page d'accueil de la tablette mais je ne l'utilisais plus car on ne peut pas (àma connaissance ) modifier la taille qui est trop petite àmon goût.

Merci de m'avoir aiguillé ça marche nickel :-)

Partager ce message


Lien à poster
Partager sur d’autres sites

Content d'avoir pu t'aider.

 

Il y a toutefois un petit "faute de mieux" dans ta réponse qui m'ennuie car on ne te sens pas tout à  fait satisfait... Pour actualiser ton affichage en fonction des changements d'état effectués par un autre chanel la solution autoremote et un petit script GEA devrait te permettre d'y remédier...

 

A toi de voir...

Partager ce message


Lien à poster
Partager sur d’autres sites

Il ne faut pas que "faute de mieux" te perturbe ;-)

Non c'est juste que comme ça c'est tasker qui fait le boulot et pas le contrôleur qui envoie les états.

Effectivement on pourrait utiliser autoremote ou un push ou autre chose. Après le changement d'état ne se voit qu'au maximum au bout de 60 secondes donc ce n'est pas non plus catastrophique.

Le but de cette expérience est aussi de transposer cette manip àn'importe quel contrôleur. J'en utilise plusieurs et cela marche pour chacun d'eux. (Zibase, HC-Lite et Jeedom). Donc la même interface sert pour tous les contrôleurs en même temps. De plus je n'ai pas GEA de notre ami Steven.

Voili voilou tu sais tout ;-)

J'avais écris des tutos sur tasker et notament la création de scène mais je n'étais pas allé aussi loin.....

D'ailleurs petite question tout de même est-ce que le fait d'interroger chaque minutes les contrôleurs ne les surcharge pas ?

Partager ce message


Lien à poster
Partager sur d’autres sites

C'est parce que je me posais la même question de surcharge due aux questionnements fréquents que j'avais décidé d'utiliser autoremote : Au lieu d'avoir une interrogation toutes les X minutes, je n'envoie une requête que lorsque j'ai constaté un changement d'état et qu'un changement d'affichage sur mon interface doit intervenir. Cette requête envoie directement à  Tasker les infos de LA modification à  apporter. J'ai allégé grandement la masse de données échangées entre les deux (pour moi) systèmes.

 

Je pense que tous tes contrôleurs ont une possibilité d'envoyer un message http, et GEA n'est pas indispensable... mais je comprends et accepte ton besoin de ne pas multiplier les interfaces entre systèmes.

Partager ce message


Lien à poster
Partager sur d’autres sites

Effectivement chaque contrôleur est capable d'envoyer des requêtes. C'est aussi une solution. Je vais tester cette piste également pour voir s'il y a une différence de traitement.

Merci :)

Partager ce message


Lien à poster
Partager sur d’autres sites

×