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 'hc2'.



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.


72 résultats trouvés

  1. HC2 - Version 4.121 - Beta- 27/04/2017 Liste des modifications de la version beta 4.121: Version 4.121 Beta New improvements: - Refurbished layout of Heating Panel - simplified process of creating heating schedule. - Extended door lock support - support for the PIN codes available from the device. Resolved issues: - Error after editing location in Location Panel. - Error 503 during moving section. - Minor graphic fixes.
  2. Version 1.3.1.9 beta (27-04-2017) - Multi (Fr/En) Compatible : Windows Vista, Win7 32/64 bits, Windows 8.xx Mac OSX 10.8.x avec Virtual machine "Parallels Desktop" et Windows 7 64 bits. Mac OSX 10.9.x avec XP virtual machine / VirtualBox. Compatible HC2 V3.x / HC2 V4.x / HCLite V4.x Cette application a été réalisée dans le but d’aider la communauté gravitant autour du système Home Center 2 Fibaro, de l’installateur à l’utilisateur final en passant par le développeur souhaitant faire évoluer l’écosystème du HC2. Le HC2 Toolkit est basé pour une grande partie sur le SDK .Net qui est mon premier projet en rapport avec l’écosystème Fibaro. Dès l’origine l’application a été prévue pour être multilingue et se limite pour l’instant à l’anglais qui est la langue première du projet afin d’être accessible au plus grand nombre, au français c’est un minimum et je l’espère bientôt au Polonais. Grâce au Toolkit, il est possible de mieux comprendre comment fonctionne l’API du HC2 et d’obtenir rapidement des informations difficilement accessibles depuis l’interface web sur les périphériques enregistrés, les scènes, les périphériques virtuels, les utilisateurs etc. Des possibilités de sauvegardes avancées sont aussi disponibles et seront complétées au fil des mises à jour. Il est déjà possible d’exporter l’intégralité des scènes d’un seul click même les scènes « BLOC », d’exporter tous les codes LUA à la demande : scènes, périphériques virtuels. L’import et l’export des périphériques virtuels sont aussi supportés. Une exportation spécialement développée à des fins d’analyse et de comparaison des périphériques est disponible. La plupart des données brutes de l’API peuvent être chargées et enregistrées soit au format JSON soit au format XML pour l’étude et le développement. Certaines actions sont implantées comme lancer une scène, activer ou désactiver un « binary switch », le « ping » à distance ou en local du HC2, la vérification de l’accessibilité du serveur du HC2, la découverte automatique sur le réseau. Le Toolkit possède un éditeur LUA intégré ou tous les espaces de nom Fibaro sont documentés et les méthodes accessibles en écrivant le code (proposition de code automatique). Un système de « snippets » est aussi disponible et propose des extraits de code (aide à la programmation), de simples instructions conditionnelles, boucles à des fonctions avancées. La liste des fonctionnalités est non exhaustive et en constante évolution, la road map est déjà bien remplie ! Je compléterais cette note lorsque j’aurais un peu plus de temps devant moi. Version 1.3.1.9 beta - HCToolkit_1.3.1.9_beta.zip - Correction : Err503 / crash du serveur après importation d'une scène. - Correction : Types manquants - Correction : Traductions - Correction : Crash de l'application - Amélioration : Mise à jour des dépendances Version 1.3.1.6 beta - Nouveau: Le code LUA (scènes) peut-être édité puis poussé vers le contrôleur (Publish/Reload) - Nouveau: Création de pièces en lot (plusieurs en 1 X avec un même nom prédéfini), Edition (nom, section), Suppression, Exportation, Importation - Nouveau: Création de scènes en lot, Edition (nom, pièce, section, etc.), Suppression, Exportation, Importation - Nouveau: Création de section en lot, Edition (nom), Suppression, Exportation, Importation - Amélioration : Périphérique: Edition du nom, de la section, de la pièce, Suppression - Amélioration : Périphériques virtuels: Edition (nom, pièce), Exportation, Importation - Amélioration : Amélioration significative du traitement des données - Correction : Bogue mineur de l'installeur - Correction : Traductions - Correction : Types manquants - Correction : Bogues mineurs Version 1.2.0.3 - Correctif: Téléchargement des icônes des appareils (devices) : l'option "all" ne permet pas le téléchargement et il faut sélectionner à la main - Correctif: Au lancement on obtient l'interface en anglais bien que "French" soit présélectionné - On re-sélectionne French et c'est bon... jusqu'au redémarrage suivant - Correctif: Problème cosmétique dans la fenêtre "Paramètres de l'application" au niveau du "temps en secondes" Version 1.2.0.1 Ajout : Il est maintenant possible de « filtrer » l’enregistrement des icônes par type et / ou basetype depuis le « Menu Données » / « Appareils » / « Télécharger Toutes les Icônes » Amélioration : Nouvelle convention de nommage pour l’enregistrement des icônes. Exemple : 18-IconID[1012]-DeviceID[31]-Pioneer VSX-2021.png Amélioration : Affiche des noms de pièces dans la vue « Appareils » Correction : Mauvais chemin utilisé par l’application pour la commande «Périphériques virtuels » / « Sauvegarder tous les périphériques » Correction : Problème avec l’aperçu d’impression dans l’éditeur LUA Correction : Affichage du modèle de paramètres (régression HC2 V4.05X et >) Correction : Affichage des icônes « Appareils » et « Pièces » (régression HC2 V4.063 et >) Amélioration : Mise à jour des dépendances (librairies utilisées par le projet) Attention : Le Frameworks .NET 4.5.2 de Microsoft doit être installé (https://www.microsoft.com/fr-FR/download/details.aspx?id=42642). Notez que .NET Framework 4.5 n'est pas pris en charge sur Windows XP. Version 1.1.0.6 - Ajout: Nouvelle boîte de dialogue pour afficher les associations d'un périphérique. - Ajout: Nouvelle boîte de dialogue pour afficher les paramètres d'un périphérique. - Ajout: Onglet "Plugins" - Ajout: Affichage de la propriété "Configured" dans le tableau des périphériques. - Amélioration: Info-bulles pour le type et le basetype interne pour les périphériques et les plugins. - Amélioration: Affichage d'informations sur les interfaces utilisées dans les propriétés et les actions. - Amélioration: La boîte de dialogue "Template (Modèle de périphériques)" à été retravaillé. - Correction: Les descriptions dans la boîte de dialogue "Template (Modèle de périphériques)" n'utilisait la langue sélectionnée dans l'interface - Correction: Interfaces manquantes. - Correction: Propriété "Configured" toujours vide dans le rapport de configuration. - Correction: Propriétés manquantes (batteryLevel, configured, parentID, nodeID) suite à la version V1.1.0.0 - Correction: Traductions - Correction: Bogues mineurs Version 1.1.0.0 Beta - Support de la V4 du HC2 (reste compatible avec l'ancienne V3) - Amélioration: Détection automatique de la version de l'API. - Amélioration: Performance de la communication réseau. - Amélioration: Nouveau mécanisme d'exportation de données, plus rapide et plus lisible. - Amélioration: Sauvegardez du "crashdump" dans le dossier "documents utilisateur" pour éviter l' exception "UnauthorizedAccess". - Nouveau: Exportation des variables globales au format XML, une par une ou toutes à la fois dans le menu "Variables globales". - Nouveau: Enregistrer toutes les icônes, menu "Pièces", "Scènes", "périphériques". - Nouveau: Ajout de la commande 'UpdateMeshNetwork' dans le menu périphérique. Peut aider les utilisateurs du HClite - Nouveau: Affichage du nombre de plugins / NÅ“ud de plugins - Nouveau: indentation automatique du code dans l'Éditeur LUA. - Nouveau: option Afficher / Masquer les numéros de lignes dans l'éditeur LUA. - Nouveau: Possibilité de changer la taille de la police dans l'éditeur LUA. - Nouveau: Possibilité de changer la famille de police dans l'éditeur LUA. - Correction: Traductions manquantes. - Correction: Bogues mineurs. Un fil sur le Toolkit est consultable aussi sur le forum officiel ici http://goo.gl/pKA35K
  3. Bonsoir, Si comme moi vous souhaitez piloter votre TV Sony mais que le Plugin Sony développé par Fibaro ne fonctionne pas, , voici une scéne et un VD qui permettont de piloter la TV via notre HC2. Pour commencer : _ Créer une variable globale en la nommant : cmd_sony_tv _ Créer une scène en LUA et copier ce code : --[[ %% autostart %% properties %% globals --]] local ip = 'xxx.xxx.x.xx' local port = '80' local xAuthPSK = '1111' local irCode = json.decode([[ [ {"name":"Num1","value":"AAAAAQAAAAEAAAAAAw=="}, {"name":"Num2","value":"AAAAAQAAAAEAAAABAw=="}, {"name":"Num3","value":"AAAAAQAAAAEAAAACAw=="}, {"name":"Num4","value":"AAAAAQAAAAEAAAADAw=="}, {"name":"Num5","value":"AAAAAQAAAAEAAAAEAw=="}, {"name":"Num6","value":"AAAAAQAAAAEAAAAFAw=="}, {"name":"Num7","value":"AAAAAQAAAAEAAAAGAw=="}, {"name":"Num8","value":"AAAAAQAAAAEAAAAHAw=="}, {"name":"Num9","value":"AAAAAQAAAAEAAAAIAw=="}, {"name":"Num0","value":"AAAAAQAAAAEAAAAJAw=="}, {"name":"Num11","value":"AAAAAQAAAAEAAAAKAw=="}, {"name":"Num12","value":"AAAAAQAAAAEAAAALAw=="}, {"name":"Enter","value":"AAAAAQAAAAEAAAALAw=="}, {"name":"GGuide","value":"AAAAAQAAAAEAAAAOAw=="}, {"name":"ChannelUp","value":"AAAAAQAAAAEAAAAQAw=="}, {"name":"ChannelDown","value":"AAAAAQAAAAEAAAARAw=="}, {"name":"VolumeUp","value":"AAAAAQAAAAEAAAASAw=="}, {"name":"VolumeDown","value":"AAAAAQAAAAEAAAATAw=="}, {"name":"Mute","value":"AAAAAQAAAAEAAAAUAw=="}, {"name":"TvPower","value":"AAAAAQAAAAEAAAAVAw=="}, {"name":"Audio","value":"AAAAAQAAAAEAAAAXAw=="}, {"name":"MediaAudioTrack","value":"AAAAAQAAAAEAAAAXAw=="}, {"name":"Tv","value":"AAAAAQAAAAEAAAAkAw=="}, {"name":"Input","value":"AAAAAQAAAAEAAAAlAw=="}, {"name":"TvInput","value":"AAAAAQAAAAEAAAAlAw=="}, {"name":"TvAntennaCable","value":"AAAAAQAAAAEAAAAqAw=="}, {"name":"WakeUp","value":"AAAAAQAAAAEAAAAuAw=="}, {"name":"PowerOff","value":"AAAAAQAAAAEAAAAvAw=="}, {"name":"Sleep","value":"AAAAAQAAAAEAAAAvAw=="}, {"name":"Right","value":"AAAAAQAAAAEAAAAzAw=="}, {"name":"Left","value":"AAAAAQAAAAEAAAA0Aw=="}, {"name":"SleepTimer","value":"AAAAAQAAAAEAAAA2Aw=="}, {"name":"Analog2","value":"AAAAAQAAAAEAAAA4Aw=="}, {"name":"TvAnalog","value":"AAAAAQAAAAEAAAA4Aw=="}, {"name":"Display","value":"AAAAAQAAAAEAAAA6Aw=="}, {"name":"Jump","value":"AAAAAQAAAAEAAAA7Aw=="}, {"name":"PicOff","value":"AAAAAQAAAAEAAAA+Aw=="}, {"name":"PictureOff","value":"AAAAAQAAAAEAAAA+Aw=="}, {"name":"Teletext","value":"AAAAAQAAAAEAAAA\/Aw=="}, {"name":"Video1","value":"AAAAAQAAAAEAAABAAw=="}, {"name":"Video2","value":"AAAAAQAAAAEAAABBAw=="}, {"name":"AnalogRgb1","value":"AAAAAQAAAAEAAABDAw=="}, {"name":"Home","value":"AAAAAQAAAAEAAABgAw=="}, {"name":"Exit","value":"AAAAAQAAAAEAAABjAw=="}, {"name":"PictureMode","value":"AAAAAQAAAAEAAABkAw=="}, {"name":"Confirm","value":"AAAAAQAAAAEAAABlAw=="}, {"name":"Up","value":"AAAAAQAAAAEAAAB0Aw=="}, {"name":"Down","value":"AAAAAQAAAAEAAAB1Aw=="}, {"name":"ClosedCaption","value":"AAAAAgAAAKQAAAAQAw=="}, {"name":"Component1","value":"AAAAAgAAAKQAAAA2Aw=="}, {"name":"Component2","value":"AAAAAgAAAKQAAAA3Aw=="}, {"name":"Wide","value":"AAAAAgAAAKQAAAA9Aw=="}, {"name":"EPG","value":"AAAAAgAAAKQAAABbAw=="}, {"name":"PAP","value":"AAAAAgAAAKQAAAB3Aw=="}, {"name":"TenKey","value":"AAAAAgAAAJcAAAAMAw=="}, {"name":"BSCS","value":"AAAAAgAAAJcAAAAQAw=="}, {"name":"Ddata","value":"AAAAAgAAAJcAAAAVAw=="}, {"name":"Stop","value":"AAAAAgAAAJcAAAAYAw=="}, {"name":"Pause","value":"AAAAAgAAAJcAAAAZAw=="}, {"name":"Play","value":"AAAAAgAAAJcAAAAaAw=="}, {"name":"Rewind","value":"AAAAAgAAAJcAAAAbAw=="}, {"name":"Forward","value":"AAAAAgAAAJcAAAAcAw=="}, {"name":"DOT","value":"AAAAAgAAAJcAAAAdAw=="}, {"name":"Rec","value":"AAAAAgAAAJcAAAAgAw=="}, {"name":"Return","value":"AAAAAgAAAJcAAAAjAw=="}, {"name":"Blue","value":"AAAAAgAAAJcAAAAkAw=="}, {"name":"Red","value":"AAAAAgAAAJcAAAAlAw=="}, {"name":"Green","value":"AAAAAgAAAJcAAAAmAw=="}, {"name":"Yellow","value":"AAAAAgAAAJcAAAAnAw=="}, {"name":"SubTitle","value":"AAAAAgAAAJcAAAAoAw=="}, {"name":"CS","value":"AAAAAgAAAJcAAAArAw=="}, {"name":"BS","value":"AAAAAgAAAJcAAAAsAw=="}, {"name":"Digital","value":"AAAAAgAAAJcAAAAyAw=="}, {"name":"Options","value":"AAAAAgAAAJcAAAA2Aw=="}, {"name":"Media","value":"AAAAAgAAAJcAAAA4Aw=="}, {"name":"Prev","value":"AAAAAgAAAJcAAAA8Aw=="}, {"name":"Next","value":"AAAAAgAAAJcAAAA9Aw=="}, {"name":"DpadCenter","value":"AAAAAgAAAJcAAABKAw=="}, {"name":"CursorUp","value":"AAAAAgAAAJcAAABPAw=="}, {"name":"CursorDown","value":"AAAAAgAAAJcAAABQAw=="}, {"name":"CursorLeft","value":"AAAAAgAAAJcAAABNAw=="}, {"name":"CursorRight","value":"AAAAAgAAAJcAAABOAw=="}, {"name":"ShopRemoteControlForcedDynamic","value":"AAAAAgAAAJcAAABqAw=="}, {"name":"FlashPlus","value":"AAAAAgAAAJcAAAB4Aw=="}, {"name":"FlashMinus","value":"AAAAAgAAAJcAAAB5Aw=="}, {"name":"AudioQualityMode","value":"AAAAAgAAAJcAAAB7Aw=="}, {"name":"DemoMode","value":"AAAAAgAAAJcAAAB8Aw=="}, {"name":"Analog","value":"AAAAAgAAAHcAAAANAw=="}, {"name":"Mode3D","value":"AAAAAgAAAHcAAABNAw=="}, {"name":"DigitalToggle","value":"AAAAAgAAAHcAAABSAw=="}, {"name":"DemoSurround","value":"AAAAAgAAAHcAAAB7Aw=="}, {"name":"*AD","value":"AAAAAgAAABoAAAA7Aw=="}, {"name":"AudioMixUp","value":"AAAAAgAAABoAAAA8Aw=="}, {"name":"AudioMixDown","value":"AAAAAgAAABoAAAA9Aw=="}, {"name":"PhotoFrame","value":"AAAAAgAAABoAAABVAw=="}, {"name":"Tv_Radio","value":"AAAAAgAAABoAAABXAw=="}, {"name":"SyncMenu","value":"AAAAAgAAABoAAABYAw=="}, {"name":"Hdmi1","value":"AAAAAgAAABoAAABaAw=="}, {"name":"Hdmi2","value":"AAAAAgAAABoAAABbAw=="}, {"name":"Hdmi3","value":"AAAAAgAAABoAAABcAw=="}, {"name":"Hdmi4","value":"AAAAAgAAABoAAABdAw=="}, {"name":"TopMenu","value":"AAAAAgAAABoAAABgAw=="}, {"name":"PopUpMenu","value":"AAAAAgAAABoAAABhAw=="}, {"name":"OneTouchTimeRec","value":"AAAAAgAAABoAAABkAw=="}, {"name":"OneTouchView","value":"AAAAAgAAABoAAABlAw=="}, {"name":"DUX","value":"AAAAAgAAABoAAABzAw=="}, {"name":"FootballMode","value":"AAAAAgAAABoAAAB2Aw=="}, {"name":"iManual","value":"AAAAAgAAABoAAAB7Aw=="}, {"name":"Netflix","value":"AAAAAgAAABoAAAB8Aw=="}, {"name":"Assists","value":"AAAAAgAAAMQAAAA7Aw=="}, {"name":"ActionMenu","value":"AAAAAgAAAMQAAABLAw=="}, {"name":"Help","value":"AAAAAgAAAMQAAABNAw=="}, {"name":"TvSatellite","value":"AAAAAgAAAMQAAABOAw=="}, {"name":"WirelessSubwoofer","value":"AAAAAgAAAMQAAAB+Aw=="} ] ]]) function printIrCode() for i in pairs(irCode) do print(irCode[i].name) end end function irCodeLookup(irName) for i in pairs(irCode) do if (irCode[i].name == irName) then return irCode[i].value end end end -- Escape string to make suitable for embedding in HTML. function htmlize(s) s = s:gsub('&', '&') s = s:gsub('<', '<') s = s:gsub('>', '>') return s end --Helper for priniting nested table function deep_print(tbl) if (type(tbl) == "table") then for i, v in pairs(tbl) do if type(v) == "table" then deep_print(v) else print(i, v) end end else print(htmlize(tbl)); end end local successCallback = function(resp) print('At ' .. os.date() .. ' - status = ' .. resp.status) deep_print(resp.data) end local errorCallback = function(err) print('error = ' .. err) end function sendIrCode(name) local value = irCodeLookup(name) if (value == nil) then print('IR Code not found') return end local httpClient = net.HTTPClient(); httpClient:request('http://'..ip..':'..port..'/sony/IRCC', { success = successCallback, error = errorCallback, options = { method = 'POST', headers = { ['Content-Type'] = 'text/xml; charset=UTF-8', ['X-Auth-PSK'] = xAuthPSK, ['User-Agent'] = 'HC2/537.36 (KHTML, like Gecko)', ['SOAPACTION'] = '"urn:schemas-sony-com:service:IRCC:1#X_SendIRCC"' }, data = [[<?xml version="1.0"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:X_SendIRCC xmlns:u="urn:schemas-sony-com:service:IRCC:1"><IRCCCode>]]..value..[[</IRCCCode></u:X_SendIRCC></s:Body></s:Envelope>]] } }); end local value = fibaro:getGlobalValue("cmd_sony_tv"); if (string.len(value) > 0) then print(''..value) sendIrCode(value) end _ Renseigner l'adresse IP de votre TV dans la scène. _ Importer le VD : Telecommande_Sony_TV.vfib _ Noter l"ID de la scène créée et renseigner l'id pour chaque bouton du VD dans la ligne : fibaro:startScene(4); Il est possible d'ajouter des boutons supplémentaires (se référer aux commandes qui se trouvent au début de la scène). J'ai mis les fonctions principales dont je me sers le plus souvent donc libre à vous de personnaliser votre télécommande en fonction de vos besoin. Je tiens à remercier @Krikroff pour son aide et sa dispo Toujours prêt à rendre service notre Jc.
  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. ZerobrainStudio pour ecrire et tester vos scripts lua directement sur votre PC Merci a steven et Fred le ouf Dans un premier temps il faut telecharger ZerobrainStudio. Choisir la version qui correspond a votre systéme d'explotation pour moi ce sera Windows 32bit (exe installer) https://studio.zerobrane.com/download?not-this-time Il suffit d'installer le programme comme vous en avez l'habitude et bien regarder ou il sera installer Ensuite il va falloir ajouter le fichier que @Steven a partager sur le forum lualibs1.01.zip By Steven Ajout : le fibaro:sleep(<millisecondes>) fibaro:countScene() retournera toujours 1. Manque encore une astuce pour simuler le fibaro:getSourceTrigger() Il ne vous reste plus qu'a décompresser ce fichier dans le répertoire C:.......\ZeroBraneStudio\lualibs Utilistation : require("FibaroSceneAPI") hc2_user = "admin" hc2_pwd = "admin" hc2_ip = "192.168.x.x" -- Inséré votre code en dessous de cette ligne ----------------- Et pour ceux qui n'aime pas l'anglais : Edit -> Preferences -> Settings: System --[[-- Use this file to specify **System** preferences. Review [examples](+C:\PRGMS\ZeroBraneStudio\cfg\user-sample.lua) or check [online documentation](http://studio.zerobrane.com/documentation.html) for details. --]]-- language = "fr" Et redémarrer l'application Pour ceux qui souhaite les même couleurs que dans leur HC2, il faut aller dans le menu : Edit -> Preferences -> Settings: User et copier le code ci-dessous puis redémarrer. --[[-- Use this file to specify **User** preferences. Review [examples](+C:\PRGMS\ZeroBraneStudio\cfg\user-sample.lua) or check [online documentation](http://studio.zerobrane.com/documentation.html) for details. --]]-- styles = loadfile('cfg/tomorrow.lua')('TomorrowNight') stylesoutshell = styles -- apply the same scheme to Output/Console windows styles.auxwindow = styles.text -- apply text colors to auxiliary windows styles.calltip = styles.text -- apply text colors to tooltips local colors = { orange = {255,158,89}, braun = {217,191,140}, darkgray = {38,38,38}, blue = {89,158,255}, green = {188,210,121}, red = {179,94,77}, white = {255,255,255}, gray = {102,102,102} } styles.comment = {fg = colors.gray} styles.operator = {fg = colors.white} styles.number = {fg = colors.red} styles.stringtxt = {fg = colors.green} styles.keywords0 = {fg = colors.blue} styles.text = {fg = colors.braun, bg = colors.darkgray} styles.keywords3 = {fg = colors.orange} styles.keywords4 = {fg = colors.orange} styles.keywords5 = {fg = colors.orange} styles.keywords6 = {fg = colors.orange} styles.keywords7 = {fg = colors.orange} Encore une amélioration : Copier le fichier ci-joint "fibaro.lua" dans le sous-répertoire /api/lua/ fibaro.lua puis dans le menu : Edit -> Preferences -> Settings: System ajouter cette ligne : api = {luadeb = {'fibaro'}} Vous allez avoir l'auto-complétion des commandes fibaro ainsi que leur description. Astuce. Pour pouvoir tester les triggers, voici le code à utiliser __fibaroSceneSourceTrigger = {type="global", name="Pushbullet"} -- __fibaroSceneSourceTrigger = {type="global", name="Pushbullet"} -- __fibaroSceneSourceTrigger = {type="property", deviceID=6, propertyName="value"} -- __fibaroSceneSourceTrigger = {type="autostart"} -- __fibaroSceneSourceTrigger = {type="other"} print(fibaro.getSourceTrigger().type) -- global print(fibaro.getSourceTrigger().name) -- Pushbullet __fibaroSceneSourceTrigger = {type="autostart"} print(fibaro.getSourceTrigger().type) -- autostart Il suffit donc de modifier la variable __fibaroSceneSourceTrigger en utilisant un des exemple fourni. il est aussi possible de débuguer ligne à ligne, et même de modifier dynamiquement la valeur d'une variable directement en cours d'exécution. Allez, je me lance pour mon 1er tuto Ouvrir Zerobranstudio et afficher les fenêtres suivantes si ce n'est pas encore déjà fait insérer le code suivant dans une nouvelle fenêtre vide de Zerobranstudio (on va réviser les multiplications ) local boucle = true local i = 1 local j = 1 while boucle == true do i = i + 1 j = j + 2 print(i.." x "..j.." = "..i * j) end Pour activer le suivi dynamique des variables, il suffit de sélectionner le nom de la variable que l'on veut suivre, puis de faire clic droit dessus pour faire apparaitre un menu contextuel. Il faut ensuite sélectionner l'option Add watch expression comme dans l'image ci dessous. Dans notre cas, il faut le faire pour les 2 variables i & j. Pour passer en mode debug, appuyer 1 fois sur la touche F5, la fenêtre doit ressembler à ça. Le curseur vert est positionné sur la première instruction, et la fenêtre Watch affiche les valeurs de i et j (à nil pour le moment ce qui est logique) Appuyer maintenant plusieurs fois sur la touche F10 pour exécuter le programme pas à pas, jusqu'à afficher le premier résultat de la multiplication, comme ci dessous. Le résultat de la multiplication est en cohérence avec les valeurs de i et j. Pour tester maintenant la modification à la volée d'une variable, on va continuer l'exécution du programme et réexécuter une seconde fois la boucle en appuyant plusieurs fois sur la touche F10 mais sans exécuter l'instruction print, comme dans l'image ci dessous. La valeur des 2 variables a bien été modifiée par programmation. Pour modifier maintenant dynamiquement la valeur de j, il faut cliquer sur l'onglet Remote console, taper la ligne j = 20 puis appuyer sur la touche Entrée pour valider la commande, comme dans l'image ci dessous. On peut alors voir que la valeur de j a bien été modifiée dans la fenêtre de Watch. Il suffit maintenant de recliquer sur l'onglet Output (suspended), et d'appuyer de nouveau sur la touche F10 pour reprendre l'exécution du programme. On constate alors que la valeur de j mise à 20 à la main a bien été prise en compte dynamiquement par le programme. Je remercie encore une fois steven pour ce super travail
  6. Google Calendar vers HC2/HCL (dernière mise a jour : 23/02/15) Bien que d'autres solutions permettant de piloter sa box depuis un agenda Google existent déjà (je pense bien entendu aux formidables travaux de Kriek), je n’en ai pas trouvé qui réponde parfaitement à mes besoins. Je vous propose donc de partager ce à quoi je suis arrivé... Le besoin : Le but étant de « programmer » l’ouverture/fermeture de mon portail à date et heure fixe, de lancer une machine à laver a telle heure, de gérer une variable indiquant si je suis en congé ou pas, etc. (voilà ça va pas péter plus loin que ça), j’ai besoin de : quelque chose de simple à utiliser qui me permet en ajoutant un événement dans un calendrier Google de déclencher une scène ou un bouton sur ma box, quelque chose de simple à configurer, et surtout sans script LUA : en fait j’ai une HC2 mais je dois également piloter une HC Lite et je veux donc une solution unique (v1.2) pour certains besoin "urgents" ou il est souvent plus rapide de s'envoyer un mail que d'ajouter une entrée dans le calendrier, avoir la possibilité de traiter les mêmes commandes mais envoyées par mail cette fois ci. La commande sera traitée dans la foulée de la récéption du message, il n'y a pas de notion de scheduling dans ce cas. La solution envisagée : Avec la contrainte de la HC Lite, il me faut trouver une solution d’héberger « le script » ailleurs. Pas possible de l’embarquer sur la box et d’être autonome. En même temps, vu que je veux utiliser Google Calendar (pour des raison de facilité d’accès et de gestion), autant héberger mon script sur Google Drive. Afin d’en faciliter l’utilisation et dans le but de partager tout ce bordel, je suis passé par une spreadsheet Google qui embarque mon script. En effet, je trouve ça plus « simple » de modifier le texte d’une cellule plutôt que de toucher a des lignes de code. Ceci dit, faudra quand même se retrousser un poil les manches pour installer le tout… Installation : 1) Tout d’abord il faut récupérer la spreadsheet Google dont le lien de partage est le suivant : https://docs.google.com/spreadsheets/d/1JdygLOXaGJdJ9WL4t_UUHejao6vfYurjc_D7PybdWro/edit?usp=sharing Copiez la dans votre Google Drive en faisant Fichier > Créer une copie... depuis la spreadsheet (v2.0) Depuis la v2, les données ont été séparées sur 3 onglets différents : Configuration : Toutes les données de configuration ont été regroupées ici Commandes : Permet de définir les différentes commandes mises à disposition Data : il s'agit des données interne à la spreadsheet, il n'y a rien a toucher ici. 2) Modifiez le contenu de la premiere feuille afin de définir les différents paramètres de connexion a votre Home Center (qu’elle soit Lite ou 2) et l’ID du calendrier Google qui sera utilisé pour gérer l’activité de votre box. Donc si vous n’avez pas de calendrier dédié, c’est le moment de le créer… (v1.2) Sélectionnez la version du firmware que vous avez 3.x ou 4.x. (v1.2) Vous avez la possibilité de spécifier quel label Gmail est a surveiller (cf. Gestion des mails ci dessous) ainsi que les caractères qui permettrons d'identifier le contenu utile du mail de votre signature de mail (dans le cas ou vous en utilisez une) (v2.0) Vous avez maintenant la possibilité d'activé ou pas la prise en compte des événement du calendrier et/ou des emails (v2.0) Dans le cas des traitements de emails, il y a la possibilité de demander un accusé de réception de la commande. En gros vous envoyez un email contenant la commande a executer et on vous répond si l'action a été traitée avec succès ou pas. 3) Dans la partie « Définition des commandes » il s’agit de définir les différentes ordres qui seront reconus : ID : il s’agit de l’identifiant de la commande. A vous de le choisir. C’est cet identifiant que vous allez utiliser par la suite dans votre calendrier Google Description : bon je passe sur la description de ce champs... Action : Différentes action sont gérées par le script : gestion de scenes, d’interrupteurs, de variateurs, de volets roulants ou de modules virtuels. En fonction de ce que vous sélectionnez, les 3 autres paramètres du tableau auront une signification bien précise. Une note dans chaque cellule est ajouté automatiquement afin de vous guider dans la saisie de la définition de votre commande Module ID : En fonction du type d’action il faudra renseigner l’ID du module ou de la scene correspondante Paramètre 1 et 2 : dépendent aux aussi du type d’action sélectionné (Start/stop pour une scene, on/off pour un inter, % de variation pour un dimmer, etc.) 4) Basculez dans le script associé via le menu Outils>Editeur de scripts… 5) Vous allez devoir activer les API Google nécessaires via le menu Ressources>Services avancés de Google… Dans la fenêtre qui s’ouvre, activez Calendar API (si ce n’est pas déjà fait), puis activez le aussi dans la Google Developpers Console (vous avez un lien dans cette même fenêtre qui vous y conduit) 6) Ajoutez un déclencheur sur votre script afin d’executer chaque minute la fonction Gcal2HC : - Depuis l'editeur de script, menu Ressources > Déclencheurs du projet actuel - Dans la nouvelle fenêtre qui vous indique qu'aucun déclencheur n'est actuellement configuré, cliquez sur le lien pour en ajouter un - Configurez votre déclencheur en sélectionnant la fonction Gcal2HC et l'événement En fonction du temps/Minuteur/Chaque minute 7) Maintenant que tout est activé et qu’une commande a été configurée, revenez dans votre spreadsheet 8) Allez dans le menu Gcal2HC tools>Tester une commande. (v2.0) Une nouvelle fenêtre listant les commandes disponibles va s'ouvrir. En cliquant sur le bouton de la commande vous pouvez tester directement cette dernière. Un certain nombre d’autorisations vont vous être demandé… 9) (v2.0) Même si vous n'avez pas encore créé d'événement ou envoyé un email, passez sur les autres menus Gcal2HC tools>Relever les événements et Gcal2HC tools>Relever les emails afin de valider les autorisations d'accès nécessaires Bon à partir de là , si vous n'utilisez pas la fonctionnalité de gestion par email vous pouvez passer au paragraphe Utilisation sinon configurez votre compte gmail comme indiqué ci-dessous … (v1.2) Configuration Gmail : Le principe de cette fonctionnalité est simple : au lieu de saisir une commande dans la description d'un événement calendrier, on envoi tout simplement un email contenant cette description. Sur réception de l'email, la commande est analysée (comme pour les événement du calendrier) et exécutée dans la foulée. Afin de rendre ce processus simple, on ne va traiter que les messages reçus sur le compte Gmail et qui ont le label qui a été initialisé dans la partie déclarative de la spreadsheet. Les labels imbriqués sont supportés, il suffit de les séparer par un '/'. Exemple : Domotique/ToDo Je vous laisse le soin de créer une règle dans votre compte Gmail afin de "tagger" automatiquement les message qui vont bien avec le bon label (par exemple une règle basé sur l'expediteur, le destinataire et l'objet du message.) C'est le contenu du message (le body) qui doit contenir la chaine texte correspondant à la commande a executer. Dans le cas (et c'est souvent le cas sur mobile) ou vous avez une signature qui s'ajoute automatiquement a votre message, vous pouvez spécifier les caractères qui permettrons de délimiter la partie utile du message de votre signature (par exemple --) Attention : Dès lors que le message est traité il est automatiquement déplacé dans la corbeille. (v2.0) Si vous envoyez la commande HELP par email, on vous répond avec la liste des commandes disponibles. C'est ppratique lorsqu'on a beaucoup de commandes et qu'on ne se souvient plus de l'ID des commandes... Utilisation : 3 types d’utilisations sont possibles : 1) La première, que vous connaissez déjà , consiste à déclencher l’action directement depuis la spreadsheet (cf. étapes 7 et 8 de l’installation). Ceci permet de mettre au point une commande sans avoir à la programmer dans son calendrier et attendre que tout se déclenche. 2) Déclenchement programmé depuis votre calendrier. Pour cela il suffit de créer un événement à une heure précise (sans durée, donc heure de début = heure de fin). Vous mettez le titre que vous désirez (pour que ce soit parlant pour vous) et ajoutez dans le champs Description l’ID de la commande à executer. Voilà c’est tout, toutes les minutes le script va tourner et dès qu’un événement arrive à échéance, la commande associée sera exécutée. 3) (v1.2) Déclenchement suite à la réception d'un email Voici quelques screenshots : Remarques : 1) J’utilise l’API http pour piloter la box, donc ça n’a rien a voir avec la solution de Kriek qui est bien plus puissante et propre ! Mais bon, avec la HC Lite, je ne vois pas comment faire autrement. Peut être avec l’arrivée de la v4 (si elle arrive un jour…). Du coup obligé d'exposer la box sur le net, ça ne me plait pas trop non plus, mais bon ... 2) Je ne traite pas les événements sur la journée mais que des événement à des instant précis 3) Je ne traite pour l’instant qu’une seule commande par événement 4) Autre limitation : si pendant une certaine période la communication avec la Home Center est coupée, les événements de cette période sont tout simplement perdus… 5) Bien entendu, il ne faut pas modifier la spreadsheet ca il y a des références à des cellules en dur dans le code (houuuuu que c’est pas beauuuuu ça aussi…) 6) Dernier point, ça fait juste quelques jours que j’ai ça en place, et je n’ai pas encore tout migré de mon ancien système vers la HC2. Donc si vous rencontrez des bugs et autres bizarreries… c’est normal Historique : 09/11/2014 - v1.0 : version initiale 31/12/2014 - v1.2 : correction bug su l'utilisation du SWITCH préparation pour la sortie du la v4.x ajout du traitement des commandes envoyées par mails 04/01/2015 - v1.3 : ajout support API pour Notification, Mise a jour des variables globales et Armer les devices 23/02/2015 - v2.0 : refactoring de la spreadsheet et du code ajout de l'accusé de réception de la commande par email ajout de l'aide par email
  7. Edit : ce VD fait double emploi avec celui de Krikroff : Waze Calculator Je n'ai malheureusement pas le temps de faire un joli tuto, mais voici le gros du sujet : Connaitre le temps estimé de trajet entre votre domicile et votre travail. L'idée étant d'être averti en cas perturbation. Ce code s'appuie sur les services Google Maps. Voici donc le VD et l'icone en pièces jointes Ensuite il vous faut obtenir une clé API chez google ... voici le lien : https://developers.google.com/maps/documentation/geocoding/get-api-key Une fois la clé obtenue, il ne vous reste plus qu'à créer un scène LUA et y coller et adapter le code suivant. -- Votre clé API Google local key = "AIxxYYYzz-8sdI9BY2hEbrEO34IiNaQfELETtls" -- Votre adresse à la maison local origins = "18+rue+des+bois+Annecy+France" -- Votre adresse professionnel local destinations = "7+rue+de+la+fontaine+Geneva+Switzerland" -- Numéro du module virtuel précédemment crée/importé. local hc2_module_virtuel = 475 -- ------------------------------------------------------------------------ -- NE PAS TOUCHER -- ------------------------------------------------------------------------ local duree = "" local version = "V1.00" -- ------------------------------------------------------------------------ -- Affichage dans la console -- ------------------------------------------------------------------------ function log(message, force) force = force or false if (debug or force) then print("["..version.."] ".. __convertToString(message)) end end -- ------------------------------------------------------------------------ -- Interrogation de l'API -- ------------------------------------------------------------------------ function getResponseData(url, body, func) local httpClient = net.HTTPClient(); httpClient:request(url.."?"..body, { success = function(resp) func(json.decode(resp.data)) end, error = function(err) print('error = ' .. err) end, options = { method = 'GET' } }); end -- ------------------------------------------------------------------------ -- Mesures de l'unité interne -- ------------------------------------------------------------------------ -- ------------------------------------------------------------------------ -- Mesures de l'unité interne -- ------------------------------------------------------------------------ function getDuree(origine, destination, message, label) getResponseData("https://maps.googleapis.com/maps/api/distancematrix/json", "origins="..origine.."&destinations="..destination.."&language=fr-FR&key="..key, function(data) log("----------========== Module intérieur ==========----------") duree = data.rows[1].elements[1].duration.value log(message .. duree, true) fibaro:call(hc2_module_virtuel, "setProperty", label, math.floor(duree/60)) end ) end getDuree(origins, destinations, "Durée travail = ", "ui.Label1.value") getDuree(destinations, origins, "Durée maison = ", "ui.Label2.value") log("Last request : " .. os.date("%x - %X"), true) . Perso, j'utilise GEA pour executé cette scène toutes les 5 mn. . A vous de jouer et d'adapter tout cela à votre convenance. Durée_Trajets_(mn).vfib
  8. La mise sous surveillance de nos habitations Le forum est fourni d'un grand nombre d'informations basées sur vos expériences respectives en la matière, mais celles-ci sont relativement dispersées et il est difficile d'avoir une vision globale et d'avoir une démarche structurée afin de partir sur de bonnes bases . Après quelques recherches et lectures de certains de vos TUTOs, dont ceux présents dans la section "Alarme & Vidéo-surveillance" et ceux de @Moicphil (voir liens ci-dessous) : Utiliser une sirène extérieure filaire avec la HC2-HC Lite Module Virtuel Alarme Avancée je n'ai pas trouvé de TUTO présentant une solution avec une vision globale de la mise sous surveillance de nos habitations au travers de la domotique (en complément d'un système d'alarme classique). Du coup, partant du principe qu'un travail en équipe est toujours plus riche qu'une démarche individuelle, je souhaite partager ici la réflexion en intégrant cette sirène et ces modules dans un cadre plus large. J'ouvre donc ce TUTO pour consolider vos suggestions et préconisations pour définir les bases de spécifications fonctionnelles/techniques de la solution "idéale" visant à compléter la mise sous surveillance de nos habitations via nos HC2/HCL. Nota : l'idée ici n'est pas de se substituer à un système d'alarme classique mais de le compléter de fonctionnalités que nous apporte la domotique. Il est néanmoins toujours possible de compléter/fiabiliser son installation domotique de détecteurs filaires (portes et fenêtres) et sirènes filaires (à condition de les secourir électriquement) pour sécuriser son habitation et s'approcher des niveaux de sécurités d'un système d'alarme classique. Voici les premières bases de ces spécifications (avec illustration de certains comportements/fonctionnalités qui me paraissent intéressant à développer) : lors de l'activation de l'alarme (via un VD, l'interface web et application Fibaro sur Smartphone, clavier avec digicode, télécommande, interface type HyperHome, HomeKit, Sarah, ...) : activation des détecteurs et des VD (en fonction du type d'activation Totale, Partielle) les zones partielles pouvant être par exemple : jardin, cave, garage, abri jardin, grenier, grange, ... et pourquoi pas nos voitures garées à l'extérieure exclusion ponctuelles de certains détecteurs et/ou de VD de la surveillance exécution de la fermeture automatique ou non d'ouvrants (par zones) lorsque qu'ils sont restés ouverts avec questionnement ou non de leur fermeture et accompagnement d'un message de confirmation de leur fermeture effective. A implémenter selon les types d'ouvrants suivants : d'une porte actionnable (porte automatique de garage) des volets télé-commandables de serrures pilotables exécution de l'extinction automatique ou non des lumières allumées. A moduler en fonction de l'usage d'une simulation de présence lorsque celle-ci est activée. envoi de notifications Mail/SMS/push (en mode absence) : confirmant : Alarme Totale Activée, Alarme partielle (voir ci-dessous pour les exemples) Activée, Surveillance Extérieure Activée listant les ouvrants (portes, fenêtres, volets) restés ouverts selon les zones d'alarmes activées. listant les lumières allumées selon les zones d'alarmes activées avec questionnement sur leur extinction envoi de messages vocaux sur enceintes SONOS ou autre (en mode présence) : message TTS du genre compte à rebours 10, 9, 8, ....., 3 ,2 ,1, puis Alarme activée, Alarme (partielle) de la Cave / Garage Activée, Surveillance Extérieure Activée message TTS listant vocalement les ouvrants (portes, fenêtres, volets) restés ouverts selon les zones d'alarmes activées. message TTS listant les lumières allumées selon les zones d'alarmes activées (ex. lumière de la cave / garage est allumées) activation d'une/des caméra(s) par zone exécution d'un scénario de simulation de présence (éclairage, musique, TV) sur activation totale de l'alarme lors de la désactivation de l'alarme (via un VD, l'interface web et application Fibaro, clavier avec digicode, télécommande, ...) attention au risque de piratage de ces éléments : confirmation par saisie d'un code (via son téléphone ou autres) envoi de messages vocaux sur enceintes SONOS ou autre (message TTS, Exemples : Alarmes désactivées) envoi de notifications mail/SMS/Push (Exemples : Alarme Désactivée) désactivation des détecteurs et des VD désactivation d'une/des caméra(s) par zone arrêter l'enregistrement des caméras par zone lors d'une détection d'une intrusion sur activation partielle (dans une zone en particulier) via un device ou VD du type (détection coupure de courant, d'un brouillage du réseau Z-Ware) : envoi de messages vocaux sur enceintes SONOS ou autre (lors d'intrusion sur une zone en particulier. Exemple : la porte du garage/cave a été ouverte) allumage de lampes spécifiques (Ampoule type HUE, Led de couleurs de type Lightberry, ...) démarrer l'enregistrement des caméras par zone (exemple sur surveillance station de Synology) avec prise de photos régulières (ex. toutes les 30 secondes) allumage des éclairages extérieurs de la maison (internes/externes) s'il fait nuit envoi de messages vocaux sur une enceintes située à l'extérieur invitant l'intrus à quitter les lieux lors d'une détection d'une intrusion sur activation totale via un device ou VD du type (détection coupure de courant, d'un brouillage du réseau Z-Ware) : émission de BIP ou d'une lumières spécifique lors d'ouverture d'une porte d'entrée pour signaler que l'alarme est en fonction (retardateur avant déclenchement de l'alarme) déclenchement de la sirène, notifications : Mail, SMS, Push avec question (Exemple : Détection d'intrusion, Arrêt de la sirène O/N ?) démarrer l'enregistrement des caméras par zone (exemple sur surveillance station de Synology) avec prise de photos régulières (ex. toutes les 30 secondes) notifications (mail, MMS, Push) avec envoi de photos lors de détections par les caméras ou autres capteurs (ouvrants, mouvements, barrière infrarouge) : avec question demandant de déclencher l'alarme O/N avec un lien sur les videos ou applications gérants les caméras envoi de messages vocaux sur enceintes SONOS ou autre (message TTS, du genre : vous êtes dans une maison protégée, la police est alertée) allumage de toutes les lampes de la maison (internes/externes) s'il fait nuit lors d'intrusion à l'extérieur/à proximité de l'habitation : déclenchement d'un scénario de simulation de présence (éclairage, musique, TV) allumage des éclairages extérieurs pour une certaine durée envoi de messages vocaux sur hautparleur externe (signalant la détection de l'intrusion et invitant l'intrus à quitter les lieux) démarrer l'enregistrement des caméras par zone (exemple sur surveillance station) avec prise de photos régulières (ex. toutes les 30 secondes) notifications (mail, MMS, Push) avec envoi de photos : avec question demandant de déclencher l'alarme O/N avant qu'il y a intrusion dans la maison avec un lien sur les videos ou applications gérants les caméras lors d'oublis de l'activation de l'alarme ou lors d'oubli de la fermeture de portes (garage, cave, porte principale) selon par exemple les règles suivantes : plus de mouvements (détecteur de mouvements) et/ou plus de lumières (détecteur du luminosité, lampe pilotées) dans la maison la nuit durant x temps après xxh00 dans les zones d'alarmes partielles (ex. : cave, garage) plus de mouvements (détecteur de mouvements) dans la maison la journée durant x temps (attention aux période de siestes, vérifier la pertinence) détection d'absences des membres de la famille (téléphones mobiles absents de la maison par absence de connexion wifi ou géolocalisation) avec désactivation possible lorsque l'on prête sa maison à des connaissances lorsque le mode vacance est activé manuellement ou selon un calendrier, une de départ et retour planifiée, un couplage au module de chauffage notification Mail, SMS, Push avec question (exemple : activation alarme totale O/N, activation alarme partielle O/N, fermeture de la porte xxx O/N ? ) message vocal sur enceintes SONOS ou autre (exemple : Il est xxh00 nous n'avez pas activé l'alarme sur la zone zzz, Il est xxh00 la porte xxx est restée ouverte ? ) activation automatique de l'alarme ou non selon les règles ci-dessus. Attention aux exceptions et activations intempestives de la mise sous alarme. lors d'une détection d'incendie / fumées / fuite (d'eau, gaz) / coupure de courant / perte d'accès internet : à compléter lors d'absence, activer une simulation de présence : à compléter Scènes : A déterminer/compléter une fois que les spécifications seront suffisamment avancées détection d'une coupure de courant détection d'un brouillage du réseau Z-Ware tentative de piratage de la boxe ou du réseau informatique VD : A déterminer/compléter une fois que les spécifications seront suffisamment avancées activation du mode absence, vacances gestion de "l'alarme" avec activation et désactivation selon les zones à contrôler via le VD @Moicphil Module Virtuel Alarme Avancée lancement et arrêt de la sirène pilotage des caméras via le VD de @Lazer Piloter l'enregistrement des Caméras avec Synology Surveillance Station simulation de présence lors d'absence de @sebcbien YAPS - Présence Simulator, Un De Plus ... ? Détecteurs (devices) : A déterminer/compléter Ouvertures/Fermetures de portes/fenêtres/volets Détecteurs de présence Caméras intérieures (avec éventuellement détection personnes étrangères / extérieurs avec zones délimitées ) Détecteurs de franchissement de zones de type faisceaux lasers, barrières infrarouges (extérieurs, intérieurs) Logiciel de gestion des caméras (Surveillance Station sur Synology) Alimentations de secours (détection de coupure du courant, maintien des équipements de sécurité sous tension) Détecteur de coupure de courant (onduleur, pince ampèremetrique, prise Fibaro Wall Plug, ...) Actionneurs : A déterminer/compléter Sirènes Intérieures/Extérieures Messages vocaux (Sonos, karotz, Squezboxe, appel vocal sur téléphone, ...) Messages Mail/SMS/Push Eclairage Intérieures/Exterieures Clavier et/ou Télécommande pour Activer/Désactiver l'alarme Utilisation d'un moyen de communication type GSM en cas de perte de connexion via nos boxes internet (Recyclage d'un Smartphone, Routeur avec secours via carte SIM, Extension X-GSM GCE, ...) Panneau d'alarme HC2 : utilisation et paramétrage des zones et détecteurs associés Variable Globales utiles : A déterminer/compléter mode absence, vacances, alarme partielle détection présence des membres de la famille mode jour/nuit Utilisation d'un IPX800 V4 A déterminer/compléter Paramétrage à configurer sur l'IPX en tant que détecteur/actionneur Utilisation éventuelle du module d'envoi de SMS Extension X-GSM de GCE Gestion des traces/événements A déterminer/compléter Sauvegarde des événements les plus importantes dans un serveur Syslog Duplication/Externalisation en live des photos/vidéos pour leur archivage en cas de vol des caméras et/ou du NAS gérant les caméras Merci d'avance pour vos suggestions que je consoliderais dans le présent TUTO Au-delà des spécifications, je pense qu'il serait intéressant de consolider/partager : Les scripts LUA de gestion des Scènes et VD (en préconisant s'il est préférable de coder les fonctionnalités dans les Scènes ou VD ou l'usage de Plugins disponibles), utilisation de scripts GEA Les équipements qui pourraient être utilisés (détecteurs, actionneurs, traces (logs) / événements, sauvegarde des données images et vidéos) Le paramétrage des solutions utilisées (HC2/HCLite, Device, IPX800, Sonos, NAS, ...) Une vision financière de ce type de solution Bien évidement, tout ceci reste très subjectif , puisque chacun est libre de faire ses propres choix, mais cela a probablement le mérite de nous guider dans ces choix sur la base de fonctionnalités partagées.
  9. Bibliothèque de la Documentations Fibaro HCL et HC2 1) Introduction : Je débute sur ma box HC2 et j'apprécie notamment de pouvoir développer ses propres scripts en LUA et Bloc, mais je suis souvent confronté à la difficulté de trouver des fonctions, propriétés, API, leur syntaxe, ... Le site apporte une grande richesse d'informations. Mais celles-ci sont dispersées et pas toujours facile à trouver. J'ai donc pris l'initiative de créer ce sujet pour y référencer les différentes documentations disponibles (sur le site ou externes) afin facilement les retrouver. J'aurais pu les mettre dans mes favoris de mon navigateur, mais c'est quand même plus cool de les partager avec vous Ce sujet est le votre. C'est grâce à vous qu'il va vivre et vous servir. Merci donc de m'indiquer les liens à ajouter qui vous semble utiles, idem pour vos suggestions de rubriques. 2) Fonctions et API LUA Documentation générale sur LUA : Tutoriel du Langage LUA 5.2 Source : (wxlua.developpez.com) Auteur : Claude Urban Langue : français Commentaire : Très bon tutoriel sur la programmation en LUA. Manuel Officiel LUA 5.2 Source : (lua.org) Auteur : Lua Org Langue : anglais Commentaire : Documentation officielle des commandes LUA. Documentation Spécifique pour nos box Fibaro : Résumé des Fonctions HC2 Source : (domotique-fibaro.fr) Auteur : @Tomzebest Langue : français Commentaire : Traduction en français de la documentation Fibaro Résumé des Fonctions HC2 Source : (fibarouk.co.uk) Auteur : Fibaro Langue : anglais Commentaire : Documentation officielle de Fibaro. Introduction à la programmation LUA sur HC2 Source : (domotique-store.fr) Auteur : Jérôme Massiaux Langue : français Commentaire : Vous apprendrez les bases de la programmation de scènes via le langage Lua. Une introduction au langage Lua Source : (fibarouk.co.uk) Auteur : Fibaro Langue : anglais Commentaire : Documentation officielle de Fibaro. Liste Api-Lua & Api-Http Pour Hc2 Source : (domotique-fibaro.fr) Auteur : @pepite Langue : français Commentaire : Tutorial sur les API-LUA et API-HTTP Introduction aux API via des requêtes HTTP Source : (domotique-store.fr) Auteur : Martial Villemin Langue : français Commentaire : exemple simple, pour allumer une lumière via de simples requêtes HTTP http://l'adresse IP de votre box/docs/ Source : (developer.fibaro.com) Auteur : Fibaro Langue : anglais Commentaire : Documentation Active de l'API Rest (vous pouvez tester en live les fonctions FGHC Rest API Functions Source : (developer.fibaro.com) Auteur : Fibaro Langue : anglais Commentaire : Documentation officielle de Fibaro de l'API Rest (pour les développer) Nécessite un compte. FGHC LUA API Source : (developer.fibaro.com) Auteur : Fibaro Langue : anglais Commentaire : Documentation officielle de Fibaro des fonction LUA de l'API (pour les développer) Nécessite un compte. FGHC Plugins Creating Source : (developer.fibaro.com) Auteur : Fibaro Langue : anglais Commentaire : Documentation officielle de Fibaro sur le développement de Plugins) Nécessite un compte. Matrice Fonctions / Type de Devices Source : (fibarouk.co.uk) Auteur : Fibaro Langue : anglais Commentaire : Documentation officielle de Fibaro. http://updatehc2.fibaro.com/4.110/ Source : (fibaro.com) Auteur : Fibaro Langue : anglais Commentaire : Ressources disponibles dans les Upgrade de versions. Attention de remplacer 4.110 par la version correspondante à votre HC2. Il convient de d'extraire le contenu du fichier patch.tar.gz sur votre disque parcourir les arborescences et regarder le contenu des fichier présents. notamment celui-ci qui liste les fonctions disponible dans les API pour les scènes : patch/opt/fibaro/FibaroSceneAPI.lua Ce n'est pas forcement accessible à tous, mais vous pourriez y trouver des informations intéressantes. n'oubliez pas de les partager Développement spécifique pour nos HC2: Gestionnaire d'Evénements Automatique (GEA) Auteur : @Steven Langue : français Commentaire : contrôler, à intervalle régulier, l'état de votre environnement pendant une durée déterminée afin de vous avertir d'éventuel soucis et si nécessaire d'effectuer automatiquement certaines actions 3) Utilisation de nos Home Center Plate-forme eLearning Fibaro Source : (e-learning.fibaro.com) Auteur : Fibaro Langue : anglais Commentaire : Documentation officielle de Fibaro sur le développement de Plugins) Nécessite un compte. Présentation Box Zwave: Home Center v2 de Fibaro Source : (maison-et-domotique.com) Auteur : Cédric Locqueneux Langue : français Commentaire : Présentation de la Home Center v2 de Fibaro. 4) Utilisation des blocs graphiques Création de scénarios Source : (blog.domadoo.fr) Auteur : Bruno Langue : français Commentaire : Tutoriels pour la création de scénarios 5) Devices Fibaro FIBARO Devices Manuels Source : (fibaro.com) Auteur : Fibaro Langue : anglais Commentaire : Documentation pour chacun de module de marque Fibaro. 6) Androïd et iOS Paramètrage Appli Fibaro pour Android et iOS Source : (fibaro.com) Auteur : Fibaro Langue : anglais Commentaire : Comment configurer des raccourcis sur votre téléphone Androïd et iOS
  10. Beta software changes list 4.112: Version 4.112 Beta This update features migration process from version 3.600, reconfiguring every device, adjusting them for changes which took place in the system. This will assure a possibly smooth transition and continuous operation, allowing each device to work with old settings until reconfiguration is done. Please, refer to the message that appears in the interface and Notification Center for further instructions after finishing upgrade. Important! Updating from version 3.600 may take up to 30 minutes. Do not restart controller during update process. Resolved issues: - Incorrect redirect after an update. - It is not possible to create scene with weather or weather plugins as a condition. - Information about the status change of some devices (e.g. Wall Plug) are not displayed in the event panel. - Devices with unticked "Show measurement of energy consumption" option are counted in the global power measurement. - You cannot edit the location points in the location panel. - No possibility of a simultaneous change in many blockade parameters of KeyFob. - Central Scene Events are sent twice. - Sending an unsupported action to a device can cause a crash of the Z-Wave service. New devices support: - Eurotronics Comet Z. - Eurotronics Stella Z. - Philio Technology Corp Multisensor PST02. - Philio Technology Corp PAN06. - Domitech LLC Smart LED Retrofit Kit ZE27EU. Other improvements: - Verification of available space in the system - available space is checked before the software update. In case of insufficient space update will not start. The view of system update is now similar to configuration Wizard.
  11. Besoin daide

    Bonsoir, Qui a réussi a paramétrer le plugin Numericable ? Que renseigner dans les champs "TCP Port" et "UUDI" Je n'ai trouver aucune info sur le net a ce sujet. Y a t-il une API pour la box numericable ? Merci de votre aide.
  12. A 419.99 euros chez Amazon 15 pièces disponibles https://www.amazon.fr/dp/B00AUFV7N4/ref=ord_cart_shr
  13. ------------------------------------- AJOUT DE DEBUG DANS UN VD ----------------------------------- Tout le monde qui à, au moins une fois, touché le LUA de sa HC2 à du tapper cette commande : fibaro:debug("Mon texte ici") Cela permet donc d'afficher un texte dans la petite fenêtre de debug. Pour un VD (je n'ai pas encore trouvé pour une scène), il est possible d'envoyer un message, dans cette même fenêtre de debug, mais depuis n'importe où. En utilisant cette commande : fibaro:call(74, "addDebugMessage", 0, "Je viens d'ailleurs - erreur", "error") fibaro:call(74, "addDebugMessage", 2, "Je viens d'ailleurs - debug", "debug") error : affichera en rouge debug : affichera en blanc Voici la syntaxe fibaro:call(<ID_DU_VD>, "addDebugMessage", <ELEMENT_ID>, <MESSAGE>, "debug|error") -- ELEMENT_ID = ID du bouton ou 0 pour le main loop Cette info peux vous sembler inutile et pourtant, j'y vois 2 intérêts : Savoir qui a cliqué un bouton (si le bouton a été "cliqué" par une scène, on peux l'afficher dans le debug "Bouton cliqué par la scène 22 à HH:mm:ss") Via une scène paramétrée, afficher des debug de couleurs différent (exemple : fibaro:startScene(10, {{id=20, text="Mon texte ici", color="cyan"}}) Voilà, je vous laisse y méditer.
  14. Tuto HC2

    Les manipulations présentées dans ce sujet de discussion sont destinés à des utilisateurs avancés disposant des compétences nécessaires, et je décline tout responsabilité en cas de fausse manipulation rendant votre clé USB Recovery inopérante, voire même votre Home Center 2. Introduction Voir : Sauvegarde, Restauration, Et Recovery Sur Home Center 2 Clonage de la clé USB de Recovery Présentation de la clé La clé USB fournie avec la box Fibaro Home Center 2 est un élément critique, car sans elle la box ne peut fonctionner. Elle sert pour les sauvegardes de la configuration (en vue de leur restauration éventuelle), notamment avant chaque mise à jour de firmware, mais également pour le Recovery, c'est à dire le retour à une configuration usine en cas de crash de la box. Pour rappel, cette clé est connectée sur un port USB situé derrière la plaque métallique vissée sur le coté gauche de la box. Avant de retirer la clé USB Recovery de la box, s'assurer que celle-ci soit bien éteinte. Dans un premier temps, nous connectons la clé USB sur un PC sous Windows. Dans l'explorateur, nous voyons apparaître une partition d'environ 2 Go : Contenant 3 répertoires et 1 fichier : 24/10/2014 07:44 <REP> backups 02/09/2013 15:40 <REP> system 30/08/2013 12:15 10 network.conf 13/11/2013 22:48 <REP> logs Il est inutile à ce stade là de vouloir copier l'arborescence de cette partition, car le Gestionnaire des disques de Windows nous montre 2 partitions inconnues supplémentaires, ainsi que de l'espace libre : La clé a en réalité une taille de 8 Go, mais seuls 4 Go sont utilisés. Il faut donc monter la clé USB sur un système Linux, qui est capable de lire (presque) tous les formats de partitions existants. J'ai utilisé pour cela une VM sous ESXi sur mon serveur HP Proliant G7 N54L, voici les captures d'écran des fenêtres de modifications des paramètres de la machine virtuelle : On remarque que la clé fournie par Fibaro est de marque Kingston, on n'est donc pas en présence d'une clé chinoise premier prix : Dans ma VM, il s'agit d'un Linux RedHat Enterprise Server, mais n'importe quel Linux peut faire l'affaire, en particulier Debian qui est la distribution utilisée par FIbaro. Il est évidemment possible de monter cette clé sur n'importe quelle machine Linux, dont voici une liste non exhaustive : - Linux natif sur PC - Linux sur Raspberry PI - Linux dans une VM sous VMware Player sous Windows ou MacOS - LiveCD bootable sur CD ou clé USB - etc... Je ne détaille pas ces procédures, de nombreux tutoriels existent sur Internet, et je répète que si vous voulez tenter les manipulations décrites ici cela nécessite d'être suffisamment à l'aise avec Linux (ce qui implique de savoir l'installer). Une fois la clé connectée sur la machine Linux, on la voit apparaître dans les messages du noyau avec la commande dmesg : [root@redhat ~]# dmesg | tail -21 usb 1-2: new high speed USB device number 3 using ehci_hcd usb 1-2: New USB device found, idVendor=13fe, idProduct=4100 usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 usb 1-2: Product: FIBARO RECOVERY usb 1-2: Manufacturer: FIBARO usb 1-2: SerialNumber: ...................... usb 1-2: configuration #1 chosen from 1 choice scsi4 : SCSI emulation for USB Mass Storage devices usb-storage: device found at 3 usb-storage: waiting for device to settle before scanning usb-storage: device scan complete scsi 4:0:0:0: Direct-Access FIBARO FIBARO RECOVERY PMAP PQ: 0 ANSI: 6 sd 4:0:0:0: Attached scsi generic sg3 type 0 sd 4:0:0:0: [sdc] 15646720 512-byte logical blocks: (8.01 GB/7.46 GiB) sd 4:0:0:0: [sdc] Write Protect is off sd 4:0:0:0: [sdc] Mode Sense: 23 00 00 00 sd 4:0:0:0: [sdc] Assuming drive cache: write through sd 4:0:0:0: [sdc] Assuming drive cache: write through sdc: sdc1 sdc2 sdc3 sd 4:0:0:0: [sdc] Assuming drive cache: write through sd 4:0:0:0: [sdc] Attached SCSI removable disk Dans cet exemple, le device utilisé est /dev/sdc Par curiosité, avec lsusb on peut obtenir des informations sur cette clé Kingston : [root@redhat ~]# lsusb Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 001 Device 002: ID 196d:f100 Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub Bus 001 Device 003: ID 13fe:4100 Kingston Technology Company Inc. [root@redhat ~]# lsusb -s 001:003 -vvv Bus 001 Device 003: ID 13fe:4100 Kingston Technology Company Inc. Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0 (Defined at Interface level) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64 idVendor 0x13fe Kingston Technology Company Inc. idProduct 0x4100 bcdDevice 1.00 iManufacturer 1 FIBARO iProduct 2 FIBARO RECOVERY iSerial 3 ...................... bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 32 bNumInterfaces 1 bConfigurationValue 1 iConfiguration 0 bmAttributes 0x80 (Bus Powered) MaxPower 200mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 8 Mass Storage bInterfaceSubClass 6 SCSI bInterfaceProtocol 80 Bulk-Only iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 Device Qualifier (for other device speed): bLength 10 bDescriptorType 6 bcdUSB 2.00 bDeviceClass 0 (Defined at Interface level) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64 bNumConfigurations 1 Device Status: 0x0000 (Bus Powered) Avec la commande parted, on découvre plus en détail la structure des partitions de cette clé : [root@redhat ~]# parted /dev/sdc GNU Parted 2.1 Using /dev/sdc Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) print Model: FIBARO FIBARO RECOVERY (scsi) Disk /dev/sdc: 8011MB Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system Flags 1 1049kB 2000MB 1999MB primary fat32 2 2000MB 2255MB 256MB primary linux-swap(v1) 3 2255MB 3817MB 1561MB primary ext4 boot (parted) quit La taille de 8 Go est confirmée. On trouve les partitions suivantes : FAT32 (la partition visible sous Windows) Linux Swap (l'espace de paging space du système Linux) ext4 (le format de fichier standard d'une partition Linux, et qui se trouve en plus être bootable) Sauvegarde de la clé Sans plus attendre, on procède immédiatement à la sauvegarde cette clé, ce qui est l'étape la plus importante de cette étude. On utilise pour cela la commande dd qui permet de réaliser une copie bit-à -bit de l'intégralité de la clé. [root@redhat ~]# dd if=/dev/sdc of=/tmp/usb.img bs=1M 7640+0 records in 7640+0 records out 8011120640 bytes (8.0 GB) copied, 812.817 s, 9.9 MB/s Débit moyen de lecture de 10 Mo/s, ce n'est pas terrible (le débit max du bus l'USB-2 étant d'environ 25 Mo/s), mais pour l'usage très occasionnel qui est fait de cette clé, ce n'est pas un souci. On obtient un fichier de 8 Go sur le disque dur, qui est l'image exacte de la clé : [root@redhat ~]# ls -l /tmp/usb.img -rw-r--r--. 1 root root 8011120640 Oct 24 10:35 /tmp/usb.img Ce fichier contient donc le MBR (Master Boot Record) de la clé, l'intégralité des 3 partitions, ainsi que l'espace vide, comme le confirme la commande file : [root@redhat ~]# file /tmp/usb.img /tmp/usb.img: x86 boot sector; partition 1: ID=0xb, starthead 32, startsector 2048, 3903488 sectors; partition 2: ID=0x82, starthead 27, startsector 3905536, 499712 sectors; partition 3: ID=0x83, active, starthead 54, startsector 4405248, 3049472 sectors, code offset 0x63 Note : il aurait été possible de réaliser une sauvegarde de façon plus optimisée, en sauvegardant indépendamment le MBR et les 3 partitions, afin de ne conserver que les 4 Go utile. Néanmoins dans ce tutoriel la procédure se voulait simple afin de cloner intégralement la clé USB fournie par FIbaro afin de conserver une copie de secours. Nous verrons peut-être ultérieurement qu'il est possible d'aller beaucoup plus loin dans les manipulations de cette clé. Restauration de la clé On connecte une nouvelle clé USB vierge sur le système Linux. Si cette clé n'est pas vierge, elle sera écrasée. La restauration de la clé de Recovery utilise toujours la même commande dd, mais en sens inverse, c'est à dire qu'on lit le fichier pour écrire sur le périphérique USB. Dans mon exemple il s'agit de /dev/sdd : [root@redhat tmp]# dd if=/tmp/usb.img of=/dev/sdd bs=1M dd: writing `/dev/sdd': No space left on device 7553+0 records in 7552+0 records out 7918845952 bytes (7.9 GB) copied, 703.889 s, 11.3 MB/s On note une erreur car l'espace disponible sur ma nouvelle clé est insuffisant. En effet, j'ai utilisé une clé qui fait un peu moins de 8 Go, donc la commande n'a pas pu écrire la fin des octets. Ce n'est nullement gênant car comme on l'a vu précédemment, seuls 4 Go sont utilisés et la fin de la clé est inutilisé. Dans l'exemple ci-dessus, 7,9 Go ont été écrits, ce qui est plus que suffisant. Test de la clé clonée On insère la clé USB dans la box HC2, on branche l'alimentation, et la box boot comme si de rien n'était. On l'arrête à nouveau, on rebranche la clé d'origine, et on redémarre la box en production. On conserve la nouvelle clé générée bien à l'abri, ou pas, puisque avec l'image binaire présente sur le disque dur il est toujours possible de regénérer autant de clés qu'on le souhaite. Notes complémentaires Cette procédure permet de cloner une clé devant être utilisé sur la même box. L'étude pour cloner une clé sur une box différente sera menée ultérieurement (sans garantie de succès) Le clonage de la clé aurait pu se faire directement avec la commande suivante, sans passer par le disque dur (non testé) : dd if=/dev/sdc of=/dev/sdd bs=1M . Analyse détaillée de la clé A partir de ce chapitre, on commence l'étude approfondie de la clé de Recovery. Par sécurité afin de ne pas tout casser en cas de fausse manipulation, on travaille sur l'image générée précédemment sur disque. Le fichier usb.img est une image en mode "raw" de la clé, et a donc conservé la structure initiale avec les 3 partitions : [root@redhat tmp]# parted usb.img print Model: (file) Disk /tmp/usb.img: 8011MB Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system Flags 1 1049kB 2000MB 1999MB primary fat32 2 2000MB 2255MB 256MB primary linux-swap(v1) 3 2255MB 3817MB 1561MB primary ext4 boot On crée les devices dans le noyau permettant de monter les partitions : [root@redhat tmp]# kpartx -v -a usb.img add map loop0p1 (253:2): 0 3903488 linear /dev/loop0 2048 add map loop0p2 (253:3): 0 499712 linear /dev/loop0 3905536 add map loop0p3 (253:4): 0 3049472 linear /dev/loop0 4405248 On crée les points de montages (il est inutile de monter la partition de swap) : [root@redhat ~]# mkdir /mnt/sdc1 [root@redhat ~]# mkdir /mnt/sdc3 On monte les 2 partitions intéressantes : [root@redhat tmp]# mount /dev/mapper/loop0p1 /mnt/sdc1 -o ro [root@redhat tmp]# mount /dev/mapper/loop0p3 /mnt/sdc3 -o ro Dans la partition n°1, on retrouve les fichiers qui étaient visibles sous Windows : [root@redhat tmp]# cd /mnt/sdc1 [root@redhat sdc1]# ls -l total 16 drwxr-xr-x. 7 root root 4096 Oct 24 07:44 backups drwxr-xr-x. 2 root root 4096 Nov 13 2013 logs -rwxr-xr-x. 1 root root 10 Aug 30 2013 network.conf drwxr-xr-x. 2 root root 4096 Sep 2 2013 system Vérification de l'espace occupé/libre : [root@redhat sdc1]# df -m . Filesystem 1M-blocks Used Available Use% Mounted on /dev/mapper/loop0p1 1903 487 1416 26% /mnt/sdc1 Les tailles de Mo de chaque fichier/répertoire : [root@redhat sdc1]# du -sm * 63 backups 1 logs 1 network.conf 424 system On en déduit que sur les 2 Go de cette partition, 424 Mo sont utilisés par l'image système de recovery, et seulement 63 Mo (dans mon cas) pour les sauvegardes de la configuration. Donc les 1416 Mo libres sont plus que suffisants pour réaliser un grand nombre de sauvegardes. Dans mon cas, j'ai seulement 5 sauvegardes, et on remarque que la plus grosse d'entre elle est ma dernière sauvegarde du 24/10/2014 : [root@redhat sdc1]# du -sm backups/* 6 backups/backup16_01_14-2032 6 backups/backup16_01_14-2037 41 backups/backup24_10_14-0944 11 backups/backup28_02_14-1428 2 backups/backup29_11_13-0019 Le fichier network.conf contient seulement l'info permettant au réseau de fonctionner en DHCP lorsqu'on boot en recovery : [root@redhat sdc1]# cat network.conf type=dhcp Etudions maintenant le contenu de ma dernière sauvegarde : [root@redhat sdc1]# cd backups/backup24_10_14-0944/ [root@redhat backup24_10_14-0944]# ls -l total 40812 -rwxr-xr-x. 1 root root 117 Oct 24 07:44 checksum -rwxr-xr-x. 1 root root 131 Oct 24 07:44 info drwxr-xr-x. 2 root root 4096 Oct 24 07:44 scenes -rwxr-xr-x. 1 root root 41757696 Oct 24 07:44 sql -rwxr-xr-x. 1 root root 16528 Oct 24 07:44 zwave Il y a quelques fichiers textes, une base de données SQLite, et un fichier binaire : [root@redhat backup24_10_14-0944]# file * checksum: ASCII text info: ASCII text scenes: directory sql: SQLite 3.x database zwave: data Le fichier checksum contient des sommes de contrôles permettant de s'assurer de la cohérence des fichiers stockés sur la clé avant la restauration éventuelle : [root@redhat backup24_10_14-0944]# cat checksum 82a0e8acacb02838248ff032dfb16a7e sql 96d7a2aac279dc2be1abd77bb1f37196 zwave c9bf3777d6c6990e37a59aa3cfac49af info Vérification, tout est OK : [root@redhat backup24_10_14-0944]# md5sum sql 82a0e8acacb02838248ff032dfb16a7e sql [root@redhat backup24_10_14-0944]# md5sum zwave 96d7a2aac279dc2be1abd77bb1f37196 zwave [root@redhat backup24_10_14-0944]# md5sum info c9bf3777d6c6990e37a59aa3cfac49af info Le fichier info contient quelques informations génériques qui sont affichées par l'interface Web lorsqu'on boote la box en recovery : [root@redhat backup24_10_14-0944]# cat info devices=90 rooms=12 scenes=22 hour=09 minute=44 day=24 month=10 year=2014 timestamp=1414136694 description=24/10/2014 v3.590 stable Le fichier sql contient toute la configuration, dont voici un extrait : [root@redhat backup24_10_14-0944]# sqlite3 sql ".tables" Alarm_Fibaro_Scene Alarm_Zone Alarm_Zone_PIN Backups Borrowed_Devices Cooling_Zone Cooling_Zone_Room Dashboard Device_Association_Group [...] Par exemple : [root@redhat backup24_10_14-0944]# sqlite3 sql 'select * from Room;' 1|1|Salon|room_kominek|999|96|97|0|0 2|1|Entrée|room_kapelusz|999|0|0|0|0 3|1|Salle à manger|room_jadalnia|999|0|0|0|0 [...] Dans le sous-répertoire scenes, on y trouve des pages html et des scritps LUA : [root@redhat backup24_10_14-0944]# cd scenes/ [root@redhat scenes]# ls -l total 484 -rwxr-xr-x. 1 root root 17288 Oct 24 07:44 10.html -rwxr-xr-x. 1 root root 828 Oct 24 07:44 10.lua -rwxr-xr-x. 1 root root 17346 Oct 24 07:44 11.html -rwxr-xr-x. 1 root root 947 Oct 24 07:44 11.lua -rwxr-xr-x. 1 root root 19930 Oct 24 07:44 12.html -rwxr-xr-x. 1 root root 1047 Oct 24 07:44 12.lua -rwxr-xr-x. 1 root root 17756 Oct 24 07:44 13.html -rwxr-xr-x. 1 root root 923 Oct 24 07:44 13.lua -rwxr-xr-x. 1 root root 26374 Oct 24 07:44 14.html -rwxr-xr-x. 1 root root 1112 Oct 24 07:44 14.lua [...] Au hasard, prenons la plus grosse scène, et ô surprise (oui je sais j'utilise encore une veille version de GEA) : [root@redhat scenes]# head -22 22.lua --[[ %% autostart %% properties 46 value %% globals --]] -- ------------------------------------------------------------ -- GEA : Gestionnaire d'Evénements Automatique -- Scénario permettant de contrôler si une périphérique est -- activé depuis trop longtemps ou lancer -- un push d'avertissement -- L'état du périphérique est contrôlé toutes les X secondes -- si passer le délai souhaité le périphérique est toujours -- activé, le système envoi une notification -- -- Auteur : Steven P. with modification of Hansolo -- Version : 3.50 -- Special Thanks to : -- Fredric, Diuck, Domodial, moicphil, lolomail, byackee, -- JossAlf, Did and all other guy from Domotique-fibaro.fr -- ------------------------------------------------------------ . On retourne maintenant à la racine de la partition n°1, afin d'étudier rapidement le répertoire system : [root@redhat scenes]# cd /mnt/sdc1 [root@redhat sdc1]# cd system [root@redhat system]# ls -l total 433920 -rwxr-xr-x. 1 root root 33 Sep 2 2013 checksum -rwxr-xr-x. 1 root root 444328464 Sep 2 2013 image.gz -rwxr-xr-x. 1 root root 0 Jul 17 2012 version3 -rwxr-xr-x. 1 root root 0 Aug 23 2013 version4 Comme pour les sauvegardes, une somme de contrôle permet de s'assurer de l'intégrité de l'image à restaurer : [root@redhat system]# cat checksum c496e1fe5e3095b73e2f376b35ae5307 [root@redhat system]# md5sum image.gz c496e1fe5e3095b73e2f376b35ae5307 image.gz Ce fichier image.gz est une archive compressée d'une image raw d'un disque : [root@redhat system]# file image.gz image.gz: gzip compressed data, was "image", from Unix, last modified: Mon Sep 2 15:27:19 2013 [root@redhat system]# gzip -dc image.gz | file - /dev/stdin: x86 boot sector; partition 1: ID=0x83, active, starthead 32, startsector 2048, 1951744 sectors; partition 2: ID=0x82, starthead 157, startsector 1953792, 499712 sectors; partition 3: ID=0x83, starthead 184, startsector 2453504, 1368064 sectors, code offset 0x63 On décompresse cette archive dans un répertoire temporaire : [root@redhat system]# cd /tmp [root@redhat tmp]# gzip -cd /mnt/sdc1/system/image.gz > image [root@redhat tmp]# ls -l image -rw-r--r--. 1 root root 2002780160 Oct 25 18:26 image Il s'agit de l'image du disque système interne de la HC2 (clé USB SLC de 2 Go) : [root@redhat tmp]# parted image print Model: (file) Disk /tmp/image: 2003MB Sector size (logical/physical): 512B/512B Partition Table: msdosNumber Start End Size Type File system Flags 1 1049kB 1000MB 999MB primary ext4 boot 2 1000MB 1256MB 256MB primary linux-swap(v1) 3 1256MB 1957MB 700MB primary ext4 En cas de recovery de la box, c'est donc cette image qui est restaurée sur la mémoire interne de la box, puis la dernière sauvegarde peut être restaurée. Je ne détaille pas plus le contenu de ces partitions systèmes, mais il est tout à fait possible de les monter et d'accéder à leur contenu. Je précise néanmoins que la première partition est la racine du système (/), tandis que la troisième partition est montée dans /var (contient les journaux, les pages Web, etc...). La première partition (FAT32) de la clé de Recovery est montée dans /home/fghc2-recovery/recovery On étudie maintenant la partition n°3 de la clé de Recovery : [root@redhat mnt]# cd /mnt/sdc3 [root@redhat sdc3]# ls -l total 96 drwxr-xr-x. 2 root root 4096 Dec 8 2011 bin drwxr-xr-x. 3 root root 4096 Dec 8 2011 boot drwxr-xr-x. 5 root root 4096 Dec 8 2011 dev drwxrwxr-x. 74 root root 4096 Aug 30 2013 etc drwxr-xr-x. 3 root root 4096 Oct 3 2011 home lrwxrwxrwx. 1 root root 28 Dec 8 2011 initrd.img -> boot/initrd.img-2.6.32-5-686 drwxr-xr-x. 12 root root 12288 Dec 22 2011 lib drwx------. 2 root root 16384 Dec 8 2011 lost+found drwxr-xr-x. 6 root root 4096 Dec 8 2011 media drwxr-xr-x. 2 root root 4096 Oct 3 2011 mnt drwxr-xr-x. 3 root root 4096 Dec 11 2011 opt drwxr-xr-x. 2 root root 4096 Oct 3 2011 proc drwx------. 4 root root 4096 Sep 12 2012 root drwxr-xr-x. 2 root root 4096 Dec 12 2011 sbin drwxr-xr-x. 2 root root 4096 Jul 21 2010 selinux drwxr-xr-x. 2 root root 4096 Dec 8 2011 srv drwxr-xr-x. 2 root root 4096 Jan 1 2011 sys drwxrwxrwt. 2 root root 4096 Aug 30 2013 tmp drwxrwxr-x. 10 root root 4096 Dec 8 2011 usr drwxrwxr-x. 14 root root 4096 Sep 11 2012 var lrwxrwxrwx. 1 root root 25 Dec 8 2011 vmlinuz -> boot/vmlinuz-2.6.32-5-686 Il s'agit du système Linux sur lequel la box boot en mode Recovery. [root@redhat sdc3]# df -m . Filesystem 1M-blocks Used Available Use% Mounted on /dev/mapper/loop0p3 1467 769 624 56% /mnt/sdc3 . Conclusion Après un certains nombres d'expériences non décrites ci-dessus : La restauration du dump sur la même clé fonctionne, j'ai pu rebooter et faire un recovery. En revanche, la restauration du dump sur une autre clé ne fonctionne pas complètement (certaines fonctionnalités ne fonctionneront pas, comme les sauvegardes, la réinitialisation de la puce Z-Wave, l'exclusion de modules, ... particulièrement en v4 où la sécurité a été renforcée) En effet, Fibaro utilise cette clé comme un dongle de protection. Les informations utilisées sont situées dans le firmware de la clé, et non sur les cellules flash. Par conséquent, elle ne sont pas prises en compte par la commande "dd". Donc si la clé est défectueuse (read only, secteurs défectueux, etc...), la méthode officielle est de se rapprocher du revendeur ou de Fibaro pour procéder à un échange. A noter que dans la mesure où la génération d'une nouvelle clé expose une partie des protections mises en place par Fibaro, ils refusent l'intervention à distance et imposent jusqu'à présent un retour complet de la box. Cependant, dans le cas où les données de la clé USB sont corrompues, mais que la clé n'est pas physiquement endommagée, il est tout à fait envisageable de reconstruire une clé de recovery from scratch pour les utilisateurs qui n'auraient pas fait de clone préalable. Il faut simplement les éléments suivants : - MBR (512 octets) - archive du répertoire system de la première partition - image de la seconde partition Cette expérience a été validée avec succès dans ce topic.
  15. voir aussi ce résumé plus récent fait par Zorgonaute84 Comment voir le status d'une variable globale de manière sympa (avec une icône par exemple) sans devoir passer par le panel variables depuis votre téléphone Androà¯d ? Les variables globales Il faut en abuser, elles ouvrent des possibilités gigantesques que le monde de la domotique. Voici celles que j'ai définies : Auth_PS3 : Interdit/Autorisé (si elle est Interdit, le Wall Plug associé s'étient automatiquement, fini la surveillance continue du gamin ...) Auth_TV : Interdit/Autorisé (si elle est Interdit, le Wall Plug associé s'étient automatiquement, fini la surveillance continue de la fille ...) Chauffage : 0/1/2 (0 = uniquement ECS, 1 = ECS 1 SdB, 2 = Tout) Conges : Oui/Non (si oui, je suis toute la journée à la maison, et alors le chauffage fonctionne autrement (encore à réaliser, mais difficile à priori)) DayPart : AfterSunrise/ After Sunset (exple : si une porte reste ouverte longtemps après le coucher du soleil => notification, si en journée, pas de problème) Saison : Printemps/Eté/Automne/Hiver (si en été, allumage automatique des lampes de jardin VMC : On/Off (me permet de contrôler si la VMC a le droit de démarrer) Vacances : Oui/Non (si Oui, pas de chauffage de ECS, lumières de simulation de présence) Les valeurs de ces variables sont contrôlées par des scènes. Les Virtual Devices Pour chacune des variables, j'ai créé une Virtual Device, avec le nombre de boutons correspondant au nombre de valeur autorisées de la variable. Pour ce tuto, je prendrai l'exemple de la variable Chauffage. La virtual device qui y est associée : Tip : utilisez un ID représentatif de la valeur pour chaque bouton, car c'est l'ID qui sera proposé dans les scènes. ! l'ID ne peut pas contenir de <space>, _, -, etc Les Scènes La mise à jour de la virtual device en fonction de l'état de la variable se fait par l'intermédiaire de scènes. Il faut une scène pour chaque status de chaque variable. (J'ai donc 19 scènes pour mes 8 variables). Tip1 : cochez la case "Start when Home Center 2 start" pour être sà»r qu'elle s'exécute en continu Tip2 : lorsque vous modifiez l'icône de la scène, la case se décoche automatiquement (en tout cas sur la HCL = bug) La condition "Day Of Week" (tous les jours cochés !) et "At Any Time" permet de s'assurer que la virtual device a toujours la bonne valeur (après un save de la virtual device, ou un restart du HC2/L) Sections virtuelles Afin d'éviter que cela devienne vite le foutoir dans ma box, j'ai créé une Section "Section virtuelle" qui contient différentes pièces (virtuelles) : Vacances, Variables, Scènes Techniques Dans Vacances : j'ai mes scènes spécifiques pour mon éclairage lorsque je suis en vacances Variables : y sont mes virtual devices qui affichent la valeur de mes variables globales, et les scènes associées Scènes Techniques : y sont les scènes qui gèrent la valeur de mes variables. C'est fou ce que cela peut être amusant, ainsi un peu plus WAF ? On peut toujours rêver ...
  16. Bonjour tout le monde, Inflation non ? Le fibaroId a fait prendre de la valeur à la HC2 https://www.amazon.fr/Fibaro-FGHC2-Home-Center-2/dp/B00Y3QIV9Y/ref=sr_1_4?s=hi&ie=UTF8&qid=1485874365&sr=1-4&keywords=home+center+2
  17. Arrêter ou Redémarrer sa HC2 Voici les commandes lua pour arrêter ou redémarrer sa box HC2 Ne fonctionne que dans une scène Firmware >= v4.110 HomeCenter.SystemService.reboot() Nom Le nom de la fonction doit toujours être identique : HomeCenter.SystemService.reboot() Exigences Fibaro Home Center 2 updated to 4.081 software version or higher Application Redémarre le système. Paramètres Aucun Valeurs retournées Aucun Exemple de code : -- Redémarrer le système HomeCenter.SystemService.reboot(); HomeCenter.SystemService.shutdown() Nom Le nom de la fonction doit toujours être identique: HomeCenter.SystemService.shutdown() Exigences Fibaro Home Center 2 version 4.081 ou plus Application Arrêt du système. Paramètres Aucun Valeurs retournées Aucun Exemple de code -- Shutdown system HomeCenter.SystemService.shutdown();
  18. Bonjour à tous, J'ai plusieurs volets roulants NICE (NM28000PP) sans fil que je voudrais piloter avec ma HC2. Après avoir lu internet 3 ou 4 fois, cela ne paraît pas évident à moins de faire des soudures sur des télécommandes NICE... et je voudrais éviter Dans la doc "technique" du volet roulant, il est précisé qu'en utilisant le câble "pas-à-pas", on peut commander la montée et la descente (voir la pièce jointe). Ma question : avec quel module (Fibaro ou autre) puis-je envoyer ce "contact" de plus de 3 secondes ou de plus de 10 secondes ? Un grand merci pour votre aide avant que... je ne me lance dans une nouvelle lecture d'internet ++
  19. 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
  20. Faire un RECOVERY en moins de 30 mn By MPRInfo Tout en Image Comment on passe la box en mode recovery ? (éteindre la box, puis appuyer sur les deux boutons simultanément) Petite précision avant de commencer : J'ai modifié l'image recovery sur ma clef usb, j'ai aussi modifié la taille de la partition fat32 de ma clef recovery de 8go Donc lors de ce recovery je ne vais donc pas passer par la 3.60 mais directement en 4.031 Cela ne change rien au principe pour les box anciennes comme la mienne il faudra passer par la V3 je suis donc en 4.031 pour ceux qui on une image recovery ancienne on doit arrivé en 3.60 si mais souvenir sont bon il faut donc faire la mise a jours pour passer en V4 On passe ensuite en 4.054 Stable On accepte de prendre pleins des risque sans rien dire ou râler Après acceptation il faut parfois re saisir l'adresse de la box pour avoir l'image suivante On ferme le navigateur est on vide le cache comme a chaque mise à jours Ensuite si on veut on peut installer la 4.055B la procédure est la même On oublie pas de nouveau a vider le cache du navigateur une fois la mise a jour faite On ferme le navigateur est on vide le cache comme a chaque mise à jours Pour la clef ou j'ai augmenté la taille voici un aperçu : Liens utiles : Images Clé Usb : https://www.domotique-fibaro.fr/topic/6824-images-clã©-usb/ Clé Usb Recovery Explication En Image De La Fat32 : https://www.domotique-fibaro.fr/topic/5534-clé-usb-recovery-explication-en-image-de-la-fat32/ The END
  21. bonjour, j'ai trouvé ceci par hazard. http://blog-fibaro.fr/tuto-hc2-voir-si-une-lumiere-est-allumee-et-tout-eteindre/ ce module virtuel est tout a fait ce qu'il me faut. mais le bouton éteindre ne fonctionne pas et je ne sais pas non plus ou mettre les icones. merci pour votre aide. phill
  22. Bonjour, Ma HC2 après plusieurs tentatives est encore sur voyants bleus fixes après le reboot. Le support Fibaro m'a fait installer un écran et un clavier et m'a envoyé la procédure pour entrer dans le bios mais quand je Tape F2 il ne se passe rien. J'ai chnagé de port USB pour le clavier rien à faire. Puis j'ai débranché toute la nuit et relancé et magie elle a redemarré j'ai pu faire des set-up puis j'ai lancé la mise à jour du firmware, le message indiquait que tout c'était bien passé mais idem diodes bloquées puis elle n'apparait plus sur le réseau, là j'ai redemarré, idem... est-ce que quelqu'un peu m'aider dans cette impasse Bonne journée sous le soleil !
  23. Bonjour, Petit Tuto pour vous aider à faire commniquer les modules de votre Jeedom avec votre HC2. Je voudrais remercier tout d'abord les personnes sans qui cela ne serait jamais arrivé @Lazer @Steven @sebcbien et toute la communauté... But : Le but de ce Tuto est d'interconnecter les devices Jeedom vers la HC2 et uniquement dans ce sens ! (pour l'instant) Mon besoin initiale est d'interconnecter ma centrale d'alarme disposant de capteurs RF (Porte, Mouvement) avec ma HC2 ne faisant pas de RF... Pour que la gestion de l'alarme soit faite par une seule et même interface. Et pour bénificier des capteurs RF (moins couteux et déja présent) afin de les utiliser dans des scénarios de vie. Après avoir lu le post de @sebcbien sur Jeedom je me suis dit : j'ai trouvé une solution pouvant répondre à mon besoin j'ai donc fait l'acquisition d'un module RFXCom 433Mhz et Raspberry. Mon but n'est pas de remplacé ma HC2 mais de lui rajouter la "Techno" RF sans avoir à "gérer" deux box. Et pourquoi pas utiliser les avantages de Jeedom par la suite... Concept : Jeedom va envoyer pour chaque modification de module (capteur pour ma part), un appel (GET) à l'API Fibaro pour mettre à jour un label d'un Virtual Device. Cette modification appelera une Scène qui se chargera de convertir les valeurs données par Jeedom en valeur exploitable pour la HC2 et mettra à jour le device concerné. Alors pourquoi un Device et une Scène pour modifier les propriétées d'un device ? Parce que Jeedom a ma connaissance ne fait pas de requête de type PUT. Celle-ci permette de mettre à jour les propriétées d'un device de notre HC2. De ce fait obligé de "feinté" grace à l'astuce de @Steven (Voir Post Ici) Capteur Fenètre ===> RFXCom ====> Jeedom =========> VD Update HC2 ======> Scène Update HC2 ==========> Modification Value Fake Device RF USB API HTTP LUA LUA (API) Pré-Requies : Il faut nommer les modules dans Jeedom à l'identique dans la HC2 et les mêttre dans la même pièce. C'est ce qui va permettre d'avoir une seul et unique requêtes et de pouvoir se dispenser de connaitre l'ID HC2. Sommaire : Création d'un Fake Device Création d'un Virtual Device Création d'une Scène Mise en place de l'intéraction dans Jeedom 1. Création d'une Fake Device J'utilise ici la procédure de @Lazer (Voir Post ici) En voici les grandes lignes : on inclue un module (du type qu'on souhaite (consommation, température, détecteur, etc)) on le reset (via appui long sur le bouton, selon la méthode décrite dans la doc) sans l'exclure de la HC2 il passe en noeud mort en décoche la case 'marquer comme mort' => le module ne sera plus jamais mort, même si il n'existe plus en peut l'utiliser à vie pour updater ses propriétés via l'API Puis on recommande la procédure décrite ci-dessus autant de fois qu'on souhaite, afin d'avoir une infinité de modules, qui remplacent parfaitement les plugins. Je n'ai aucun mérite juste fait un copier coller de ton post Merci a Lui ! 2. Création d'un Virtual Device Création d'un VD : Nom : Updater Label : Update.Device ID Label : UD Noter l'ID de votre Virtual Device il nous servira pour la suite, on prendra pour exemple : 333) 3. Création d'une Scène Création d'une Scène en Lua : Nom : Updater Ajouter le code ci-dessous en y modifiant l'ID de votre VD dans les "properties" de la Scène. - OLD - Scène Utilisant l'ID du device. - New - Scène utilisant le Nom des devices Merci @Steven, @sebcbien, @Lazer pour ces parties Test : Vous pouvez d'ors est déjà tester si ce que l'on vient de créer fonctionne. Il suffit tout simplement de rentré l'url suivante dans votre Navigateur en prenant soin de la modifier et compléter au préalable avec vos informations. http://<user>:<password>@<IP_DE_MA_HC2>/api/callAction?deviceID=333&name=setProperty&arg1=ui.UD.value&arg2={idFakeModuleHC2:1} http://<user>:<password>@<IP_DE_MA_HC2>/api/callAction?deviceID=333&name=setProperty&arg1=ui.UD.value&arg2=[Garage][Porte Celier][Alerte]:1 Vous devriez donc voir la porte s'ouvrir si c'est un capteur de porte. 4. Mise en place de l'intéraction dans Jeedom Concernant la partir Jeedom rien de plus simple il suffit que dans chaque device (section commande du device) de placer l'url ci-dessous, en spécifiant l'ID du Fake device HC2 associé : http://<user>:<password>@<IP_DE_MA_HC2>/api/callAction?deviceID=333&name=setProperty&arg1=ui.UD.value&arg2={idFakeModuleHC2:#value#} http://<user>:<password>@<IP_DE_MA_HC2>/api/callAction?deviceID=333&name=setProperty&arg1=ui.UD.value&arg2=#humanname#:#value# Petite astuce si vous avez un mot de passe contenant un @ il suffit de le remplacer par le caractère suivant : %40. En considérant que l'utilisateur est : user que le mot de passe de celui-ci est p@ssword cela donne l'url ci-dessous : http://user:p%40ssword@<IP_DE_MA_HC2>/api/callAction?deviceID=333&name=setProperty&arg1=ui.UD.value&arg2=#humanname#:#value# Dans Votre Equipement aller dans la section "Commandes" Puis dans la section avancée du module d'Alerte (petit rouage sur la droite) Insérer la requête dans la ligne Push Merci @sebcbien pour cette partie
  24. Plugin - Zibase L'objectif de ce plugin est de permettre une communication entre la Zibase et le Home Center. Joyeux noà«l à toutes et à tous..... Malgré les mauvaises nouvelles concernant Zodianet, je reste confiant dans la mise en place d'une solution (serveur privé, maintient des serveurs...). Je ne pense pas que malgré la situation les utilisateurs de Zibase vont devenir les possesseur d'une box à tout faire inutilisable. Voici donc une première version du plugin dont les caractéristiques sont les suivantes. Version 1.0 ZibasePlugin_V1.0.zip Fonction pris en charge : - Connexion à la plateforme zibase.net ou zibase2.net - Récupération automatique de l'ensemble des devices de la Zibase géré par le plugin - Création de devices au niveau du Home Center - Polling configurable récupérant l'ensemble des données des sondes. Limitation : - Pour le moment le plugin ne gère que les sonde de type Température et Température/Hydrométrie - Gestion uniquement des sondes - Gestion en Anglais uniquement pour le moment Fonctionnalités restant à développer : - Gestion des autres types de sondes - Gestion des actionneurs type Chacon et autre - Gestion des volets roulant Somfy - Gestion de l'état des batteries - Mise en place du français - Autres en fonctions de vos besoins Bugs connus : - Lorsque le plugin n'arrive pas a se connecter à la plateforme Zibase, celui-ci se fige. Un redémarrage de la box est nécessaire. PS : Pour que le plugin fonctionne il faut que lorsque vous effectuer la requête suivante (en mettant vos identifiants disponible dans l'onglet système de la configuration de la Zibase) dans votre navigateur cela vous retourne des données : https://zibase.net/api/get/ZAPI.php?zibase=YouZibaseId&token=YourZibaseToken&service=get&target=home Si vous avez un retour comme ci-dessous, il y a un problème au niveau de l'api et de votre Zibase... (désolé Nico par exemple....) { "head" : "success", "body" : { "zibase" : {"id" : "YouZibaseId", "connected" : 0}, "variables" : [], "triggerDates" : ["0x"], "actuators" : [ ], "sensors" : [ ], "remotes" : [ ], "probes" : [ ], "cameras" : [ ], "scenarios" : [ ] } } Tutoriel : Aller sur l'onglet plugin et sélectionner Zibase Plugin. Cliquer sur le bouton Ajouter (Add) On obtient alors le device de la Zibase (non configuré) Aller dans l'onglet de paramètres avancé et renseigner le login et le mot de passe de votre Zibase. Cliquer ensuite sur le bouton enregistrer Vérifier dans l'onglet principal que tout se passe bien. Au bout de quelques secondes vous devriez avoir un écran similaire à celui-ci : Cliquer sur le bouton sauvegarder quand cela est demandé dans l'onglet principal. Vous aurez alors accès aux devices dans l'onglet des paramètres avancés. Cliquer ensuite sur le bouton + des devices que vous souhaitez ajouter et cliquer à nouveaux sur sauvegarder. (Je n'ai malheureusement pas trouver de moyens pour mettre à jour dynamiquement le tableau, c'est pourquoi il faut passer par 3 étapes de sauvegarde...) Les devices sélétionnés vont alors être créé dans la Zibase. N'oubliez pas de paramétrer le poling time (mis à 60 secondes par défaut ce qui fait un peu beaucoup de requête après tout dépend de vos besoins) Je reste à disposition si vous avez besoins de plus d'information / support par rapport à ce plugin.
  25. Bonjour la communauté, Je souhaiterais savoir s'il est possible de créer un second compte SuperAdministrateur sur la BOX HC2? Je dois prévoir une intervention du support Fibaro et je souhaiterais à cette occasion leur créer un compte dédié. Est ce envisageable? Bon ok, je sais on peut mettre un password temporaire pour le compte admin existant Mais vu leur délais de réponse et donc d'intervention, un mois 1/2 que mon incident est ouvert et entre chaque réponse 2 semaines minium! Donc je ne sais pas quand il pense intervenir sur ma box pour me supprimer mes modules fantomes!! Module que je n'arrive pas supprimer! Snif.