Dragoniacs Posté(e) le 28 février 2021 Signaler Posté(e) le 28 février 2021 (modifié) Bonjour à tous, Je vous partage une première version de mon QuickApp qui donne vie à mon lapin préféré J'ai intégré une fonction qui existait à part sur la HC2 : la modification de la couleur de la LED en fonction d'un écart de température extérieur / intérieur. Cette fonction n'est de base pas activée, il faut passer une variable à true dans le code du fichier "MAIN" : App_Temperature = true 1° Installez le QuickApp Disponible ici -> OpenKarotz.fqa 2° Paramétrez vos variables: IP_Karotz : l'addresse de votre lapin, en format 192.168.x.xxx TTS : si besoin de faire des essais de la fonction, vous pouvez mettre du texte ici. Capteur_Interne : ID du capteur intérieur pour la comparaison de température Capteur_Externe : ID du capteur extérieur pour la comparaison de température 3° Plus de paramètres sont accessibles dans le fichier "main" -- VARIABLES UTILISATEUR Icone_ON = 1015 -- si vous voulez mettre une icône spécifique lorsque le lapin est en fonctionnement Icone_OFF = 1016 -- icone pour le lapin en mode "off" Icone_Temp = 1017 -- icône pour le lapin en mode "affichage écart de température" App_Temperature = true -- "true" active la fonction d'affichage de l'écart de température, sinon, laissez en "false" 4° Pour faire parler le lapin Rien de plus simple, faites appel à la méthode de cette manière : fibaro.call(124,"onTTS","le texte que le lapin doit prononcer") (dans cet exemple, 124 est l'ID du QuickApp lapin) 5° Utilisation des RFID Depuis l'interface de votre lapin, paramétrez l'action du RFDI choisi en type "URL" est précisez : NAME : MON_ACTION URL : http://192.168.1.xxx/api/callAction (IP de votre HC3) PARAMETERS : deviceID=124&name=onMON_ACTION (ID = ID de votre QA Lapin / onMON_ACTION sera la méthode à appeler que vous allez ajouter dans le code du fichier "main") USER : xxxx@xxxxx.xxx (utilisateur ayant accès à la HC3 et au QA du lapin) PASSWORD : xxxxxx (le mot de passe de cet utilisateur) De retour dans le code du QA de votre lapin, vous pouvez maintenant ajouter le contenu de la méthode "onMON_ACTION" pour définir ce que le lapin devra faire lors de l'utilisation du RFID. Petit exemple de code que mes enfants adorent : function QuickApp:onVOITURE() -- Actions en fonction de l'heure self:onRandom() local time = os.date("%H:%M") if time <= "12:00" then local texte = "Bonjour les enfants ! Vous avez bien dormi ?" self:onTTS(texte) end if time > "12:00" and time < "18:30" then local texte = "Bonjour les enfants ! Amusez vous bien et soyez sages !" self:onTTS(texte) end if time >= "18:30" and time < "19:00" then local texte = "Les enfants, c'est bientôt l'heure d'aller au bain !" self:onTTS(texte) end if time >= "19:00" and time < "19:30" then local texte = "Vous êtes déjà passés au bain vous ? Je sens encore de la boue !" self:onTTS(texte) end if time >= "19:30" and time < "20:30" then local texte = "Les enfants, je crois qu'il est bientôt l'heure d'aller au lit !" self:onTTS(texte) end if time >= "20:30" then local texte = "Que faites vous là ? Vous ne dormez pas ? Allez hop, au lit les pirates !" self:onTTS(texte) end end Vous pouvez aussi passer des paramètres depuis votre RFID, en ajoutant des paramètres. Exemple, pour faire parler le lapin directement depuis une sollicitation d'un RFID : URL : http://192.168.1.xxx/api/callAction (IP de votre HC3) PARAMETERS : deviceID=124&name=onTTS&arg1="Bonjour à tous, je suis un super lapin !" Evolution à venir : soigner un peu plus l'interface avec du texte au dessus des slider en lieu et place des gros labels. Modifié le 28 février 2021 par Dragoniacs 5
Dragoniacs Posté(e) le 28 février 2021 Auteur Signaler Posté(e) le 28 février 2021 @Massalia Tu n'as plus d'excuses pour ne pas acheter une HC3
Massalia Posté(e) le 1 mars 2021 Signaler Posté(e) le 1 mars 2021 (modifié) C'est clair .... Whaou que de chemin parcouru depuis Hier Premier code HC3 pour le Lapin, Félicitation, pour ma part c'est clair il me faut une HC3. Et hop une citation sur le Blog du lapin. ----------------- Le Lapin prêt pour Fibaro HC3 By Laurent (Massalia)Annonces Un grand merci à Dragoniacs du forum Domotique-Fibaro pour la création d’un module spécifique pour la HC3. Profitez en et allez voir ce travail, le projet est cours, il va encore évoluer profitez en !! ---------- Modifié le 30 août 2022 par Massalia 1
Bebitoo Posté(e) le 8 mars 2021 Signaler Posté(e) le 8 mars 2021 Et moi qui me disais que j'étais peut-être l'un des derniers à avoir l'un des ces 'ti lapin dans la famille, et qu'il (elle, c'est une fille ) pourrait être "le thème" mon premier QA... Non... je ne suis pas déçu, super content, au contraire ! Merci Je teste de ce pas ! Et je m'exercerai aux QA plus tard...
Bebitoo Posté(e) le 9 mars 2021 Signaler Posté(e) le 9 mars 2021 (modifié) Bonjour, Sauf erreur, le bouton TTS (qui doit faire prononcer au lapin le texte de la variable TTS du QA) ne fonctionne pas, et fait crasher le QA, qui se relance ensuite (et le lapin fait faire un tour à ses oreilles). Je vois dans la console : [09.03.2021] [19:03:55] [TRACE] [QA_KAROTZ_31]: UIEvent: {"elementName":"btnTTS","values":[],"eventType":"onReleased","deviceId":31} [09.03.2021] [19:03:55] [DEBUG] [QA_KAROTZ_31]: ./include/main.lua:65: attempt to concatenate a table value (field 'TTS') [09.03.2021] [19:03:55] [ERROR] [QUICKAPP31]: QuickApp crashed [09.03.2021] [19:03:55] [ERROR] [QUICKAPP31]: Unknown error occurred: handleJsonRpc [09.03.2021] [19:04:00] [TRACE] [QA_KAROTZ_31]: QuickApp OpenKarotz - Initialization [09.03.2021] [19:04:01] [DEBUG] [QA_KAROTZ_31]: onAction: {"deviceId":31,"args":[],"actionName":"onReset"} [09.03.2021] [19:04:01] [DEBUG] [QA_KAROTZ_31]: onAction: {"deviceId":31,"args":[],"actionName":"onSPEED"} Par contre, aucun soucis pour le faire parler depuis le QA GEA, avec la ligne suivante : GEA.add(true, 0, "test TTS OpenKarotz", {"QuickApp", id["MonOpenKarotz"], "onTTS", "Bonjour. Je suis la voix de votre HC3 !"}, "test TTS OpenKarotz") Suis-je le seul ? Bon, après rien de très grave, parce que l'usage principal (voire unique) est depuis d'autre QA ou scènes Edit: le code qui pose problème : function QuickApp:onTTS(message) self.TTS = self:getVariable("TTS") if message ~= nil then self.TTS = message end tools:Message("debug","Enonciation de la phrase : "..self.TTS) local voice = "1" self.TTS = string.gsub(self.TTS, "\n", "\r\n") self.TTS = string.gsub(self.TTS, "([^%w %-%_%.%~])", function (c) return string.format("%%%02X", string.byte(c)) end) self.TTS = string.gsub(self.TTS, " ", "+") local URL = "http://"..self.IP_KAROTZ.."/cgi-bin/tts?voice="..voice.."&text="..self.TTS:gsub(" ", "+").."&nocache=0" if (self.TTS ~= "") then self:sendKarotz(URL) end end Sauf erreur, l'idée est que ce soit le même code qui soit exécuté lorsque appelé depuis l'extérieur, ou lors d'un clic sur le bouton interne du QA (avec l'usage de la variable TTS). Mais dans le cas interne, le self:getVariable("TTS") renvoie une table (et non un string) qui pose problème à la concaténation avec "Enonciation de la phrase : " pour le message de debug, et pour le gsub 2 lignes après, etc... Modifié le 9 mars 2021 par Bebitoo
Dragoniacs Posté(e) le 12 mars 2021 Auteur Signaler Posté(e) le 12 mars 2021 Merci pour le rapport d'erreur. Je vois ce qui pose problème. Effectivement cela ne bloque pas le fonctionnement mais c'est moche. Je regarde ça et je publie un correctif ASAP.
manuxenon Posté(e) le 13 avril 2021 Signaler Posté(e) le 13 avril 2021 Le 09/03/2021 à 19:13, Bebitoo a dit : Bonjour, Sauf erreur, le bouton TTS (qui doit faire prononcer au lapin le texte de la variable TTS du QA) ne fonctionne pas, et fait crasher le QA, qui se relance ensuite (et le lapin fait faire un tour à ses oreilles). Je vois dans la console : [09.03.2021] [19:03:55] [TRACE] [QA_KAROTZ_31]: UIEvent: {"elementName":"btnTTS","values":[],"eventType":"onReleased","deviceId":31} [09.03.2021] [19:03:55] [DEBUG] [QA_KAROTZ_31]: ./include/main.lua:65: attempt to concatenate a table value (field 'TTS') [09.03.2021] [19:03:55] [ERROR] [QUICKAPP31]: QuickApp crashed [09.03.2021] [19:03:55] [ERROR] [QUICKAPP31]: Unknown error occurred: handleJsonRpc [09.03.2021] [19:04:00] [TRACE] [QA_KAROTZ_31]: QuickApp OpenKarotz - Initialization [09.03.2021] [19:04:01] [DEBUG] [QA_KAROTZ_31]: onAction: {"deviceId":31,"args":[],"actionName":"onReset"} [09.03.2021] [19:04:01] [DEBUG] [QA_KAROTZ_31]: onAction: {"deviceId":31,"args":[],"actionName":"onSPEED"} Par contre, aucun soucis pour le faire parler depuis le QA GEA, avec la ligne suivante : GEA.add(true, 0, "test TTS OpenKarotz", {"QuickApp", id["MonOpenKarotz"], "onTTS", "Bonjour. Je suis la voix de votre HC3 !"}, "test TTS OpenKarotz") Suis-je le seul ? Bon, après rien de très grave, parce que l'usage principal (voire unique) est depuis d'autre QA ou scènes Edit: le code qui pose problème : function QuickApp:onTTS(message) self.TTS = self:getVariable("TTS") if message ~= nil then self.TTS = message end tools:Message("debug","Enonciation de la phrase : "..self.TTS) local voice = "1" self.TTS = string.gsub(self.TTS, "\n", "\r\n") self.TTS = string.gsub(self.TTS, "([^%w %-%_%.%~])", function (c) return string.format("%%%02X", string.byte(c)) end) self.TTS = string.gsub(self.TTS, " ", "+") local URL = "http://"..self.IP_KAROTZ.."/cgi-bin/tts?voice="..voice.."&text="..self.TTS:gsub(" ", "+").."&nocache=0" if (self.TTS ~= "") then self:sendKarotz(URL) end end Sauf erreur, l'idée est que ce soit le même code qui soit exécuté lorsque appelé depuis l'extérieur, ou lors d'un clic sur le bouton interne du QA (avec l'usage de la variable TTS). Mais dans le cas interne, le self:getVariable("TTS") renvoie une table (et non un string) qui pose problème à la concaténation avec "Enonciation de la phrase : " pour le message de debug, et pour le gsub 2 lignes après, etc... Bonsoir. J'ai le même problème. Avez-vous résolu le bug ? J'ai essayé de mon coté : mais je ne m'en sors pas. Merci.
Dragoniacs Posté(e) le 14 avril 2021 Auteur Signaler Posté(e) le 14 avril 2021 Je n'ai pas résolu le bug. Mais en réalité avec les QA on n'a pas besoin de ce bouton. Je pense publier une V2 qui ne l'intégrera pasEnvoyé de mon RMX1993 en utilisant Tapatalk
manuxenon Posté(e) le 15 avril 2021 Signaler Posté(e) le 15 avril 2021 Il y a 23 heures, Dragoniacs a dit : Je n'ai pas résolu le bug. Mais en réalité avec les QA on n'a pas besoin de ce bouton. Je pense publier une V2 qui ne l'intégrera pas Envoyé de mon RMX1993 en utilisant Tapatalk Merci.
Bebitoo Posté(e) le 21 avril 2021 Signaler Posté(e) le 21 avril 2021 (modifié) Bonjour @manuxenon, Oui, j'ai résolu ce point pour moi, en même temps que j'ai un peu modifié le QA de @Dragoniacs pour le prendre en main et le mettre "à ma sauce" (et du coup, les noms des méthodes et variables du code ci-dessous ne correspondent peut-être pas au QA original - mais ce sont les principes qui importent). Comme le dit @Dragoniacs, le cas d'usage n°1 est d'appeler le code TTS depuis... n'importe où . Pour cela, le QA du lapin expose une fonction Parler qui prend en argument la phrase à prononcer : function QuickApp:Parler(phrase) self:setVariable("TTS", phrase) -- mémorisation de la phrase à prononcer self:openKarotzTTS(phrase) end et que l'on appelle, depuis GEA par exemple, avec : GEA.add(true, 0, push, {"QuickApp", id["Lapinou"], "Parler", "G.E.A. est actif sur votre HC3"}, "Démarrage GEA") Et pour les tests ou vérification de bon fonctionnement (cas d'usage n°2), le QA du lapin dispose d'un bouton configuré pour appeler une fonction onParler lorsque relâché, dont le code est : function QuickApp:onParler() -- on récupère le contenu de la variable TTS, pour la faire prononcer... phrase = self:getVariable("TTS") self:Parler(phrase) end J'ai donc : cas d'usage n°2 = clic sur bouton du QA : onParler, qui récupère la valeur courante de la variable TTS, pour la passer en argument de Parler. cas d'usage n°1 = TTS depuis n'importe où : Parler qui, pour info ou analyse/debug si besoin, mémorise la phrase passée en argument dans la variable TTS (oui, c'est ridicule dans le cas d'usage 2 : elle y est déjà ), puis appelle la fonction "interne" pour faire prononcer la phrase au lapin sous OpenKarotz (nécessite la construction de l'URL tts de OpenKarotz, raison pour laquelle je l'ai nommé OpenKarotzTTS). Le code de OpenKarotzTTS (largement inspiré de celui de @Dragoniacs - encore merci ) : function QuickApp:openKarotzTTS(text2speech) tools:Message("trace", text2speech) -- voice voice = "1" -- text text = text2speech text = string.gsub(text, "\n", "\r\n") text = string.gsub(text, "([^%w %-%_%.%~])", function (c) return string.format("%%%02X", string.byte(c)) end) text = string.gsub(text, " ", "+") -- cache nocache = 0 -- ToDo: utiliser le cache ? -- URI local URI = "tts?voice="..voice.."&text="..text.."&nocache="..nocache -- appel self:openKarotz(URI) end Modifié le 24 avril 2021 par Bebitoo
manuxenon Posté(e) le 22 avril 2021 Signaler Posté(e) le 22 avril 2021 Bonjour Bebitoo. Merci pour ton aide.
Ironsyb Posté(e) le 26 octobre Signaler Posté(e) le 26 octobre (modifié) Bonjour @Dragoniacs, Peux tu me dire comment passer la valeur de couleur de LED à l'appel de la fonction stp ? C'est une variable tableau (00 à FF je pense) pour chaque code RGB. Quand j'envoie un entier directement cela plante (normal). Bonne soirée. Modifié le 26 octobre par Ironsyb
Massalia Posté(e) le 27 octobre Signaler Posté(e) le 27 octobre Bonjour a tous, je suis l'auteur d'OpenKarotz Pour toutes vos questions sur le lapin vous pouvez regarder ICI, et pour les LEDS LA, utilisez le site web Et je te remet la copie du site : API – Leds Leds : /cgi-bin/leds?color=RRVVBB&[color2=RRVVBB]&[pulse=0/1]&[speed=0-xxx]&[nomemory=0/1] Permet de piloter la LED ventrale. Le paramètre color permet de choisir la couleur principale au format RRVVBB Le paramètre color2 permet de choisir la couleur secondaire lorsque la led clignote au format RRVVBB Le paramètre pulse fait « respirer » le lapin si sa valeur est à 1, sinon la led est fixe. Le paramètre speed permet de jouer sur la vitesse de respiration du lapin.La valeur est en millisecondes. Pour un clignotement rapide : 300 Pour un clignotement normal : 700 (Valeur par défaut) Pour un clignotement lent : 1500 Le paramètre no_memory ne mémorise pas le changement de couleur. Exemple: Rouge Fixe /cgi-bin/leds?color=FF0000 Clignotant Bleu vitesse normale /cgi-bin/leds?color=00FF00&pulse=1 Clignotant Rouge vitesse rapide /cgi-bin/leds?color=00FF00&pulse=1&speed=300 Clignotant Rouge/Bleu vitesse rapide /cgi-bin/leds?color=FF0000&color2=0000FFpulse=1&speed=300 Led Eteinte /cgi-bin/leds?color=000000 Si tu as d'autres question, vas y.
Messages recommandés