Lionel57 Posté(e) le 4 février 2015 Signaler Posté(e) le 4 février 2015 Fier de vous présenter mon projet Surtout fier parce que je découvre Java et android depuis 5 jours à peine et que ça a été laborieux. Pour le moment, mon projet est simple, mais je ne compte pas en rester là ... Pour le moment, mon application android envoie la date et l'heure de la prochaine alarme à la HC2. J'explique, jusqu'à présent, j'avais une variable globale Reveil sur laquelle se base différentes actions (allumage progressif de la lampe de la chambre, allumage du chauffage 30 minutes avant, allumage de ma cafetière, ouverture des volets...). Seulement voilà , je ne me lève pas tous les jours à la même heure. Donc jusqu'à présent, je devais changer la valeur de cette variable à chaque changement. Aujourd'hui, j'ai décidé de faire simple, le changement de l'alarme de mon portable se chargera de changer la variable globale. En bref, je me contente de régler mon réveil sur l'appli standard de mon téléphone, comme avant la HC2 avec les avantages de maintenant, avec la HC2. Sur la HC2, il faut créer un module virtuel avec un bouton en première ligne et autant de label qu'on souhaite (un label pour l'heure de réveil de madame, un label pour l'heure de réveil de monsieur, par exemple). L'appli demandera à la première ouverture les identifiants (login + password), l'adresse IP, l'ID du module virtuel et l'ID du label recevant l'heure de la prochaine alarme. Ensuite, un service sera démarré à chaque démarrage. Dans la mesure où j'ai eu quelques surprises (on n'est pas tous égaux face à Android), l'appli testera si l'événement "Action_Next_Alarm_Changed" fonctionne. Si c'est le cas, le service se déclenchera qu'au changement d'alarme. Dans le cas contraire, un test sera effectué toutes les minutes, si changement avec la dernière valeur, une mise à jour sera effectuée. Je joins une vue du module virtuel, le code source de l'appli Android et le fichier compilé. En espérant combler un besoin... Exemple de scène derrière le bouton traitement : (pas de mise à jour de la variable globale Reveil si alarme supérieur à 10h) local id = fibaro:getSelfId(); temp=fibaro:getValue(id,"ui.Reveil.value"); if temp == nil or temp == "" then c="" else b, c = string.find(temp, " ",1); c, d = string.find(temp, ":",; a=string.sub(temp, b, b+2) if tonumber(a)>9 then c=""; else c=temp; end; end; fibaro:setGlobal("Reveil", c); if fibaro:getValue(id,"ui.SSID.value") == "Freebox-60BAEA" then fibaro:setGlobal("Present", "Oui") else fibaro:setGlobal("Present", "Non") end; Exemple de scène Réveil : (allumage progressif de la lampe dimmable de la chambre) - fibaro:debug vous permettra de gérer le décalage d'heure entre le téléphone et la HC2 à régler dans : os.date("%H:%M", os.time()+60) - 60 correspond à 60 secondes à ajouter. (attention, os.date("%H:%M") retourne 06:59 même s'il est 06:58:59, ce qui creuse le décalage, sachant que la fonction sera à nouveau appelé 1 minute plus tard (donc peut être trop tard, la HC2 aura peut être reçu une nouvelle alarme au lendemain 7h, si 7h est l'heure de réveil). Donc le mieux, c'est de faire des testes pour ajuster --[[ %% autostart %% properties %% globals --]] local sourceTrigger = fibaro:getSourceTrigger(); function tempFunc() local jour = {} jour[0]="dim. "; jour[1]="lun. "; jour[2]="mar. "; jour[3]="mer. "; jour[4]="jeu. "; jour[5]="ven. "; jour[6]="sam. "; local currentDate = jour[tonumber(os.date("%w"))] .. os.date("%H:%M", os.time()+60); local startSource = fibaro:getSourceTrigger(); if (currentDate == fibaro:getGlobalValue("Reveil")) then local Dimm = 0; fibaro:call(16, "SetValue", tostring(Dimm)); for Dimm = 0, 100 do fibaro:sleep(18*1000) fibaro:call(256, "setValue", tostring(Dimm)); end end fibaro:debug(currentDate .. " <----> " .. fibaro:getGlobalValue("Reveil")) setTimeout(tempFunc, 60*1000) end tempFunc() EchangeFibaro 1.00.rar mode d'emploi.txt 9
Lionel57 Posté(e) le 4 février 2015 Auteur Signaler Posté(e) le 4 février 2015 Rectification, pas de code source, pas de apk, apparemment, pas autorisé par le forum. Peut être un autre moyen de vous faire partager ça... Si un admin peut m'aider...
Moicphil Posté(e) le 4 février 2015 Signaler Posté(e) le 4 février 2015 Super travail que tu as fais là ! Oui, certaines extensions ne sont pas autorisées en upload sur le forum. En attendant tu peux partager en compressant en Zip par exemple.
Lionel57 Posté(e) le 4 février 2015 Auteur Signaler Posté(e) le 4 février 2015 J'ai trouvé l'astuce, j'ai renommé en txt pour joindre les fichiers, après téléchargement, il faudra renommer respectivement en RAR et apk
Lionel57 Posté(e) le 4 février 2015 Auteur Signaler Posté(e) le 4 février 2015 Prochaine étape, la géo loc, une vrai, en background, normalement, ça devrait être plus simple (pour l'alarme, va savoir pourquoi, google a mis quelques limitations sur la version 4, on n'accède pas facilement aux infos, mais pour la géoloc, tout est open apparemment. Je trouve que d'inverser les rôles (qu'un certains nombre d'événements soient gérés par le téléphone) ouvre de très grandes perspectives (java sous android est un langage bien plus large et complet que le LUA). à‡a bouillonne déjà dans mon cerveau, mais si vous avec des idées, n'hésitez pas à suggérer...
Lionel57 Posté(e) le 4 février 2015 Auteur Signaler Posté(e) le 4 février 2015 Pour précision, il appartient à chaque utilisateur de définir le code LUA derrière le bouton du module virtuel. J'explique, chacun a ses habitudes. Pour ma part, dans mon code, j'ai choisi d'ignorer toute alarme postérieure à 10 heures. (ben oui, il m'arrive parfois de mettre une alarme sur mon téléphone pour ne pas oublier un RDV, il ne faudrait pas que ce pense bête allume ma cafetière, allume mes lumières...) Chacun a ses besoins, l'idée, c'était de récupérer l'heure de la prochaine alarme du (ou des) téléphone sur la HC2, le plus simplement du monde et d'agir en fonction de ses propres habitudes
Moicphil Posté(e) le 4 février 2015 Signaler Posté(e) le 4 février 2015 Dés que j'ai un moment, je teste et te ferais un retour.
Lionel57 Posté(e) le 4 février 2015 Auteur Signaler Posté(e) le 4 février 2015 :-) Et n'hésite pas à explorer le code source (éditeur : Eclipse), c'est très instructif, j'ai beaucoup appris en quelques jours à peine...
Lionel57 Posté(e) le 4 février 2015 Auteur Signaler Posté(e) le 4 février 2015 En bref, joignons nous pour faire un tasker et un trigger gratuit pour notre communauté
Invité chris6783 Posté(e) le 4 février 2015 Signaler Posté(e) le 4 février 2015 Très sympa comme intégration. On doit être nombreux àutiliser les smartphones comme réveil. Je teste dès que j'aurai remplacé mon Android qui a fait une mauvaise chute.
Moicphil Posté(e) le 5 février 2015 Signaler Posté(e) le 5 février 2015 Application installée et fonctionnelle ! Le label sur la HC2 est instantanément changé dés que l'on modifie ou active le réveil sur le smartphone ! c'est bluffant ! Du coup, dans ton exemple, le bouton "traitement" te sert à quoi ? Reste maintenant à peaufiner le module virtuel.
Nicolas P Posté(e) le 5 février 2015 Signaler Posté(e) le 5 février 2015 Félicitation Lionel57, je trouve ton idée fabuleuse. Malheureusement je suis (comme plusieurs personnes sur ce forum) sur IOS est-ce que tu croit que ton idée pourrait etre adapter sur nos iphones ? Ou est-ce que quelqu'un pense pouvoir développer quelque chose dans le meme style ? En tout cas encore bravo j'aime beaucoup l'idée
pepite Posté(e) le 5 février 2015 Signaler Posté(e) le 5 février 2015 (modifié) @nicolas P, Ah oui, moi aussi, tu m'as devancé !! suis comme toi avec un ptit ios et mon tel me sert effectivement de reveil, comme madame d'ailleurs. Ca pourrait etre super avec plusieurs tels, surtout que madame a des horaires differents ;-) Feliciations, superbe idee !! PS :peut-etre que le sujet pourrait etre deplace par les modos dans les smart et applis ou tuto ;-) Modifié le 5 février 2015 par pepite
Moicphil Posté(e) le 5 février 2015 Signaler Posté(e) le 5 février 2015 Oui, tu as raison, je déplace
Lionel57 Posté(e) le 5 février 2015 Auteur Signaler Posté(e) le 5 février 2015 @MoiCphil L'heure est transféré en brut sous la forme "jeu 18:19". Certains voudrons avoir 18:19 (sans le jour), moi, derrière le bouton, en LUA, j'ai choisi d'ignorer toute alarme postérieur à 10h. Dans le code LUA, au final, je transmets l'heure de réveil à ma variable globale. (Toutes mes scènes restent basées sur une variable globale). L'appli android actionne le bouton 1. Après, si le bouton n'existe pas, ce n'est pas gênant, la commande HTTP est dans un Try. Le matin, mon chauffage s'enclenche 30 minutes avant, la lumière de la chambre s'allume progressivement, à l'heure H, la cafetière s'allume, les volets s'ouvrent. Parfois, il m'arrive de mettre une alarme l'après midi, je ne voulais pas que tous mes scénarios du matin s'exécutent... Ce module, je le destine avant tout à une interface entre la HC2 et nos téléphones. D'autres informations pourront être transférées. Là , je travaille sur la géolocalisation (qui sera intégrée dans la même appli). Possible que les coordonnées GPS seront transféré à ce module. (bon, là , j'hésite à transférer ces coordonnées, problème étique, dans un couple, j'ai l'impression de donner à l'un le pouvoir de surveiller l'autre, alors je réfléchi pour que la partie GPS reste dans nos téléphones et que l'appli lance une scène selon certains critères) Toujours pour une meilleure intégration, j'envisage de lancer une scène depuis l'appli si mon téléphone est connectée à mon réseau WIFI. à‡a reste à voir. Si vous avez des idées, n'hésitez pas à suggérer, tant que le code est tout frais dans ma tête. @Nicolas P et @pepite, désolé, je n'ai pas d'Iphone sous la main... Pour ceux qui aurait téléchargé hier, je conseille de télécharger aujourd'hui, j'ai modifié aujourd'hui et mis en ligne à 14h. (en Java, si A="1" et B="1", ben A n'est pas forcément égal à B, pour les strings, il faut utiliser une fonction equals, fallait le savoir. Du coup, l'heure de la prochaine alarme était transféré toute les minutes au lieu de l'être à chaque changement : pas bien méchant, mais ça consomme forcément un peu plus de batterie)
Lionel57 Posté(e) le 5 février 2015 Auteur Signaler Posté(e) le 5 février 2015 Pour la partie GPS, je vois les choses comme ça : - D'une part, comme chacun sait, c'est hyper gourmand en batterie. Aussi, je n'envisage pas transmettre les infos de localisation en temps réel. - D'autre part, comme dit avant, mon problème étique (pas sà»r que nos conjoints apprécient l'idée qu'elles peuvent être localisables à chaque instant). Alors pour épargner la batterie, je pense activer le GPS pour un relevé de position une fois toute les minutes, si on est à moins de 10km du domicile, une fois toutes les 5 minutes à moins de 20, toutes les 10 minutes à moins de 50, 30 minutes de 50 à 100, 1h au delà ... (c'est purement arbitraire, peut être qu'il faudra affiner). Précision, l'appli est un service, donc elle n'a pas besoin d'être au premier plan (d'ailleurs, un service n'a pas de premier plan, puisque pas de page, la page des paramètres, c'est une autre class) pour faire un relevé (contrairement à l'appli officielle Fibaro) Plutôt que de faire une zone circulaire autour du domicile, j'envisage de définir des "barrières", je m'explique Pour moi, l'intérêt, c'est d'activer le chauffage quand je rentre et que j'approche de mon domicile. Sauf que... J'habite près d'une entrée d'autoroute (que j'emprunte souvent). Et 10km d'autoroute, ça va beaucoup plus vite que 10km de ville. Donc l'idée, c'est de définir une "barrière" virtuelle qui déclenchera une scène lorsqu'on la franchit. (par exemple une barrière à 50km si je suis sur l'autoroute, à 5km si je suis en ville). Maintenant, si vous avec des propositions...
latoupie Posté(e) le 5 février 2015 Signaler Posté(e) le 5 février 2015 Oui j'ai une idée Tu peux faire la même chose pour les possesseurs de HCL ? Sinon, c'est la classe pour les proprio de HC2.. BRAVO
Lionel57 Posté(e) le 5 février 2015 Auteur Signaler Posté(e) le 5 février 2015 Une vue de la prochaine page de paramètre, comme ça, ça vous donne une idée de là où je veux aller...
Lionel57 Posté(e) le 5 février 2015 Auteur Signaler Posté(e) le 5 février 2015 A priori, ça fonctionne aussi pour une HCL, dans la mesure où le code LUA n'est pas indispensable. Et si un traitement des données est nécessaire, une astuce, on passe par du php (possible que je m'y attache plus tard...)
latoupie Posté(e) le 5 février 2015 Signaler Posté(e) le 5 février 2015 Cool mais php ? Connais pas encore
Lionel57 Posté(e) le 5 février 2015 Auteur Signaler Posté(e) le 5 février 2015 Le php, c'est un langage internet. Ça peut pallier àl'absence de LUA (ça peut même compenser largement les faiblesses du LUA pour les possesseurs de HC2) . Mais ça nécessite d'avoir un serveur phpmyadmin toujours actif. Quand on a un Nas, c'est forcément le cas, sinon, faut laisser l'ordi toujours allumé...
Lionel57 Posté(e) le 5 février 2015 Auteur Signaler Posté(e) le 5 février 2015 Alors aucun doute, sur un syno, tu as l'appli phpmyadmin. Donc tu peux faire autant avec ta HCL qu'avec une HC2 (grâce àl'API). Pour le moment, je me focalise sur un dev standard, plus tard, par solidarité avec les possesseurs de HCL, je proposerai des scripts php
latoupie Posté(e) le 5 février 2015 Signaler Posté(e) le 5 février 2015 Je vote pour toi le mois prochain si tu es sélectionné. ðŸ™ðŸ™ŒðŸ™ŒðŸ™ŒðŸ™ŒðŸ™ŒðŸ™ŒðŸ™ŒðŸ™ŒðŸ™ŒðŸ™ŒðŸ™ŒðŸ™Œ
Lionel57 Posté(e) le 5 février 2015 Auteur Signaler Posté(e) le 5 février 2015 :-) C'est sympa, mais avant tout, je fais ça parce que je m'éclate, j'adore tout ça...
Messages recommandés