Welcome to Domotique-fibaro

 

Inscrivez-vous maintenant pour accéder à toutes nos fonctionnalités. Une fois inscrit et connecté, vous serez en mesure de contribuer à ce site en soumettant votre propre contenu ou en répondant au contenu existant. Vous serez en mesure de personnaliser votre profil, de recevoir des points de réputation comme une récompense pour la soumission de contenu, tout en communiquant avec d'autres membres via votre boîte de réception privée, et bien plus encore! Ce message sera supprimé une fois que vous vous êtes connecté.

 

Register now to gain access to all of our features. Once registered and logged in, you will be able to contribute to this site by submitting your own content or replying to existing content. You'll be able to customize your profile, receive reputation points as a reward for submitting content, while also communicating with other members via your own private inbox, plus much more! This message will be removed once you have signed in.

Rechercher dans la communauté: Affichage des résultats pour les étiquettes 'Tuto Multimédia'.



Plus d’options de recherche

  • Rechercher par étiquettes

    Saisir les étiquettes en les séparant par une virgule.
  • Rechercher par auteur

Type du contenu


Forums

  • Bienvenue
    • Annonces et suggestions
    • Nouveau ? Présentez-vous
    • Le bistrot
    • Mon installation domotique
    • Autres Solutions Domotiques
  • La HC2 et ses périphériques
    • La Home Center pour les nuls
    • Home Center 2 & Lite
    • Modules Fibaro
    • Modules Z-wave
    • Périphériques et matériels autres
    • Plugins
    • Alarme & Vidéo-surveillance
    • Multimédia
    • Chauffage et Energie
    • Actionneurs & Ouvrants (Portail, volets...)
    • Eclairage
    • Applications Smartphones et Tablettes
    • English Section
  • Fibaro's Awards
    • Membre du mois
    • Jeux concours & Cadeaux
  • Les bonnes affaires
    • Sites internet
    • Petites annonces

Calendriers

Aucun résultat à afficher.


