Aller au contenu

Rechercher dans la communauté

Affichage des résultats pour les étiquettes 'Virtual device'.



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
    • Nouveau ? Présentez-vous
    • Le bistrot
    • Mon installation domotique
    • Annonces et suggestions
  • La Home Center et ses périphériques
    • La Home Center pour les nuls
    • HC 2 & Lite
    • HC 3
    • Modules Fibaro
    • Modules Z-wave
    • Périphériques et matériels autres
    • Plugins
    • Quick App
    • Multimédia (audio, vidéo ...)
    • Chauffage et Energie
    • Actionneurs & Ouvrants (Portail, volets, piscines, ...)
    • Eclairage
    • Applications Smartphones et Tablettes
  • Autres solutions domotiques
    • Box / Logiciel
    • Modules Nice (433 & 866 MHz)
    • Modules Zigbee
    • GCE Electronics
    • Modules Bluetooth Low Energy
  • Objets connectés
    • Les Assistants Vocaux
    • Netatmo
    • Philips Hue
    • DIY (Do It Yoursel)
  • Sécurité
    • Alarmes
    • Caméras
    • Portiers
    • Serrures
  • Informatique / Réseau
    • Tutoriels
    • Matériels Réseaux
    • Matériels Informatique
    • NAS
    • Virtualisation
  • Les bonnes affaires
    • Sites internet
    • Petites annonces

Calendriers

Aucun résultat à afficher.


Rechercher les résultats dans…

Rechercher les résultats qui…


Date de création

  • Début

    Fin


Dernière mise à jour

  • Début

    Fin


Filtrer par nombre de…

Inscription

  • Début

    Fin


Groupe


Jabber


Skype


Ville :


Intéret :


Version

