Aller au contenu

JossAlf

Membres confirmés
  • Compteur de contenus

    1 078
  • Inscription

  • Dernière visite

  • Jours gagnés

    14

Tout ce qui a été posté par JossAlf

  1. Tu viens d'inventer une télécommande à 1 bouton pour 2 fonctions Tu veux un tuyaux ? Si tu ajoutes un second bouton tu peux déclencher X scénarios ... Jette un oeil là : #142
  2. Attention : C'est un bouton ! Inutile de mettre l'entête. On est d'accord ?
  3. Tu crées une variable globale entree6 dans le "Panneau variables" et tu laisses 0. Tu valides sur la disquette en haut à droite. Puis tu corriges ton code de ton bouton comme suit : if (tonumber(fibaro:getGlobalValue("entree6")) == 1) then fibaro:call(30, "turnOn"); fibaro:debug("Variable on"); --fibaro:log("Variable on"); fibaro:setGlobal("entree6", 0); else fibaro:debug("Variable off"); --fibaro:log("Variable off") fibaro:call(30, "turnOff"); fibaro:setGlobal("entree6", 1); end Et bing ! Ca marche !!!!
  4. Il y a quelques erreurs (notamment sur la gestion de la valeur de la variable toujours à 1 à caus de la ligne 2 puis toujours à 0 à cause des lignes 8 et 13). Ca donnerai ça : --local entree6 = '1' if (entree6 == 1) then fibaro:call(30, "turnOn"); fibaro:debug("Variable on"); fibaro:log("Variable on"); entree6 = 0 else fibaro:debug("Variable off"); fibaro:log("Variable off") fibaro:call(30, "turnOff"); entree6 = 1 end Mais ça ne marchera pas. La HC2 attends une valeur pour entree6. Le plus simple est alors de passer par une variable globale. Ca t'évitera de devoir l'initialiser ici. Edit : Code ok dans le message suivant ...
  5. @Syris : tu veux pas nous mettre le code de ta scene 12 ? (lumière tamisé + bandeau led sur tel programme + faire descendre le vidéoprojecteur)
  6. HA oui là j'ai du mal Voici ce que j'ai compris : Tu as un bouton poussoir (un vrai physique collé au mur) qui est relié par un fil à ton IPX. Quand tu cliques (j'appuie et je relâche tout de suite) sur le bouton physique, l'IPX envoie la commande suivante vers l'HC2 : /api/callAction?deviceID=127&name=pressButton&arg1=7 Cette commande va activer le bouton 1 de ton VD 127. Et bien là dans le code de ton bouton tu mets : Si variable = 1 tu lances ta scène (12) variable = 0 sinon tu arrêtes ta scène (12) tu lances une autre scène qui remonte ton vidéopro tu éteins ton bandeau LED tu allumes la lumière principale variable = 1 fin de si En gros un clique sur le bouton physique du mur va engendrer le clic sur le bouton 1 du VD 127. Avec un seul bouton tu allumes ou tu éteins. C'est pas ce que tu veux ?
  7. Oui enfin là c'est plutôt CAF (Child Acceptance Factor ≠Woman Acceptance Factor)
  8. Dans ce cas tu dois passer par une variable globale et passer par un VD dont le bouton sera du type : Si variable = 1 tu lances ta scène (12) variable = 0 sinon tu arrêtes ta scène (12) tu lances une autre scène qui remonte ton vidéopro tu éteins ton bandeau LED tu allumes la lumière principale variable = 1 fin de si
  9. Ha pardon ... Ton ipx te sert àrécupérer l'appui sur ton bouton poussoir. C'est ça ?
  10. JossAlf

    Question Posé Par Le Hc2

    Oui mais tu peux envoyer un push en fin de scène. Sur le téléphone, quand tu reçois le push et que tu cliques dessus l'application figaro se lance (enfin c'est comme ça sur iPhone) Et pouf ! Tu as la notification !
  11. Je ne comprends pas bien ton problème de bouton poussoir car je pense que tu peux demander à l'IPX d'ouvrir ou fermer un contact avec son API ? Avant de continuer j'ai 2 questions : Que fait Lumière tamisée ? Si elle ne fait que réduire la luminosité de plusieurs lampes tu peux le faire dans un VD. En revanche si elle tamise la lumière en fonction de l'heure, d'un capteur de luminosité, et d'autres variables, l'utilisation d'une scène est justifiée (quoi que on peux le faire aussi en VD). Même question pour le bandeau LED. Tu ne fais que l'allumer ou il change de couleur en fonction de plusieurs paramètres/variables ? Je te propose de passer par un VD car c'est plus visuel et en plus tu pourras l'utiliser directement sur ton téléphone ou tablette. Tu crées un VD cinéma avec plusieurs boutons : Mode Cinéma (notre sujet) Arrêt du mode Cinéma Salon en mode Normal Salon en mode Invité Salon en mode Intime ... Dans le bouton "Mode Cinéma" tu auras ton code qui va : 1/ Régler la lumière tamisée : tu peux lancer ta scène ou tamiser ta lumière directement dans mon VD sauf si tu testes la luminosité ambiante, ou l'heure, ou ...) 2/ Gérer ton bandeau LED en appellent ta scène prévue pour (ou tu le fais directement dans le bouton de ton VD) 3/ Faire descendre le vidéopro (en fermant le contact de l'IPX pendant x secondes ; puis en ouvrant le contact de l'IPX pour arrêter le moteur) Le second bouton "Arrêt du mode Cinéma" remontera le videopro, remettra les valeurs des lumière à 100%, éteindra le bandeau LED ...
  12. Que veux tu faire dans tes scènes ? Si c'est éteindre et allumer un/plusieurs modules, ne passe pas par des scènes mais uniquement par module virtuel. La scène permet de réaliser des actions en lien avec une situation (valeur d'une variable, instant t, cycliquement ...). Elle peut-être très complexe, mais le fait de la désactiver ne fait que l'arrêter ! Ça n'éteindra jamais les différents modules qu'elle aurait allumer pendant son fonctionnement. Le module virtuel (virtuel déviée VD) permet de créer des boutons qui contiennent une action ou une série d'actions qui se déclenchent quand on clique dessus. En plus de cette fonction, il possède un main loop (une boucle principale) qui permet de faire tourner l'équivalant d'une petit scène àl'infini. Dis-nous ce que tu souhaites faire dans tes scènes. On te dira si tu dois utiliser un VD ou des scènes. Envoyé de mon iPad àl'aide de Tapatalk HD
  13. Et comme ça ? if (fibaro:countScenes(12) > 0) then fibaro:debug('Scene 12 OFF'); else fibaro:debug('Scene 12 ON'); end
  14. JossAlf

    Absent/present Simple

    Tu crées un VD avec 2 boutons qui passent chacun une variable à présent ou absent. Puis tu crées un lien http avec l'API de la HC2 pour chaque bouton. Tu tapes chaque lien sur l'iphone de ta femme et depuis safari tu les transformes en raccourcis sur la page d'accueil (je sais plus le terme exact). Ca se fait depuis safari et tu obtiens une icône sur le bureau pour chaque lien (absent / présent). Je crois que sur iphone/safari il faut aussi régler un paramètre de sécurité pour lancer un lien http sans avoir à confirmer l'ouverture de ce lien.
  15. Je n'ai pas d'ordinateur sous la main alors je te mets sur la piste. Dans ton tableau de BoutonX tu changes les correspondances en y plaçant tes n° de bouton au lieu des ID de lampes : ['1'] = "12" ['2'] = "13" ['3'] = "16" ['4'] = "17" ['5'] = "18" ['6'] = "19" Et aprés dans ton code tu remplaces Fibaro:call(VdHueMarie, "pressButton", "12") Par Fibaro:call(VdHueMarie, "pressButton", VarDevice) VarDevice est définie par : local VarNum = fibaro:getGlobalValue("VarNumBouton") local VarDevice = BoutonX[VarNum] Désolé je suis sur iPad c'est galère pour là mise en forme du lua.
  16. Ha non !!! Tu me demandes 2 choses Pour la dernière question le code change la valeur du label 1 en affichant la valeur de la variable "varnumbouton". C'est absolument inutile avec la télécommande. Ça me servait àsavoir où j'en étais pour les test. Pour utiliser cette fonction tu dois créer un label avant le premier bouton. Pour la première question, pourrais-tu m'en dire plus ? Envoyé de mon iPhone àl'aide de Tapatalk
  17. Excuse moi mais je ne comprends pas ce que tu veux faire. Tu souhaites changer le label de ton VD en y affichant 14 ou 15 ? Envoyé de mon iPhone àl'aide de Tapatalk
  18. Suite à un MP de Chrispec qui me demande des précisions sur mon commentaire http://www.domotique...inimote/?p=7731, voici un bout de code pour piloter x modules (ou déclencher des scènes en l'adaptant) avec seulement 2 boutons de la minimote. Principe de fonctionnement : Je choisi le module à contrôler en "programmant" la télécommande. Pour cela je clique autant de fois sur le bouton 1 qu'il faut pour arriver au numéro qui correspond au module à contrôler. (1 : lumière blanche, 2 : lumière orange, 3 : lumière verte, 4 : ...). Une fois programmé, je "Valide" avec un appui sur le bouton 2. La lumière s'allume (ou s'éteint si elle était allumée). Alors ok... Les grincheux vont me dire que j'ai appuyé sur 2 boutons pour allumer une lumière !!! Mais c'est un exemple d'utilisation. Vous pourrez adapter ce code pour autre chose (pour avoir des bouton cachés sur votre minimote, ou pour déclencher une scène qui fait plein de truc : petite ambiance TV, mettre la maison en Mode vacances, choisir la couleur d'un lampe HUE ...) Prérecquis : 1 variable globale "VarNumBouton" qui va enregistrer le nombre de clics sur le bouton 1 de la minimote. 1 module virtuel (ici ID 123) qui va gérer notre petite affaire. 1 scène (ici ID 328) pour capter les clic sur les boutons de la minimote Voici le code de la scène (ID est 328) qui gère la minimote (ID 13) (j'ai viré la gestion des boutons inutiles ici) : --[[ %% properties 13 sceneActivation %% globals --]] local ButtonPressed = fibaro:getValue(13, "sceneActivation") --programmation de la variable if ( tonumber(ButtonPressed) == 1) then fibaro:call(123, "pressButton", "1") --on simule l'appui sur le bouton 1 MD 123 end --Validation/action elseif ( tonumber(ButtonPressed) == 3) then fibaro:call(123, "pressButton", "2") --on simule l'appui sur le bouton 2 MD 123 end --RAZ if ( tonumber(ButtonPressed) == 5) then fibaro:call(123, "pressButton", "3") --on simule l'appui sur le bouton 3 MD 123 end --Tout OFF if ( tonumber(ButtonPressed) == 7) then fibaro:call(123, "pressButton", "4") --on simule l'appui sur le bouton 4 MD 123 end end Voici le code du bouton 1 du module virtuel 123 : C'est une petite moulinette qui incréments la variable "VarNumBouton" de 1 à chaque appui. On limite le nombre à 5 ici car on ne veut gérer que 5 modules. local VarNum = tonumber(fibaro:getGlobalValue("VarNumBouton")) if VarNum < 5 then fibaro:debug("moins de 5") fibaro:setGlobal("VarNumBouton", VarNum+1); else fibaro:debug("plus de 5") fibaro:setGlobal("VarNumBouton", 5); fibaro:debug("réglé à 5") end fibaro:call(328, "setProperty", "ui.Label1.value", fibaro:getGlobalValue("VarNumBouton")) Code du bouton 2 : C'est lui qui valide et qui permet de commander ce que l'on veut en fonction de l avaleur de la variable "VarNumBouton". On renseigne le tableau en y mettant les ID des modules qui seront à allumer ou éteindre. En suite on test si le module est à ON pour le passer à OFF et vis-et-versa. Le '0' permet d'allumer la lampe blanche directement en cliquant sur le bouton 2. C'ets le clic par défaut. BoutonX = { ['0'] = "296", --blanche directement ['1'] = "296", --blanche ['2'] = "295", --orange ['3'] = "182", --verte ['4'] = "10", --zinc ['5'] = "297", --Abat jour } local VarNum = fibaro:getGlobalValue("VarNumBouton") local VarDevice = BoutonX[VarNum] local MaVariable=fibaro:getValue(VarDevice,'value') if (MaVariable=='0')then fibaro:call(VarDevice, "turnOn") else fibaro:call(VarDevice, "turnOff") end fibaro:setGlobal("VarNumBouton", 0); --on passe la variable VarNumBouton à 0 fibaro:call(328, "setProperty", "ui.Label1.value", fibaro:getGlobalValue("VarNumBouton")) Voilà c'est tout ! 2 boutons et 6 lampes gérées. Mais on peut en ajouter autant que l'on veut en ajoutant un ligne au tableau à chaque fois Chez moi ces lampes sont dans mon salon. Le moyen mnémotechnique est de les compter dans le sens horaire depuis la porte d'entrée Apres on peut ajouter un bouton 3 RAZ au cas ou on s'est trompé en cliquant trop : fibaro:setGlobal("VarNumBouton", 0); fibaro:call(328, "setProperty", "ui.Label1.value", fibaro:getGlobalValue("VarNumBouton")) Et pour le côté pratique, un bouton 4 qui éteint tout : for i = 1, 5 do BoutonX = { [0] = "296", --blanche directement [1] = "296", --blanche [2] = "295", --orange [3] = "182", --verte [4] = "10", --zinc [5] = "297", --Abajour } VarDevice = BoutonX[i] fibaro:call(VarDevice, "turnOff") end Enjoy.
  19. @i-magin : Je n'utilise pas le VD de Krikroff (j'ai des queeze ) mais je crois que tu peux modifier légèrement le code dans le mainloop à la ligne 1319 : "<InstanceID>0</InstanceID><CurrentURI>x-rincon-mp3radio://translate.google.com/translate_tts?ie=UTF-8".."&a".."mp;tl=".. (lng or "fr") .. "&a" .. "mp;q=" .. (urlEncode(message or "") or "message") .. "</CurrentURI><CurrentURIMetaData>"..Sonos:createMetaData("TSS by Google...").."</CurrentURIMetaData>", tu as essayé : "<InstanceID>0</InstanceID><CurrentURI>x-rincon-mp3radio://www.voicerss.org/controls/speech.ashx?hl=fr-fr&src=" .. (urlEncode(message or "") or "message") .. "</CurrentURI><CurrentURIMetaData>"..Sonos:createMetaData("TSS by VoiceRSS...").."</CurrentURIMetaData>", Je ne suis pas allé fouiller tout le code alors ça peut ne pas fonctionner tel quel (vérifier surtout après //www.voicerss.org/controls/speech.ashx?hl=fr-fr&src=" .. ). Mais c'est à tester.
  20. Edition du premier message pour y ajouter un exemple en lua.
  21. @moicphil je te fais ça dès que je trouve 10 minutes. Envoyé de mon iPhone àl'aide de Tapatalk
  22. POur en revenir au code du tutot Emission Simplifiée Sur Squeezebox Tts Ou Mp3 . Voici les 2 syntaxes : --Google Translate TTS local cmnd = "playlist play http://translate.google.com/translate_tts?tl=FR&ie=UTF-8&client=t&q=" .. notification; --Voicerss TTS local cmnd = "playlist play http://www.voicerss.org/controls/speech.ashx?hl=fr-fr&src=" .. notification;
  23. Je viens de tomber sur ce site alors que google translate me jouait encore des tours (limitation avec demande de captcha). http://www.voicerss.org. Il y a une API et plein de doc. Je me suis inscrit mais ce n'est pas vraiment utile pour l'utilisation que je veux en faire : générer des fichiers MP3 pour le diffuser sur mes squeezebox (ou sur tout autre système audio Sonos en tête) En version gratuite on a droit à 350 générations de TTS par jour avec l'API. Ca devrait nous suffire pour le moment. Mais je ne sais pas si le fait d'utiliser une commande http rentre dans cette limitation de l'utilisation avec l'API (à tester donc). On peut jouer sur différents paramètres : voir la doc ici (http://www.voicerss.org/api/documentation.aspx) la langue (canada) : hl=fr-ca -> si omis c'est en anglais le codec (mp3, WAV,AAC ...) : c=AAC -> si omis le mp3 est par défaut l'échantillonnage : f=16khz_16bit_stereo -> si omis, c'est 8 kHz, 8 Bit, Mono par défaut Exemple qui annonce "ouverture du portail" en français au format AAC en 16Khz : http://www.voicerss.org/controls/speech.ashx?hl=fr-fr&c=aac&f=16khz_16bit_stereo&src=Ouverture%20du%20portail Voici un exemple de code qui utilise voiceRSS (ça se passe ligne 99 pour le lien vers VoiceRSS). Ce code peut être placé dans un bouton d'un virtual device. On pourra l'appeler au moment de se coucher ou de fermer la maison. Le code vérifie l'état des portes et annonce en TTS sur un squeezebox qu'"elles sont toutes fermées" ou que l'une ou plusieurs sont ouvertes en les nommant. L'intérêt de la TTS c'est que le code est dynamique et qu'il fabrique la phrase en fonction de la situation : "Toutes les portes sont fermées" "Attention la porte d'entrée me semble ouverte". "Attention il y a X portes ouvertes. Celle de la XX, et de YY, et du ZZ." -> "Attention il y a 3 portes ouvertes. Celle de la cuisine, et de l'entrée, et du portail." NB : pour que la synthèse vocale soit agréable à écouter il faut parfois jouer sur l'orthographe. Exemple : "Attention a la porteu d'entrai elle me semble ouverte ." Je n'ai pas tout vérifié avec voiceRSS mais c'était le cas avec google. J'avoue que la TTS de google est un peu plus naturelle et agréable à entendre. Mais au moins cette solution fonctionne gratuitement 350 fois par jour ! -- Adresse IP du Logitech Media Server local ipadd = "192.168.0.46" -- le port du serveur local portno = 9090 -- L'adresse MAC de la squeeze local player = "00:xx:xx:29:xx:3e " local playername = "SqueezeBox " -- réglage du niveau sonore local NiveauSo = 35 local notification = "" local NombrePorte = 0 -- 32 Garage if tonumber(fibaro:getValue(305, "value")) > 0 then NombrePorte = NombrePorte + 1 if NombrePorte > 1 then notification = notification.." et du garage ." else notification = notification.." du garage ." end end -- 34 Chambre bas if tonumber(fibaro:getValue(307, "value")) > 0 then NombrePorte = NombrePorte + 1 if NombrePorte > 1 then notification = notification.." et de la chambre du bas ." else notification = notification.." de la chambre du bas ." end end -- 38 Entrée principale if tonumber(fibaro:getValue(313, "value")) > 0 then NombrePorte = NombrePorte + 1 if NombrePorte > 1 then notification = notification.." et de lentrer ." else notification = notification.." de lentrer ." end end -- 39 cuisine du bas if tonumber(fibaro:getValue(330, "value")) > 0 then NombrePorte = NombrePorte + 1 if NombrePorte > 1 then notification = notification.." et de la cuisine du bas ." else notification = notification.." de la cuisine du bas ." end end -- 45 portail if tonumber(fibaro:getValue(45, "value")) > 0 then NombrePorte = NombrePorte + 1 if NombrePorte > 1 then notification = notification.." et du portail ." else notification = notification.." du portail ." end end -- Si il n'y a pas de porte ouverte : if NombrePorte == 0 then notification = "Toutes les porte sont fermer." end -- Si il n'y a qu'un porte ouverte : if NombrePorte == 1 then notification = "Attention a la porteu "..notification.." elle me semble ouverte ." end -- Si on a plusieurs portes ouvertes : if NombrePorte > 1 then notification = "Attention il y a "..NombrePorte.." porte ouverte . Celle "..notification end -- Allumage de la squeezebox local cmnd = "Power 1 " local stringtosend = player .. cmnd .. string.char(10) tcpSocket = Net.FTcpSocket(ipadd, portno) tcpSocket:setReadTimeout(2*1000) bytes, errorCode = tcpSocket:write(stringtosend) -- On règle le volume sonore ici 35 local cmnd = "mixer volume " .. NiveauSo .. " " local stringtosend = player .. cmnd .. string.char(10) tcpSocket = Net.FTcpSocket(ipadd, portno) tcpSocket:setReadTimeout(2*1000) bytes, errorCode = tcpSocket:write(stringtosend) -- On envoie le message local notification = string.gsub((notification)," ", "%%20"); --on remplace les espaces par %20 fibaro:debug(notification) local cmnd = "playlist play http://www.voicerss.org/controls/speech.ashx?hl=fr-fr&src=" .. notification; local stringtosend = player .. cmnd .. string.char(10) tcpSocket = Net.FTcpSocket(ipadd, portno) tcpSocket:setReadTimeout(2*1000) bytes, errorCode = tcpSocket:write(stringtosend) -- OFF de la squeezeBox après 10 secondes fibaro:sleep(10*1000) local cmnd = "power 0 " local stringtosend = player .. cmnd .. string.char(10) tcpSocket = Net.FTcpSocket(ipadd, portno) tcpSocket:setReadTimeout(2*1000) bytes, errorCode = tcpSocket:write(stringtosend) Amusez-vous bien
  24. Bon devant les restrictions de google translate, j'ai cherché une autre solution. J'ai trouvé chez http://www.voicerss.org. En version gratuite on à 350 génération de TTS par jour. Ca devrait me suffire pour le moment. Exemple de lien qui génère un MP3 : http://www.voicerss.org/controls/speech.ashx?hl=fr-fr&f=16khz_8bit_mono&src=Ouverture%20du%20portail On peut choisir le format généré, la langue, l'échantillonnage ... TOP ! Toute la doc ici : http://www.voicerss.org/api/documentation.aspx
  25. Mince ... Il ya de nouvelles restriction chez google ? Ou ce n'est que pour moi J'ai de nouveau un message d'erreur sur mes squeezerons ...
×
×
  • Créer...