60 résultats trouvés

  1. Note : les images ne sont plus disponibles ici, vous pourrez retrouver le tuto complet sur mon site à cette adresse : http://fredomotique.com/informatique/nas-synology-sur-n54l/ Vous cherchez un NAS pour stocker vos données en réseau, vous devez installer plusieurs disques durs dedans ou vous avez besoin d'une solution évolutive. Les NAS Synology, dont la réputation n'est plus à faire, s'avèrent rapidement onéreux, dès lors qu'ils possèdent plusieurs baies de stockage. La solution proposée ici se révèle assez économique. En effet, HP propose un produit très complet, à prix compétitif, le presque célèbre serveur HP N54L , dont la référence complète est "HP ProLiant MicroServer G7 N54L 1P 2GB-U Non-hot Plug SATA 250GB 150W PS Server" 1 - Projet: Le but de ce tutorial est de construire une machine bien plus évoluée qu'un "simple" NAS SYNOLOGY, qui permettra dans un premier temps de créer un "vrai" NAS Synology avec la dernière version logicielle DSM 5-4482, mais ensuite d'installer d'autres systèmes (Windows, LINUX, ...) totalement indépendant et fonctionnant en même temps, et ce, par le biais du logiciel de Virtualisation VMware ESXi 5.5. Ce logiciel sera gratuit dans cette configuration. Il est impératif de rajouter de la RAM, afin que les systèmes puissent cohabiter et surtout fonctionner simultanément. Bien que HP mentionne officiellement que la RAM est limité à 8Go, la carte mère accepte 2x8Go sans problème. Néanmoins, bien que dans les spécifications constructeur, il faille installer de la RAM "PC3-10600E DDR3 Unbuffered (UDIMM) ECC memory" toutes les références ne sont pas fonctionnelles, il faudra se référer au lien suivant pour faire son choix: http://n40l.wikia.com/wiki/Memory Il faudra également rajouter au moins un disque dur de capacité conséquente et adapté à une utilisation "NAS". L'article donné ci-dessous fait le point sur le type de disque à installer: http://www.tomshardware.fr/articles/disques-durs-nas,2-887.html Pour résumé, les Seagate Constellation et les Western Digital Caviar RED seront parfaitement adaptés. Ce tuto est le fruit de très nombreuses recherches et collectes d'informations récupérées sur divers forums français et étrangers, mais aussi d'autres tuto qui ne sont plus forcément à jour, ou sans mise en place de la virtualisation. Il a été établi en suivant scrupuleusement l'installation effectuée, et toutes les étapes ont été volontairement inscrites, afin que toute personne puisse le suivre. Un grand merci à l'ami Lazer pour son aide très précieuse. Temps de mise en oeuvre: entre 2H et 4H 2 - Présentation du serveur: voilà le serveur HP N54L, bien connu des adeptes de la virtualisation et autres utilisateurs de solutions parallèles de stockage réseau SYNOLOGY. En face avant, 4 port USB 2.0 (pas d'USB 3 et c'est dommage), 1 emplacement 5 1/4 pour lecteur optique, 1 bouton ON/OFF, et 1 porte avec serrure. La porte avant laisse découvrir les 4 baies internes et la carte mère bien caler dans le bas du boitier : A l'arrière, on y trouve le connecteur d'alimentation 230v, un petit ventilateur pour l'alimentation interne, un assez gros ventilateur pour refroidir la carte mère et les 4 baies, la prise Ethernet Gigabit, 2 ports USB2.0, une sortie VGA, un port eSATA et 2 port PCI-EXPRESS pour carte au format Low Profile. On pourra quand même rajouter par exemple une carte USB 3.0. Il est possible de conserver cette configuration d'origine, en ne rajoutant qu'une clé USB pour stocker le boot SYNOLOGY. Dans ce cas, le stockage s'en trouvera limité car il faudra se contenter des 250Go livrés en standard. On pourra bien entendu étendre le stockage par l'ajout de disques supplémentaires, tout comme dans un NAS Synology à plusieurs baies. 3 - Spécifications: - Vitesse du processeur de l'horloge: 2.2 GHz - Modèle de processeur: AMD Turion II N54L modèle Neo - Cache L2: 2 Mo - Mémoire interne: 2 Go - Type de mémoire interne: 2R x8 PC3-10600E-9 - Mémoire interne maximale: 8 Go ( en fait, il est possible d'installer 2x8Go) - Nombre de baies (non Hot-Plug) pour disques durs SATA 31/2: 4 - 1 disque dur SATA 250Go fourni -1 emplacement 51/4 pour lecteur optique (non livré en standard) - Type d'alimentation d'énergie: alimentation non redondante non hot-plug 150W multi-sorties Vous trouverez ici les spécifications complètes: http://h18000.www1.hp.com/products/quickspecs/13716_div/13716_div.pdf il est disponible ici pour un prix de 199€ TTC: http://www.fnac.com/mp20220705/HP-ProLiant-MicroServer-Turion-II-Neo-N54L-2-2-GHz-2-Go-250-Go/w-4 4 - Matériel nécessaire: - 1 ordinateur sous windows (le tuto sera à adapter pour d'autres systèmes d'exploitation) avec graveur CD - le lecteur optique externe sur port USB (si boot de ESXi 5.5 sur CD) - 1 clavier USB - 1 tournevis cruciforme - 1 petit tournevis plat 5 - Préparation Hardware: En plus de la configuration d'origine, nous allons rajouter le matériel suivant: - 1 clé USB 8Go pour enregistrer VMware ESXi 5.5 : Kingston DataTraveler Micro 8Go : environ 6,50€ ici : http://www.grosbill.com/4-kingston_datatraveler_micro_8go_usb2_dtmck_8gb_-169883-informatique-cles_usb_3_0 - 2x8Go de RAM : ici de la Kingston KHX1600C10D3B1K2/16G : environ 140€ ici http://www.grosbill.com/4-kingston_hyper_x_blu_16go_2x8go_pc12800_1600_mhz_cl10_-606223-informatique-memoire_ddr3 Attention : L'espace est assez limité entre la carte mère et le bas du chassis des rack de disques dur. Certaines barettes possèdent des dissipateurs assez volumineux, et c'est un paramètre à ne pas négliger dans le choix des barrettes, outre la compatibilité fonctionnelle. Certains ont été obligés de bricoler leurs RAM en ôtant la partie supérieure, et le dissipateur ne fait plus son effet correctement ! - 1 Disque dur 2To pour les datas: WD Caviar RED 2To : environ 90€ ici http://www.grosbill.com/4-western_digital_caviar_red_2_to_sata_6go_s_64_mo_cache_disque_dur_special_pour_nas-169015-informatique-_disque_dur (sur la photo, je l'ai déjà installé dans son rack) - 1 CD vierge, qui pourrait être remplacé par une clé USB, pour enregistrer l'ISO de l'installation de VMware ESXi 5.5 une fois la porte ouverte, il est facile d'extraire le disque dur d'origine présent dans le rack de gauche: La vis située en haut, à l'arrière du serveur, permet de retirer le capot supérieur. Ce n'est pas utile dans le cas présent, mais se serait nécessaire pour installer un lecteur optique ou jusqu'à 2 disques durs supplémentaires. Cela permet quand même d'enlever la porte, ce qui s'avèrera plus pratique pour le démontage: On remarque à l'intérieur de la porte une petite clé et des vis (4 grises et 12 noires). Il y avait 16 vis noires, j'en ai déjà utilisé 4 pour monter le disque 2To dans son rack. Il y a donc de quoi fixer 4 disques durs et 1 lecteur optique (vis grises). Pour extraire la carte mère, on peut voir ci-dessous 2 vis bleues, de part et d'autre à l'avant de la carte mère: Une fois dévissée, la carte mère coulisse vers l'avant, il est alors possible de déconnecter gentiment les nappes en s'aidant éventuellement d'un petit tournevis plat: Voici donc la carte mère avec l'ancienne RAM 2Go, puis les 2 nouvelles (2x8Go) Il n'y a plus qu'à remettre la carte mère dans la glissière l'enfoncer dans le serveur, connecter précautionneusement les nappes et serrer les 2 vis bleues. Ensuite, remettre la porte et le capot supérieur. !!! NE PAS REMETTRE LE DISQUE 250Go DANS LE SERVEUR !!! 6 - Préparation du Bios: - Brancher l'écran VGA, la clé USB et le clavier sur le N54L - Brancher le cable d'alimentation - démarrer le N54L (bouton ON/OFF en face avant) - appuyer sur la touche F10 pour entrer dans le bios - dans la partie BOOT, mettre "BOOT USB" sur "HIGH" et "1st Boot Device" sur "USB" (le nom de votre clé USB doit être affiché) - sauvegarder les modifications et quitter. - éteindre le N54L et débrancher la clé USB 7 - Modification du Bios: - récupérer le dernier BIOS (SP64420) officiel HP à cette adresse: BIOS N54L version 2013.10.01 (A) (15 nov. 2013) Il sera nécessaire de s'enregistrer pour avoir accès au téléchargement. - brancher la clé USB sur le PC - exécuter le SP64420.exe, il va s'installer sur l'ordinateur en c:\SWSetup/SP64420 - suivre les instructions pour installer le BIOS sur la clé USB - récupérer le patch à cette adresse: Patch BIOS 041100113.ROM - remplacer le fichier O41100113.ROM présent sur la clé USB par le fichier patch "O41100113.ROM". - éjecter "proprement" la clé USB et brancher la sur un port USB du serveur N54L 8 - Flashage du BIOS: - mettre la clé USB sur un port USB du N54L - allumer le N54L - le serveur doit démarrer sur la clé, il doit s'afficher: puis: - Après 1 ou 2 secondes, le prompt "c:\>" est affiché, le flashage est terminé. - éteindre le serveur - débrancher la clé USB - allumer le serveur pour vérifier l'affichage de la nouvelle version patchée: - 3 lignes plus bas, vérifier la quantité de RAM installée, donc maintenant: 16384MB Total Memory Detected AMIBIOS©2006 American Megatrends HP System BIOS - 041 (10/01/2013) - appuyer sur la touche F10 pour entrer dans le Bios 9 - Configuration du Bios: - aller dans "Chipset"..."SouthBridge Configuration"..."SB SATA Configuration" - effectuer les réglages suivants: - sauvegarder les modi
  2. Voici un VD qui permet d'appeler facilement les fonctions TTS des 3 actuellement disponibles: KAROTZ SONOS (via le VD de @krikroff ) S.A.R.A.H. Avantages: - sans passer par une Variable Globale - Et avec historisation des 10 derniers messages Voir exemple d'utilisation plus bas pour GEA. Exemples pour S.A.R.A.H. et SONOS: Exemple Gea: local TTS_Sarah = {"VirtualDevice", id2["S_A_R_A_H__SAY_IT"], 1} local TTS_Sonos = {"VirtualDevice", id2["SONOS_SAY_IT"], 1} ensuite: {"Label", id2["SONOS_SAY_IT"], "Message", "Bonjour, enclenchement du chauffage du ré de chaussée"},TTS_Sonos, ou {"Label", id2["S_A_R_A_H_SAY_IT"], "Message", "Bonjour, enclenchement du chauffage du ré de chaussée"},TTS_Sarah, Voici la partie config du bouton et le VD générique est attaché ci-dessous. -- Say It Copyright Sébastien Jauquet 2016 -- V 1.0.0 28/09/2016 ------------------------------------------- -- HOW TO USE THIS VD: -- Rename the name of the label (Say It XXXXXX !), NOT the ID !!! -- Rename the name of the VD (XXXXX Say It !) -- Fill Ip Address and port in the VD settings -- Port: usualy 8080 for SARAH and 80 for KAROTZ -- Un-comment one of the three line below depending of the device you want to control local TTS_Device = "sarah" --local TTS_Device = "karotz" --local TTS_Device = "sonos" local id2 = { SONOS_REMOTE = 2124 } -- enter Krikroff sonos VD id ------- NO USER MOD BELOW ------------------------------- local selfId = fibaro:getSelfId() local SARAH_KAROTZ_Ip = fibaro:get(selfId, "IPAddress") local port = fibaro:get(selfId, "TCPPort") function urlencode(s) if (s) then .... blablabla icônes: XXXXXX_Say_It_!.vfib
  3. Tuto Multimédia

    Remplacer le ventilateur d'origine bruyant d'un onduleur Eaton 5P par un Noctua silencieux Replace Eaton UPS noisy fan by silent Noctua Il faut un tournevis Torx (taille T10 de mémoire) pour retirer les vis, ainsi qu'un Cruciforme. Sur la façade arrière, il faut enlever les vis entourées en rouge sur la photo ci-dessous : Le petit ventilateur bruyant est bien visible (entouré en bleu). Il faudra enlever les 2 vis qui le maintiennent. A l'avant, il faut retirer le capot de protection plastique, déconnecter les batteries et les sortir, et dévisser les 3 vis dont seule 1 est visible sur la photo : Voici le ventilateur d'origine : Il s'agit d'un SUNON MagLev MB40201V2-000C-G99 : Tension : 12 V DC Vitesse de rotation : 6200 RPM Débit d'air : 13,2 m³/h = 7.7 CFM Niveau sonore : 21 dBA Dimensions : 40mm x 40mm x 20mm On va le remplacer par un Noctua NF-A4x10 FLX trouvable sur Amazon.fr : Tension : 12 V DC Vitesse de rotation : 4500 RPM Débit d'air : 8,2 m³/h = 4.8 CFM Niveau sonore : 17,9 dBA Dimensions : 40mm x 40mm x 10mm Le package du Noctua est complet : Cote à cote : L'inconvénient est que le connecteur utilisé par le ventilateur d'origine est propriétaire, et n'est pas standard dans le monde du ventilateur pour PC : Il s'agit d'un connecteur JST de type XH. Il faut donc acheter un lot de 10 connecteurs JST XH 3 Poles sur Amazon.fr : Malheureusement, comme on le voit sur les photos précédentes, le brochage est différent, puisque les fils noir et jaune sont inversés. Afin de réaliser un câblage propre, on éjecte les 2 connecteurs jaunes et noirs en appuyant avec une pointe fine, et en tirant délicatement le fil : Pour info, détail du connecteur : Noctua a eu la bonne idée de fournir un connecteur universel permettant de connecter un connecteur propriétaire à l'autre bout. Malheureusement, ce connecteur n'a que 2 fils, et il manque le 3ème fil (jaune) dont nous avons absolument besoin pour la mesure de la vitesse de rotation (sans cela, l'onduleur se met en erreur car il considère le ventilateur comme étant HS) : Donc on n'utilisera pas cet adaptateur, et à la place, on coupe la rallonge fournie par Noctua en plein milieu, qui elle dispose bien des 3 fils, et on y connecte notre connecteur JST XH à l'aide des Scotchlocks fournis : On connecte maintenant le nouveau câble sur la carte mère à la place de l'original : Et on fixe le ventilateur Noctua à l'aide des amortisseurs fournis, qui seront plus silencieux que de simples vis : Et voilà c'est terminé, l'onduleur fonctionne sans souci. Reste à voir sur la durée si il ne chauffe pas trop. L'onduleur n'est pas totalement silencieux, mais il devient ainsi très discret, rien à voir avec la turbine initiale.
  4. SONOS Remote V1.0.1 RC pour Fibaro HC2 Télécommande avec retour d’informations pour diffuseur SONOS, prise en charge du TTS (Text-to-Speech) et lecture de stream depuis vos scènes et périphériques virtuels. - Les fonctions : Play, Pause, Stop, Prev, Next, Seek, Volume, Mute, Loudness, Accès direct aux 5 premières radios de “Mes radiosâ€. - Les informations : Zone, Etat du diffuseur, Position, Titre ou Nom de la radio, Artiste, Album, Volume, Loudness, dernière commande émise. Installation : A partir de la version 1.0.0 beta: 1. Télécharger puis importer le vd. 2. Renseigner l’adresse IP du diffuseur SONOS (le coordinateur) dans le vd ainsi que le port 1400 3. Pour utiliser la fonction TTS VoiceRSS il faut une API Key, pour l'enregistrement (gratuit) c'est ici http://www.voicerss.org/registration.aspx 4. Renseigner la variable voiceRssApiKey avec la clé, choisir un niveau de qualité sonore pour la generation avec voiceRssSoundQuality: low, medium, high UserParams = { -- Voice RSS API Key (Free Registration: http://www.voicerss.org/registration.aspx) voiceRssApiKey = "000000000000000000000000000", -- Sound quality: low, medium, high voiceRssSoundQuality = "medium" } 5. Enregistrer les modifications, c'est bon... Utilisation : TTS : Pour utiliser le TTS depuis une scène ou un périphérique virtuel il faut juste exécuter le code LUA suivant avec les bons paramètres. -- 408 is the Virtual Device ID -- 28 is the Process button ID local sid, bid = 408, 28 -- Create TTS params object local params = { -- TTS Message message = "La température extérieure actuelle est de 21,2°C", duration = 'auto', -- Duration: "auto", xx seconds language = "fr-FR", -- Language: fr-FR volume = 10 -- Volume } local _f = fibaro local _x ={root="x_sonos_object",load=function(b)local c=_f:getGlobalValue(b.root)if string.len(c)>0 then local d=json.decode(c)if d and type(d)=="table"then return d else _f:debug("Unable to process data, check variable")end else _f:debug("No data found!")end end,set=function(b,e,d)local f=b:load()if f[e]then for g,h in pairs(d)do f[e][g]=h end else f[e]=d end;_f:setGlobal(b.root,json.encode(f))end,get=function(b,e)local f=b:load()if f and type(f)=="table"then for g,h in pairs(f)do if tostring(g)==tostring(e or"")then return h end end end;return nil end} -- Make a request to the remote to process params object instantly _x:set(tostring(sid), { tts = params }) _f:call(sid, "pressButton", bid) Les options de l'objet params: - message: le message tts - language: la source du flux (http ou local, local est attribué par défaut) - duration: durée du tts. (en secondes ou "auto") - volume: le volume utilisé pour la lecture du tts si différent du volume en cours d'utilisation Le programme en cours de diffusion au moment de la demande reprendra après la diffusion complète du TTS. Reprise de la radio, de la piste à l’endroit précis avant arrêt, reprise de l’état du diffuseur : Volume, Mute, Play, Stop. STREAM: Pour utiliser la lecture de Stream depuis une scène ou un périphérique virtuel il faut exécuter le code LUA suivant avec les bons paramètres. -- 408 is the Virtual Device ID -- 28 is the Process button ID local sid, bid = 408, 28 -- Create STREAM params object local params = { -- stream: the file / uri stream = "//s3.amazonaws.com/smartapp-media/sonos/bell1.mp3", -- source: "local" or "http", "local" is setted by default source = "http", -- duration: play duration in seconds (option) or "auto" duration = 8, -- volume: the volume for playing the stream volume = 10 } local _f = fibaro local _x ={root="x_sonos_object",load=function(b)local c=_f:getGlobalValue(b.root)if string.len(c)>0 then local d=json.decode(c)if d and type(d)=="table"then return d else _f:debug("Unable to process data, check variable")end else _f:debug("No data found!")end end,set=function(b,e,d)local f=b:load()if f[e]then for g,h in pairs(d)do f[e][g]=h end else f[e]=d end;_f:setGlobal(b.root,json.encode(f))end,get=function(b,e)local f=b:load()if f and type(f)=="table"then for g,h in pairs(f)do if tostring(g)==tostring(e or"")then return h end end end;return nil end} -- Make a request to the remote to process params object instantly _x:set(tostring(sid), { stream = params }) _f:call(sid, "pressButton", bid) Les options de l'objet params: - stream: le chemin du flux - source: la source du flux (http ou local, local est attribué par défaut) - duration: durée du stream. (en secondes ou "auto") - volume: le volume utilisé pour la lecture du flux si différent du volume en cours d'utilisation Quelques exemples: Annoncer la température dans une scène : --[[ %% properties %% globals --]] -- 408 is the Virtual Device ID -- 28 is the Process button ID local sid, bid = 811, 28 -- Create TTS params object local ValeurTemp = fibaro:getValue(61, "value") local degre = string.gsub(ValeurTemp, '[,]' , ' degret ') local degre = string.gsub(degre, '[.]' , ' degret ') local degre = string.gsub(degre, '[-]' , ' moins ') local notification = "Il fait " .. degre .. " dans le salon " fibaro:debug(notification) local params = { -- TTS Message message = notification, duration = 'auto', -- Duration: "auto", xx seconds language = "fr-FR", -- Language: fr-FR volume = 23 -- Volume } local _f = fibaro local _x ={root="x_sonos_object",load=function(b)local c=_f:getGlobalValue(b.root)if string.len(c)>0 then local d=json.decode(c)if d and type(d)=="table"then return d else _f:debug("Unable to process data, check variable")end else _f:debug("No data found!")end end,set=function(b,e,d)local f=b:load()if f[e]then for g,h in pairs(d)do f[e][g]=h end else f[e]=d end;_f:setGlobal(b.root,json.encode(f))end,get=function(b,e)local f=b:load()if f and type(f)=="table"then for g,h in pairs(f)do if tostring(g)==tostring(e or"")then return h end end end;return nil end} -- Make a request to the remote to process params object instantly _x:set(tostring(sid), { tts = params }) _f:call(sid, "pressButton", bid) Annoncer la valeur d'une variable : --[[ %% properties %% globals --]] local sid, bid = 813, 28 -- Create TTS params object local couleur = fibaro:getGlobalValue("le nom de ta variable") local notification = ("La couleur de demain sera "..couleur.." Bonne journée") fibaro:debug(notification) local params = { -- TTS Message message = notification, duration = 'auto', -- Duration: "auto", xx seconds language = "fr-FR", -- Language: fr-FR volume = 23 -- Volume } local _f = fibaro local _x ={root="x_sonos_object",load=function(b)local c=_f:getGlobalValue(b.root)if string.len(c)>0 then local d=json.decode(c)if d and type(d)=="table"then return d else _f:debug("Unable to process data, check variable")end else _f:debug("No data found!")end end,set=function(b,e,d)local f=b:load()if f[e]then for g,h in pairs(d)do f[e][g]=h end else f[e]=d end;_f:setGlobal(b.root,json.encode(f))end,get=function(b,e)local f=b:load()if f and type(f)=="table"then for g,h in pairs(f)do if tostring(g)==tostring(e or"")then return h end end end;return nil end} -- Make a request to the remote to process params object instantly _x:set(tostring(sid), { tts = params }) _f:call(sid, "pressButton", bid) Annoncer la date du jour, la température extérieure et la météo : -- 239 is the Virtual Device ID -- 28 is the Process button ID local sid, bid = 239, 28 local cond = fibaro:getValue(3, "WeatherConditionConverted"); local tempext = fibaro:getValue(33, "value"); -- température extérieure fibaro:debug ("Température extérieure : "..tempext) local degre = string.gsub(tempext, '[,]' , ' degré ') local degre = string.gsub(degre, '[.]' , ' degré ') local degre = string.gsub(degre, '[-]' , ' moins ') local currentDate = os.date("*t") local jourL = {"Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"} local jour = jourL[currentDate.wday] fibaro:debug ("Jour : "..jour) local moisL = {"janvier", "février", "mars", "avril", "mai", "juin", "juillet", "aout", "septembre", "octobre", "novembre", "décembre"} local mois = moisL[currentDate.month] fibaro:debug ("Mois : "..mois) local condfr =""; if( cond == "clear" ) then condfr = "clair"; end if( cond == "cloudy" ) then condfr = "nuageux"; end if( cond == "rain" ) then condfr = "pluvieux"; end if( cond == "snow" ) then condfr = "neigeux"; end if( cond == "storm" ) then condfr = "tempete"; end if( cond == "fog" ) then condfr = "brouillard"; end fibaro:debug ("Conditions météorologiques : "..condfr) fibaro:debug ("Création du TTS") -- Create TTS params object local params = { -- TTS Message message = "Bonjour a vous. Nous sommes le "..jour .." "..currentDate.day .." "..mois .. ". Il est ".. currentDate.hour .." heure et ".. currentDate.min .." minutes. ".. "Le thermomètre extérieur est a "..degre .. ", et le temps est "..condfr ..". ", duration = 'auto', -- Duration: "auto", xx seconds language = "fr-FR", -- Language: fr-FR volume = 40 -- Volume } local _f = fibaro local _x ={root="x_sonos_object",load=function(b)local c=_f:getGlobalValue(b.root)if string.len(c)>0 then local d=json.decode(c)if d and type(d)=="table"then return d else _f:debug("Unable to process data, check variable")end else _f:debug("No data found!")end end,set=function(b,e,d)local f=b:load()if f[e]then for g,h in pairs(d)do f[e][g]=h end else f[e]=d end;_f:setGlobal(b.root,json.encode(f))end,get=function(b,e)local f=b:load()if f and type(f)=="table"then for g,h in pairs(f)do if tostring(g)==tostring(e or"")then return h end end end;return nil end} -- Make a request to the remote to process params object instantly _x:set(tostring(sid), { tts = params }) _f:call(sid, "pressButton", bid) Notes de versions: Version 1.0.1 Rc - Correction: régression introduite avec la V4.080 impactant la création automatique de la variable globale Version 1.0.0 beta ATTENTION: Le passage d'une version antérieure à la v1.0.0 pour la v1.0.0 ou supérieure nécessite la réécriture des commandes TTS pour fonctionner avec le nouveau module. L'ancien module reste cependant fonctionnel et peut cohabiter logiquement avec la nouvelle version. En cas de passage définitif en V1.0.0 ou supérieure toutes les variables globales déclarées précédemment en V0.0.7 ou V0.0.8 peuvent être supprimées. - Amélioration : Configuration automatique, pas de déclaration de variables globales - Amélioration : Support natif de multiples instances du périphérique virtuel - Amélioration : Faible latence lors du déclenchement des commandes - Amélioration : Révision et amélioration du code / Refactoring - Ajout: Le TTS utilise le service Voice RSS (avec une API Key (enregistrement gratuit)) ou ResponsiveVoice API. Options: durée, volume, auto resume - Ajout: Lancement de Stream (http / local) depuis scéne / vd. Options: durée, volume, auto resume Version 0.0.8 - Amélioration : La lecture d'un TTS en mode Auto Stop est maintenant stable - Amélioration : La lecture d'un TTS avec une durée définie est maintenant stable - L'image principale du vd réapparaît maintenant automatiquement après l'appui sur un bouton (Labomatik & JM13, merci ) - Correction d'un bug avec l'analyse xml de BrowseDirectChildren - Attention: Pour utiliser les raccourcis "boutons radios favorites" vous devez ajouter au moins deux radios depuis l'application SONOS "Desktop/IOS etc..." Version 0.0.7 - Amélioration notable de la stabilité, le vd est plus réactif. - Patch line 892: attempt to index local 'value' (a function value) - Patch line 1256: attempt to concatenate a nil value - Préparation au support de nouvelles fonctionnalités Fichier Zip : SONOS_Remote_v1.0.1.vfib SONOS_Remote_v1.0.0.vfib
  5. Bonjour à tous, UPDATE 27-11-16 : New Version HC2.addon-1.3.3.zip Amélioration du Menu UPDATE 22-11-16 : New Version HC2.addon-1.3.2.zip Bug Fix, Camera API, Tunning Speed, Optimize Menu UPDATE 17-11-16 : New Version HC2.addon-1.3.0.zip Obligation de mettre la scène Fibaro en déclenchement sur Variable : --[[ %% properties %% globals KODI_Cuisine --]] Petit post pour vous faire partager mon addon Kodi qui « s’interface » avec notre petit boite d’aluminium. Celui-ci va vous permettre par exemple: de fermer les volets à l'allumage de Kodi, allumer le vidéos projecteur éteindre les lumières à la lecture d'une vidéos... Quelqu'un sonne ! On met la vidéo en pause, on affiche la caméra de la porte d'entrée... L'addon à été fait de façon à ce qu'il donne un retour d'information permettant de guider l'utilisateur sur les différentes étape d’installation et de configuration de l'addon (Gestion d'erreur). Assez parler passons au chose sérieuse. Caractéristiques de l'Addon : - Permet de déclencher une « action » en fonction de l’état de Kodi Les différents événements : On Off Accès aux différents Menu (Home, Météo, Vidéo, Musique, Image, Programme, Paramètres). Evènement du Lecteur (Play, Pause, Reprise, Stop, Fin). Afficher le titre de la musique ou la vidéo joué dans le panneau Variables de la HC2 - Affichage sous forme de pop-up d’un flux d’image (le flux d’une caméra) Le temps d'affichage de la popup ainsi que le temps de rafraîchissement entre chaque image est configurable dans l'addon, mais également lors du déclenchement par API. Exemple : - Créer des variables en fonction des caméras dans la HC2. - Récupère les cameras présentent dans la HC2. - Afficher un Menu permettant d’interagir avec les modules de la box Installation & Fonctionnement : - Installer le fichier zippé joint au post dans la section ajout d’extension de Kodi. - Configurer l’addon avec les paramètres de votre HC2. Adresse IP ou Nom de la HC2 Port (par défaut 80) Nom de la Variable Nom d’Utilisateur HC2 Mot de passe HC2 Temps d'affichage de la caméra (délai pendant lequel la caméra reste affiché, défaut : 14 secondes) Fréquence de rafraîchissement (délai entre chaque récupération d'image de la caméra, défaut : 500 millisecondes) Temps d'attente entre chaque mise à jour de la variable (défaut: 10 millisecondes) Le nom de la variable permet d’identifier le MediaCenter dans la HC2. Si vous en avez plusieurs mettre un nom différents pour chaque MediaCenter, exemple : KODI_Salon et KODI_Chambre. Plus le délai d'attente après le déclenchement de chaque variable est faible plus c'est réactif, sauf qu'il arrive parfois que la variable soit mise à jour très rapidement et la scéne de la HC2 n'a pas le temps d'afficher les différentes étapes. Ex : Vous lancer une vidéos que vous ne deviez pas lancer (vous appuyer donc sur stop la vidéos à peine démarrer). Si le délai est de Zéro alors la scène affiche : Vidéo_Started => Menu Vidéos => Menu Vidéos alors qu'elle devrait afficher : Vidéo_Started => Videos_Stopped => Menu Vidéos le délai permet de palier à ce problème. Si vous rencontrer ce type de phénomène alors augmenter les délais de déclenchement entre chaque Variable. Ensuite sélectionner les événements que vous désirez activer (Accès au Menu Home, Play Video, Pause Audio...). S’ils ne sont pas activés ils ne remonteront pas dans la HC2. Ex : Si on laisse « Accès au Menu Home » à "No" la Home Center 2 ne sera pas capable de déclencher une action lorsque vous serez sur la page d’accueil de votre média center préférer . - Redémarrer Kodi une fois l’addon configuré. L’addon va créer les variables dans votre HC2. (variable d’état, les id des caméras, variable de titre). Paramètrage HC2 : Passons maintenant au interaction avec la HC2, pour cela il va falloir créer une scène portant le même non que la variable dans l'Addon (KODI_Salon) dans celle-ci y mettre le code suivant en remplaçant KODI_Salon par votre variable : Ensuite dans chaque section "--action" mettre les commandes que vous souhaitez exécuter. Ex: Fermer les volets à l'allumage de KODI, descendre la toile de projection, allumer le vidéos projecteur éteindre les lumières à la lecture d'une vidéos... Un exemple pour mettre la luminosité à 30% lors de la pause d'une vidéo : Camera Le temps d'affichage ainsi que le rafraîchissement entre chaque image est désormais configurable depuis la page de l'addons ainsi que via l'API Kodi. Si vous avez des caméras paramètres dans votre HC2 celle-ci seront reporter dans l’addon et vous pourrez visualiser celle-ci dans Kodi en exécutant la commande suivante dans un navigateur : Remplacer les écriture en rouge par vos paramètres Kodi et le chiffre en bleu par l'id de la caméra à afficher (l'id de la caméra se trouve dans le panneau variable de la HC2). Concernant les paramètres uptime et refresh ils ne sont pas obligatoire. Lors d'un déclenchement il prendrons les valeurs par défaut configuré dans l'Addon si vous les forcer alors cela prendra ces valeurs. Par exemple sur la ligne ci-dessus elle est configuré pour afficher la caméra pendant 30 secondes (uptime 30s) et rafraîchir chaque image toutes les secondes (refresh 1000 ms => 1s) (Il faut bien sur auparavant avoir configurer Kodi pour pouvoir être contrôler par HTTP pour ce faire je vous renvoi vers cette page de configuration :http://kodi.wiki/view/Settings/Services/Control). Vous pouvez également exécuter ces commandes par le biais d'un virtual device en Lua avec le code suivant J'ai intégrer le virtual device au post (XBMC_Salon.zip). Dans celui-ci j'ai implémente la fonction Wake On Lan de Krikroff (Merci à lui ) pour permettre de démarrer mon média center, il y a une fonction permettant d'éteindre Kodi et 3 boutons d'actionnement de l'affichage des caméras sur Kodi. On peut alors imaginer que quand on rentre dans le menu météo (qui me sert très peu) on affiche les caméras : ou "pressButton", "3" correspond au bouton du virtual device créé précédemment actionnant la caméra numéro 1. NEW : Concernant les nouvelles fonctionnalités (en beta actuellement dans le version > 1.3.0) Le Menu permet de piloter les lumières, volets et "actionneurs" visible dans la HC2 et d'actionner ceux-ci (turnOn, turnOff). Le Menu commence par afficher vos Sections puis Vos pièces dans cette Sections le type de module pour enfin afficher les modules de cette pièce Sections => Rooms => Type => Device Activation du Menu : Le menu peu s'activer en appuyant sur une touche, pour ce faire il faut ajouter un fichier "keyboard.xml" dans le dossier utilisateur (userdata) de Kodi (Emplacement sur Windows : C:\Users\<USER>\AppData\Roaming\Kodi\userdata\keymaps\keyboard.xml voir : http://kodi.wiki/view/Keymaps) Voici le contenu de mon fichier keyboard.xml (redémarrer Kodi une fois celui-ci mis ne place) : <keymap> <global> <keyboard> <y mod="ctrl">SetProperty(FibaroMenu,true,10000)</y> </keyboard> <remote> <red>SetProperty(FibaroMenu,true,10000)</red> </remote> </global> </keymap> Ici un <ctrl> + y permet d'afficher le menu ou encore l'appuie de la touche rouge sur votre télécommande de votre MédiaCenter. Il suffit ensuite de ce balader dans la Section souhaité => La pièce => le type de module (Lumière, Volet, Actionneur) => puis actionner le module voulu. Vous pouvez désormais revenir dans les sections précédente du menu avec la flèche gauche et la flèche de droite pour accéder à la section suivante. (Version > 1.0.6 =< 1.0.9 : Compatible XBMC Gotham v13) HC2.addon-1.0.9.zip (Version > 1.0.10 : Compatible Kodi avec version de firmware < V4) HC2.addon-1.0.10.zip (Version > 1.1.0-beta : Compatible Kodi avec la V4 Fibaro) HC2.addon-1.3.2.zip Changelog : V1.3.3: - Amélioration du Menu : Possibilité de quitté celui-ci avec le retour arrière, déplacement et actionnement via les flèches (Gauche, Droite), Visualisation de l'état des modules. V1.3.2: - Correction du Menu: Ajout des Notifications sur actions, Spécification de la pièce lors de l'action du module, gestion des erreurs, déplacement danq le dans le menu. V1.3.1: - Correction du Menu pour prendre en compte les caractères accentués - Possibilité de piloté la camera depuis l'API en y ajoutant le délai d'affichage et de rafraîchissement - Correction sur la remontée du titre et genre dans la HC2 - Configuration entre le temps interrogation entre chaque appel pour changement de variable - Récupération Uniquement des modules visible et Activé dans le HC2 V1.3.0: - Suppression du déclenchement de Scène via API pour favoriser le déclenchement de variable et ainsi réduire les appels àla HC2 (Merci Lazer) - Beta : Ajout d'un menu permettant de controler les modules de type Lumière V1.2.0: - Optimisation du code et réduction des appels fait àla HC2 qui devrait corriger des problèmes de TimeOut V1.1.3-beta: - Correction : Erreur quand l'utilisateur crée une caméra dans l'addon V1.1.2-beta : - Correction de l'affichage des TAG - Ajout de trace dans le Debug V1.1.1-beta : - Tous les types de camera sont importées : défini par Fibaro (Plugin) ou par l'utilisateur - Ajout du Tag Genre - Correction de bug n'affichant pas le titre dans la balise TAG UPDATE 22- 11-16 : HC2.addon-1.3.2.zip Bug Fix, Camera API, Tunning Speed, Optimize Menu UPDATE 27- 11-16 : HC2.addon-1.3.3.zip New Version : Amélioration du Menu N'hésitez pas me faire un retour difficulté rencontré, m'indiquez les bugs ou améliorations, fonctionnalités à ajouter ! XBMC_Salon.zip HC2.addon-1.3.3.zip HC2.addon-1.3.2.zip HC2.addon-1.2.0.zip HC2.addon-1.3.1.zip
  6. OPENKAROTZ MV - Version 1.20 But : Ce module virtuel à pour but d'offrir les fonctions principales associées à votre lapin libéré par le biais d'OpenKarotz. Ce module virtuel permet de Faire parler le lapin (TTS) Lui demander de prendre un photo (stockée sur le lapin) Faire bouger les oreilles (gauche, droite, random et reset) Choisir la couleurs de la led Choisir la vitesse de clignotement Appeler l'application Mood Appeler l'application Funny Clock Jouer,stopper le mode Squeezbox Le mettre en veille (sleep) - (pas sur la photo) Le réveiller (WakeUp) - (pas sur la photo) Installation : - Importer le module virtuel ci-joint : OpenKarotz.vib Paramétrage : Renseigner l'adresse IP et le Port de votre Karotz dans les champs prévus à cet effet. Faire parler le lapin : Il faut créer un variable "Karotz" depuis le panneau des variables. Une fois créée vous pouvez modifier sa valeur fibaro:setGlobal("Karotz", "Ma phrase a lui faire dire") Appuyer sur le bouton TTS Exemple en LUA local module_id = 100 fibaro:setGlobal("Karotz", "Ceci est la phrase à dire") fibaro:call(module_id, "pressButton", "1") Visuel (v1.00) : Historique : version 1.10 Permet de bouger l'oreille gauche ou droite Ajout des bouton Squeezbox Play et Squeezbox stop version 1.15 Correction du bug permettant de changer la couleur de la led version 1.20 Ajout de libellés Possibilité d'enregistrer ou annuler le changement de couleur de la led Astuce : Pour utiliser la caméra de votre Karotz et la HC en mode image par image, il vous suffit de rentrer les paramètres suivants : Choisir une caméro "Autre" Entrer l'adresse IP de votre Karotz URL JPG : /cgi-bin/snapshot_view?silent=1 URL MPEG : /cgi-bin/snapshot_view?silent=1 Cochez JPG (à la fin) Refresh time 5 secondes OpenKarotz.vfib
  7. Voici un autre script publié sur le forum Fibaro http://forum.fibaro.com/viewtopic.php?p=16320 pour démarrer un ordinateur complètement éteint à partir du réseau: "wake on lan". La seule chose à faire ici est de remplacer "00:00:00:00:00:00" par votre adresse mac. Utilisez ce code dans le bouton d'un périphérique virtuel. Je l'utilise pour démarrer mon micro serveur HP. --[[ %% properties %% globals --]] -- Wake On Lan v 1.0.0 [02-2013] -- Copyright © 2013 Jean-christophe Vermandé -- convert MAC adress, every 2 Chars (7-bit ASCII), to one Byte Char (8-bits) function convertMacAddress(address) local s = string.gsub(address, ":", ""); local x = ""; -- will contain converted MAC for i=1, 12, 2 do x = x .. string.char(tonumber(string.sub(s, i, i+1), 16)); end return x; end fibaro:log("Start process"); local _selfId = fibaro:getSelfId(); -- MAC adress local _macAddress = convertMacAddress("00:00:00:00:00:00"); -- Create Magic Packet 6 x FF local _magicPacket = string.char(0xff, 0xff, 0xff, 0xff, 0xff, 0xff); -- Broadcast Address local _broadcastAddress = "255.255.255.255"; -- Default port used local _wakeOnLanPort = 9; fibaro:sleep(750); for i = 1, 16 do _magicPacket = _magicPacket .. _macAddress; end fibaro:log("Magic packet successfully created"); fibaro:sleep(1000); socket = Net.FUdpSocket(); socket:setBroadcast(true); local bytes, errorCode = socket:write(_magicPacket, _broadcastAddress, _wakeOnLanPort); --check for error if errorCode == 0 then fibaro:log("Successfully sent"); else fibaro:log("Transfer failed"); end -- clean up memory socket = nil; fibaro:sleep(1000); fibaro:log("Please wait for the server startup.");
  8. Un petit tuto et un petit module pour cet Ampli Yamaha, qui est un peu différent de ce que j'ai déjà vu ici. Soyez indulgents, c'est mon premier "vrai" tuto... Ce module fonctionne aussi sur les Ampli Rx-V677 en V1.1. Tout d'abord, merci a Krikroff, Tomzebest et à lolomail et i-magin pour leur travail en amont qui m'a grandement facilité le mien. Pour commencer, il vous faut rentrer une adresse IP fixe dans l'ampli a l'aide de la télécommande (sur le téléviseur). Ensuite, dans un navigateur web, il faut entrer dans les paramètres de l'ampli afin de modifier un petit paramètre bien utile pour la suite. Pour ouvrir la page de l'ampli, il suffit de taper l'adresse fraîchement entrée dans la barre d'adresse. Page d'acceuil de l'ampli, il faut cliquer sur settings : pour arriver a cette page et aller dans l'onglet network settings et passer l'option à ON: Maintenant, on peut revenir sur notre Home Center. V1.0 : Implémentation V1.1 : Récupération de l'IPadress et du TCPPort du module pour faciliter l'intégration V1.2 : Implémentation de la zone 2 RX-V675 (V1.1).vfib RX-V675(V1.2).vfib Visuel du module 1.1 : Visuel du module 1.2 : Et des icônes que j'utilise : <- Merci Couillerot <- Merci moi <- Merci moi aussi ^^ Je bosse encore actuellement sur les visuels pour switcher entre les icônes ET sur les icônes elles-mêmes Pour faire fonctionner le module, vous devez renseigner l'adresse ip et le port de l'ampli dans le module puis, renseigner le numéro de module en début de main loop (ligne 4). Évolutions a venir (vous ou moi c'est suivant hein ^^) pour la V1.3: Intégration l'ensemble des ambiances sonores, des flèches de navigation...
  9. EDIT : développé pour DSM 5.x. Ne fonctionne PAS avec DSM 6.x Voici un module virtuel qui va permettre de contrôler les paramètres principaux de votre Synology. Ce module virtuel regroupe plusieurs codes repris sur le forum : Ping d'un device par Krikroff : http://www.domotique-fibaro.fr/index.php/topic/109-ping-dun-équipement-réseau/ WOL par Krikroff : http://www.domotique-fibaro.fr/index.php/topic/107-wake-on-lan-wol-démarrer-son-ordinateur-à -distance/ Reboot & shutdown par fdp2 et Lazer : http://www.domotique-fibaro.fr/index.php/topic/3425-arreter-ou-rebooter-votre-synology-avec-la-hc2/ Merci à eux ainsi qu'à mprinfo pour l'idée originale et à Did pour les icônes Fonctionnalités Vérifie toutes les 10 seconde (paramétrable) si le Syno est up ou down (ping) Possibilité de commander un reboot ou un arrêt (shutdown) du Synology. Ces deux actions sont protégées pas un double click à faire dans les 2 secondes (merci encore à Steven pour ce bout de code) Possibilité de faire un Wake On Lan (il faut fournir la MAC adresse du Synology) Une notification est envoyée aux smarphones définis dans la table "pushID". La variable "Syno_Status" (créée automatiquement) est mise à jour avec l'information du Label Status. Ainsi vous pouvez réutiliser cette information dans GEA, ou d'autres scènes ou VD. Il est possible également de surveiller des Synology ne se trouvant pas dans le même réseau que la HC2 Installation Le fichier .zip joint contient le VD et les icônes. Importer le VD Remplir le champ "IP Adresse :" avec l'IP du Syno (ou sont DNS externe) Remplir le champ "TCP Port :" avec le port du Syno (par défaut 5000) Charger toutes les icônes dans la HC2. Assigner l'icône blanche (Synology.png) comme icône par défaut du VD Assigner les icônes reboot, shutdown et WOL aux boutons reboot, shutdown et Wake On Lan respectivement Table "pushID" (dans la main loop et tous les boutons) : laisser 0 pour ne pas recevoir de notification, ou mettre l'ID du ou des devices devant recevoir un message push (trouvez leur ID à l'aide du toolkit de Krikroff) Dans les boutons "reboot" et "shutdown", remplir les champs login et password avec les crédential d'un utilisateur avec les droits admin sur le Synology. Dans le bouton Wake On Lan, remplir le champ "MacAdresse" avec la MacAdresse du Synology. Dans le mainloop renseigner également les id des icônes Synology.On et Synology.Off dans les champs "okIcon" et "nokIcon" (pour trouver ces id : http://www.domotique-fibaro.fr/index.php/topic/3880-r%C3%A9cup%C3%A9rer-lid-dune-ic%C3%B4ne/) Evolutions envisagées Je pense déjà aux évolutions à apporter à ce VD. Pour cela j'ai besoin : De vos idées De votre aide pour exploiter l'API du Synology (http://www.nas-forum.com/forum/topic/46256-script-web-api-synology/) (je ne suis PAS dévelopeur) Idées déjà à l'étude : Récupération automatique de la MacAdresse sur base de l'IP Température du Syno La v2.41 permet de paramétrer le vitesse du double click (spécial mprinfo ) Les icônes sont toujours dans le fichier zip original. Synology_Monitoring_v2.41.vfib Synology_Monitoring_v2.4.zip
  10. Tuto Multimédia

    Salut a tous, Voila, il y a quelques semaines je posais la question sur ce forum pour savoir si il était possible de domotiser son "Roomba". Et oui c'est possible ! Je vais donc vous faire profiter de mon installation. Peut être que cela servira a d'autres membres/Visiteurs de ce forum. Les différentes étapes : 1/ Commander la carte Roomba Wifi : http://www.roowifi.com/products-page/ 2/ Attendre ensuite que le gentil facteur la depose dans votre boite aux lettres. (pour info ça vient d' Espagne en courrier recommandé). 3/ Voila ensuite la bête : 4/ Enlever le "capot" de son Roomba pour accéder au port série. 5/ Brancher la carte wifi 6/ Ensuite il vous faudra connecter votre roomba a votre box grace au guide d' utilisateur (en anglais) mais très bien fait : Guide utilisateur RooWifi 7/ Une fois votre Roomba associé a votre Box et une IP (de preference fixe) lui étant attribué, on va pouvoir créer notre module Virtuel : Le Roomba dispose d' au moins 3 boutons principaux (CLEAN, SPOT et DOCK). On va donc créer un bouton avec .... 4 Boutons Et oui il est utile de rajouter un bouton "Reveil". 8/ Voici le code derrière chaque bouton : REVEIL : --[[ %% properties %% globals --]] fibaro:log("Réveil"); fibaro:call(24, "setProperty", "ui.status.value", "Roomba Reveillé"); HC2 = Net.FHttp("192.168.1.11", 80) HC2:setBasicAuthentication("admin", "roombawifi"); response = HC2:GET("/rwr.cgi?exec=1") CLEAN : --[[ %% properties %% globals --]] fibaro:log("Roomba au travail"); fibaro:call(24, "setProperty", "ui.status.value", "Roomba Activé"); HC2 = Net.FHttp("192.168.1.11", 80) HC2:setBasicAuthentication("admin", "roombawifi"); response = HC2:GET("/rwr.cgi?exec=1") fibaro:sleep(3*1000) response = HC2:GET("/rwr.cgi?exec=1") fibaro:sleep(3*1000) response = HC2:GET("/roomba.cgi?button=CLEAN") SPOT : --[[ %% properties %% globals --]] fibaro:log("Roomba Spot"); fibaro:call(24, "setProperty", "ui.status.value", "Roomba Spot"); HC2 = Net.FHttp("192.168.1.11",80) HC2:setBasicAuthentication("admin", "roombawifi"); response = HC2:GET("/rwr.cgi?exec=1") fibaro:sleep(10*1000) response = HC2:GET("/roomba.cgi?button=SPOT") DOCK : --[[ %% properties %% globals --]] fibaro:log("Roomba renvoyé au Dock"); fibaro:call(24, "setProperty", "ui.status.value", "Retour au Dock"); HC2 = Net.FHttp("192.168.1.11",80) HC2:setBasicAuthentication("admin", "roombawifi"); response = HC2:GET("/roomba.cgi?button=DOCK") Bien sur vous modifierez l'adresse IP. Chez moi il est en 192.168.1.11 Vous penserez aussi a modifier l' ID du module virtuel. Vous remarquerez certainement des commandes de réveil a repetition dans le bouton Clean. Alors oui c'est "Normal". Le Roomba a un peu de mal a sortir de sa transe. Quand il dort, apparemment il a le sommeil lourd. La seule solution que j' ai trouvé pour être sur qu'il démarre correctement est de le matraquer de commandes de sortie de réveil. Voila, vous pouvez piloter votre Roomba depuis votre Box. Je vous laisse ensuite créer des scenarios qui utiliserons ce module virtuel a votre convenance. Une derniers chose pour terminer, il est vivement conseillé de créer un petit carénage pour la carte wifi. Sinon vous risquez d'avoir des surprises (surtout si vous avez des meubles ou le roomba passe tout juste en dessous. Dans ce cas, il y a des chances que la carte se fasse scalper ...) Voici ma réalisation ... Evidement on peut certainement faire beaucoup mieux. J' ai réutilisé le capot que j'ai découpé et sur lequel j'ai fixé 3 bouts de PVC coudés pour que la carte soit protégée des chocs. Voila. A bientôt !
  11. Un dernier tuto pour cette année 2013 (pour ce qui me concerne)... et puis j'entends des voix me disant que j'aurais passé pas mal de temps sur ce forum Je possède depuis plusieurs années une radio Internet... pas celle de l'image ci-dessus, une plus ancienne : la "SqueezeBox Boom" Je l'utilisais uniquement en accédant au serveur mysqueezebox.com Et depuis peu, j'ai acquis une box Fibaro HC2 et un serveur de stockage NAS Synology NAS Synology et LMS J'ai installé le logiciel du Logitech Media Server (LMS) sur mon NAS de façon très simple Il suffit de chercher dans le Centre de Paquets du Synology ce qui correspond à LMS et de cliquer sur installer Une fois installé, on clique sur LMS pour obtenir l'interface de gestion On note que l'adresse IP est (bien sà»r) la même que celle du NAS, mais le port est le : 9002 >> Un petit retour sur la "SqueezeBox Boom" pour configurer la connexion sur ce serveur local (je ne détaille pas, les possesseurs de ce type de radio savent que c'est facile) << On revient sur LMS... En bas de l'interface de LMS, on trouve le paramétrage On obtient une série d'onglets, dont 2 nous intéressent plus particulièrement. L'onglet "Plugins", parmi lesquels on trouve l'interface de ligne de commande (CLI) Attention ! Suite à modification de LMS, on ne trouve plus cet interface CLI dans les plugins Il faut aller sur : - "aide" - "informations techniques" - LMS Command Line Interface Et l'onglet "informations" Ce qui nous intéresse ici, c'est l'adresse MAC de la platine (SqueezeBox Boom) On s'arrête 2 secondes, pour que vous ne passiez pas un temps fou en recherche : méfiez-vous de la "casse" ! Dans mon script LUA, j'avais transformé en majuscule un caractère en minuscule de l'adresse MAC Dernier test avant de passer à notre box favorite : Un petit coup de telnet puis : open 192.xxx.xxx.xxx 9090 Remarques : - la commande doit être saisie telle que stipulée (avec un espace entre l'adresse IP et le port) - C'est bien le port 9090 - une fois la connexion effectuée, c'est un peu surprenant on n'obtient pas de "prompt" Saisir une commande du CLI comme par exemple : player count ? Cette commande me retourne le nombre de player (Squeezebox) : "player count 1" Quelques infos ici : http://wiki.slimdevices.com/index.php/Logitech_Media_Server_CLI .... au fait, vous aviez autorisé telnet sur votre NAS Fibaro HC2... enfin ! Création du périphérique virtuel... que tout le monde sait faire Le code LUA ci-après provient de @robmac qui intervient sur le forum Fibaro --[[ %% properties %% globals --]] -- the LMS server local ipadd = "192.xxx.xxx.xxx" -- the cli plugin port local portno = 9090 -- the MAC of the player local player = "00:00:00:00:00:00 " local playername = "Squeezebox Boom " -- the cmnd string -- change to any cli player command to create buttons local cmnd = "mixer volume " .. _sliderValue_ -- construct the sting to send local stringtosend = player .. cmnd .. string.char(10) --open the socket tcpSocket = Net.FTcpSocket(ipadd, portno) --set the read timeout tcpSocket:setReadTimeout(2*1000) --send the command bytes, errorCode = tcpSocket:write(stringtosend) - Attention à bien respecter les espaces pour que les commandes fonctionnent - compléter l'adresse IP du serveur LMS (ipadd) et l'adresse MAC du player (SqueezeBox Boom) Quelques commandes (cli player command) -- Volume : local cmnd = "mixer volume " .. _sliderValue_ --- ON : local cmnd = "power 1 " -- OFF : local cmnd = "power 0 " -- Lecture : local cmnd = "play " -- Arrêt : local cmnd = "stop " -- Choix d'une radio par l'un des boutons de présélection : local cmnd = "button preset_1.single " Et pour terminer, une ligne de commande générique qui va récupérer le contenu d'une variable globale local cmnd = fibaro:getGlobalValue("squeezebox") Cette variable sera renseignée par une scène. Exemple : -- squeezebox ON fibaro:call(49, "pressButton", "3"); fibaro:sleep(25*1000); -- volume squeezebox à 25 fibaro:setGlobal("squeezebox", "mixer volume 25 "); fibaro:call(49, "pressButton", "14"); fibaro:sleep(5*1000); -- message alerte fibaro:setGlobal("squeezebox", "playlist play /volume1/Fibaro/MP3/30secondes.mp3 "); fibaro:call(49, "pressButton", "14"); fibaro:sleep(15*1000); -- volume squeezebox à 15 fibaro:setGlobal("squeezebox", "mixer volume 15 "); fibaro:call(49, "pressButton", "14"); fibaro:sleep(1*1000); -- squeezebox OFF fibaro:call(49, "pressButton", "4"); On peut donc lire un fichier MP3 stocké sur le NAS pour restituer sur la radio un message sonore ... mais la radio ne bougera pas non plus les oreilles Bonnes fêtes de fin d'année @i-magin ****** 04/01/2015 *********************************************************************************************************************************************************************************************************************** A la demande d'un participant au forum, j'ajoute en fichier joint le module virtuel qu'il faudra compléter : adresse IP du serveur LMS (ipadd) et adresse MAC du player (SqueezeBox Boom) Ce VD datant de décembre 2013 est "rustique" : répétition des informations adresses IP et MAC pour chaque bouton et l'icône est à copier pour chaque bouton.... N'utilisant plus Squeezebox et LM je n'apporterai pas d'amélioration ****** 02/12/2015 *********************************************************************************************************************************************************************************************************************** J'ai ressorti ma Squeezebox pour l'utiliser comme radio réveil et j'ai ajouté la gestion de l'alarme dans un VD "réveil" qui gère (avec une scène) le démarrage d'une radio sur SONOS, la cafetière et l'éclairage.... Pour obtenir les commandes de gestion de l'alarme Squeezebox, j'ai lancé le LMS (Logitech Media Server) hébergé sur mon NAS, puis j'ai cliqué successivement sur : - "aide" - "informations techniques" - LMS Command Line Interface On trouve la commande "Alarm" Dans les exemples donnés, on découvre comment créer, supprimer ou modifier une alarme ... et, surprise, un curieux identifiant pour l'alarme ! La solution la plus simple que j'ai trouvée est la suivante : - sous LMS, sélectionner "Réveil" - supprimer tous les réveils programmés - créer un réveil - paramétrer le volume maxi, durée répétition et réveil - valider tous les jours de la semaine Pour obtenir l'Id du réveil sous Google Chrome : clic droit sur le bouton "supprimer le réveil" et choisir "inspecter l'élément" On obtient : "alarm_remove_xxxxxxx" C'est la valeur après remove (que j'ai remplacée dans ce tuto par des x) qu'il faut retenir Ainsi, la commande pour activer l'alarme : alarm update id:xxxxxxxx enabled:1 Désactiver l'alarme : alarm update id:xxxxxxxx enabled:0 Modifier l'heure de l'alarme (7H30) : alarm update id:xxxxxxxx time:27000 Et dans la continuité de mon tuto d'origine, nous aurons le code lua suivant pour modifier l'heure et l'activer : local cmnd = "alarm update id:xxxxxxxx time:27000 enabled:1 " J'espère que ce complément d'info (presque deux ans après la rédaction du 1er post sur la Squeezebox) pourra servir à d'autres membres du forum Squeezebox.vfib
  12. Tuto Multimédia

    Voila un super plugin pour les possesseurs d'une freebox V6 ! Vous connaissez tous l'auteur, puisqu'il est présent sur le forum...il s'agit de Krikroff ! Au passage, j'ai adoré la rédaction du sujet, présentation...etc. Je tiens personnellement à te féliciter pour le travail que tu fais pour les possesseurs d'une HC2. Nous t'attendons ici JC pour commenter ton plugin... Sans plus attendre...voici le lien de l'article : http://domotique-info.fr/2014/01/home-center-2-lua-freebox-avec-krikroff/
  13. DomoCharts Version 5.0 Sommaire : 1. Présentation 2. Pré-requis 3. Installation 3.1 Pages Web 3.2 Base de données MySQL 3.3 Virtual Device 3.4 Scène 4. Mise à jour 5. Utilisation 6. Evolutions futures . 1. Présentation Notre box est géniale, il y des beaux graphiques de consommation et de température, mais il manque la possibilité de grapher toutes les autres données, et l'historique des données conservées est purgé au bout d'un certain temps. Voici donc un ensemble de scripts permettant de générer des graphiques de température, humidité, consommation, batterie, etc... de tous les devices connus du Home Center 2. J'ai repris le travail initié par Byackee sur le forum officiel de Fibaro : make your graphics automatically Voici quelques unes des améliorations apportées : Nouvelle structure de base de données (nouvelles tables, modification des tables existantes, création d'index, ...) Meilleures performances Prise en compte des valeurs suivantes : température, humidité, luminosité, batterie, consommation électrique instantanée, électrique électrique cumulée, CO2, pression atmosphérique, niveau sonore, pluie, vent (certaines données sont disponibles grâce au plugin Netatmo) La zone de graphe s'adapte automatiquement en pleine page du navigateur web Gestion des pièces de la maison, afin de différencier les sondes portant le même nom (par exemple "Thermomètre salon" et "Thermomètre chambre") sur le graphique Purge des anciennes données après 21 jours (sinon les tables grossissent trop), avec consolidation les données par jour pour une conservation longue durée dans des tables séparées Utilisation de la dernière version des bibliothèques Highcharts, Highstock, Highslide, jQuery Support complet des HC2 v3 et v4. Energie électrique cumulée (en kWh) : support des tarifs BASE et HC/HP avec configuration statique des horaires Quelques nouveautés visuelles sur les graphiques (échelle de 0 à 100% pour les batteries et humidité en pourcentage), ainsi qu'un code couleur pour les valeurs hors-normes Installation de la base de données sans utiliser phpMyAdmin grâce à un simple script En attendant les plugins utilisateurs, support de "sondes virtuelles", en fait il s'agit de valeurs stockées dans des variables globales et mises à jour via l'API (particulièrement utiles pour les utilisateurs de FHEM, Zibase, etc... pour les protocoles tels que EnOcean et Oregon) Résolution de nombreux petits bugs remontés sur le forum ou non (UTF-8, quotes, pièce 'météo', utilisation des champs adresse IP et Port du VD, etc...). Bouton "Delete" dans le popup après clic sur un point permettant de supprimer une valeur aberrante, afin de conserver une courbe homogène Meilleure gestion des erreurs, avec remonté des message autant que possible (dans le debug du VD, et/ou sur le graph) Réécriture (presque) complète du code des boutons de VD et des pages PHP d'insertion des données, avec une API qui utilise le format de données JSON. C'est beaucoup plus propre, évolutif (je m'en sert pour mes graphs de consommation d'eau et d'énergie électrique, issues d'autres source), et un gain significatif de bande passante réseau. Disponible sur Github, donc plus facile de suivre les versions, et de forker le projet : https://github.com/cdriget/DomoCharts (attention sur Github il n'y a que le code source que j'ai développé, le package complet doit être téléchargé en bas de ce tuto sur le forum) ... . 2. Pré-requis Un serveur Web supportant PHP (NAS Synology, hébergement mutualisé, ...) Une base de données MySQL (Idem) Une Fibaro Home Center 2 Le package DomoCharts_V5.0.zip (disponible en bas du tutoriel) Dans le package à télécharger, vous trouverez donc : graph : Répertoire à transférer (via FTP, montage de partage réseau, ...) sur votre serveur Web DomoCharts.vfib : Device virtuel à importer dans le HC2 Scene.lua : Code source à copier/coller dans une nouvelle scène graphique_128.png : Icône pouvant être utilisée sur le Virtual Device clap_graph.png : Icône pouvant être utilisée sur la scène . 3. Installation 3.0 Synology Etapes facultatives pour les utilisateurs débutants d'un NAS Synology avec DSM. Ces étapes doivent être effectuées à l'aide du compte admin via l'interface Web (accessible par défaut sur le port 5000). 3.0.1 Installation de MariaDB (MySQL) Dans le Centre de paquets, rechercher et installer MariaDB : . Dès que l'installation est terminée, cliquer sur l’icône de MariaDB afin d'accéder à l'écran de configuration, puis cliquer sur le bouton Changer le mot de passe MariaDB : . Par défaut, le mot de passe MariaDB est vide, cliquer alors sur le bouton Réinitialiser le mot de passe MariaDB : . Confirmer en cliquant sur le bouton Oui : . Le seul compte existant est root, il faut donc créer un mot de passe (note : ce compte root est différent du compte root du Syno, il est donc tout à fait possible d'avoir des mots de passes différents) : . 3.0.2 Activation du serveur Web Dans le panneau de configuration, aller dans la section Services Web, puis cocher la case Activer Web Station : . Accéder à la page Web par défaut sur le port 80 du Syno : . Le Syno est prêt. 3.1 Pages Web Transférer toute l'arborescence du répertoire /graph sur le serveur Web via FTP ou montage réseau. Ensuite, éditer le fichier config.inc.php afin d'y modifier les paramètres de connexion à la base de données MySQL : // MySQL Server hostname or IP address $server = 'server'; // MySQL User account $login = 'login'; // MySQL User password $password = 'password'; // MySQL Database name $database = 'database'; . Note : si vous utilisez le mini-tuto Synology ci-dessus, les paramètres devraient ressemble à quelques chose comme cela (seul le mot de passe doit être personnalisé) : // MySQL Server hostname or IP address $server = 'localhost'; // MySQL User account $login = 'root'; // MySQL User password $password = 'password'; // MySQL Database name $database = 'domotique'; . Pour des raisons de sécurité, si vous maitrisez MySQL et phpMyAdmin, vous devez créer un utilisateur dédié (différent de root). Je ne détaille pas cette procédure qui est hors du cadre de ce tutoriel. Energie Dans le fichier config.inc.php, une rubrique concerne la configuration des horaires de l'abonnement au fournisseur d'électricité (ERDF, ...). La variable $TimeSource doit avoir la valeur 'STATIC' : //*** Teleinfo time for energy // // Variable = 'Value' // Comment : Allowed values // -------- ------- // ------------------------------------------ : --------------- $TimeSource = 'STATIC'; // Source of information for date and time : TELEINFO|STATIC // ---------------------------- // Valid only if TELEINFO TimeSource is used : --------------- $teleinfoTable = 'teleinfo'; // MySQL table name : xxxxxxxx $teleinfoDelay = 60; // Teleinfo Delay in Seconds : ss // ---------------------------- // Valid only if STATIC TimeSource is used : --------------- $TimeHCHP = array( // HC/HP start times for each EDF rate : 'hh:mm' => '<BASE|HC|HP>' '00:00' => 'HC', '06:30' => 'HP', '22:30' => 'HC' ); Sont actuellement supportés les abonnements de type Normal ('BASE'), et Heures Pleines/Heures Creuses ('HP' et 'HC'). Dans l'exemple du dessus, j'ai configuré les horaires HP de 6:30 à 22:30, et des horaires HC de 22:30 à 6:30. Notez que la variable $TimeHCHP doit obligatoirement commencer à 00:00. Vous pouvez ensuite ajouter autant de tranches horaires que nécessaires, car certains abonnements proposent 2 tranches HC réparties dans la journée. Si vous avez un abonnement Normal, c'est plus simple, puisqu'il suffit d'indiquer 'BASE' à partir de 00:00 : $TimeHCHP = array( '00:00' => 'BASE' ); Avec ces informations, le bouton Energy du module virtuel sera ensuite capable d'interroger l'API de la HC2 afin de récupérer les consommations des différentes équipements pour chaque tranche horaire de chaque journée. A l'heure actuelle, le graphique d'énergie électrique affiche la somme des kWh pour chaque journée, mais les informations nécessaires sont stockées dès aujourd'hui dans la base de données afin d'effectuer les calculs de coà»ts financiers ultérieurement. 3.2 Base de données SQL Afin de créer ou migrer les tables dans la base de données MySQL/MariaDB, il faut appeler la page /graph/install.php sur le serveur Web. Si tout se passe bien, la page se contente d'afficher Finished : . Sinon, vous pouvez demander du support sur le forum, en copiant/collant le texte des messages d'erreurs. 3.3 Virtual Device Ce Virtual Device est responsable de l'envoi des données vers la base de données SQL au travers de pages Web dédiées à l'insertion des données. Dans la HC2, aller dans Modules, puis Ajouter ou supprimer un dispositif, puis dans la zone Importer un dispositif virtuel, cliquer sur Parcourir, puis sélectionner le fichier DomoCharts.vfib. Dans les propriétés de ce Virtual Device, vous pouvez changer l’icône par défaut avec le fichier graphique_128.png (à répéter pour tous les boutons du VD). Entrer l'adresse IP du serveur Web et son port : On en profite pour relever l'ID du Virtual Device dans la barre d'adresse, qui nous sera utile plus loin lors de la création de la scène : Au final, on obtient un nouveau module dans l'interface : . 3.4 Scène Cette scène est responsable du déclenchement régulier des appels au Virtual Device. Dans la HC2, aller dans Scènes, puis Ajouter une scène, puis Ajouter une scène en LUA. Appelez-là DomoCharts, bien s'assurer que les cases Scène Active et Ne laissez pas l'alarme arrêter une scène tandis que l'alarme est en marche sont cochées. Utiliser l'icône fournie clap_graph.png. Dans l'onglet Avancé, copier/coller le code LUA fourni dans le fichier Scene.lua. Ne pas oublier de remplacer la valeur de la variable VirtualDeviceID par l'ID de votre Virtual Device que vous avez obtenu dans la barre d'adresse lors de la création de celui-ci. local VirtualDeviceID = 82 Au final, on obtient une nouvelle scène dans l'interface : La particularité de cette scène est d'attendre le début d'une nouvelle minute avant de commencer à entrer dans la boucle infinie. Ainsi, si on modifie la scène en plein milieu d'une minute, lorsque le HC2 redémarre immédiatement la scène, on est certain que nos actions seront exécutées à la prochaine nouvelle minute, conservant bien toujours 1 minute d'intervalle entre 2 appels au Virtual Device. De plus, différents tests vous permettent d'exécuter certaines actions une fois par minute, par heure, ou par jour. Je m'en sert pas exemple pour mettre à jour les données de mon Eco-Devices et de mon compteur d'eau (pilotés par d'autres Virtual Devices). A noter que lors du changement de jour, on attend 1 minute de plus afin d'éviter tout décalage de temps entre la HC2 et le serveur Web (important pour la génération des données consolidées par jour, car on doit être certain que le jour précédent est complètement terminé).Par défaut, je propose donc : Mise à jour des valeurs des sondes (températures, humidité, etc... ) toutes les minutes Mise à jour des consommations instantanées toutes les minutes Mise à jour des batteries une fois par jour à 23h Mise à jour des devices une fois par jour (ce qui implique que si vous ajouter une nouvelle sonde de température en journée, celle-ci ne sera visible sur les graphes qu'à partir de 0h01, bien que les données commencent à être enregistrée à la minute près où le device est ajouté dans le HC2) Consolidation et purge des données une fois par jour . 3.5 Variables Globales En option, il est possible de grapher des données issues de variables globales. Cela est utile pour les données issues de sources externes, telles que des sondes Oregon sur une Zibase, des sondes EnOcean sur FHEM, etc. Les valeurs de ces variables sont alors mises à jour en Push via l'API, ou en Pull via une scène. Je ne détaille pas ces étapes qui sont hors du cadre de ce tutoriel. Il y a 2 boutons à modifier : Bouton n°1 - SensorsModifier la variable nommée variables située en début de script. Dans cet exemple, on peut voir 2 sondes de température, et une sonde d'humidité : -- User Global Variables local variables = { { ["type"] = "temperature", ["id"] = 2001, ["name"] = "TempCuisine" }, { ["type"] = "humidity", ["id"] = 2002, ["name"] = "HumCuisine" }, { ["type"] = "temperature", ["id"] = 2003, ["name"] = "TempSalleCinema" } } Pour chaque valeur, les champs suivants sont requis : - type : le type de capteur (temperature, humidity, light, power, co2, pressure, noise, rain, wind) - id : un ID "virtuel", c'est à dire qui ne correspond à aucun device connu par la HC2. N'hésitez pas à choisir une valeur très élevée que vous n'atteindrez jamais, sous peine de conflit d'ID. - name : le nom de la variable globale créée dans le panneau Bouton n°4 - DevicesDe façon similaire : -- User Global Variables local variables = { { ["type"] = "temperature", ["id"] = 2001, ["name"] = "Température", ["room"] = 7 -- Cuisine }, { ["type"] = "humidity", ["id"] = 2002, ["name"] = "Humidité", ["room"] = 7 -- Cuisine }, { ["type"] = "temperature", ["id"] = 2003, ["name"] = "Température", ["room"] = 5 -- Salle cinéma } } Pour chaque valeur, les champs suivants sont requis : - type : le type de capteur => identique au bouton n°1 - id : un ID "virtuel" => identique au bouton n°1 - name : le nom du capteur qui apparaitra dans le graph - room : l'ID de la pièce dans laquelle se situe le capteur, qui s'affichera dans le graph à la suite du nom du capteur. 4. Mise à jour Pour procéder à la mise à jour, il faut : Bloquer l'exécution de la scène Graphiques LUA Importer le nouveau VD (et mettre l’icône, l'IP et le port comme indiqué plus haut) Supprimer puis retransférer le contenu du répertoire /graph sur le serveur Web, comme expliqué au paragraphe 3.1. => Attention à ne pas perdre vos paramètres dans le fichier config.inc.php. Modifier le fichier config.inc.php avec les bonnes infos pour se connecter à la DB (comme expliqué ci-dessus) Dans un navigateur Web, ouvrir la page /graph/install.php afin de préparer la base de données aux changements (comme expliqué ci-dessus) Réactiver la scène LUA Regarder le Debug des boutons du VD pour vérifier qu'il n'y a pas d'erreur Vider le cache du navigateur Au bout de quelques minutes, les graphs doivent continuer comme avant, avec les nouveaux graphs . 5. Utilisation Pour visualiser les graphes, il suffit d'aller chercher avec son navigateur l'adresse du serveur Web avec le chemin "/graph", par exemple : http://192.168.1.1/graph/ . Pour l'administration, aller sur la page admin.php : http://192.168.1.1/graph/admin.php Cette page permet d'ordonner les modules, de donner une couleur à chaque courbe, et d'en cacher certains : . Si une valeur aberrante apparait, il zoomer suffisamment sur le graph, puis cliquer sur le point. Dans le popup qui apparait, un bouton Delete permet de supprimer la valeur, afin de conserver une courbe homogène : 6. Evolutions futures En cas de perte de communication entre la HC2 et le NAS/Serveur Web, stockage des données en local dans une Variable Globale, jusqu'à ce que leur envoi soit possible. Cela permettra de ne pas perdre de données en cas de mise à jour/reboot/plantage du NAS, ou de la connexion Internet. Permettre à l'utilisateur de créer autant de graphs qu'il veut, en lui permettant d'attribuer un certain nombre de modules à chaque graph, avec personnalisation du graph (échelle, couleurs, taille, police, etc). Ainsi on pourra avoir un graph de la température des pièces, un autre graph de la température du matos informatique, un graph de la température en fonction de la consommation électrique du chauffage, etc.... à vous d'imaginer vos besoins ... Je suis preneur de vos suggestions ! Charts_V4.1.zip DomoCharts_V5.0.zip
  14. Je souhaitais me simplifier la vie et pouvoir confirmer un ordre par TTS sur mes squeezebox (ex l'allumage du fer à repasser depuis le second alors qu'il est au sous-sol). J'en ai 5 (Cuisine, Salon, Garage, Chambre du Haut et Chambre du Bas). J'ai donc fait un module virtuel "EmissionSqueeze" qui me permet d'émettre une phrase depuis n'importe qu'elle scène (ou bouton) en 5 lignes ! Voici le code qui vous permettra d'appeler ce module virtuel en 4 ligne depuis n'importe où : -- Faire un copier/coller de ce code dans le bouton -- depuis lequel on souhaite diffuser un message -- Le niveau sonore est attribué à chaque squeeze individuellement -- à la suite du nom avec comme valeur de 01 à 99 (pas 100 ! on doit rester sur 2 chiffres) -- SqueezeNom -> Cuisine ; Salon ; ChambreB ; ChambreH ; Garage -- Attention à ne pas se tromper sur l'orthographe des Squeezes !!! -- Messager -> Texte pour la TTS (inutile de mettre des %20) --Liste des squeezes sous la forme {"Cuisine30","Garage80","Salon60","ChambreH30","ChambreB50"} local ListeSqueeze = {"Cuisine55","Garage99","Salon60","ChambreH30","ChambreB30"} fibaro:setGlobal("SqueezeNom" , json.encode(ListeSqueeze)) -- Taper le message fibaro:setGlobal('Messager' , "Ouverture du portail") fibaro:call(144, "pressButton", "1"); -- fin annonce Squeezebox Voici le code principal du bouton 1 du module virtuel 144 : -- JossAlf ; 02/07/14 (V2.1) 21/06/14 (V2.0) 17/06/14 (V1.3) ; 22/05/14 (V1.1) ; 23/05/14 (V1.2) -- V2.1 : Ajout du réglage individuel duniveau sonore pour chaque squeeze en ajoutant 2 chiffre après le nom -- V2.0 : Simplification du code et possibilité d'allumer 1,2,3,4 ou 5 squeeze. -- Scène permettant simplifier la diffusion de messages sur 1 ou plusieurs squeezeboxes. -- Nécessite de créer les Variables Globales : SqueezeNom ; Messager -- (Ne pas utiliser dans une scène le json bug) -- l'appel de module virtuel se fera dans un autre module virtuel de façon simple -- en affectant les valeurs aux variables Globales -- puis en simulant le clic sur un bouton : exemple -> fibaro:call(144, "pressButton", "1"); local ListeSqueeze = fibaro:getGlobal("SqueezeNom"); local TableauSqueezeNom = json.decode(ListeSqueeze); local player = nil -- Adresse IP du Logitech Media Server local ipadd = "192.168.0.46" -- le port du serveur local portno = 9090 local Squeezers = { ['Cuisine'] = "00:04:xx:xx:xx:00 ", ['Salon'] = "00:04:xx:xx:xx:3e ", ['ChambreB'] = "00:04:xx:xx:xx:fe ", ['ChambreH'] = "00:04:xx:xx:xx:ba ", ['Garage'] = "00:04:xx:xx:xx:bc ", } --On allume toutes les squeezes for i = 1, #TableauSqueezeNom do --on récupère uniquement le nom en retirant les 2 derniers caractères qui correspondent au niveau sonore local player = string.sub(TableauSqueezeNom[i], 1 , -3) fibaro:debug(player) local player = Squeezers[player] 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 son -- on prend que les 2 dernier caractères qui correspondent au niveau sonore. local VolumeSon = string.sub(TableauSqueezeNom[i], -2) local cmnd = "mixer volume " .. VolumeSon .. " " local stringtosend = player .. cmnd .. string.char(10) tcpSocket = Net.FTcpSocket(ipadd, portno) tcpSocket:setReadTimeout(2*1000) bytes, errorCode = tcpSocket:write(stringtosend) end -- on laisse une seconde pour laisser le temps à toutes les squeeze de s'allumer fibaro:sleep(1000) -- On envoie le message en utilisant la première radio local player = string.sub(TableauSqueezeNom[1], 1 , -3) local player = Squeezers[player] local notification = fibaro:getGlobalValue('Messager') -- On remplace les espaces par des %20 local notification = string.gsub((notification)," ", "%%20"); fibaro:debug(notification) -- Attention google ne fonctionne plus il vaut mieux utiliser VoiceRSS pour le TTS -- local cmnd = "playlist play http://translate.google.com/translate_tts?tl=FR&ie=UTF-8&q=" .. notification; -- Voicerss TTS 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 des squeezeBoxs après 10 secondes fibaro:sleep(20*1000) -- on éteint les squeezes for i = 1, #TableauSqueezeNom do fibaro:debug("debut de la boucle") local player = string.sub(TableauSqueezeNom[i], 1 , -3) local player = Squeezers[player] 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) end MAJ : Simplification du code avec une boucle et le passage des "paramètres" sous forme de variable traduite en tableau en passant par un json. On peux maintenant choisir d'émettre sur une ou plusieurs radio en les nommants. Attention à bien renseigner le nom de votre squeeze avec le niveau sonore collé (exemple "Cuisine80") si non ... Pour la diffusion d'un message/fichier MP3, se référer au message 20 de ce sujet. PS : Merci à Steven pour le coup du Json (pour obtenir un tableau) et pour Shad et la boucle "for". MAJ2 : Evolution du code afin de choisir individuellement le niveau sonore des squeezer. MAJ3 : Google ne fonctionne plus en lien directe (à la ligne 62) Je l'ai remplacé par VoiceRSS (ligne 65) qui fait très bien le travail http://www.voicerss.org/controls/speech.ashx?hl=fr-fr&src= J'en parle ici : #80
  15. Tuto Multimédia

    Salut à tous, Un petit mot pour vous dire que je suis entrain de préparer un module virtuel pour piloter l'application DSAudio depuis la HC2 J'y vois comme intéret de pouvoir lancer de la musique sur mon ampli DLNA depuis l'appui d'un simple bouton Zwave installé dans mon salon. J'ai un prototype en bash qui marche, je suis entrain de le porter en LUA pour l'intégrer sur la HC2. Y'a des gens intéressés pour tester quand j'aurai une beta ? Vous aviez déjà une autre solution, moi j'ai rien trouvé pour la HC2 Voili, Erwan
  16. AIRSONOS Ce tuto est dédié est pour une debian/ubuntu. Il a pour but d'expliquer comment installer l'application Airsonos. Mon script fonctionne sur un machine virtuelle. Il sera basé sur 4 points: 1- Installation de Nodejs 2- Installation AirSonos 3- Customisation du script 4- Démarrage automatique au boot Je fais le tuto avec le compte root, si vous utilisez un compte utilisateur ajouter sudo. 1- Installation de Node js Donc on commence par mettre le système àjour: apt-get update && apt-get upgrade L'application AirSonos nécessite la version node.js >= 0.10.33. On va donc installer sa: apt-get install build-essential python Maintenant on va dans le répertoire opt: cd /opt Ensuite on va télécharger les sources et compiler le tous ( la compilation peut prendre un peu de temps): wget http://nodejs.org/dist/v0.10.33/node-v0.10.33.tar.gz && tar xfz node-v0.10.33.tar.gz && cd node-v0.10.33 && ./configure && make && make install Voilàpour vérifier que c'est bien installer: node -v Sa doit vous afficher "0.10.33". Maintenant on passe àl'installation de AirSonos. 2- Installation d'AirSonos On doit commencer par installer les paquets suivant: apt-get install git libavahi-compat-libdnssd-dev libasound2-dev mc sudo On passe àl'installation de Airsonos npm install airsonos -g Il faut savoir que sur cette version il y a un problème, il affiche plusieurs fois les mêmes enceinte. Vous pouvez essayer pour voir en lançant simplement l'application par: airsonos Pour stopper l'application faite "ctrl + c". 3- Customisation du script Donc on va maintenant passer au modification des fichiers. mcedit /usr/local/lib/node_modules/airsonos/lib/main.js En dessous de la ligne 28 on ajoute: console.log('Searching for Sonos devices on network...'); var deviceList = []; Ligne 36 var deviceName = zoneAttrs.CurrentZoneName; if(deviceList.indexOf(device.host + ':' + device.port) >= 0) { if (flags.get('verbose')) { console.log('Skipping duplicate device found at',deviceName, '{' + device.host + ':' device.port + '}'); } return; } deviceList.push(device.host + ':' + device.port) Maintenant l'application est fonctionnelle. 4- Démarrage automatique au boot On va maintenant regarder pour le lancer au démarrage. npm install forever -g nano /etc/rc.local Et ajoutez avant "exit 0". sudo -u root -i /usr/local/bin/forever start /usr/local/bin/airsonos Et voila vos enceintes on maintenant la fonction Airplay. Il également possible d'installer l'application sur un synology. Source: https://github.com/stephen/airsonos
  17. Tuto Multimédia

    @Krokroff Non il n'est pas dans la liste mais c'est le même protocole que pour le TX-NR905 Je pense développer un truc à partir de ce document, mais franchement, je n'y comprends pas grand chose et je ne sais pas par où commencer
  18. Bonjour, Je vais vous parler de la domotisation d’une sonnette skybell: D’abord une petit intro: Pour ceux qui ne connaissent pas la skybell, c ‘est une sonnette connecté issue d’un projet de crowdfunding qui a largement remporté son objectif financier. La skybell commercialisée aujourd’hui en est à la version 2, ça vaut dans les 200$ sur amazon us ou via un revendeur europee ( cf site officiel http://www.skybell.com). Le principe de cette sonnette est de remplacer le "bouton" des sonnettes traditionnelles des maisons americaines, qui ferment un circuit 12V alternatif ce qui vient agiter un dong mécanique, une espèce de marteau qui tape sur un résonateur. La skybell dispose d’une camera , d’un micro, d’un haut parleur et d’un capteur de présence, elle communique exclusivement en wifi, les deux cables reliés au « bouton » de sonnette qu’elle est censée remplacer ne servent qu’à l’alimenter. Une fois calée, la skybell permet de continuer à faire sonner la sonnette mécanique, mais elle établit aussi un push vers les téléphones des comptes configurés (qu’ils soient en réseau local ou à extérieure) , ce qui invite à lancer l’application, qui permet d’établir la connexion vidéo et de communiquer dans les deux sens avec son visiteur ( à la manière d’un talkie walkie, chacun parle à son tour). On peut aussi configurer en mode silencieux ( pour ne pas faire sonner le ring mécanique), et aussi pré-détecter la présence de visiteurs (à éviter dans une rue passante). La dernière MAJ permet d'avoir des enregistrements vidéo on the cloud des derniers échanges, s'il y a eu communication. Mais alors pourquoi la domotiser ? D’abord, parce que l’on attend une api depuis plus d’un an, qui ouvrirait des perspectives, et qu’elle ne vient pas, du coup l'écosystème est limité à ce joujou. Ensuite, parce que l’on peut avoir envie de déclencher des actions domotiques liées à la sonnette ( faire clignoter des lumières, allumer la lumière du perron, déclencher un son, lancer un enregistrement sur une camera de façade, allumer un projecteur, mettre le café en route… bref une action)( oui quand on sonne, je me fais un petit café ) qu’est ce que l’on peut récupérer ? -uniquement l’impulsion liée à la pression du bouton par le visiteur, pas de possibilité de récupérer le flux vidéo de la sonnette ou autre ( et peu d’interêt, on les reçoit déjà direct sur sur portable). En quoi cela est compliqué ou nécessité un circuit spécifique ? De par son design prévu pour remplacer le bouton d’une sonnette 12v alternatif, la skybell a un fonctionnement électronique assez particulier: Elle s’alimente constamment sur l’alim 12V Ac du circuit de la sonnette avec un amperage très faible, qui en régime normal traverse la sonnette mais ne suffit pas à la faire « dring'er ». Lorsqu’on sonne, la skybell ferme le circuit (donc elle ne peut plus s’alimenter) et auto subsiste pendant quelques secondes grace à une batterie interne rechargeable de courte autonomie, ensuite elle rouvre le circuit et reprend son alimentation sur le 12vac, et recharge sa petite batterie. Un autre point important, il est IMPERATIF que le circuit comporte une « charge » ( dans le cas normal la sonnette mécanique qui va absorber la majeure partie de la puissance lorsque le circuit va être fermé, manifestement s’il n’y a q’une alimentation, la skybell viendrait la court circuiter et prendrait toute l'intensité dans la figure et cramerait ( et cramerait sa garantie par la même). Skybell propose donc une parade pour ceux qui veulent utiliser la skybell sans sonnette mécanique, il faut ajouter sur le circuit une resistance de 10 Ohm 10Watts, et pas de sonnette, on peut alors passer sur une alim 12V continu (DC) qui devra délivrer entre 500mA et 1A ( au delà , on risque à nouveau au moment de fermer le circuit de faire circuler trop de courant dans la skybell et crac la garantie...) Bon ok, et maintenant on fait quoi ? Je pars du principe qu'on a pas de sonnette mécanique en 12VAC et qu'on part sur une alim' de type 12VDC avec la resistance 10ohm/10watts Et bien on va, en parallèle de la fameuse resistance 10Ohm/10watt positionner un petit circuit qui va être capable d’activer un relais, et qui ne réagira que lorsque un gros ampérage passe dans le circuit principal (le malin qui branche juste un relais en parallèle de la résistance sera déçu de voir que son relais passe sa vie a osciller ( clic clac) car la skybell tire sur la ligne, on a alors un déclenchement imprévisible. Voici le schéma de ce qu’il faut faire (je ne suis pas le concepteur ce circuit, je remercie les contributeurs Allemands de ce forum :http://www.mikrocontroller.net/topic/341210) il faut donc réaliser ce petit circuit, il y en a pour quelques euros de composants, et bien sà»r on va l'adapter à la sauce fibaro afin d'ajouter un capteur universel fibaro. Comme on a déjà une alim 12V DC, on peut la repiquer pour alimenter l'universal sensor, et le contact sec normalement ouvert du relais 5V piloté va nous permettre de fermer le circuit entre masse et capteur ( fil bleu et fil jaune) du module universel. A titre perso, j'ai fait ce petit circuit sur une plaque sans soudure, et j'ai scellé tout ça dans la colle liquide, on peut évidemment faire plus propre avec un vrai circuit imprimé pour ceux qui n'auraient pas oublié tout de leurs cours de techno de 3eme. Et dans le contexte, en mode de test, ça donne ça: Une fois le tout remonté dans un boitier et la skybell fixée au mur, on a donc désormais une remontée d'info via le capteur universel à chaque pression du bouton skybell, pour le reste, je laisse place à votre imagination .
  19. L'addon est disponible sur le repository de xbmc-passion.org . ATTENTION: J'ai remarqué que la hc2 pouvait freeze avec l'ipad. Mise en place: Avant toute chose créer les scènes suivantes. Il faut créer 3 scènes: - Une pour démarrer le films, éditer le nom de la variable globale que vous avez mis dans le plugin de xbmc: --[[ %% properties %% globals --]] local room = "Xbmc_salon"; local startSource = fibaro:getSourceTrigger(); if ( startSource["type"] == "other" ) then fibaro:sleep(5*1000); if ( fibaro:getGlobalValue(room) == "Empty" ) then fibaro:setGlobal(room, "Movies"); end if ( (fibaro:getGlobalValue(room) == "Movies") or (fibaro:getGlobalValue(room) == "TVShows") ) then --votre code si c'est un film ou une séries elseif ( fibaro:getGlobalValue(room) == "Music" ) then --votre code si c'est de la musique elseif ( fibaro:getGlobalValue(room) == "PVR" ) then --votre code si c'est le PVR end fibaro:sleep(60*1000); end - Il faut ensuite une scène pour si vous mettez pause, éditer le nom de la variable globale: --[[ %% properties %% globals --]] local room = "Xbmc_salon"; local startSource = fibaro:getSourceTrigger(); if ( startSource["type"] == "other" ) then if ( (fibaro:getGlobalValue(room) == "Movies") or (fibaro:getGlobalValue(room) == "TVShows") ) then --votre code si c'est un film ou une séries elseif ( fibaro:getGlobalValue(room) == "Music" ) then --votre code si c'est de la musique elseif ( fibaro:getGlobalValue(room) == "PVR" ) then --votre code si c'est le PVR end fibaro:sleep(60*1000); end - Et pour finir une scène pour la fin, éditer le nom de la variable globale + l'id du votre device virtuel: --[[ %% properties %% globals --]] local room = "Xbmc_salon"; local Vdevice = 104; local startSource = fibaro:getSourceTrigger(); if ( startSource["type"] == "other" ) then if ( (fibaro:getGlobalValue(room) == "Movies") or (fibaro:getGlobalValue(room) == "TVShows") ) then --votre code si c'est un film ou une séries elseif ( fibaro:getGlobalValue(room) == "Music" ) then --votre code si c'est de la musique elseif ( fibaro:getGlobalValue(room) == "PVR" ) then --votre code si c'est le PVR end fibaro:setGlobal(room, "Empty"); fibaro:call(Vdevice, "setProperty", "ui.sldPercentage.value",'0'); fibaro:call(Vdevice, "setProperty", "ui.lblXbmc2.value",''); fibaro:call(Vdevice, "setProperty", "ui.lblTime.value",'00:00:00/00:00:00'); fibaro:sleep(60*1000); end Personnellement dans ces 3 scènes j'ai rajouté différente condition, (pluie-orage, nuit et jour) et par rapport ces conditions, la hc2 me fait différentes actions. Je ne vous fournie que la base minimum au bon fonctionnement du script. Normalement, une variable globale avec des valeurs prédéfinie devrait se créer automatique grâce au plugin xbmc lors de la première lecture. Si ce n'est pas le cas créer en une avec pour valeur : - Empty - Movies - Music - PVR - TVShows - Ensuite vous devez importez le fichier vfib (virtual device) contenue dans le zip dans la HC2. Attention, si vous modifiez la variable globale "Xbmc_salon", pensé à faire pareil dans l'addon xbmc. Éditez l'adresse IP principal + celle des boutons N°4 / 8 / 9 / 10 / 18 pour y mettre celui de votre xbmc. - Pour l'addon de xbmc, installez le dans votre htpc. Pour le configurez allez dans Add-ons -> Enabled Add-ons -> Services -> Fibaro HC2. Configurez les différentes info du plugin et pensez à activez le module virtuel et mettre oui pour le module virtuel ainsi que son numéro ID et la variable globale si vous l'avez modifié. - Profil: Vous devez créez un second profil sur xbmc, et éditez dans le bouton 12 la variable slave. Mettez y le nom de vote profil. Voilà , vos enfant n'auront plus accès a vos films porno ou films d'horreur. En théorie je n'ai rien oublié. Merci à A,Socha, Krikroff pour leur aide. Source de code, et remerciement à leur auteur. ADN pour ce portion de code pour le put . Et gros merci à homeawesomation pour m'avoir permis de modifier son code initial. Xbmc.vfib
  20. Tuto Multimédia

    Virtual Device pour amplificateur ONKYO TX-NR626 - v1.1.0 Je viens d'acquérir un nouveau jouet : un amplificateur home-cinéma ONKYO TX-NR626 et vous trouverez ci-dessous un Virtual Device pour le commander. Avant de continuer, je tiens à remercier @Krikroff pour son aide précieuse et l'utilisation d'une grosse partie du code de son Virtual Device. Il a fallut adapter, non sans mal ! Cet amplificateur est connectable au réseau en wifi ou ethernet et peut être commandé à l'aide du protocole ISCP over ethernet (eISCP) consultable dans ce document. Des infos ici aussi. Avant toute chose, mea culpa pour les éventuelles erreurs de codage, je ne suis pas du tout codeur et ce ne sera certainement pas optimisé ou réglementaire. Je pense que ce Virtual Device doit fonctionner avec pas mal d'amplificateur Onkyo dit "connectable". Le Virtual Device : Le Home : N'oubliez pas de paramétrer l'IP de votre amplificateur (XXX.XXX.XXX.XXX). Le port est généralement 60128, vous n'avez pas besoin de le changer. Vous trouverez le Virtual Device dans le fichier ZIP en pièce jointe avec l'icône de l'amplificateur et un fichier README_FIRST.txt Si ce fichier s'appelle comme ça c'est qu'il y a une raison. Il faut donc ABSOLUMENT le LIRE avant de jouer avec ce Virtual Device ! Ce post sera modifié en fonction des évolutions du Virtual Device. Onkyo_TX-NR626_v1.1.0.zip
  21. Tuto Multimédia

    Je vous ai proposé il y a peu un monitoring de votre Synology depuis la HC2 (http://www.domotique-fibaro.fr/index.php/topic/5682-synology-monitoring/) Je vous propose maintenant le contraire : monitorer votre HC2 depuis votre Synology. L'idée vient du fait que mon HC2 fonctionnait très bien, mais qu'il y avait un problème au câble réseau ... Pour le ping, un tout grand merci à Lazer, sans qui je n'y serais jamais arrivé. Pour la notification si la box est en erreur 503, merci à CaptainIgloo et samhuin pour cette partie de script. Pour la notification par mail depuis le synology, voici où je me suis inspiré : http://forum.synology.com/enu/viewtopic.php?f=32&t=79334 Fonctionnalités Ping de la box HC2/L depuis le Synology Vérification si pas de code erreur 503 Si erreur notification dans le Syno et envoie d'un mail Le script : IP=192.168.xxx.xxx TO="adresse.mail@a.notifier" HOST=$(/bin/hostname) /bin/ping -c 1 -w 10 ${IP} if [ $? -ne 0 ] then SUBJECT="HC2/L Ping error" BODY="La box HC2/L (${IP}) ne ping plus (test toutes les minutes).\n\nSynology DiskStation\n\nFrom ${HOST}" HEADERS="From: ${TO}" NOTIF="${SUBJECT} - ${IP}" /usr/bin/php -r "mail(\"${TO}\", \"${SUBJECT}\", \"${BODY}\", \"${HEADERS}\");" /usr/syno/bin/synodsmnotify "@administrators" "System Event" "${NOTIF}" fi URL="http://$IP/api/loginStatus" coderetour=`curl -I $URL 2>/dev/null | head -n 1 | cut -d' ' -f2` if [ "$coderetour" == "503" ] then echo "Code retour 503" SUBJECT="HC2/L 503 error" BODY="La box HC2/L (${IP}) retourne un code erreur 503. Evaluer si un redémarrage de la box est nécessaire.\n\nSynology DiskStation\n\nFrom ${HOST}" HEADERS="From: ${TO}" NOTIF="${SUBJECT} - ${IP}" /usr/bin/php -r "mail(\"${TO}\", \"${SUBJECT}\", \"${BODY}\", \"${HEADERS}\");" /usr/syno/bin/synodsmnotify "@administrators" "System Event" "${NOTIF}" # curl http://$IPHC/services/finishUpgradeAfterError.php else echo "Le code retour est " $coderetour fi Configuration du Synology : Si ce n'est pas fait, il faut configurer le Syno pour qu'il puisse envoyer des mails : Panneau de configuration -> Notifications Panneau de configuration -> Planificateur de tâches Créer -> Script défini par l'utilisateur Dans le champ "Script défini par l'utilisateur", coller le script ci-dessus (en mettant l'IP de la box et votre adresse mail dans les champ IP et TO Le champ "Utilisateur" doit être root (sinon le ping retourne une erreur, même si ping ok) Dans l'onglet" Programmer", planifier la fréquence d'exécution du script Préciser l'heure de dernière exécution à 23:59, car par défaut c'est 00:59. Pour vérifier que tout fonctionne bien, mettez une adresse IP non existante. Bonus : Dans le même ordre d'idée, j'ai fait un petit scrip "Keep Alive", pour vérifier une fois par jour que les mails, etc s'envoient correctement depuis mon Syno. Comme l'IP que je renseigne est celle du Syno, s'il m'envoie un mail comme quoi le Syno ne ping plus, c'est qui il a un autre problème. IP=192.168.xxx.xxx TO="adresse.mail@a.notifier" HOST=$(/bin/hostname) /bin/ping -c 1 -w 1 ${IP} if [ $? -ne 0 ] then SUBJECT="Keep alive error from ${HOST}" BODY="${IP} ne ping plus" HEADERS="From: ${TO}" /usr/bin/php -r "mail(\"${TO}\", \"${SUBJECT}\", \"${BODY}\", \"${HEADERS}\");" /usr/syno/bin/synodsmnotify "@administrators" "System Event" "${BODY}" else SUBJECT="Keep alive from ${HOST} ok" BODY="${IP} ping ok" HEADERS="From: ${TO}" /usr/bin/php -r "mail(\"${TO}\", \"${SUBJECT}\", \"${BODY}\", \"${HEADERS}\");" /usr/syno/bin/synodsmnotify "@administrators" "System Event" "${BODY}" fi
  22. 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
  23. Dans le cadre de mes recherches au cours du développement du plugin Freebox Player Remote (ça remonte Lol ) et en quête d’une solution efficace ayant pour objectif de déterminer l’état « Allumé » ou « Éteint » du périphérique, j’ai rapidement fait le tour des premières solutions envisageables en utilisant notamment l’API de la Freebox ou bien à l’aide d’un module mesurant la consommation mais au final rien de bien concluant ! J’ai donc commencé à envisager la chose autrement et investiguer plus au niveau du réseau, pour au final trouver mon bonheur. En effet, le Freeplayer implémente plusieurs protocoles réseau dont l’ UPnP (Universal Plug and Play) comme beaucoup de diffuseurs du marché d’ailleurs et une des particularités intéressante avec l’ UPnP est la découverte de services qui permet de s’affranchir de toute configuration fastidieuse pour les faire communiquer les uns avec les autres. Le protocole de découverte est basé sur SSDP et cela tombe très bien, j’ai déjà joué avec dans le passé… Le SSDP, c’est quoi ? S.S.D.P pour Simple Service Discovery Protocol, est un protocole de communication donnant la possibilité aux clients de découvrir des services disponibles sur le réseau. Pour cela il utilise UDP (User Datagram Protocol) sur le port 1900. Il ne reste plus qu’à trouver le port utilisé par le Freeplayer ainsi que l’adresse sur laquelle il diffuse les informations sur ses services. J’ai pour cela utilisé une petite application console réalisée quelques mois avant dans le cadre d’un autre projet afin de mettre en Å“uvre le SSDP mais il existe des outils UPnP pour Windows et Linux permettant d’arriver aux mêmes résultats. Aperçu d’une découverte du réseau… En réponse aux paquets envoyés, le Freeplayer diffuse donc son adresse d’accès aux services device.xml sur le port 54243. Cette url d’accès aux services est disponible uniquement lorsque le FreePlayer est sous tension et allumé mais pas lorsqu’il est éteint complétement ou en veille, voilà la solution ! Pour information, voici le contenu du fichier de description : Mais dans notre cas le contenu du fichier ne sera pas utile... Il ne reste plus qu’à mettre à profit tout ceci dans un script et le tour est joué Exemple d’utilisation en LUA dans une scène: local httpClient = net.HTTPClient(); httpClient:request('http://192.168.1.110:54243/device.xml', { success = function(result) local status = tonumber(result.status) if (status ~= 200) then print('Status: OFF or In Standby Mode') elseif (status == 200) then print('Status: ON') end end, error = function(err) print('Connection refused') end, options = { method = 'GET', headers = { ['Accept'] = 'text/html, application/xhtml+xml', ['Accept-Language'] = 'fr-FR' } } }); Exemple d’utilisation en LUA dans un Virtual Device: local HC2 = Net.FHttp('192.168.1.110', 54243); local result, status, errorCode = HC2:GET("/device.xml"); if errorCode == 0 then if tonumber(status) == 200 then fibaro:debug('Status: ON') else fibaro:debug('Status: OFF or In Standby Mode') end else fibaro:debug('Connection refused') end Maintenant c'est à vous de jouer pour l’intégrer dans vos scénarios
  24. Salut tout le monde, Tout est dans le titre, quelqu'un a deja fait un VD pour la Freebox Player ? Je ne parle pas evidemment du plugin de Krikroff, mais bien d'un VD ;-) Me connaissant, si je mets un plugin tiers, je vais oublier de l'enlever avant de faire une MAJ et après chaque MAJ faut remettre le plugin lol
  25. Ce bout de code LUA permet de faire un Ping sur un équipement de votre réseau. Première publication sur le Forum Fibaro ici http://forum.fibaro.com/viewtopic.php?t=1927 Les variables sont les suivantes: deviceIp : Adresse IP du périphérique réseau à contacter. devicePort : Port maxRetryProcess : Nombre de tentatives pour contacter le périphérique. --[[ %% properties %% globals --]] -- Ping v 1.0.1 [05-2013] -- Copyright © 2013 Jean-christophe Vermandé fibaro:log("Start process"); local _deviceIp = "192.168.1.250"; local _devicePort = 80; local _maxRetryProcess = 5; -- recursive function to ping device local function _ping(retry) retry = retry or 0; --open the socket local tcpSocket = Net.FTcpSocket(_deviceIp, _devicePort); --set the read timeout tcpSocket:setReadTimeout(250); --notify user fibaro:log("Search on the local network, try #" .. retry .. " please wait..."); fibaro:sleep(250); --send packet local bytes, errorCode = tcpSocket:write("test"); --check for error if errorCode == 0 then return true; else if retry < _maxRetryProcess then fibaro:log("Retry process, please wait..."); fibaro:sleep(1000); return _ping(retry + 1); end return false; end end --ping device, secure with pcall to catch errors. local f, result = pcall(_ping); if (f) then if (result == true) then fibaro:log("Device has been found, is awake and listening."); else fibaro:log("Device was not found!"); end else fibaro:log("Error: " .. f); end Notez l'utilisation de la fonction LUA pcall qui permet l’exécution du code en mode "protégé" ou "encapsulé", c'est à dire qu' il ne lèvera pas d' erreur dans le processus de votre box si jamais le code provoquait une erreur. La box est protégée, vos scènes aussi .