15 résultats trouvés

  1. aurelien31

    Aide création Virutal Device Flipr

    Bonjour à tous, J'aurai besoin d'aide pour créer un virtual device Flipr sur Fibaro HC2. Pourriez vous m'aidez ? Je souhaiterai faire ça : $ Proposé par @kevin39 mais n'a jamais donné de suite. J'ai trouvé les fichier qui permette de récupérer les Api de Flipr : https://flipr.freshdesk.com/fr/support/solutions/articles/36000062890-guide-du-développeur-apis-flipr J'ai réussi à créer le code HTML sur postman : GET /modules/1A4360/survey/last HTTP/1.1 Host: apis.goflipr.com Authorization: Bearer eyJhbGciOiJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNobWFjLXNoYTI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoiYXVyZWxpZW4uY3JlbWF6eUBnbWFpbC5jb20iLCJzdWIiOiJhdXJlbGllbi5jcmVtYXp5QGdtYWlsLmNvbSIsIm5iZiI6MTY1NDI2MDg4NSwiZXhwIjoxNjc3NTg4ODg1LCJpc3MiOiJodHRwOi8vbG9jYWxob3N0LyIsImF1ZCI6IkFueSJ9.sk2y6sMrS6_BkOM3zil548jdKyY5PoIB88Lmf7ge82Q Cookie: ARRAffinity=038c5b6de232f0f1a4a0f95d4bd62f39612acb99002094b5738c6e534da7d779; ARRAffinitySameSite=038c5b6de232f0f1a4a0f95d4bd62f39612acb99002094b5738c6e534da7d779 Mais je ne sais pas comment le mettre en forme pour l'avoir sur la HC2. Pourriez vous m'aider ? Merci par avance Aurélien
  2. Bonjour, Je possède un détecteur de fumée et de monoxyde de carbone de la marque NEST, et ne trouvant pas de Virtual device pour récupérer les informations depuis ma HC2, je me suis lancé dans le développment de mon propre VD et du scnénario associé. Je le mets à disposition si cela intéresse d'autres personnes détenteurs de ce modèle. Scene lua: sc_NestSmokeAndCo_V1.0.0.lua Device Virtuel : VD_NestSmokeAndCO.vfib PREREQUIS ETAPE1 : Créer un client OAuth Se connecter à https://console.developers.nest.com/products, et créer un nouveau client OAuth ETAPE 2 : Renseigner les informations : - Nom - Description - Catégories (2 à sélectionner, celles que vous souhaitez) - Nombre d’utilisateurs - Support URL : https://nest.com/ ETAPE 3: Définissez les permissions (dans notre cas permissions liées au détecteur de fumée): Entrer une description et valider : ETAPE 4 Cliquer sur créer ETAPE 5 Recopier l’ « authorization url » ETAPE 6 Entrer l’url dans votre navigateur et cliquer sur [Allow] Noter le code obtenu ETAPE 7 Il va falloir maintenant avec toutes ces informations, récupérer notre Token qui nous permettra d’interroger l’API. Et oui ce n’est pas encore fini ! Le Token est obtenu en interrogeant l’URL suivante (https://api.home.nest.com/oauth2/access_token) via une requête POST. Moi, j’utilise Postman pour générer des requêtes POST : Noter alors le Token obtenu (qui sera à remplacer dans le code du la scene LUA sous la variable AUTHORIZATION_CODE) Notons que sa validité est de 315360000 secondes, soit 10 ans, ce qui devrait nous laisser tranquille pour quelques temps ;-) ETAPE 8 Récupérons maintenant l’id de notre device afin de se repérer plus facilement dans le json lorsque nous interrogerons l’API depuis notre scene LUA. Dans Postman, j’exécute la requête GET sur https://developer-api.nest.com/ en définissant dans les entêtes du header : - Authorization : Bearer [Valeur du token obtenu à l’étape précédente] (exemple « Bearer c-TYHIx02kjjYghfgu521887l) - Content-Type : application/json Dans la réponse json, sous l’élément [Smoke_co_alarms], noter l’Id du détecteur de fumée (NEST_DEVICE_ID dans le code lua de la scene) Voilà, nous avons tous les éléments pour paramétrer le code de notre scene : - AUTHORIZATION_CODE - NEST_DEVICE_ID INSTALLATION Il ne vous reste plus qu'à installer la scene en remplaçant les variables suivantes avec le code et l'id du device: Indiquer l'ID du VD et les différents ID des icônes avec vos propres ID (cf. en fin de post la liste des icones à importer) Indiquer l'adresse IP de votre Home Center dans le champ IP adress du VD: Importer les icônes ci dessous :
  3. sebalab

    Commande module par virtual device sur HCL

    Bonjour, je rencontre quelques soucis pour la création de virtual device sur HCL,, j'ai beau essayer de suivre les exemples sur le forum, impossible. certain date de 2014-2015 y a t il eu des changement ? Je suis entrain de mettre des modules qubino sur mes radiateurs et est donc besoin d'un virtual device pour les commander. dans celui ci j'ai deux test en plus que je voudrais déjà faire marcher , ensuite il n'y aura plus que la commande à changer. Voici ce que j'ai: je voudrais déjà faire fonctionner test lampe mais je ne comprend pas ou cela pèche. Un peut d'aide s'il vous plais ! Merci d'avance
  4. Virtual Device Position du soleil V1 : Au programme d'ici deux semaines sur le Blog domotique-info.fr. - Azimut et Hauteur solaire, - Radiation directe (Ensoleillement), - Radiation diffuse (Ensoleillement), - Radiation totale théorique, - Nébulosité en Octa - Potentiel radiation pondéré de la nébulosité - Indicateur en Lux Au programme du fork (Plus tard) - Détection d'angles battants - Déclenchement de scénarios pour réduire la température l'été. - Déclenchement de scénarios liés àl'éclairement extérieur. Au programme du fork Production Photovoltaïque (Plus tard) - Simulation de production PV - Alarme de sous-production Post G+
  5. Voici un module virtuel tout simple composé de 2 boutons, permettant de naviguer entre les pièces et les modules virtuels, afin de lister les ID de chaque bouton et slider. Ces ID sont utilisés pour "cliquer" virtuellement sur les boutons depuis du code LUA (VD, Scène, API, etc) : fibaro:call(id_vd, "pressButton", "id_bouton") fibaro:call(id_vd, "setSlider", "id_slider", "value") Rappel du tutoriel de @mprinfo sur la méthode d'identification manuelle des ID des boutons : Module Virtuel - Numérotation Des Boutons Ce module virtuel permet donc d'automatiser le comptage. Importer le fichier vfib ci-joint, rien à paramétrer, utiliser directement. Téléchargement : VD_Buttons_ID.vfib Icône (merci @fredokl) :
  6. vanbellel

    Virtual device dans les scenes

    Bonjour, je n'arrive pas à voir les devices virtuels dans les scenes..... quelqu'un peut il m'aider ? merci
  7. Je vous propose ce tuto pour créer un Virtual Device HCL afin de contrôler un thermostat Netatmo. C'est très utile dans l'optique d'un tableau de bord unifié, regroupant tous les objets connectés au niveau de la box domotique. C'est pratique aussi lorsqu'il s'agit de créer des scènes intégrant des informations provenant du thermostat (température mesurée, température de consigne de la chaudière, mode de chauffage...). Il existe bien un plugin Netatmo sur HCL mais je n'ai jamais pu le faire marcher, du moins pour le thermostat (ça marche peut-être pour la station meteo Netatmo). Par ailleurs, du fait des limitations de la HCL en termes de programmation (pas de LUA comme la HC2), il a fallu développer un web service HTTP (et non HTTPS) jouant le rôle d'intermédiaire entre le virtual device et le thermostat. En marge de ce tuto, je propose donc aussi un web service pour piloter le thermostat Netatmo. Principe L'objectif est donc de "fabriquer" un virtual device HCL pour le thermostat Netatmo permettant de: Récupérer la température mesurée Définir une température de consigne Définir le temps de validité de la température de consigne Switcher entre les modes : manual, program, away Voilààquoi cela ressemble visuellement Prérequis - Savoir créer un virtual device HCL. Ce tuto est très bien pour ça. - Quelques connaissances Linux pourraient être utiles pour l'installation du software, la copie et la modification de fichiers... - Quelques connaissances http et web services pourraient aider àcomprendre le principe de fonctionnement (optionnel) Matériel - Une HCL - Un thermostat Netatmo - un PC ou un Raspberry Pi (ou équivalent) qui jouera le rôle de serveur hébergeant le web service Pour ceux qui voudraient installer le software sur un Linux autre que celui du Raspberry (Raspbian), il faudrait s'informer sur la manière de rajouter un service (deamon) qui pourrait être différente de celle présentée ici. Logiciel Le code (Python) du web service que je fais tourner sur Raspberry Pi et que j'ai appelé "restatmo" est disponible dans Github sur ce lien. Un descriptif d'installation et de configuration y est décrit ici. Il s'agit d'une première version avec surement quelques bugs. Voici quelques caractéristiques du logiciel: - Pour ceux qui connaissent un peu les web services, voici un aperçu de l'interface http de "restatmo": GET /tempSP : récuperer la température de consigne courante POST /tempSP/valeur_entiere : définir une nouvelle température de consigne (durée par défaut : 15mn). Cette requête permet aussi de définir les modes away et program POST /tempDur/duration : définir la durée de validité de la température de consigne courante GET /tempMeas : récupérer la température mesurée par le thermostat - Pour la mise àjour du "slider" de la température mesurée, j'ai prévu un second service (tempupdate.py) se trouvant dans le même répertoire "restatmo". Lorsqu'il est lancé sur la machine passerelle (raspi ou autre), ce service met àjour la température mesurée du virtual device àintervalles réguliers. Des paramètres d'identification de la HCL et l'intervalle de mise àjour sont des données requises par ce service et sont paramétrables dans ce fichier tempupdate.py. Cette manière de mettre àjour la température est la seule que j'ai trouvée. En effet, les requêtes HTTP d'un virtual device sur HCL ne permettent pas d'aller chercher des valeurs. Le virtual device il faut d'abord définir le "host" et le "port" du Virtual Device qui sont respectivement l'adresse IP de machine sur laquelle tourne le service "restatmo" et le port de ce même service (par défaut 5000) Ce virtual device est composé de 3 sliders et de 3 boutons: 1) Slider 1 : la température mesurée par netatmo Il n'y rien àconfigurer au niveau de la chaine de caractères àenvoyer par ce slider. En effet, il est mis àjour automatiquement par le service "tempupdate" décrit précédemment. 2) Slider 2 : la température de consigne Chaine àenvoyer: POST /tempSP/_sliderValue_ HTTP/1.10x0D0x0AHost:192.168.0.28:5000 0x0D0x0AAuthorization: Basic xxxxxxxxxxxxxxxxxxx 0x0D0x0A0x0D0x0A NB: _sliderValue_ est la valeur indiquée par le slider en question (très pratique comme variable) xxxxxxxxxx: "user:password" en base 64 (voir tuto de création de Virtual Device) 3) Slider 3 : la durée de validité de la température de consigne Chaine àenvoyer: POST /tempDur/_sliderValue_ HTTP/1.10x0D0x0AHost:192.168.0.28:5000 0x0D0x0AAuthorization: Basic xxxxxxxxxxxxxxxxxxx 0x0D0x0A0x0D0x0A 4) Bouton1 : mode program Chaine àenvoyer: POST /tempSP/0 HTTP/1.10x0D0x0AHost:192.168.0.28:5000 0x0D0x0AAuthorization: Basic xxxxxxxxxxxxxxxxxxx 0x0D0x0A0x0D0x0A 5) Bouton2 : mode manual (ce n'est rien d'autre qu'une température de consigne à20°) Chaine àenvoyer: POST /tempSP/20 HTTP/1.10x0D0x0AHost:192.168.0.28:5000 0x0D0x0AAuthorization: Basic xxxxxxxxxxxxxxxxxxx 0x0D0x0A0x0D0x0A 6) Bouton3 : mode away POST /tempSP/101 HTTP/1.10x0D0x0AHost:192.168.0.28:5000 0x0D0x0AAuthorization: Basic xxxxxxxxxxxxxxxxxxx 0x0D0x0A0x0D0x0A enfin, pensez àtélécharger l'icone (ci-joint) àassocier au virtual device. La suite je n'ai peut-être pas suffisamment détaillé ce tuto, notamment concernant la partie paramétrage et installation du service web. N'hésitez pas àme solliciter si vous êtes intéressés ou si vous avez des questions. Vous pouvez aussi jeter un coup d'oeil sur mon autre tuto dont le but est de piloter l'alarme HCL/HC2 avec une passerelle NFC. A++
  8. Pour la HCL, j'avais en son temps fait un tuto pour afficher une icône dans un virtual device une icône en fonction de la valeur d'une variable globale, et de pouvoir modifier sa valeur (également depuis son smartphone), quelle se mette à jour lors d'un restart de la box, etc pour une HCL En passant sous HC2, j'avais gardé le même principe, et pour chaque VD (et donc chaque variable), la main loop tournait en continu pour vérifier que l'icône correspond bien à la valeur de la variable. Ce n'est vraiment pas optimal. Je vais vous expliquer ici la solution que j'ai mise en place pour que la charge sur la box soit moins importante. Merci à Steven, i-magin et mprinfo qui m'ont aidé pour débugger Création des variables Je prendrai dans mon exemple 2 variables globales : Auth_PS3 avec 2 valeurs possibles : "Autorisé" et "Interdit" Auth_TV avec 2 valeurs possibles : "Autorisé" et "Interdit" (mais les valeurs pourraient être différentes que pour la 1° variable, ou avoir plus que 2 valeurs) Modules virtuels Chaque variable a son module virtuel. Il a pour objectif d'afficher une icône différente en fonction de la valeur de la variable. Pour facilement les retrouver, j'ai créé une section "Section Virtuelle" et dedans une pièce "Variables". Chaque VD a le nom suivant : "Var_xxxx" où xxxx est le nom de la variable globale. Dans notre exemple : "Var_Auth_PS3" et "Var_Auth_TV". L'icône par défaut du VD est et doit rester l'horrible cube bleu (facile ainsi de repérer si la VD est à jour) J'ai créé les boutons suivants : Bouton 1 : Autorisé / Interdit Il permet simplement de faire le switch de la valeur de la variable. C'est le bouton par défaut du VD. Il n'y a pas d'icône associée. -- nom de la variable à modifier local variable = "Auth_PS3" if fibaro:getGlobal(variable) == "Interdit" then fibaro:call(fibaro:getSelfId(), "pressButton", "3") else fibaro:call(fibaro:getSelfId(), "pressButton", "4") end Label : Statut afficher en texte la valeur de la variable Bouton3 : Autorisé c'est le bouton qui est appelé pour mettre la variable à "Autorisé" Il contient l'icône qu'on veut voir affichée (comme ça on ne doit pas chercher son ID) fibaro:setGlobal('Auth_PS3', 'Autorisé') fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Statut.value", 'Autorisé') Bouton4 : Interdit c'est le bouton qui est appelé pour mettre la variable à "Interdit" Il contient l'icône qu'on veut voir affichée (comme ça on ne doit pas chercher son ID) fibaro:setGlobal('Auth_PS3', 'Interdit') fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Statut.value", 'Interdit') N.B. l'ID de ce bouton ne peut pas être appelée par le bouton Switch, mais seulement son numéro QUI CHANGE si vous changez l'ordre. C'est débile, mais c'est comme ça … Utilisation On clique sur le bouton principal, et il switch la valeur de la variable On peut utiliser Google Calendar pour lui dire d'appuyer directement sur le bouton "Autorisé" ou "Interdit" Vous devez modifier les scènes qui modifiaient directement la variable, en la faisant appuyer sur le bouton de la VD qui modifie la variable et met à jour l'icône de la VD (car il n'y a plus le mainloop qui contrôle en continu la valeur de la variable) Limitations et solution : Lors du redémarage de la box, ou Lors de la sauvegarde du VD (parce que vous avez fait une petite modif, ou …) L'icône qui est affichée pour le VD, est l'icône par défaut du VD. Le cube bleu, pas cool … Donc pour pallier à ce problème, j'ai créé un VD supplémentaire "Var_Update" Dont voici le code : un GRAND merci à mprinfo qui m'a beaucoup aider pour faire qqch de plus sympa et générique ---------------------------------- -- User Settings ---------------------------------- -- la Table doit avoir la structure suivante : -- 1/ nom de la variable globale entre " -- 2/ ID du VD qui affiche la valeur de la VG -- 3/ n° du premier bouton qui doit être appuyé -- (qui correspond à la première valeur de la variable) -- 4/ n° du dernier bouton qui doit être appuyé -- (qui correspond à la dernière valeur de la variable -- on suppose que tous les boutons se suivent de 1 en 1) -- 5/ valeurs possibles de la variable entre " -- (elles doivent être listées dans l'ordre des boutons de la VD) local Table = {"Auth_PS3", 23, 3, 4, "Autorisé", "Interdit", "Auth_TV", 289, 3, 4, "Autorisé", "Interdit", "Auth_VMCEtage", 290, 3, 4, "Autorisé", "Interdit", "Auth_TerrPar", 291, 3, 4, "Autorisé", "Interdit", "Auth_LumHallNuit", 362, 3, 4, "Autorisé", "Interdit", "ECS", 292, 3, 4, "Oui", "Non", "DayPart", 130, 3, 4, "After SunRise", "After SunSet", "Noel", 363, 3, 4, "Oui", "Non", "Saison", 133, 3, 6, "Printemps", "Eté", "Automne", "Hiver", "Chauffage", 351, 3, 5, "0", "1", "2", "Vacances", 293, 3, 4, "Oui", "Non" } ---------------------------------- -- DO not change bellow this line ---------------------------------- local i = 1 while Table[i] ~= nil do local VG_Nom = tostring(Table[i]) fibaro:debug("----------------------------") fibaro:debug("Nom de la variable Globale = " ..VG_Nom) local VD_id = tostring(Table[i+1]) local Btn_Deb = tonumber(Table[i+2]) local Btn_Fin = tonumber(Table[i+3]) local NbrVal = (Btn_Fin - Btn_Deb) + 1 --Nbr de valeur possibles de la variable fibaro:debug('NbrVal = ' ..NbrVal) i = i + 4 local VG_Val = fibaro:getGlobalValue(VG_Nom) fibaro:debug('Valeur de la variable Globale = ' ..VG_Val) for j = 1,NbrVal do if VG_Val == Table[i+j-1] then fibaro:debug(VG_Nom.. ' = ' ..VG_Val) fibaro:debug("Il faut appuyer sur le bouton : " ..Btn_Deb.. " de la VD_id " ..VD_id) fibaro:call(VD_id, "pressButton", Btn_Deb) end Btn_Deb = Btn_Deb + 1 end -- for i = i + NbrVal end -- while Pour retrouver l'ID du VD, vous avez plusieurs solutions : Le toolkit de Krikroff l'API : http://<IP Box>:<Port Box>/api/virtualDevices vous exportez le VD, et dans l'URL vous voyez ?id=xxx vous éditez le VD, et dans l'URL vous voyez ?vid=xxx Il vérifie la valeur de la variable et appuie sur le bouton correspondant à l'icône. D/Variable. Donc maintenant, quand je vois qu'une des icônes associée à mes variables est l'icone standard, je clique sur le bouton, et tout est remis au carré. Cela évite d'avoir un main loop qui tourne pour chaque variable 99% du temps pour rien. On a donc trouvé une parade à la deuxième limitation ;-) Pour la première limitation (mise à jour après un restart de la box) la solution est facile : Créer une scène qui appelle la VD "Var_Update" / bouton 1 au démarrage de la box. --[[ %% autostart --]] fibaro:sleep (10*1000) fibaro:call(361, "pressButton", "1") où 361 est l'ID du Vd "Var_Update" Merci à Steven qui finalement à trouvé la solution du sleep au début de la scène, ainsi qu'à i-magin et mprinfo pour leurs bonnes idées
  9. Bonsoir, Pour afficher une icône en fonction de la valeur d'une variable globale, dans un virtual device, j'utilise le code suivant dans la main loop : -- nom de la variable à vérifier local variable = "Auth_TV" -- ID des icônes local icone1 = 1097 local icone2 = 1096 if fibaro:getGlobal(variable) == "Interdit" then fibaro:call(fibaro:getSelfId(), "setProperty", "currentIcon", icone1) else fibaro:call(fibaro:getSelfId(), "setProperty", "currentIcon", icone2) end J'ai le pressentiment que ce n'est pas idéal. J'ai en effet des boutons pour changer la valeur de la variable, et je pourrais sans problème lui assigner à ce moment la bonne icône. Mais pourquoi l'ai-je mis dans la main loop ? Comme ça après un restart de la box, la bonne icône s'affiche. Je crois que je pourrais optimiser cela en faisant un test sur le type d'icône qui est chargée dans le VD. En effet, après un reboot, c'est l'icône par défaut (le cube bleu) qui est chargé (et lui n'a pas de numéro) ou l'icône personnalisée que j'ai définie comme icône par défaut (et qui elle a un numéro). Est-ce que quelqu'un pourrait me donner la ligne de code qui me permettrait de savoir quelle icône est utilisée pour le VD ? Merci beaucoup
  10. Visualiser les 10 dernières ouverture de Porte Je remercie @steven car ce VD est une adaptation de son VD Variables Globales Ce virtual devices affiche la dernière détection avec le temps écoulé des captures comme on peu le voir dans l'interface Les informations sont récuperer directement via l'api il peut y avoir quelques soucis si un modules et déclarer comme detecteur de porte alors qu'il ne l'ai pas Ouverture_porte_v0.2b.vfib
  11. Lazer

    Virtual Device Et Main Loop

    Voici quelques résultats de mes recherches sur les Main Loop d'un périphérique virtuel, en espérant que ça puisse aider les développeur de super modules. Le code LUA d'une Main Loop tourne en boucle avec un sleep de 3s. Si la main loop bouffe trop de ressources (allocation de variables locales à répétition), la HC2 finit par tuer le processus, et on est obligé de relancer la main loop en sauvegardant à nouveau le Virtual Device. Une solution a été trouvée par Krikroff, en gros, le principe est de créer une fonction et d'appeler celle-ci à chaque boucle, afin de ne pas ré-allouer les variables à chaque passage. Il faut s'inspirer de ses Virtual Device pour comprendre (genre Update Notifier). Malgré cela j'ai découvert que le module Update Notifier est affecté par un bug qui finit par arriver au but de plusieurs jours (en fonction de la fréquence de rafraichissement). C'est la fonction Net.FHttp() qui est responsable, car trop gourmande en ressources. Démonstration : Dans un premier temps, on crée une main loop toute simple, avec des lignes de codes qui s’enchainent, un un fibaro:sleep() à la fin, sachant que le temps d'attente total fera 3 secondes de plus, car le code interne de la HC2 effectue automatiquement un sleep de 3s : -------------------------------------------------- -- Exemple de Main loop -------------------------------------------------- -- System variables local selfID = fibaro:getSelfId() local ip = fibaro:get(fibaro:getSelfId(), 'IPAddress') local port = fibaro:get(fibaro:getSelfId(), 'TCPPort') local Web = Net.FHttp(ip, port) -- Main code local payload = "/url/a/appeler?avec&des&parametres" response, status, errorCode = self.Web:GET(payload) if tonumber(status) == 200 and tonumber(errorCode) == 0 then if (response ~= nil) then -- Actions à effectuer -- ... else fibaro:debug('Error : Can not connect to Web server, empty response') end else fibaro:debug('Error : Can not connect to Web server, status='..status..', errorCode='..errorCode) end -- Wait 60s fibaro:sleep(60*1000) Normalement, cette main loop sera tuée au bout de quelques heures, car les variables ne sont pas libérées, et surtout réallouées à chaque passage dans la boucle, donc on fini par dépasser une limite de mémoire utilisée. Dans un second temps, on applique la recette de Krikroff, en créant une sorte d'objet qui est défini une seule fois. Cet objet contient des variables (elles sont également définies une seule fois), et une ou plusieurs fonctions. La fonction principale est appelée à chaque passage dans la boucle : -------------------------------------------------- -- Exemple de Main loop -------------------------------------------------- if (MyObject == nil) then MyObject = { -- System variables ip = fibaro:get(fibaro:getSelfId(), 'IPAddress'), port = fibaro:get(fibaro:getSelfId(), 'TCPPort'), -- Main code main = function(self) local Web = Net.FHttp(self.ip, self.port) local payload = "/url/a/appeler?avec&des&parametres" response, status, errorCode = Web:GET(payload) if tonumber(status) == 200 and tonumber(errorCode) == 0 then if (response ~= nil) then -- Actions à effectuer -- ... else fibaro:debug('Error : Can not connect to Web server, empty response') end else fibaro:debug('Error : Can not connect to Web server, status='..status..', errorCode='..errorCode) end -- Wait 60s fibaro:sleep(60*1000) end } fibaro:debug("Function successfully loaded in memory") end -- Start MyObject:main(); Malgré tout, on finira par arriver à une situation où la boucle n'est pas tuée, mais la fonction Net.FHttp() renvoie les valeurs errorCode=<vide> et errorCode=2. C'est en tout cas ce que j'ai constaté sur le module Update Notifier, et sur mes propres essais. Donc il semblerait qu'encore une fois, bien que la variable Web soit située dans la fonction main(), la mémoire ne soit pas correctement libérée. Pour finir, en 3ème étape je pense avoir trouvé une solution stable, qui tourne depuis une 15zaine de jours chez moi, avec un passage dans la boucle toutes les 60 secondes, donc assez intensif. L'idée est de définir la variable Web une seule fois, et non plus dans le code de la fonction : -------------------------------------------------- -- Exemple de Main loop -------------------------------------------------- if (MyObject == nil) then MyObject = { -- System variables Web = Net.FHttp(fibaro:get(fibaro:getSelfId(), 'IPAddress'), 80), -- Main code main = function(self) local payload = "/url/a/appeler?avec&des&parametres" response, status, errorCode = self.Web:GET(payload) if tonumber(status) == 200 and tonumber(errorCode) == 0 then if (response ~= nil) then -- Actions à effectuer -- ... else fibaro:debug('Error : Can not connect to Web server, empty response') end else fibaro:debug('Error : Can not connect to Web server, status='..status..', errorCode='..errorCode) end -- Wait 60s fibaro:sleep(60*1000) end } fibaro:debug("Function successfully loaded in memory") end -- Start MyObject:main(); Si les experts ont un avis sur la question, je suis preneur. En attendant, j'espère que ça pourra servir. Dans tous les cas, j'espère que la v4 résoudra ces problèmes.
  12. Ce module virtuel permet de modifier les paramètres d'un device. Pour savoir comment l'utiliser, voyez la doc dans le code du VD. Il adapte son code automatiquement pour v3.x et v4.x. Son utilité : vous avez le code pour l'utiliser dans vos VD en fonction de vos besoins (je n'ai pas testé le code pour les scènes) permet d'entrer une valeur précise pour un paramètre sans devoir vous faire .... à bouger le slide bar, qui parfois ne veux jamais mettre la valeur que vous voulez La première fois que vous cliquez sur le bouton, il affiche le device, le paramètre à modifier, sa valeur actuelle et la nouvelle valeur souhaitée Un deuxième clic sur le bouton (dans les 5 secondes - paramétrable) confirme le changement un troisième clic sur le bouton affiche la nouvelle valeur telle que enregistrée dans le device Si vous avez des idées d'amélioration, elles sont les bienvenues. DeviceParameter_v1.0.vfib P.S. J'attends une super icône de notre graphiste national
  13. Bonjour à tous, -- Introduction -- Partant du constat que les courbes de températures ne sont dispo qu’à partir de la V4, et qu’on ne peut pas en tirer profit dans des scénarios, je me suis demandé comment mesurer les variations des relevés de température. Voici un partage d’un petit développement que j’ai réalisé pour afficher une « image » de l’évolution de la température. C’est sous la forme d’un Virtual Device en attendant de peut-être le transformer en plugin un jour… -- Installation -- Créer une variable globale (une pour chaque Virtual Device créé) >> exemple ici : Stats_Combles Connaitre l’ID de la sonde de température >> Exemple ici : 30 Importer le Virtual Device A télécharger ici : VD_StatsTemp_V1.0.vfib - Configurer l’@IP du VD avec le nom de la variable créée à l’étape 1 - Configurer le Port TCP avec l’ID de la sonde de température identifié à l’étape 2 Exemple : Ajout d’une icône sur le bouton PushTemp + Virtual Device >> Téléchargement de l’icone C’est parti ! -- Description fonctionnelle -- Par défaut la remontée de la température se fait toutes les 5 minutes La configuration est terminée, il ne reste plus qu’à attendre afin qu’il y ai assez de données pour retourner une valeur de la tendance. Pour forcer l’upload de la température courante, il suffit de cliquer sur le bouton « PushTemp ». Attention, cette action fausse les statistiques par rapport au temps. Le plugin affiche la différence de température entre l’instant T et les relevés précédents. Valeurs affichées : - T° Actuelle = Température actuelle - Min/AVG/Max = Température mini/moyenne/max des 24 dernières heures - Tendance H-10’ = Différence de température entre le dernier relevé et le relevé d’il y a 10 minutes - Tendance H-30’ = Différence de température entre le dernier relevé et le relevé d’il y a 30 minutes - Tendance H-1 = Différence de température entre le dernier relevé et le relevé d’il y a 1 heure - Tendance H-2 = Différence de température entre le dernier relevé et le relevé d’il y a 2 heures - Tendance J-1 = Différence de température entre le dernier relevé et le relevé d’il y a 1 jour - Nb Records = Debug >> Nombre de données de température stockées dans la variable globale. -- Description technique -- Le Main Loop déclenche un appui sur le bouton PushTemp toutes les 5 minutes. Changement du délai entre deux remontées de température Valeurs possibles entre 2 et 10 minutes (en dessous trop de valeurs à stocker dans la variable globale / En dessus la tendance h-10' ne fonctionnera pas). - Main Loop : local TimeToWait = 5 --en minutes - Minimum = 2 ; Max = 10 - Bouton PushTemp local TimeToWait = 5 --en minutes >> Minimum = 2 ; Max = 10 La sauvegarde et restauration de l’historique des données dans la variable globale est faite à l’aide de la fonction json.encode() et json.decode(). Certaines versions V4 Beta avaient un pb avec cette fonction, corrigée depuis les dernières versions (V4.020B). Le stockage d’une chaine de caractère dans une variable globale est limité en taille. D’après mes tests, il semblerait que ça soit aux alentours de 1600 caractères. Attention, les valeurs > ou = à 0 sont précédés du caractère « + ». --Bug connus-- Lors de la modification d’une variable globale par l’interface web, la sauvegarde écrase les données contenues dans la variable globale qui stock l’historique des relevés de température. Une variable globale est limitée en nombre de caractères qui peuvent y être stockés. Il semblerait que cette valeur soit d’environ 1600 caractères. Le VD est configuré pour -- Roadmap -- Affichage des données statistiques des 7 derniers jours (min/avg/max) Transformation en plugin Des idées ?
  14. Salut à tous, J'ai un petit soucis. Peut être bête mais bon je pose ma question. Lorsque que j'ajoute une scene, les notifications ainsi que les Virtual Device sont vides alors que j'ai bien configuré mes notification et j'ai aussi plein de Virtual Device. Est ce une limitation de la HCL ou j'ai oublié de faire un truc ? Merci pour vos retour. John
  15. Bonsoir amis utilisateur de HC2 & HCL. J'avance doucement dans la découverte et maîtrise de la box afin d'arriver à réaliser tout ce que je veux avant d'emménage dans ma futur maison neuve (Mars 2015)pour la quelle j'ai essayé de pensé au mieux l'installation électrique pour contrôler les Volets roulant (VR), éclairage principaux et son. J'arrive actuellement à l'étape suivante: Je vais avoir 9 VR et certains éclairage commandé via IPX800 (pour le coà»t, simplicité et fiabilité du filaire et firmware à jour). Je voudrais mettre à jour le statut des Virtual Device de la HCL à jour selon l'actionnement des relais de l'ipx Je sais que l'ipx peut envoyer en push (avec login et mdp depuis cette année) lors d'une action. Exemple quand j'active la Sortie 1, pour baisser un VR, j'envois en push depuis l'ipx <IP:port><log:pass>/api/callAction?deviceID=XX&name=turnOn Donc dans ce cas pendant que le VR baisse ça active bien le device avec l'ID XX puis ça le stop quand la sortie 1 se coupe. Ainsi plusieurs problème se pose: Je dois mettre l'ID d'un device, dans mon test j'ai mis l'id du module 2x1.5kw fibaro qui est sur ma VMC. Donc ca marche, mais pour un virtual device, je mets quoi? le nom du device me retourne une erreur. Si c'est une lampe que j'actionne et non un volet roulant, pas de problème sur le statut, il reste bien ON aussi longtemps que le sortie 1 reste allumée mais pour un VR elle se coupe... une fois le timer finie et donc le statut par la même occasion. Pour récapituler ce que je cherche à faire: Quand je fais descendre un volet roulant (sans passer pour la HCL) je veux que le Virtual Device sur le HCL change de statut afin d'avoir une sorte de retour d'état. Faut il passer par une variable + scène? /Edit: Auto réponse pour les personnes qui chercherons à faire la même chose sur un HCL Il faut que je trouve le soft HC toolkit pour identifier l'id du virtual device Pour le volet roulant il faut que je mets du push sur la fermeture du relais et non sur l'ouverture. Edit Solution: - Virtual Device: 2 Bouton: On / Off avec les icons qui vont bien et ils envoient une requête HTTP vers l'ipx sur la sortie souhaité. - Sur l'ipx: en push on envoie une requête pour actionner une scène (qui est non active): - La Scène: Elle met à jour la varible et le virtual device. en image:
×