mprinfo Posté(e) le 6 avril 2015 Signaler Posté(e) le 6 avril 2015 Comme nous l'avons fais avec quelques membres du forum (VD Météo) je vous propose de développer un script en groupe Niveau : Débutant Je demande donc au pro de ne pas mettre la solution Merci 1 - Je désire envoyer une notification a chaque fois que j'ouvre et ferme une porte 2 - il faut que le code soit le plus générique possible 3 - il faut que le l'on puisse l'utilisé avec plusieurs téléphones 4 - il faut que le script prenne en compte au maximum tout les exigences des participants 5 - On pourra aussi adapter ce code pour envoyer un SMS a la place d'un PUSH A la fin un des participant devra faire un tuto pour expliquer le fonctionnement voici la commande pour envoyer une notification fibaro:call(ID, "sendPush", "Test Notification HC2") Vous débutez et vous voulez apprendre cette exercice et pour vous il n'y a pas de questions bête ce qui est bête c'est de ne pas poser la question c'est partie Si vous n'avez pas d'idée mais que le sujet vous intéresse posté simplement "Je Participe" Voici un début de code que je propose : --[[ %% properties 69 value 53 value 73 value %% globals --]] local IdSMS = 181 -- récuperation de la variable global instance freesms local SourceTrigger = fibaro:getSourceTrigger() -- on demande au système de récupérer (get) l'origine (Source) du déclenchement de la scène (Trigger) fibaro:debug('ID Plugin SMS = ' ..IdSMS) if SourceTrigger['type'] == 'property' then -- si l'origine du déclenchement de la scène est la modification d'une propriété d'un module surveillée dans l'entête alors local id = SourceTrigger['deviceID'] -- Récuperation de l'id du déclencheur local Name = fibaro:getName(id) -- Récuperation Nom du module déclencheur local MaPorte = fibaro:getValue(id, 'value' ) -- récuperation de la valeur de l'id déclencheur local MessageSms = ('La ' ..Name) if (MaPorte == '0') then fibaro:call(IdSMS, "sendPush", MessageSms .." est Fermee") -- envoi un push fibaro:debug( 'Fermer' ) else fibaro:call(IdSMS, "sendPush", MessageSms .." est Ouverte") -- envoi un push fibaro:debug( 'Ouverte' ) end elseif SourceTrigger['type'] == 'other' then -- sinon si l'origine du déclenchement de la scène est autre alors fibaro:call(IdSMS, "sendPush", "Message test Home Center 2"); fibaro:debug('La scène a été lancée manuellement') end Script pour plusieurs Téléphones Réalisé par un membre du forum Merci aussi a Pépite pour son aide --[[ %% autostart %% properties 69 value 53 value 73 value --]] -- ================================================ -- PREPARATION DU CODE, ON CREER LES FONCTIONS QUE -- NOUS ALLONS DEVOIR APPELER PAR LA SUITE -- Dans notre cas, il y a au moins 2 fonctions : -- une pour l'envoi du message -- une pour obtenir les informations du module et son état -- -- Une fonction est un morceau de code que nous pouvons appeler -- plusieurs fois. Elle peux recevoir des paramètres. -- Une fonction peux exister sans pour autant être utilisée -- ================================================ -- ================================================ -- Envoi un message sur un ou plusieurs portables -- ---------------------------------------------------------------------------------- -- Parmètre : -- idPortables : numéro d'un portable ou tableau de plusieurs portable -- message : message à envoyer -- Exemple : -- sendPush(23, "Envoi d'un message simple") -- sendPush({23,25,27}, "Envoi a plusieurs destinataires") -- ================================================ function sendPush(idPortables, message) if (type(idPortables) == "table") then -- Si nous avons plusieurs numéros dans un tableau {} for i = 1, #idPortables do -- On envoi le message sur tout les portables fibaro:call(idPortables[i], "sendPush", message) end fibaro:debug(string.format("Pushs envoyés : %s", message)) elseif (type(idPortables) == "number") then -- Si nous avons un seul numéro de portable fibaro:call(idPortables, "sendPush", message) fibaro:debug(string.format("Push envoyé : %s", message)) else fibaro:debug(string.format("Erreur : le numéro %s n'est pas valable", idPortables)) end end -- ================================================ -- Retourne les information sur un device -- ---------------------------------------------------------------------------------- -- Parmètre : -- deviceId : l'dientifiant du device -- Exemple : -- local message = getDeviceInfo(69) -- ================================================ function getDeviceInfo(deviceId) local etat = "ouverte" if (fibaro:getValue(deviceId, 'value' ) == "0") then etat = "ferme" end return string.format("La %s est %s.", fibaro:getName(deviceId), etat) end -- ================================================ -- FIN DE LA PREPARATION DU CODE -- ================================================ -- ================================================ -- DEBUT DU CODE PRINCIPAL -- ================================================ -- Déclaration du/des numéros de portables local idportables = 181 -- local idportables = {23, 24, 25} -- Le déclencheur de cette scène, va nous permettre de savoir qui et -- comment cette scène a été démarrée local SourceTrigger = fibaro:getSourceTrigger() if (SourceTrigger['type'] == 'property') then -- si la scène a été démarrée par un "device", on va récupérer -- les informations du device local message = getDeviceInfo(SourceTrigger['deviceID']) -- puis l'envoyer sur les portables sendPush(idportables, message) elseif (SourceTrigger['type'] == 'other') then -- Si la scène a été démarrée manuellement sendPush(idportables, string.format("La scène a été lancée le %s a %s", os.date("%d/%m/%Y"), os.date("%R"))) elseif (SourceTrigger['type'] == 'autostart') then -- Si la scène a été démarrée par une sauvegarde de cette scène -- ou le redémarrage de la box sendPush(portables, string.format("La box a démarré le %s a %s", os.date("%d/%m/%Y"), os.date("%R"))) end 3
cybersquat Posté(e) le 6 avril 2015 Signaler Posté(e) le 6 avril 2015 Bonjour à tous, J'aimerai participer même si je suis un vrai bille dans le domaine. Avec la soirée passé avec mprinfo, je tente de comprendre les choses Donc si je peux ajouter un petit caillou à la chose, je le ferai 1
mprinfo Posté(e) le 6 avril 2015 Auteur Signaler Posté(e) le 6 avril 2015 C'est le but de cette exercice. Apprendre le Lua pour ceux qui ne connaissent pas ou peu ce langage 1
cybersquat Posté(e) le 6 avril 2015 Signaler Posté(e) le 6 avril 2015 si je peux me permettre, ma première idée serait de faire un script en lua, mais aucune base je l'avoue J'ai créer une variable avec MODE 1- MAISON 2- ABSENT 3- NUIT 4- VACANCES La chose étant de pouvoir créer une scène avec déjà Si le MODE VACANCES activé, le détecteur de mouvement voit si la porte ou les portes s'ouvre ou pas, si elles s'ouvrent, envoi d'un SMS direct. J'ai tenté de le faire en bloc et le passer en LUA après afin de comprendre le fonctionnement, mais je suis limité en bloc quand je veux introduire si porte ouverte ou pas, bref !! lol je suis perdu
Berale64 Posté(e) le 6 avril 2015 Signaler Posté(e) le 6 avril 2015 il n'y a pas de questions bête ce qui est bête c'est de ne pas poser la question J'aime bien lire ce genre de phrase. Bien que tu ai déjà mis une ligne en lua, pourquoi exclure les possesseurs de HCL ? Avant d'avoir ma HC2, je me suis bien amusé avec ma HCL. L’énoncé de ton exercice me semble, à priori, pouvoir s'appliquer aux deux. Y'a-t-il des volontaires chez les HCL ?
mprinfo Posté(e) le 6 avril 2015 Auteur Signaler Posté(e) le 6 avril 2015 Je ne connais pas du tout la HCL le but de l'exercice au départ c'est pour apprendre par l'exemple le lua mais pas de soucis si tu peux donner un coup de mains pour l'adapter a la HCL c'est vrai que dans l'idéal il serait bien que cela fonctionne sur HCL et HC2
Bugsissimo Posté(e) le 6 avril 2015 Signaler Posté(e) le 6 avril 2015 Le problème c'est que si c'est un exercice pour apprendre le LUA, les HCL seront obligatoirement exclu. Il vaudrait mieux ensuite créer un autre exercice pour HCL ou alors dans le tuto mettre la traduction pour les HCL.
mprinfo Posté(e) le 6 avril 2015 Auteur Signaler Posté(e) le 6 avril 2015 Le probléme c'est que je n'ai pas de HCL donc pas facile effectivement d'arriver a faire la même chose sur une hcl. Ta réflexion est bonne mais comment faire ?
Bugsissimo Posté(e) le 6 avril 2015 Signaler Posté(e) le 6 avril 2015 Sur HCL ce sera obligatoirement par le mode bloc graphique donc tu peux le faire @mprinfo. En fait la HCL c'est ta HC2 mais tu oublis TOUT ce qui est Lua ^^
mprinfo Posté(e) le 6 avril 2015 Auteur Signaler Posté(e) le 6 avril 2015 Peut on crée des variables globales ? le soucis ça va pas être aussi précis qu'avec le lua pour envoyer les messages personnaliser. Il va falloir que je me mette au scène bloc lol j'utilise rarement car je n'aime pas trop le générateur de codes. Mais ok on peut faire une version HC2 et faire un équivalent en scène bloc
Bugsissimo Posté(e) le 6 avril 2015 Signaler Posté(e) le 6 avril 2015 Oui les variables c'est ok sur HCL
mprinfo Posté(e) le 6 avril 2015 Auteur Signaler Posté(e) le 6 avril 2015 donc ok je pense qu'il faut faire deux type de groupe et d'adapté le lua qu'en c'est possible au scène bloc et pour ceux qui feront du scène bloc d'écrire la scène en lua pour HC2. Pas facile tout cela lol
pepite Posté(e) le 6 avril 2015 Signaler Posté(e) le 6 avril 2015 Le début de la scene en LUA pour moi ;-) --[[ %% autostart %% properties %% globals --]] -- Verif du nombre d'instances en cours if (fibaro:countScenes() > 1) then fibaro:abort(); end @cybersquat, vite fait qqch comme ca mais pas sur que cela soit optimisé ;-) local IDTEL = 99 -- ID du tel qui recoit les PUSH if (fibaro:getGlobalValue("MODE") == "VACANCES") and --Variable GLOBALE "MODE" est VACANCES (fibaro:getValue(id_porte, 'value') == "1") -- porte ouverte then fibaro:call(IDTEL, "sendPush", "La porte d'entrée est Ouverte") -- Envoi du PUSH au tel "IDTEL" fibaro:debug( "VACANCES : Porte Ouverte") end
mprinfo Posté(e) le 6 avril 2015 Auteur Signaler Posté(e) le 6 avril 2015 donc toi pépite tu partirais sur une scéne ? Pourquoi %% autostart ?
Janus Posté(e) le 6 avril 2015 Signaler Posté(e) le 6 avril 2015 J'ai un peu honte, mais, allez…. "Je Participe" Je ne promets pas d'écrire quoi que soit, mais je vous regarde. J'ai tout à apprendre sur le sujet... C'est sympa votre idée.
cybersquat Posté(e) le 6 avril 2015 Signaler Posté(e) le 6 avril 2015 lol, Je participe aussi, je regarde de loin lol, je suis perdu %% autostart ( ca sert pas a démarrer la scène de facon automatique) ? remplace pas la coche scène active?
mprinfo Posté(e) le 6 avril 2015 Auteur Signaler Posté(e) le 6 avril 2015 merci le but ce n'est pas que d' écrire du code. le but c'est de discuter ensemble de ce que l'on aimerai faire ou plutot avoir sur notre box pour être averti lorsqu'une porte est ouverte ou fermer. Donc n'hésite pas a intervenir par exemple j'aimerai pouvoir mettre le tel de ma femme et le miens
pepite Posté(e) le 6 avril 2015 Signaler Posté(e) le 6 avril 2015 @mprinfo : oui je ferais une scene, après soit avec un trigger sur l'ouverture de la porte ou alors avec le %%autostart pour que la scene se relance au demarrage ;-) @cybersquat : oui cela sert a cela, par exemple en cas de redémarrage de la box, la scene est de nouveau active
mprinfo Posté(e) le 6 avril 2015 Auteur Signaler Posté(e) le 6 avril 2015 le but c'est de participer d’échanger des idées afin que tout le monde même débutant puisse faire quelque chose de sympas sur la hc2 et pourquoi pas une fois ce sujet résolu débattre ensemble pour un autre exercice. Donc dites ce que vous voulez que ce programme fasse, le code on s'en fou un peu il y a assez de membre qui pourront nous aider.
mprinfo Posté(e) le 6 avril 2015 Auteur Signaler Posté(e) le 6 avril 2015 @pépite je voyais cela aussi comme ça, dans une scène mais peut être que d'autre membres on une autre idées Par contre je ne vois pas pourquoi autosart ? puisque tu as un trigger "un trigger et un déclencheur qui va permettre de lire la scéne, le trigger ne peut être utiliser que dans les scénes"
pepite Posté(e) le 6 avril 2015 Signaler Posté(e) le 6 avril 2015 @mprinfo : si effectivement on part sur un trigger, pas besoin d'autostart, mais selon les besoins, rien empeche de le mettre ce qui permet d'etre plus ouvert sur le code ;-) et ne pas s'enfermer avec le trigger. Partons sur un trigger alors
mprinfo Posté(e) le 6 avril 2015 Auteur Signaler Posté(e) le 6 avril 2015 j'ai donc ajouter l'entête pour dire qu'a priori on partirai sur une scéne. Par contre je ne mets pas autostart car je ne vois pas bien a quoi cela peu servir Voici un tuto sur l'entéte des scénes et leurs utilisation : http://www.domotique-fibaro.fr/index.php/topic/4153-tout-sur-le-d%C3%A9clenchement-dune-sc%C3%A9ne-en-lua-by-steven/#entry61430
Janus Posté(e) le 6 avril 2015 Signaler Posté(e) le 6 avril 2015 Voilà qui est bien : " puisque tu as un trigger …." avec le sous-titre ou la traduction simultanée : "un trigger et un déclencheur qui va permettre de lire la scéne, le trigger ne peut être utiliser que dans les scénes" C'est vrai, quand j'ai vu le sujet sur les HUE, je suis allé voir sur internet, c'est quoi les HUE...
mprinfo Posté(e) le 6 avril 2015 Auteur Signaler Posté(e) le 6 avril 2015 non je voulais que tu expliques pourquoi autostart. Je pensé que tu voulais mettre cela pour que l'on reçoive un message lors d'un démarrage de la box comme cette commande permet d exécuter le script au démarrage.
mprinfo Posté(e) le 6 avril 2015 Auteur Signaler Posté(e) le 6 avril 2015 t’inquiète je connaissais pas vrai les HUE donc j'en ai acheté pour voir
Messages recommandés