Aller au contenu

Rechercher dans la communauté

Affichage des résultats pour les étiquettes 'Thermostat'.



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

13 résultats trouvés

  1. MCO HOME - Thermostat pour chaudière Z-Wave+ MH3901-Z Le MH3901-Z est un thermostat intelligent pour chaudière. Il peut détecter automatiquement la température intérieure et afficher la valeur de température pertinente pour le contrôle du chauffage de la chaudière. Il peut également activer/désactiver automatiquement le système de chauffage en fonction de la différence de température. Il peut également être contrôlé à distance par le réseau Z-Wave. Fonctionnant sur pile ou via une alimentation 24V AC ou DC, il peut être associé avec 5 actionneurs Z-Wave maximum. FONCTIONS : Thermostat pour chaudière Compatible Z-Wave Plus Ecran d'affichage LCD Finition en verre trempé, design moderne Boutons tactiles capacitifs Sortie contact sec intégrée Supporte 1 groupe d'association (5 actionneurs maximum) CARACTERISTIQUES TECHNIQUES : Type de module: Récepteur Z-Wave Matériau: Verre trempé + alliage PC Alimentation: 9-24V AC/DC ou 3x 1,5V AAA Charge maximale : 0,5A Fréquence: 868,42 Mhz Portée: jusqu'à 30 m Température de fonctionnement: 0-50°C Réglage de la température: 5-37°C Précision: 0,1 ℃ Dimensions: 104 x 104 x 20 mm Installation: Murale (vertical), boite d'encastrement standard 60 mm
  2. MCO HOME - Thermostat pour chauffage électrique Z-Wave+ MH7H-EH2 Le thermostat pour chauffage électrique MCOHome est un appareil compatible Z-Wave pour le contrôle de la température intérieure. Il s'utilise principalement avec un système de chauffage électrique. Ce thermostat peut être inclus et exploité dans un réseau Z-Wave avec d'autres appareils certifiés Z-Wave de n'importe quel autre fabricant. Chaque module Z-Wave alimenté sur secteur fonctionne comme un répéteur sans fil avec les autres modules, afin d'assurer une couverture totale de votre habitation. FONCTIONS : Thermostat pour chauffage électrique et capteur d'humidité Ecran d'affichage LCD Affichage de l'heure et de la température Calibration de la température Compatible Z-Wave Plus Finition en verre, design moderne Boutons tactiles capacitifs CARACTERISTIQUES TECHNIQUES : Type de module : Récepteur Z-Wave Matériau : Verre trempé et plastique (PC Alloy) Alimentation : 230VAC, 50/60HZ Charge maximale : 16A Consommation : <1W Fréquence : 868,42 Mhz Portée : jusqu'à 30 m Capteur de température : NTC 15K Température de fonctionnement : 0-50°C Réglage de la température : 5-37°C Dimensions : 86 x 86 x 43 mm Installation : Murale (vertical), boite d'encastrement standard 60 mm
  3. MCO HOME - MH8-FCB - Thermostat pour ventilo-convecteur à 2 tubes Z-Wave+ Le thermostat pour ventilo-convecteur MCOHome est un appareil compatible Z-Wave pour le contrôle de la température intérieure. Il s'utilise principalement avec un système de ventilo-convecteur 2 tubes. Il mesure la température ambiante et connait l'heure locale, ainsi il peut contrôler automatiquement la vitesse du ventilateur en fonction de la différence de température. Ce thermostat peut être inclus et exploité dans un réseau Z-Wave avec d'autres appareils certifiés Z-Wave de n'importe quel autre fabricant. Chaque module Z-Wave alimenté sur secteur fonctionne comme un répéteur sans fil avec les autres modules, afin d'assurer une couverture totale de votre habitation. FONCTIONS : Thermostat pour ventilo-convecteur 2 tubes Contrôle on / off intelligent d'un ventilateur à 3 vitesses ou vanne électrique Mode ventilation, chauffage, rafraichissement Ecran d'affichage LCD Affichage de l'heure et de la température Calibration de la température Mémoire non-volatile pour conserver l'état de fonctionnement après une coupure de courant Compatible Z-Wave Plus Finition en verre, design moderne Boutons tactiles capacitifs CARACTERISTIQUES TECHNIQUES : Type de module : Récepteur Z-Wave Matériau : Verre trempé et plastique (PC Alloy) Alimentation : 230VAC, 50/60HZ Charge maximale : 3A Consommation : <1W Fréquence : 868,42 Mhz Portée : jusqu'à 30 m Capteur de température : NTC 15K Précision d'affichage : 0,1°C Température de fonctionnement : 0-55°C Réglage de la température : 5-35°C Dimensions : 86 x 86 x 42 mm Installation : Murale (vertical), boite d'encastrement carrée 86 x 86 mm
  4. Secure (Hortsmann) - Thermostat Mural HRT4-ZW SRT-321 FONCTIONS : Thermostat sans fil Z-Wave Ecran LCD rétroéclairé Simple d'utilisation Entièrement compatible avec d'autres produits Z-Wave Un seul bouton CARACTÉRISTIQUES TECHNIQUES : Type de module : Contrôleur Z-Wave Alimentation : 2x piles AAA (LR3) Durée de vie des piles : 2 ans Fréquence : 868,42 Mhz Portée : jusqu'à 30 m en champ libre Température de fonctionnement : 0°C à 40°C Plage de température : 5°C à 30°C Précision : 0,5 °C Indice de protection : IP30 Dimensions : 86 x 86 x 36,25 mm NOTICE : hrt4b-zwmanual.pdf INCLUSION : ? Ne pas hésiter à nous donner un retour si particularité pour l'inclusion avec la Hc2 ( paramètres, firmware spécifique, etc...)
  5. Bonjour à toutes et tous, Je me permet d'ouvrir un topic sur un sujet assez peu étudié qu'est celui de l'épineuse question de la domotisation des chaudières complexe, à condensation, à puissance variables, en bref toutes les chaudières dites "intelligentes" et qui ont pour point commun d'être impossible à gérer correctement via un thermostat connecté (Nest, Netatmo, Tado, etc). J'ai vu qu'il existait un standard auquel quelques marques ont adhéré, il s'agit de l'OpenTherm qui est désormais géré par le thermostat Nest 3 mais la plupart des grandes marques de chaudière n'en font pas encore partie. Pour ce qui est de mon cas personnel, je dispose d'une chaudière à condensation récent de marque WEISHAUPT à puissance variable dont le thermostat gère, via de bon vieux boutons, les plages horaires et les présences absences. Cependant, il me faudrait, notamment pour coordonner la consigne de ma chaudière avec celle de mes vannes DANFOSS et gérer facilement les présences/absences, pouvoir domotiser tout ça. Je n'envisageais aucune solution jusqu'à ce que la marque sorte un module WCM-COM qui s'interface via eBUS entre le thermostat et la chaudière et qui peut être géré via une interface web ou une application. J'ai interrogé la marque quant à la disponibilité d'une API pour ce module qui permettrait de le gérer via des requêtes HTTP. J'attend leur réponse car ce petit module coute "juste" 380€ ce qui est très cher s'il permet simplement de gérer sa chaudière à travers un écran, exactement de la même façon que l'on le ferai en appuyant sur les boutons. Ainsi, je voulais savoir si vous aviez trouvé des solutions pour gérer vos chaudières intélligentes via votre box domotique. Par ailleurs, certains ont-ils une chaudière WEISHAUPT et si oui, seraient-ils intéressés par ce module ? (voir même certains auraient-ils plus d'infos que moi, la dessus ?) Merci par avance de vos réponse. Antoine.
  6. Bonjour, Je souhaite changer ma sonde d'ambiance de ma PAC et la remplacer par un thermostat, j'ai vu depuis un moment le Delta Dore Deltia 8.00 qui est bien et correspond à mes besoins en terme de programmation, Il fonctionne avec piles et envoie les ordres à la chaudière avec 2 fils. Mais si je dois changer, autant prendre un modèle zwave. donc je cherche si possible la même chose (connexion 2 fils à la chaudière) qui communiquerai en z-wave avec mon HC2 pour la programmation et modification des ordres à distance. Pouvez vous m'aider ? Merci d'avance. Mikael
  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. Voici un tuto qui vous permettra de donner un peu plus de flexibilité et de paramétrage pour votre chaudière sur la partie sanitaire. En règle normal une bonne vielle chaudière fonctionne sur le type On/Off, avec souvent pas de possibilité d’intégrer des plages horaires, ou son fonctionnement est réalisé à l’aide d’un thermostat réglable pour la mise en chauffe de l’eau sanitaire. Grace à la box HC2 et 2 modules Fibaro vous pourrez enfin donner une seconde vie à votre chaudière: Réglage des températures eau sanitaire en paramétrant des températures mini et maxi (hystérésis). Coups de chauffes sur demande si besoin Arrêt de celle-ci si l’on part en vacances, avec la possibilité de la remettre dans son mode normal avant notre retour de vacances … En plus le module virtuel proposée vous apportera une vision globale de vos températures de chauffe-eau sanitaire, mais aussi la température de l’échangeur ou plus particulièrement du foyer de chauffe et cela en temps réel. · En premier : Il vous faudra un peu de confiance en vous, et mettre les mains dans le 220V de la chaudière. Il faudra avant de commencer bien repérer les câbles et connecteur de la chaudière afin de réaliser si besoin un retour en arrière. J’ai testé avec Madame la problématique de l’absence de l’eau chaude, et bien elle n’est pas faite pour ! Blague mis à part, le repérage est important car si l’on doit intervenir plus tard mais vraiment plus tard, c’est mieux que de passer ½ journée à tout retrouver … · En deuxième : Il faut comme matériel deux modules Fibaro : - Un module universel FGBS-001 (récupération des températures) et deux sondes 18B20 (10 pièces étanches pour moins de 15 euros sur eBay, Amazon) Concernant ce module il peut recevoir jusqu’à 4 sondes, nous en aurons besoin que de deux à vous de savoir où vous voulez mettre les deux autres pour prendre la température. - Un module FGS-221 Switch 2x1.5kW (permettra de commander la mise en chauffe et la gestion du circulateur eau sanitaire). · En troisième : Il faut repérer le thermostat réglable de la chaudière. Il y a si tout va bien connecter sur celui-ci deux fils (arrivé du 220V – et la sortie qui est commandée par la sonde elle-même plongée dans le cÅ“ur de votre ballon d’eau chaude) en un mot il s’agit d’un interrupteur commandée par la sonde de chauffe, si l’eau est chaude on coupe, si elle est froide on allume. Le tout est réglé par un bouton rotatif de façade qui permet de choisir la température de coupure. Rappel : La norme électrique impose que la phase (rouge ou autre) soit coupée dans un contacteur, jamais le neutre qui lui est obligatoirement bleu. Normalement votre chaudière est câblée de la sorte, donc dans le thermostat il ne devrait y avoir que la phase de coupée. Il est important de profiter de cette action pour valider à l’aide d’un tournevis testeur s’il s’agit bien de la phase. Pour valider, chaudière allumé, mais pas en marche de chauffe vous devez avoir sur l’une des cosses du thermostat le 220V qui arrive et donc en posant le tournevis testeur le petit voyant doit s’allumer. L’autre cosse sera alimentée lorsque la chauffe sera demandée par la baisse de température, ou en tournant la valeur tmp du thermostat à la hausse. Ici l’idée finale sera de shunter ce thermostat électromécanique et de laisser cette tache au module FGS-221. Voilà pour la partie texte. Présentation globale de l’installation: Chaudière et PC vont faire bon ménage !!! Installation du module FGS-221 Switch 2x1.5kW : La cosse 01 est mon arrivée phase 220V, si l’on prend un testeur multimètre, en testant la cosse 1 et le neutre de l’arrivé 220v de la chaudière on a du 220v au multimètre. Si l’on réalise cette action sur l’autre cosse, il ne doit pas y avoir du 220 v sauf si la chaudière est en cours de chauffe sanitaire. Mettre de coté ce second fil (cosse 2), il devra être connecté directement au module FGS-221. Vu d’ensemble : Installation du FGS-221 Switch 2x1.5kW, dans l’ordre de gauche à droite : - fil bleu (neutre) - Fil rouge 1 (phase) alimentation du module FGS-221 (220 volts à prendre directement sur la chaudière connecteur Wago). - Fil suivant rouge 2 (phase) pour l’alimentation des relais du module FGS-221 à prendre aussi directement sur le connecteur Wago. - Fil rouge 3 (phase) retour vers le câble de la chaudière qui se trouvait sur le thermostat en cosse 2 (celui qui est en fonctionnement uniquement si la chaudière est en cours de chauffe de l’eau sanitaire. La phase est installée sur une cosse de domino, elle-même connectée au FGS-221 Switch (IDxxx01). - Fil rouge 4 (phase), celui-ci sert a alimenter le circulateur sanitaire qui sera lui aussi connecté au FGS-221 Switch (IDxxx02). On utilisera uniquement la phase du circulateur sanitaire (ici fils marron). Pour bien voir l’ensemble: Et pour les températures, installation du module FGBS-001 avec ces sondes : J’ai installé un coffret électrique dans le salon, caché des regards, à l’intérieur on peut installer plusieurs petits modules afin de regrouper ceux-ci. La connexion des sondes DS18B20 a été réalisée en rallongent les fils avec du câble réseau, Il me reste donc de la place dans ce câble si je veux étendre mon installation domotique vers la cave. Les sondes sont couplées au module FGBS-001 une est installée à la place de la sonde sanitaire Sonde N°01 à l’intérieur du ballon d’eau chaude, et l’autre dans l’échangeur sonde N°02 (foyer de chauffe) de la chaudière … Mon réseau 12v à découpage : Pour une raison purement pratique j’ai aussi instalé un gros transformateur à découpage dans mon sous sol, le câblage en 12v est réalisé dans l’ensemble de la maison, de ce fait je peux utiliser pour les alimentations des modules Fibaro 12v. Mais aussi très pratique pour les éclairages led ou ruban led, et autre alimentations demandant du 12v bien régulé. Et qui sait un jour je serais branché sur une batterie à décharge lente avec un petit panneau solaire ! Rapidement je vais dupliquer ce transformateur (redondance de l’alimentation) car si il n’y a plus de 12v, le module FGBS-001 sera coupé donc plus de sonde, donc plus d’eau chaude et plus de lumière LED dans beaucoup de pièces … Coté code : J’ai travaillé principalement sur la base de variable globale plus facile à metre en place pour un autre utillisateur, pour faire fonctionner directement l’application. J’ai aussi sorti les IDs de mes modules Fibaro afin aussi de simplifier encore une fois la mise en place. - Le mode normal fonctionne suivant deux plages horaires possibles matin et soir. On peut régler aussi hystérésis afin de ne pas solliciter la chaudière à tout va. Il y a aussi un paramétrage possible dans le début du code si l’on veut avoir systématiquement une mise en chauffe lorsque l’on rentre dans la plage horaire de chauffe (local OnChauffeHoraire = "no" -- yes or no). - Un mode coup de chauffe, si l’on rentre en dehors de la plage de fonctionnement et que l’eau sanitaire est un peu froide ce coup de chauffe sera bien utile. Noté que lorsque la consigne de température est atteinte, le système repasse en mode normal est reprend son état dans lequel il se trouvait initialement. - Un mode Off x minutes, j’ai créé ce mode car il peut servir pour plusieurs choses. Initialement je trouvais dommage que lorsque tout le monde avait pris sa douche, que ma chaudière poursuivre sa chauffe si elle se trouvait dans la plage horaire et dans sa phase montante de chauffe. D’ou ce mode « Off x minutes » pendant une durée déterminée (180 minutes chez moi). Se mode est pas mal aussi si l’on a des enfants qui restent un peu trop longtemps sous la douche !!! Noté que lorsque le timer et terminé, le système repasse en mode normal est reprend son état dans lequel il se trouvait initialement. - Un mode vacances. Et bien on coupe tout, à glagla. Remarque : quelque soit le mode dans lequel on se trouve, le switch de chauffe sanitaire FGS-221 Switch (IDxxx01) se coupe lorsque la température de consigne maxi et atteinte. Par contre pour des raisons optimisations, je laisse tourner le circulateur sanitaire FGS-221 Switch (IDxxx02) jusqu'à se que la température soit à l’équilibre entre l’échangeur (foyer de chauffe) et la température de mon eau chaude. Donc je récupère un maximum de calorie, je ne perds rien.- Le mode « Saison » (été ou hiver) me permets de gérer le paramètre ci-dessus, en effet, en été je peux me permettre de vider l’échangeur (foyer de chauffe) de ces calories. Par contre en hiver c’est problématique, car j’ai besoin des calories de l’échangeur pour mon chauffage central !!! - Et pour finir, un mode de températures prédéfinies entre les températures de consignes maxi et consignes mini. Voila à quoi ressemble le nodule virtuel : Variables globales à créer et a alimenter : Variables prédéfinies : ModeSanitaire (Normal, CoupChauffe, OffXmin, Vacances) PhaseUpOrDown (PhaseDown, PhaseUp) ValeurTmpSaniBas (36,40,45) ValeurTmpSaniHaut (50,53,55) Et pour les icônes voilou: Comme promis... Le câblage: --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Je me suis éclaté a réaliser ce premier travail, aussi bien cérébrale que manuel, une grande histoire d’amour renaît avec ma chaudière. Et c’est avec plaisir que je partage. Bruno Module virtuel: Chaudière.vfib
  9. pepite

    NEST LEARNING THERMOSTAT

    https://www.amazon.fr/Nest-T200677-Learning-Thermostat/dp/B00M9103UU Pour ceux qui aiment, à ne pas manquer ;-)
  10. Bonjour, Suite à mes précédentes expériences que j'ai déjà partagées sur le forum officiel Fibaro, j'ai revu mes modules virtuels pour la gestion du chauffage. Evidemment ce serait tellement mieux de pouvoir utiliser le panneau de chauffage du HC2 mais ce n'est pas possible avec la gestion de notre fil pilote, et je ne suis pas pour le ON/OFF pur et dur du radiateur qui risquerait d'endommager la partie électronique. La solution présentée ici est également possible sans avoir une sonde de température dans chaque pièce chauffée. Le premier module virtuel est un thermostat programmeur de zone. C'est à dire qu'il permet de piloter l'ensemble des radiateurs qui vont suivre ses consignes. Le programmateur de zone permet: - de définir les modes des radiateurs de la zone en: Confort, Eco, Hors-gel, Arrêt. - de définir 2 programmes différents suivants les horaires de la journée - de définir un mode automatique, qui définit les modes voulus suivant les jours de la semaine. Le second module virtuel permet de piloter les radiateurs grâce au FGBS-221 et sa gestion des 4 ordres du fil pilote (avec les bonnes diodes de redressement): Le module de pilotage de radiateur permet de: - piloter directement le radiateur avec les modes Confort, Eco, Hors-gel, Arrêt indépendamment des consignes données par le programmateur de zone - suivre les consignes données par le programmateur de zone - mettre le radiateur à l'arrêt dès qu'une fenêtre ou porte est ouverte. Une vérification est faite 5 min après l'ouverture, si la fenêtre est toujours ouverte on attend de nouveau 5min. Sinon, on remet le chauffage à son état initial. Voilà une synthèse du fonctionnement: Voici comment mettre tout cela en oeuvre: Module programmateur de zone: Tout d'abord, il faut créer les variables globales prédéfinie avec les valeurs suivantes: z1_heat_engine = Auto, Prog1, Prog2, Confort, Eco, Hors-gel, Arret --> ça, c'est ce que le programmateur demande z1_heat_mode = Confort, Eco, Hors-gel, Arret -->ça, c'est les valeurs que devront suivre chacun des radiateurs qui suivront le programmateur. Vous remarquerez dans les variables globales et dans l'ensemble des codes suivants le "z1". Cela correspond en fait à une zone N°1. Si vous souhaiter faire une deuxième zone, il vous faudra faire du remplacer "z1" par "z2" dans l'ensemble des parties des codes et recréer d'autres variables globales, ça devrait fonctionner. Ensuite, il faut créer un module virtuel avec les boutons suivants, attention à bien reporter votre N° de module virtuel dans les boutons et veiller à la cohérence des ID des boutons et le code lua de chaque bouton: Les labels: Bouton auto: --[[ %% properties %% globals --]] fibaro:setGlobal("z1_heat_engine", "Auto"); fibaro:debug("Mode Auto"); fibaro:log("Mode Auto"); fibaro:call(31, "setProperty", "ui.label_0_0.value", " Auto"); Bouton Prog1: --[[ %% properties %% globals --]] fibaro:setGlobal("z1_heat_engine", "Prog1"); fibaro:debug("Mode Prog1"); fibaro:log("Mode Prog1"); fibaro:call(31, "setProperty", "ui.label_0_0.value", " Prog1"); Bouton Prog2: --[[ %% properties %% globals --]] fibaro:setGlobal("z1_heat_engine", "Prog2"); fibaro:debug("Mode Prog2"); fibaro:log("Mode Prog2"); fibaro:call(31, "setProperty", "ui.label_0_0.value", " Prog2"); Bouton Confort: --[[ %% properties %% globals --]] fibaro:setGlobal("z1_heat_engine", "Confort"); fibaro:setGlobal("z1_heat_mode", "Confort"); fibaro:debug("Mode Confort"); fibaro:log("Mode Confort"); fibaro:call(31, "setProperty", "ui.label_0_0.value", " Confort"); Bouton Eco: --[[ %% properties %% globals --]] fibaro:setGlobal("z1_heat_engine", "Eco"); fibaro:setGlobal("z1_heat_mode", "Eco"); fibaro:debug("Mode Eco"); fibaro:log("Mode Eco"); fibaro:call(31, "setProperty", "ui.label_0_0.value", " Eco"); Bouton Hors-gel: --[[ %% properties %% globals --]] fibaro:setGlobal("z1_heat_engine", "Hors-gel"); fibaro:setGlobal("z1_heat_mode", "Hors-gel"); fibaro:debug("Mode Hors-gel"); fibaro:log("Mode Hors-gel"); fibaro:call(31, "setProperty", "ui.label_0_0.value", " Hors-gel"); Bouton Arret: --[[ %% properties %% globals --]] fibaro:setGlobal("z1_heat_engine", "Arret"); fibaro:setGlobal("z1_heat_mode", "Arret"); fibaro:debug("Mode Arret"); fibaro:log("Mode Arret"); fibaro:call(31, "setProperty", "ui.label_0_0.value", " Arret"); Et enfin copier le main loop suivant, en y indiquant vos paramètres utilisateurs. Pour paramétrer les programmes, il faut choisir les modes que vous souhaitez entre 2 horaires de votre choix. --[[ %% properties %% globals --]] -- LUA - heat Engine V2.0.0 -- -- --variables globales à déclarer: z1_heat_engine = Auto, Prog1, Prog2, Confort, Eco, Hors-gel, Arret. --variables globales à déclarer: z1_heat_mode = Confort, Eco, Hors-gel, Arret. ------------------------------------------------------------------------------------------------------------- -- USER SETTINGS : -- ------------------------------------------------------------------------------------------------------------- --------------------- -- Paramètres généraux: --------------------- local debug = true; --activer le mode debug local ID_virtual_module = "31"; ----------------------------------- -- Definir les différents programmes: ----------------------------------- local z1_time_1 = "06:00"; local z1_heat_mode_1_2_prog1 = "Confort"; local z1_heat_mode_1_2_prog2 = "Eco"; local z1_time_2 = "08:00"; local z1_heat_mode_2_3_prog1 = "Eco"; local z1_heat_mode_2_3_prog2 = "Confort"; local z1_time_3 = "13:00"; local z1_heat_mode_3_4_prog1 = "Eco"; local z1_heat_mode_3_4_prog2 = "Confort"; local z1_time_4 = "18:00"; local z1_heat_mode_4_5_prog1 = "Confort"; local z1_heat_mode_4_5_prog2 = "Confort"; local z1_time_5 = "21:00"; local z1_heat_mode_5_6_prog1 = "Eco"; local z1_heat_mode_5_6_prog2 = "Eco"; local z1_time_6 = "23:59"; local z1_heat_mode_6_1_prog1 = "Eco"; local z1_heat_mode_6_1_prog2 = "Eco"; ----------------------------------------------------------------------------------------- --Définition du programme automatique de la semaine: un mode au choix pour chaque jour (Prog1, Prog2, Confort, Eco, Hors-gel, Arret): ----------------------------------------------------------------------------------------- local z1_Monday_auto = "Prog1"; local z1_Tuesday_auto = "Prog1"; local z1_Wednesday_auto = "Prog1"; local z1_Thursday_auto = "Prog1"; local z1_Friday_auto = "Prog1"; local z1_Saturday_auto = "Prog2"; local z1_Sunday_auto = "Prog2"; ------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------- -- -- DO NOT EDIT THE CODE BELOW (except to suit your needs) -- -- ------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------- heatEngine = { version = "1.0.0" }; local z1_heat_engine = fibaro:getGlobal("z1_heat_engine"); local minute = 60000 --in milliseconds local currentDate = os.date("*t"); local currentTime = string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min); local z1_heat_mode = fibaro:getGlobal("z1_heat_mode"); --wday=1 is Sunday --wday=2 is Monday --wday=3 is Tuesday --wday=4 is Wednesday --wday=5 is Thursday --wday=6 is Friday --wday=7 is Saturday if (z1_heat_engine == "Confort") then z1_heat_mode= "Confort"; end if (z1_heat_engine == "Eco") then z1_heat_mode= "Eco"; end if (z1_heat_engine == "Hors-gel") then z1_heat_mode= "Hors-gel"; end if (z1_heat_engine == "Arret") then z1_heat_mode= "Arret"; end if (z1_heat_engine == "Prog1") then if z1_time_1 <= z1_time_2 then if z1_time_1 <= currentTime and currentTime <= z1_time_2 then z1_heat_mode= z1_heat_mode_1_2_prog1; end else if not (z1_time_2 < currentTime and currentTime < z1_time_1) then z1_heat_mode= z1_heat_mode_1_2_prog1; end end if z1_time_2 <= z1_time_3 then if z1_time_2 <= currentTime and currentTime <= z1_time_3 then z1_heat_mode= z1_heat_mode_2_3_prog1; end else if not (z1_time_3 < currentTime and currentTime < z1_time_2) then z1_heat_mode= z1_heat_mode_2_3_prog1; end end if z1_time_3 <= z1_time_4 then if z1_time_3 <= currentTime and currentTime <= z1_time_4 then z1_heat_mode= z1_heat_mode_3_4_prog1; end else if not (z1_time_4 < currentTime and currentTime < z1_time_3) then z1_heat_mode= z1_heat_mode_3_4_prog1; end end if z1_time_4 <= z1_time_5 then if z1_time_4 <= currentTime and currentTime <= z1_time_5 then z1_heat_mode= z1_heat_mode_4_5_prog1; end else if not (z1_time_5 < currentTime and currentTime < z1_time_4) then z1_heat_mode= z1_heat_mode_4_5_prog1; end end if z1_time_5 <= z1_time_6 then if z1_time_5 <= currentTime and currentTime <= z1_time_6 then z1_heat_mode= z1_heat_mode_5_6_prog1; end else if not (z1_time_6 < currentTime and currentTime < z1_time_5) then z1_heat_mode= z1_heat_mode_5_6_prog1; end end if z1_time_6 <= z1_time_1 then if z1_time_6 <= currentTime and currentTime <= z1_time_1 then z1_heat_mode= z1_heat_mode_6_1_prog1; end else if not (z1_time_1 < currentTime and currentTime < z1_time_6) then z1_heat_mode= z1_heat_mode_6_1_prog1; end end end if (z1_heat_engine == "Prog2") then if z1_time_1 <= z1_time_2 then if z1_time_1 <= currentTime and currentTime <= z1_time_2 then z1_heat_mode= z1_heat_mode_1_2_prog2; end else if not (z1_time_2 < currentTime and currentTime < z1_time_1) then z1_heat_mode= z1_heat_mode_1_2_prog2; end end if z1_time_2 <= z1_time_3 then if z1_time_2 <= currentTime and currentTime <= z1_time_3 then z1_heat_mode= z1_heat_mode_2_3_prog2; end else if not (z1_time_3 < currentTime and currentTime < z1_time_2) then z1_heat_mode= z1_heat_mode_2_3_prog2; end end if z1_time_3 <= z1_time_4 then if z1_time_3 <= currentTime and currentTime <= z1_time_4 then z1_heat_mode= z1_heat_mode_3_4_prog2; end else if not (z1_time_4 < currentTime and currentTime < z1_time_3) then z1_heat_mode= z1_heat_mode_3_4_prog2; end end if z1_time_4 <= z1_time_5 then if z1_time_4 <= currentTime and currentTime <= z1_time_5 then z1_heat_mode= z1_heat_mode_4_5_prog2; end else if not (z1_time_5 < currentTime and currentTime < z1_time_4) then z1_heat_mode= z1_heat_mode_4_5_prog2; end end if z1_time_5 <= z1_time_6 then if z1_time_5 <= currentTime and currentTime <= z1_time_6 then z1_heat_mode= z1_heat_mode_5_6_prog2; end else if not (z1_time_6 < currentTime and currentTime < z1_time_5) then z1_heat_mode= z1_heat_mode_5_6_prog2; end end if z1_time_6 <= z1_time_1 then if z1_time_6 <= currentTime and currentTime <= z1_time_1 then z1_heat_mode= z1_heat_mode_6_1_prog2; end else if not (z1_time_1 < currentTime and currentTime < z1_time_6) then z1_heat_mode= z1_heat_mode_6_1_prog2; end end end if (z1_heat_engine == "Auto") then if (currentDate.wday == 1 ) then if z1_Sunday_auto == "Confort" or z1_Sunday_auto == "Eco" or z1_Sunday_auto == "Hors-gel" or z1_Sunday_auto == "Arret" then z1_heat_mode = z1_Sunday_auto; end if (z1_Sunday_auto == "Prog1") then if z1_time_1 <= z1_time_2 then if z1_time_1 <= currentTime and currentTime <= z1_time_2 then z1_heat_mode= z1_heat_mode_1_2_prog1; end else if not (z1_time_2 < currentTime and currentTime < z1_time_1) then z1_heat_mode= z1_heat_mode_1_2_prog1; end end if z1_time_2 <= z1_time_3 then if z1_time_2 <= currentTime and currentTime <= z1_time_3 then z1_heat_mode= z1_heat_mode_2_3_prog1; end else if not (z1_time_3 < currentTime and currentTime < z1_time_2) then z1_heat_mode= z1_heat_mode_2_3_prog1; end end if z1_time_3 <= z1_time_4 then if z1_time_3 <= currentTime and currentTime <= z1_time_4 then z1_heat_mode= z1_heat_mode_3_4_prog1; end else if not (z1_time_4 < currentTime and currentTime < z1_time_3) then z1_heat_mode= z1_heat_mode_3_4_prog1; end end if z1_time_4 <= z1_time_5 then if z1_time_4 <= currentTime and currentTime <= z1_time_5 then z1_heat_mode= z1_heat_mode_4_5_prog1; end else if not (z1_time_5 < currentTime and currentTime < z1_time_4) then z1_heat_mode= z1_heat_mode_4_5_prog1; end end if z1_time_5 <= z1_time_6 then if z1_time_5 <= currentTime and currentTime <= z1_time_6 then z1_heat_mode= z1_heat_mode_5_6_prog1; end else if not (z1_time_6 < currentTime and currentTime < z1_time_5) then z1_heat_mode= z1_heat_mode_5_6_prog1; end end if z1_time_6 <= z1_time_1 then if z1_time_6 <= currentTime and currentTime <= z1_time_1 then z1_heat_mode= z1_heat_mode_6_1_prog1; end else if not (z1_time_1 < currentTime and currentTime < z1_time_6) then z1_heat_mode= z1_heat_mode_6_1_prog1; end end end if (z1_Sunday_auto == "Prog2") then if z1_time_1 <= z1_time_2 then if z1_time_1 <= currentTime and currentTime <= z1_time_2 then z1_heat_mode= z1_heat_mode_1_2_prog2; end else if not (z1_time_2 < currentTime and currentTime < z1_time_1) then z1_heat_mode= z1_heat_mode_1_2_prog2; end end if z1_time_2 <= z1_time_3 then if z1_time_2 <= currentTime and currentTime <= z1_time_3 then z1_heat_mode= z1_heat_mode_2_3_prog2; end else if not (z1_time_3 < currentTime and currentTime < z1_time_2) then z1_heat_mode= z1_heat_mode_2_3_prog2; end end if z1_time_3 <= z1_time_4 then if z1_time_3 <= currentTime and currentTime <= z1_time_4 then z1_heat_mode= z1_heat_mode_3_4_prog2; end else if not (z1_time_4 < currentTime and currentTime < z1_time_3) then z1_heat_mode= z1_heat_mode_3_4_prog2; end end if z1_time_4 <= z1_time_5 then if z1_time_4 <= currentTime and currentTime <= z1_time_5 then z1_heat_mode= z1_heat_mode_4_5_prog2; end else if not (z1_time_5 < currentTime and currentTime < z1_time_4) then z1_heat_mode= z1_heat_mode_4_5_prog2; end end if z1_time_5 <= z1_time_6 then if z1_time_5 <= currentTime and currentTime <= z1_time_6 then z1_heat_mode= z1_heat_mode_5_6_prog2; end else if not (z1_time_6 < currentTime and currentTime < z1_time_5) then z1_heat_mode= z1_heat_mode_5_6_prog2; end end if z1_time_6 <= z1_time_1 then if z1_time_6 <= currentTime and currentTime <= z1_time_1 then z1_heat_mode= z1_heat_mode_6_1_prog2; end else if not (z1_time_1 < currentTime and currentTime < z1_time_6) then z1_heat_mode= z1_heat_mode_6_1_prog2; end end end end if (currentDate.wday == 2 ) then if z1_Monday_auto == "Confort" or z1_Monday_auto == "Eco" or z1_Monday_auto == "Hors-gel" or z1_Monday_auto == "Arret" then z1_heat_mode = z1_Monday_auto; end if (z1_Monday_auto == "Prog1") then if z1_time_1 <= z1_time_2 then if z1_time_1 <= currentTime and currentTime <= z1_time_2 then z1_heat_mode= z1_heat_mode_1_2_prog1; end else if not (z1_time_2 < currentTime and currentTime < z1_time_1) then z1_heat_mode= z1_heat_mode_1_2_prog1; end end if z1_time_2 <= z1_time_3 then if z1_time_2 <= currentTime and currentTime <= z1_time_3 then z1_heat_mode= z1_heat_mode_2_3_prog1; end else if not (z1_time_3 < currentTime and currentTime < z1_time_2) then z1_heat_mode= z1_heat_mode_2_3_prog1; end end if z1_time_3 <= z1_time_4 then if z1_time_3 <= currentTime and currentTime <= z1_time_4 then z1_heat_mode= z1_heat_mode_3_4_prog1; end else if not (z1_time_4 < currentTime and currentTime < z1_time_3) then z1_heat_mode= z1_heat_mode_3_4_prog1; end end if z1_time_4 <= z1_time_5 then if z1_time_4 <= currentTime and currentTime <= z1_time_5 then z1_heat_mode= z1_heat_mode_4_5_prog1; end else if not (z1_time_5 < currentTime and currentTime < z1_time_4) then z1_heat_mode= z1_heat_mode_4_5_prog1; end end if z1_time_5 <= z1_time_6 then if z1_time_5 <= currentTime and currentTime <= z1_time_6 then z1_heat_mode= z1_heat_mode_5_6_prog1; end else if not (z1_time_6 < currentTime and currentTime < z1_time_5) then z1_heat_mode= z1_heat_mode_5_6_prog1; end end if z1_time_6 <= z1_time_1 then if z1_time_6 <= currentTime and currentTime <= z1_time_1 then z1_heat_mode= z1_heat_mode_6_1_prog1; end else if not (z1_time_1 < currentTime and currentTime < z1_time_6) then z1_heat_mode= z1_heat_mode_6_1_prog1; end end end if (z1_Monday_auto == "Prog2") then if z1_time_1 <= z1_time_2 then if z1_time_1 <= currentTime and currentTime <= z1_time_2 then z1_heat_mode= z1_heat_mode_1_2_prog2; end else if not (z1_time_2 < currentTime and currentTime < z1_time_1) then z1_heat_mode= z1_heat_mode_1_2_prog2; end end if z1_time_2 <= z1_time_3 then if z1_time_2 <= currentTime and currentTime <= z1_time_3 then z1_heat_mode= z1_heat_mode_2_3_prog2; end else if not (z1_time_3 < currentTime and currentTime < z1_time_2) then z1_heat_mode= z1_heat_mode_2_3_prog2; end end if z1_time_3 <= z1_time_4 then if z1_time_3 <= currentTime and currentTime <= z1_time_4 then z1_heat_mode= z1_heat_mode_3_4_prog2; end else if not (z1_time_4 < currentTime and currentTime < z1_time_3) then z1_heat_mode= z1_heat_mode_3_4_prog2; end end if z1_time_4 <= z1_time_5 then if z1_time_4 <= currentTime and currentTime <= z1_time_5 then z1_heat_mode= z1_heat_mode_4_5_prog2; end else if not (z1_time_5 < currentTime and currentTime < z1_time_4) then z1_heat_mode= z1_heat_mode_4_5_prog2; end end if z1_time_5 <= z1_time_6 then if z1_time_5 <= currentTime and currentTime <= z1_time_6 then z1_heat_mode= z1_heat_mode_5_6_prog2; end else if not (z1_time_6 < currentTime and currentTime < z1_time_5) then z1_heat_mode= z1_heat_mode_5_6_prog2; end end if z1_time_6 <= z1_time_1 then if z1_time_6 <= currentTime and currentTime <= z1_time_1 then z1_heat_mode= z1_heat_mode_6_1_prog2; end else if not (z1_time_1 < currentTime and currentTime < z1_time_6) then z1_heat_mode= z1_heat_mode_6_1_prog2; end end end end if (currentDate.wday == 3 ) then if z1_Tuesday_auto == "Confort" or z1_Tuesday_auto == "Eco" or z1_Tuesday_auto == "Hors-gel" or z1_Tuesday_auto == "Arret" then z1_heat_mode = z1_Tuesday_auto; end if (z1_Tuesday_auto == "Prog1") then if z1_time_1 <= z1_time_2 then if z1_time_1 <= currentTime and currentTime <= z1_time_2 then z1_heat_mode= z1_heat_mode_1_2_prog1; end else if not (z1_time_2 < currentTime and currentTime < z1_time_1) then z1_heat_mode= z1_heat_mode_1_2_prog1; end end if z1_time_2 <= z1_time_3 then if z1_time_2 <= currentTime and currentTime <= z1_time_3 then z1_heat_mode= z1_heat_mode_2_3_prog1; end else if not (z1_time_3 < currentTime and currentTime < z1_time_2) then z1_heat_mode= z1_heat_mode_2_3_prog1; end end if z1_time_3 <= z1_time_4 then if z1_time_3 <= currentTime and currentTime <= z1_time_4 then z1_heat_mode= z1_heat_mode_3_4_prog1; end else if not (z1_time_4 < currentTime and currentTime < z1_time_3) then z1_heat_mode= z1_heat_mode_3_4_prog1; end end if z1_time_4 <= z1_time_5 then if z1_time_4 <= currentTime and currentTime <= z1_time_5 then z1_heat_mode= z1_heat_mode_4_5_prog1; end else if not (z1_time_5 < currentTime and currentTime < z1_time_4) then z1_heat_mode= z1_heat_mode_4_5_prog1; end end if z1_time_5 <= z1_time_6 then if z1_time_5 <= currentTime and currentTime <= z1_time_6 then z1_heat_mode= z1_heat_mode_5_6_prog1; end else if not (z1_time_6 < currentTime and currentTime < z1_time_5) then z1_heat_mode= z1_heat_mode_5_6_prog1; end end if z1_time_6 <= z1_time_1 then if z1_time_6 <= currentTime and currentTime <= z1_time_1 then z1_heat_mode= z1_heat_mode_6_1_prog1; end else if not (z1_time_1 < currentTime and currentTime < z1_time_6) then z1_heat_mode= z1_heat_mode_6_1_prog1; end end end if (z1_Tuesday_auto == "Prog2") then if z1_time_1 <= z1_time_2 then if z1_time_1 <= currentTime and currentTime <= z1_time_2 then z1_heat_mode= z1_heat_mode_1_2_prog2; end else if not (z1_time_2 < currentTime and currentTime < z1_time_1) then z1_heat_mode= z1_heat_mode_1_2_prog2; end end if z1_time_2 <= z1_time_3 then if z1_time_2 <= currentTime and currentTime <= z1_time_3 then z1_heat_mode= z1_heat_mode_2_3_prog2; end else if not (z1_time_3 < currentTime and currentTime < z1_time_2) then z1_heat_mode= z1_heat_mode_2_3_prog2; end end if z1_time_3 <= z1_time_4 then if z1_time_3 <= currentTime and currentTime <= z1_time_4 then z1_heat_mode= z1_heat_mode_3_4_prog2; end else if not (z1_time_4 < currentTime and currentTime < z1_time_3) then z1_heat_mode= z1_heat_mode_3_4_prog2; end end if z1_time_4 <= z1_time_5 then if z1_time_4 <= currentTime and currentTime <= z1_time_5 then z1_heat_mode= z1_heat_mode_4_5_prog2; end else if not (z1_time_5 < currentTime and currentTime < z1_time_4) then z1_heat_mode= z1_heat_mode_4_5_prog2; end end if z1_time_5 <= z1_time_6 then if z1_time_5 <= currentTime and currentTime <= z1_time_6 then z1_heat_mode= z1_heat_mode_5_6_prog2; end else if not (z1_time_6 < currentTime and currentTime < z1_time_5) then z1_heat_mode= z1_heat_mode_5_6_prog2; end end if z1_time_6 <= z1_time_1 then if z1_time_6 <= currentTime and currentTime <= z1_time_1 then z1_heat_mode= z1_heat_mode_6_1_prog2; end else if not (z1_time_1 < currentTime and currentTime < z1_time_6) then z1_heat_mode= z1_heat_mode_6_1_prog2; end end end end if (currentDate.wday == 4 ) then if z1_Wednesday_auto == "Confort" or z1_Wednesday_auto == "Eco" or z1_Wednesday_auto == "Hors-gel" or z1_Wednesday_auto == "Arret" then z1_heat_mode = z1_Wednesday_auto; end if (z1_Wednesday_auto == "Prog1") then if z1_time_1 <= z1_time_2 then if z1_time_1 <= currentTime and currentTime <= z1_time_2 then z1_heat_mode= z1_heat_mode_1_2_prog1; end else if not (z1_time_2 < currentTime and currentTime < z1_time_1) then z1_heat_mode= z1_heat_mode_1_2_prog1; end end if z1_time_2 <= z1_time_3 then if z1_time_2 <= currentTime and currentTime <= z1_time_3 then z1_heat_mode= z1_heat_mode_2_3_prog1; end else if not (z1_time_3 < currentTime and currentTime < z1_time_2) then z1_heat_mode= z1_heat_mode_2_3_prog1; end end if z1_time_3 <= z1_time_4 then if z1_time_3 <= currentTime and currentTime <= z1_time_4 then z1_heat_mode= z1_heat_mode_3_4_prog1; end else if not (z1_time_4 < currentTime and currentTime < z1_time_3) then z1_heat_mode= z1_heat_mode_3_4_prog1; end end if z1_time_4 <= z1_time_5 then if z1_time_4 <= currentTime and currentTime <= z1_time_5 then z1_heat_mode= z1_heat_mode_4_5_prog1; end else if not (z1_time_5 < currentTime and currentTime < z1_time_4) then z1_heat_mode= z1_heat_mode_4_5_prog1; end end if z1_time_5 <= z1_time_6 then if z1_time_5 <= currentTime and currentTime <= z1_time_6 then z1_heat_mode= z1_heat_mode_5_6_prog1; end else if not (z1_time_6 < currentTime and currentTime < z1_time_5) then z1_heat_mode= z1_heat_mode_5_6_prog1; end end if z1_time_6 <= z1_time_1 then if z1_time_6 <= currentTime and currentTime <= z1_time_1 then z1_heat_mode= z1_heat_mode_6_1_prog1; end else if not (z1_time_1 < currentTime and currentTime < z1_time_6) then z1_heat_mode= z1_heat_mode_6_1_prog1; end end end if (z1_Wednesday_auto == "Prog2") then if z1_time_1 <= z1_time_2 then if z1_time_1 <= currentTime and currentTime <= z1_time_2 then z1_heat_mode= z1_heat_mode_1_2_prog2; end else if not (z1_time_2 < currentTime and currentTime < z1_time_1) then z1_heat_mode= z1_heat_mode_1_2_prog2; end end if z1_time_2 <= z1_time_3 then if z1_time_2 <= currentTime and currentTime <= z1_time_3 then z1_heat_mode= z1_heat_mode_2_3_prog2; end else if not (z1_time_3 < currentTime and currentTime < z1_time_2) then z1_heat_mode= z1_heat_mode_2_3_prog2; end end if z1_time_3 <= z1_time_4 then if z1_time_3 <= currentTime and currentTime <= z1_time_4 then z1_heat_mode= z1_heat_mode_3_4_prog2; end else if not (z1_time_4 < currentTime and currentTime < z1_time_3) then z1_heat_mode= z1_heat_mode_3_4_prog2; end end if z1_time_4 <= z1_time_5 then if z1_time_4 <= currentTime and currentTime <= z1_time_5 then z1_heat_mode= z1_heat_mode_4_5_prog2; end else if not (z1_time_5 < currentTime and currentTime < z1_time_4) then z1_heat_mode= z1_heat_mode_4_5_prog2; end end if z1_time_5 <= z1_time_6 then if z1_time_5 <= currentTime and currentTime <= z1_time_6 then z1_heat_mode= z1_heat_mode_5_6_prog2; end else if not (z1_time_6 < currentTime and currentTime < z1_time_5) then z1_heat_mode= z1_heat_mode_5_6_prog2; end end if z1_time_6 <= z1_time_1 then if z1_time_6 <= currentTime and currentTime <= z1_time_1 then z1_heat_mode= z1_heat_mode_6_1_prog2; end else if not (z1_time_1 < currentTime and currentTime < z1_time_6) then z1_heat_mode= z1_heat_mode_6_1_prog2; end end end end if (currentDate.wday == 5 ) then if z1_Thursday_auto == "Confort" or z1_Thursday_auto == "Eco" or z1_Thursday_auto == "Hors-gel" or z1_Thursday_auto == "Arret" then z1_heat_mode = z1_Thursday_auto; end if (z1_Thursday_auto == "Prog1") then if z1_time_1 <= z1_time_2 then if z1_time_1 <= currentTime and currentTime <= z1_time_2 then z1_heat_mode= z1_heat_mode_1_2_prog1; end else if not (z1_time_2 < currentTime and currentTime < z1_time_1) then z1_heat_mode= z1_heat_mode_1_2_prog1; end end if z1_time_2 <= z1_time_3 then if z1_time_2 <= currentTime and currentTime <= z1_time_3 then z1_heat_mode= z1_heat_mode_2_3_prog1; end else if not (z1_time_3 < currentTime and currentTime < z1_time_2) then z1_heat_mode= z1_heat_mode_2_3_prog1; end end if z1_time_3 <= z1_time_4 then if z1_time_3 <= currentTime and currentTime <= z1_time_4 then z1_heat_mode= z1_heat_mode_3_4_prog1; end else if not (z1_time_4 < currentTime and currentTime < z1_time_3) then z1_heat_mode= z1_heat_mode_3_4_prog1; end end if z1_time_4 <= z1_time_5 then if z1_time_4 <= currentTime and currentTime <= z1_time_5 then z1_heat_mode= z1_heat_mode_4_5_prog1; end else if not (z1_time_5 < currentTime and currentTime < z1_time_4) then z1_heat_mode= z1_heat_mode_4_5_prog1; end end if z1_time_5 <= z1_time_6 then if z1_time_5 <= currentTime and currentTime <= z1_time_6 then z1_heat_mode= z1_heat_mode_5_6_prog1; end else if not (z1_time_6 < currentTime and currentTime < z1_time_5) then z1_heat_mode= z1_heat_mode_5_6_prog1; end end if z1_time_6 <= z1_time_1 then if z1_time_6 <= currentTime and currentTime <= z1_time_1 then z1_heat_mode= z1_heat_mode_6_1_prog1; end else if not (z1_time_1 < currentTime and currentTime < z1_time_6) then z1_heat_mode= z1_heat_mode_6_1_prog1; end end end if (z1_Thursday_auto == "Prog2") then if z1_time_1 <= z1_time_2 then if z1_time_1 <= currentTime and currentTime <= z1_time_2 then z1_heat_mode= z1_heat_mode_1_2_prog2; end else if not (z1_time_2 < currentTime and currentTime < z1_time_1) then z1_heat_mode= z1_heat_mode_1_2_prog2; end end if z1_time_2 <= z1_time_3 then if z1_time_2 <= currentTime and currentTime <= z1_time_3 then z1_heat_mode= z1_heat_mode_2_3_prog2; end else if not (z1_time_3 < currentTime and currentTime < z1_time_2) then z1_heat_mode= z1_heat_mode_2_3_prog2; end end if z1_time_3 <= z1_time_4 then if z1_time_3 <= currentTime and currentTime <= z1_time_4 then z1_heat_mode= z1_heat_mode_3_4_prog2; end else if not (z1_time_4 < currentTime and currentTime < z1_time_3) then z1_heat_mode= z1_heat_mode_3_4_prog2; end end if z1_time_4 <= z1_time_5 then if z1_time_4 <= currentTime and currentTime <= z1_time_5 then z1_heat_mode= z1_heat_mode_4_5_prog2; end else if not (z1_time_5 < currentTime and currentTime < z1_time_4) then z1_heat_mode= z1_heat_mode_4_5_prog2; end end if z1_time_5 <= z1_time_6 then if z1_time_5 <= currentTime and currentTime <= z1_time_6 then z1_heat_mode= z1_heat_mode_5_6_prog2; end else if not (z1_time_6 < currentTime and currentTime < z1_time_5) then z1_heat_mode= z1_heat_mode_5_6_prog2; end end if z1_time_6 <= z1_time_1 then if z1_time_6 <= currentTime and currentTime <= z1_time_1 then z1_heat_mode= z1_heat_mode_6_1_prog2; end else if not (z1_time_1 < currentTime and currentTime < z1_time_6) then z1_heat_mode= z1_heat_mode_6_1_prog2; end end end end if (currentDate.wday == 6 ) then if z1_Friday_auto == "Confort" or z1_Friday_auto == "Eco" or z1_Friday_auto == "Hors-gel" or z1_Friday_auto == "Arret" then z1_heat_mode = z1_Friday_auto; end if (z1_Friday_auto == "Prog1") then if z1_time_1 <= z1_time_2 then if z1_time_1 <= currentTime and currentTime <= z1_time_2 then z1_heat_mode= z1_heat_mode_1_2_prog1; end else if not (z1_time_2 < currentTime and currentTime < z1_time_1) then z1_heat_mode= z1_heat_mode_1_2_prog1; end end if z1_time_2 <= z1_time_3 then if z1_time_2 <= currentTime and currentTime <= z1_time_3 then z1_heat_mode= z1_heat_mode_2_3_prog1; end else if not (z1_time_3 < currentTime and currentTime < z1_time_2) then z1_heat_mode= z1_heat_mode_2_3_prog1; end end if z1_time_3 <= z1_time_4 then if z1_time_3 <= currentTime and currentTime <= z1_time_4 then z1_heat_mode= z1_heat_mode_3_4_prog1; end else if not (z1_time_4 < currentTime and currentTime < z1_time_3) then z1_heat_mode= z1_heat_mode_3_4_prog1; end end if z1_time_4 <= z1_time_5 then if z1_time_4 <= currentTime and currentTime <= z1_time_5 then z1_heat_mode= z1_heat_mode_4_5_prog1; end else if not (z1_time_5 < currentTime and currentTime < z1_time_4) then z1_heat_mode= z1_heat_mode_4_5_prog1; end end if z1_time_5 <= z1_time_6 then if z1_time_5 <= currentTime and currentTime <= z1_time_6 then z1_heat_mode= z1_heat_mode_5_6_prog1; end else if not (z1_time_6 < currentTime and currentTime < z1_time_5) then z1_heat_mode= z1_heat_mode_5_6_prog1; end end if z1_time_6 <= z1_time_1 then if z1_time_6 <= currentTime and currentTime <= z1_time_1 then z1_heat_mode= z1_heat_mode_6_1_prog1; end else if not (z1_time_1 < currentTime and currentTime < z1_time_6) then z1_heat_mode= z1_heat_mode_6_1_prog1; end end end if (z1_Friday_auto == "Prog2") then if z1_time_1 <= z1_time_2 then if z1_time_1 <= currentTime and currentTime <= z1_time_2 then z1_heat_mode= z1_heat_mode_1_2_prog2; end else if not (z1_time_2 < currentTime and currentTime < z1_time_1) then z1_heat_mode= z1_heat_mode_1_2_prog2; end end if z1_time_2 <= z1_time_3 then if z1_time_2 <= currentTime and currentTime <= z1_time_3 then z1_heat_mode= z1_heat_mode_2_3_prog2; end else if not (z1_time_3 < currentTime and currentTime < z1_time_2) then z1_heat_mode= z1_heat_mode_2_3_prog2; end end if z1_time_3 <= z1_time_4 then if z1_time_3 <= currentTime and currentTime <= z1_time_4 then z1_heat_mode= z1_heat_mode_3_4_prog2; end else if not (z1_time_4 < currentTime and currentTime < z1_time_3) then z1_heat_mode= z1_heat_mode_3_4_prog2; end end if z1_time_4 <= z1_time_5 then if z1_time_4 <= currentTime and currentTime <= z1_time_5 then z1_heat_mode= z1_heat_mode_4_5_prog2; end else if not (z1_time_5 < currentTime and currentTime < z1_time_4) then z1_heat_mode= z1_heat_mode_4_5_prog2; end end if z1_time_5 <= z1_time_6 then if z1_time_5 <= currentTime and currentTime <= z1_time_6 then z1_heat_mode= z1_heat_mode_5_6_prog2; end else if not (z1_time_6 < currentTime and currentTime < z1_time_5) then z1_heat_mode= z1_heat_mode_5_6_prog2; end end if z1_time_6 <= z1_time_1 then if z1_time_6 <= currentTime and currentTime <= z1_time_1 then z1_heat_mode= z1_heat_mode_6_1_prog2; end else if not (z1_time_1 < currentTime and currentTime < z1_time_6) then z1_heat_mode= z1_heat_mode_6_1_prog2; end end end end if (currentDate.wday == 7 ) then if z1_Saturday_auto == "Confort" or z1_Saturday_auto == "Eco" or z1_Saturday_auto == "Hors-gel" or z1_Saturday_auto == "Arret" then z1_heat_mode = z1_Saturday_auto; end if (z1_Saturday_auto == "Prog1") then if z1_time_1 <= z1_time_2 then if z1_time_1 <= currentTime and currentTime <= z1_time_2 then z1_heat_mode= z1_heat_mode_1_2_prog1; end else if not (z1_time_2 < currentTime and currentTime < z1_time_1) then z1_heat_mode= z1_heat_mode_1_2_prog1; end end if z1_time_2 <= z1_time_3 then if z1_time_2 <= currentTime and currentTime <= z1_time_3 then z1_heat_mode= z1_heat_mode_2_3_prog1; end else if not (z1_time_3 < currentTime and currentTime < z1_time_2) then z1_heat_mode= z1_heat_mode_2_3_prog1; end end if z1_time_3 <= z1_time_4 then if z1_time_3 <= currentTime and currentTime <= z1_time_4 then z1_heat_mode= z1_heat_mode_3_4_prog1; end else if not (z1_time_4 < currentTime and currentTime < z1_time_3) then z1_heat_mode= z1_heat_mode_3_4_prog1; end end if z1_time_4 <= z1_time_5 then if z1_time_4 <= currentTime and currentTime <= z1_time_5 then z1_heat_mode= z1_heat_mode_4_5_prog1; end else if not (z1_time_5 < currentTime and currentTime < z1_time_4) then z1_heat_mode= z1_heat_mode_4_5_prog1; end end if z1_time_5 <= z1_time_6 then if z1_time_5 <= currentTime and currentTime <= z1_time_6 then z1_heat_mode= z1_heat_mode_5_6_prog1; end else if not (z1_time_6 < currentTime and currentTime < z1_time_5) then z1_heat_mode= z1_heat_mode_5_6_prog1; end end if z1_time_6 <= z1_time_1 then if z1_time_6 <= currentTime and currentTime <= z1_time_1 then z1_heat_mode= z1_heat_mode_6_1_prog1; end else if not (z1_time_1 < currentTime and currentTime < z1_time_6) then z1_heat_mode= z1_heat_mode_6_1_prog1; end end end if (z1_Saturday_auto == "Prog2") then if z1_time_1 <= z1_time_2 then if z1_time_1 <= currentTime and currentTime <= z1_time_2 then z1_heat_mode= z1_heat_mode_1_2_prog2; end else if not (z1_time_2 < currentTime and currentTime < z1_time_1) then z1_heat_mode= z1_heat_mode_1_2_prog2; end end if z1_time_2 <= z1_time_3 then if z1_time_2 <= currentTime and currentTime <= z1_time_3 then z1_heat_mode= z1_heat_mode_2_3_prog2; end else if not (z1_time_3 < currentTime and currentTime < z1_time_2) then z1_heat_mode= z1_heat_mode_2_3_prog2; end end if z1_time_3 <= z1_time_4 then if z1_time_3 <= currentTime and currentTime <= z1_time_4 then z1_heat_mode= z1_heat_mode_3_4_prog2; end else if not (z1_time_4 < currentTime and currentTime < z1_time_3) then z1_heat_mode= z1_heat_mode_3_4_prog2; end end if z1_time_4 <= z1_time_5 then if z1_time_4 <= currentTime and currentTime <= z1_time_5 then z1_heat_mode= z1_heat_mode_4_5_prog2; end else if not (z1_time_5 < currentTime and currentTime < z1_time_4) then z1_heat_mode= z1_heat_mode_4_5_prog2; end end if z1_time_5 <= z1_time_6 then if z1_time_5 <= currentTime and currentTime <= z1_time_6 then z1_heat_mode= z1_heat_mode_5_6_prog2; end else if not (z1_time_6 < currentTime and currentTime < z1_time_5) then z1_heat_mode= z1_heat_mode_5_6_prog2; end end if z1_time_6 <= z1_time_1 then if z1_time_6 <= currentTime and currentTime <= z1_time_1 then z1_heat_mode= z1_heat_mode_6_1_prog2; end else if not (z1_time_1 < currentTime and currentTime < z1_time_6) then z1_heat_mode= z1_heat_mode_6_1_prog2; end end end end end fibaro:sleep(1000); fibaro:setGlobal("z1_heat_mode", z1_heat_mode); if (debug) then local mode = "init"; if (currentDate.wday == 1 ) then mode = z1_Sunday_auto; end if (currentDate.wday == 2 ) then mode = z1_Monday_auto; end if (currentDate.wday == 3 ) then mode = z1_Tuesday_auto; end if (currentDate.wday == 4 ) then mode = z1_Wednesday_auto; end if (currentDate.wday == 5 ) then mode = z1_Thursday_auto; end if (currentDate.wday == 6 ) then mode = z1_Friday_auto; end if (currentDate.wday == 7 ) then mode = z1_Saturday_auto; end if (z1_heat_engine == "Auto") then fibaro:debug("Le mode du thermostat est réglé sur: " ..z1_heat_engine.." . Le mode auto est réglé sur "..mode); end if (z1_heat_engine ~= "Auto") then fibaro:debug("Le mode du thermostat est réglé sur:" ..z1_heat_engine); end fibaro:debug("Le mode de chauffage est: " ..z1_heat_mode); fibaro:call(ID_virtual_module, "setProperty", "ui.Label3.value", z1_heat_mode) fibaro:sleep(15000) end Mise en oeuvre du module virtuel pour le radiateur: Tout d'abord, il faut créer deux variables globales prédéfinies avec les valeurs suivantes: rad_ch_1_mode = Auto, Manuel rad_ch_1_status = Confort, Eco, Hors-gel, Arret Ensuite, il faut créer un module virtuel avec les boutons suivants, attention à bien reporter votre N° de module virtuel dans les boutons et veiller à la cohérence des ID des boutons et le code lua de chaque bouton: Le label: Bouton Auto: --[[ %% properties %% globals --]] --mise à jour des variables prédéfinies local status_auto = fibaro:getGlobal("z1_heat_mode"); fibaro:setGlobal("rad_ch_1_mode", "Auto"); fibaro:setGlobal("rad_ch_1_status", status_auto); --affichage des logs et debug fibaro:debug("Mode Auto"); fibaro:log("Mode Auto"); --mise à jour de l'affichage du module virtuel fibaro:call(40, "setProperty", "ui.label_0_0.value", "Auto -> " ..status_auto); Bouton Confort: --[[ %% properties %% globals --]] --mise à jour des variables prédéfinies fibaro:setGlobal("rad_ch_1_status", "Confort"); fibaro:setGlobal("rad_ch_1_mode", "Manuel"); --affichage des logs et debug fibaro:debug("Mode Confort"); fibaro:log("Mode Confort"); --mise à jour de l'affichage du module virtuel fibaro:call(40, "setProperty", "ui.label_0_0.value", "Manuel -> Confort"); Bouton Eco: --[[ %% properties %% globals --]] --mise à jour des variables prédéfinies fibaro:setGlobal("rad_ch_1_status", "Eco"); fibaro:setGlobal("rad_ch_1_mode", "Manuel"); --affichage des logs et debug fibaro:debug("Mode Eco"); fibaro:log("Mode Eco"); --mise à jour de l'affichage du module virtuel fibaro:call(40, "setProperty", "ui.label_0_0.value", "Manuel -> Eco"); Bouton Hors-gel: --[[ %% properties %% globals --]] --mise à jour des variables prédéfinies fibaro:setGlobal("rad_ch_1_status", "Hors-gel"); fibaro:setGlobal("rad_ch_1_mode", "Manuel"); --affichage des logs et debug fibaro:debug("Mode Hors-gel"); fibaro:log("Mode Hors-gel"); --mise à jour de l'affichage du module virtuel fibaro:call(40, "setProperty", "ui.label_0_0.value", "Manuel -> Hors-gel"); Bouton Arret: --[[ %% properties %% globals --]] --mise à jour des variables prédéfinies fibaro:setGlobal("rad_ch_1_status", "Arret"); fibaro:setGlobal("rad_ch_1_mode", "Manuel"); --affichage des logs et debug fibaro:debug("Mode Arret"); fibaro:log("Mode Arret"); --mise à jour de l'affichage du module virtuel fibaro:call(40, "setProperty", "ui.label_0_0.value", "Manuel -> Arret"); Et enfin copier le main loop suivant, en y indiquant vos paramètres utilisateurs. --[[ %% properties %% globals --]] -- LUA - heat Radiator V2.0.0 -- -- ------------------------------------------------------------------------------------------------------------- -- USER SETTINGS : -- ------------------------------------------------------------------------------------------------------------- --------------------- -- General settings: --------------------- local debug = true; --activater le debug mode local radiator_mode = "rad_ch_1_mode" -- variable globale à déclarer avec les valeurs Auto et Manuel local radiator_status = "rad_ch_1_status" -- variable globale à déclarer avec les valeurs Confort, Eco, Hors-gel et Arret local ID_virtual_module = "40" --------------------- -- Relay FGBS-221 settings: --------------------- local ID_relay_1 = 200; -- diode - connectée sur O1 local ID_relay_2 = 201; -- diode + connectée sur O2 ----------------------------------------------------------------------------------------- --Window sensor: Stopper le radiateur quand une fenêtre qui y est associée est ouverture ----------------------------------------------------------------------------------------- local active_mode_sensor = true; --ou false --activater ou désactiver le mode. True = stopper le chauffage quand la fenêtre est ouverte local ID_window_sensor = {10}; --ID device du capteur d'ouverture associé au radiateur (il peut y en avoir plusieurs) ------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------- -- -- DO NOT EDIT THE CODE BELOW (except to suit your needs) -- -- ------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------- local mode = fibaro:getGlobal(radiator_mode); local status = fibaro:getGlobal(radiator_status); local status_auto = fibaro:getGlobal("z1_heat_mode"); local id; local window_status = 0; local temp; if active_mode_sensor then for i=1, #ID_window_sensor do id = tonumber(ID_window_sensor[i]); temp = fibaro:getValue(id, "value"); fibaro:debug(id.. " et " ..temp); if temp == "1" then window_status = 1; end end end if debug then fibaro:debug(window_status.. "Etat actuel = "..mode.. " --> " ..status); if active_mode_sensor then if window_status == 1 then fibaro:debug("Une fenêtre est ouverte"); end if window_status == 0 then fibaro:debug("Les fenêtres associées au radiateur sont fermées"); end end end if window_status == 1 then if debug then fibaro:debug("Une des fenêtres associées au radiateur est ouverte, le radiateur est à l'arrêt"); end fibaro:call(ID_virtual_module, "setProperty", "ui.label_0_0.value", "Fenêtre ouverte, Arrêt"); fibaro:call(ID_relay_1, 'turnOff'); fibaro:call(ID_relay_2, 'turnOn'); -- temporisation de 5 minutes, ensuite le script check de nouveau et remet l'état de chauffage précédent si la fenêtre est fermée fibaro:sleep(300000); if mode == "Auto" then status = status_auto; end if status == "Confort" then fibaro:call(ID_relay_1, 'turnOff'); fibaro:call(ID_relay_2, 'turnOff'); fibaro:call(ID_virtual_module, "setProperty", "ui.label_0_0.value", mode.. " -> Confort" ); end if status == "Eco" then fibaro:call(ID_relay_1, 'turnOn'); fibaro:call(ID_relay_2, 'turnOn'); fibaro:call(ID_virtual_module, "setProperty", "ui.label_0_0.value", mode.. " -> Eco" ); end if status == "Hors-gel" then fibaro:call(ID_relay_1, 'turnOn'); fibaro:call(ID_relay_2, 'turnOff'); fibaro:call(ID_virtual_module, "setProperty", "ui.label_0_0.value", mode.. " -> Hors-gel" ); end if status == "Arret" then fibaro:call(ID_relay_1, 'turnOff'); fibaro:call(ID_relay_2, 'turnOn'); fibaro:call(ID_virtual_module, "setProperty", "ui.label_0_0.value", mode.. " -> Arret" ); end end if mode == "Auto" then fibaro:setGlobal("rad_ch_1_status", status_auto); if status == "Confort" then fibaro:call(ID_relay_1, 'turnOff'); fibaro:call(ID_relay_2, 'turnOff'); fibaro:call(ID_virtual_module, "setProperty", "ui.label_0_0.value", mode.. " -> Confort" ); end if status == "Eco" then fibaro:call(ID_relay_1, 'turnOn'); fibaro:call(ID_relay_2, 'turnOn'); fibaro:call(ID_virtual_module, "setProperty", "ui.label_0_0.value", mode.. " -> Eco" ); end if status == "Hors-gel" then fibaro:call(ID_relay_1, 'turnOn'); fibaro:call(ID_relay_2, 'turnOff'); fibaro:call(ID_virtual_module, "setProperty", "ui.label_0_0.value", mode.. " -> Hors-gel" ); end if status == "Arret" then fibaro:call(ID_relay_1, 'turnOff'); fibaro:call(ID_relay_2, 'turnOn'); fibaro:call(ID_virtual_module, "setProperty", "ui.label_0_0.value", mode.. " -> Arret" ); end end --mise a jour de l'affichage du module virtuel fibaro:call(ID_virtual_module, "setProperty", "ui.label_0_0.value", mode.. " -> " ..status); --temporisation pour ne pas solliciter trop souvent le HC2 fibaro:sleep(3000) ATTENTION: il peut être observé un décalage de quelques secondes entre le mode demandé et le mode en cours, c'est normal cela est dà» aux temps d'attente dans les main loop. Idem, attention également à la tempo dans la partie ouverture de fenêtre qui peut dérouter... Vous pouvez trouver un exemple de câblage du fgs-221 ici: http://domotique-info.fr/...lote-et-fibaro/ Une partie des icônes est disponible ici: http://www.touteladomotique.com/forum/viewtopic.php?f=89&t=11666 Merci à benjynet! J'espère ne pas avoir laissé traîner de bug je suis preneur de tout retour!
  11. bonjour, à toutes et a tous. désoler du roman, mais si j'investie dans le package complet je préfère demander à des connaisseurs si mon projet est faisable sans programmation car c'est pas mon truc. newbee complet. ma femme viens de m'offrir une HCL (elle adore l'interface sur son iphone qu'elle a vu chez une amie pour gérer la lumière l'ouverture du portal) notre projet de départ s'axe sur le chauffage - plancher électrique sur 50m2 de marque thermor avec un simple thermostat thermor qui permet de régler 6 modes la sonde est dans le boitier cf photos jointe.... mais il est mal placé car dans un courant d'air porte entrée. - un sèche serviette sauter 1750w avec soufflerie ref 582017 possédant un fil pilote. cf photo jointe. - un radiateur 1500w pour la chambre du futur BB avec fil pilote Pour faire court et simple 1 . plancher chauffant : supprimer l'ancien thermostat thermor pour le remplacer par ex : secure srt321(car posiblité de reglage pour chauffage forte inertie) ou si un modele est mieux selon vous + un actionneur Fibaro relay switch 3Kw pour mon plancher (2200wt). -- le but est gérer par iphone la temperture de consigne si besoin et voir la température de pièce. -- le but créer des scénario pour : de 00h00 a 18H = 17-18° --- de 18H01 a 23h59 = 19-20° car le poel a bois viens completer le chauffage au sol. 2. Sèche serviette : mettre un QUBINO ZMNHJD1 (- Micromodule "fil pilote V2" Z-Wave+ (remplace le ZMNHJA2)) pour gérer le sèche serviette. mais est til bien gerer par la fibaro hcl ? selon le lien http://www.domotique-store.fr/domotique/usages/domotique-chauffage-climatisation-a-distance/actionneurs-chauffage-et-chaudiere-sans-fil-domotique/502-qubino-zmnhjd1-micromodule-fil-pilote-6-ordres-z-wave-plus-remplace-le-zmnhja2.html -- le but pour le sèche serviette c'est suivant un scénario simple q'il s'allume mette la soufflerie a fond pendant 15mn puis s'arrete, et aussi si besoin en fonction du BB de créer un scenario. PS : certain module fibaro relay sont modifiable avec des diode de redressement pour gérer le fil pilote mais est ce bien reconnue par la boxe. est ce toutes les valeurs sont correctement remonter. 3. idem pour la chambre du BB : qubino fil pilote + thermostat en plus pour q'on puisse directement diminuer ou augmenter la température, mais aussi le faire sur iphone ipad. quel thermostat choisir et quel actionneur fil pilote ? qubino fil pilote ou fibaro 222 + diode de redressement. ??? le dernier point est suivre ma conso global ou par équipement, j'hésite avec système de pince ampèremetrique ? qu'en pensez vous ? en espérant avoir été claire car si projet non réalisable avec hcl peux etre me rediriger vers eedomus ou autre. je pense que pour certain sa doit paraître un peux simpliste mais quand on y connait pas grande c'est un monde vaste. merci à tous pour l'aide. PS : photo du sèche serviette du thermostat actuel et du tableau si au cas vous avez des idees ? on ne sait jamais. un grand merci.
  12. J'ai décidé de domotiser mon chauffage et d'améliorer ses fonctionnalités avec une gestion pièce par pièce. Ma maison est une BBC de 2012. Actuellement, j'ai une pompe à chaleur Daikin air/eau sur plancher chauffant qui fonctionne avec un thermostat d'ambiance qui est placé dans le séjour. L'étude thermique du chauffagiste a été plutôt bonne car en laissant les vannes de chaque pièce ouverte j'ai la bonne température dans le séjour (heureusement !) et environ 2 degré de moins dans la partie nuit. Typiquement, je mets 21.5° dans le séjour et je me retrouve avec environ 20° dans les chambres. Mon but est gérer le chauffage pièce par pièce afin justement augmenter la différence entre le séjour et les chambres (pour mieux dormir) mais surtout de pouvoir tenir compte de l'apport calorifique de chaque pièce. Par exemple, j'ai mon PC dans la chambre donc il y fait toujours plus chaud. Ou un jour d'hiver ensoleillé, mon chauffage se coupe car la baie vitrée me chauffe le séjour et du coup il fait trop froid dans les chambres. J'ai déjà lu sur le forum ou ailleurs des personnes qui ont le même souci. Je compte donc mettre en place la solution suivante : - Un thermostat Secure SRT321 dans chaque pièce. 5 au total. - Un moteur thermique sur chaque vanne. Les tètes thermique seront "normalement ouverte". 6 au total (2 zones dans le séjour). - Un module Fibaro FGS-221 relié à chaque moteur. 3 au total. - Un récepteur Secure SSR303 branché à la place de mon thermostat actuel a niveau de l'unité intérieur de la pompe. Je veux utiliser la HCL et des scènes en bloc pour gérer tout ça. - Une scène pour chaque thermostat SRT321 pour mémoriser dans une variable globale le nombre de demande de chauffage. - Une scène pour le récepteur SSR303 qui allume le chauffage lorsque la variable globale de chauffage est supérieure à zéro. - Une scène pour chaque vanne qui se ferme si le thermostat qui demande la chauffe n'est pas dans la même zone. - Utilisation du panneau de chauffage pour la gestion des horaires et des températures à remonter dans les thermostats. A tout cela, il faudra que j'ajoute un peu de siouxerie car d'après les tests que j'ai pu réaliser, je dois avoir au moins deux circuit d'ouvert pour ne pas que mon circulateur coupe. On en arrive (enfin!) à mes interrogations : 1- Mon souhait est d'avoir une régulation PID réputée meilleure. Est-ce que je suis obligé d'utiliser le thermostat Secure ou la box avec des sondes de température Dallas sur Fibaro FGK101 sont suffisants ? 2- J'ai vu que l'on pouvait créer des variables et les utiliser dans les scènes blocks. Est-ce que je pourrais faire ce que je vous ai décrit précédemment avec ? 3- Est-ce que je peux utiliser le panneau de chauffage de la box pour gérer les horaires et température sachant que ne n'aurait pas de module actionneur associé avec (vu que je gère la chauffe via des scènes) ? Merci d'avance pour vos éclaircissements.
  13. Moicphil

    Thermostat Greenmomit Et Hc2

    Piloter le Thermostat GreenMomit avec la HC2 Présentation et Spécificités Fabriqué par une société Espagnole, le GreenMomit est un thermostat "intelligent" Dimensions : 9.4 cm X 9.4 cm X 3.2 cm Alimentation : 230 V / 50 htz Connectivité : Wi-Fi Fonctionnement : En Local via pavé tactile ou via Smartphone / Tablette / PC Capteurs intégrés : Présence, Luminosité, Température, Hydrométrie Pour ceux qui ne connaissent pas le produit, je vous invite à consulter l'article de Laurent sur le Blog Domadoo >> http://blog.domadoo.fr/2014/01/03/momit-st-le-thermostat-intelligent/ Présentation de l'interface et installation en vidéo: Application téléchargeable ici : Pilotage avec la HC2 Depuis mes débuts avec la Home Center 2, je pilote ma pompe à chaleur Air / Eau avec ma box HC2 et un "module lié" ( FGS221 et ST814 ) Même si cela à très bien fonctionné avec un module virtuel et scènes , j'étais à la recherche d'une solution plus rapide et facile pour changer les consignes Chaud / Froid sans passer par l'interface Fibaro sur tablette ou smartphone. C'est chose faite, puisque le Greenmomit est désormais raccordé à ma PAC. Une installation on ne peut plus rapide, passant d'un FGS211 au GreenMomit, je n'ai eu qu'une alimentation 230v à ajouter. Ci-dessous, mon ancien câblage avec le FGS221: Ci-dessous, mon nouveau câblage avec le GreenMomit: Voici le Schéma de principe extrait de la notice : Thermostat raccordé et opérationnel, tout est expliqué sur la notice produit pour enregistrer le thermostat et créer un compte. >> guide_utilisation.pdf ------------------------------------------------------------------------- Concernant les différentes fonctions disponibles et sur le fonctionnement de l'application, Je vous invite à lire la notice ci-dessous : >> guide application.pdf Piloter le Thermostat avec la HC2 grâce à son API : Important : Le thermostat GreenMomit dispose bien d'une API complète permettant de récupérer différentes valeurs ainsi que d'envoyer divers ordres, néanmoins l'API n'est pas "officiellement" publique, et il faudra faire la demande au support qui vous donnera rapidement vos identifiants: "Clef d'authentification" et "ClientiD" . Afin d'obtenir la documentation API ainsi que vos identifiants, envoyer un e-mail au support selon ce model : Procédure : Important : ce module ne fonctionne qu'avec le Firmware V4.XXX Créer 2 variables Globales : "name" "Value" Importer le module Virtuel ci-dessous : Relever son numéro (id) Module Virtuel : >> Thermostat_GreenMomit V2.vfib Icone : >> Créer une scène et copier le code ci-dessous: >> V1.2 du 16/10/2014 : Ajout d'une fonction afin de connaitre en temps réel l'etat ON ou OFF des relais - Info retransmis sur un label supplémentaire V1.1 du 10/10/2014 : Prise en compte et visualisation sur labels en cas de changement manuel de consignes / mode Renseigner le numéro du Module Virtuel précédemment créé dans la ligne "11" du code. Puis : à partir de la ligne 28 , renseigner les champs suivants avec vos identifiants : email = 'xxxxxxxx@gmail.com', clientId = '8GI8FdCMFyCxxxxxxxxxxxxxxENG6nYzyTsXJ9lMxxxxxxxxxxxxxxxxz6b4dWdt', secretKey = '1xm70ixxxxxxxxxxxxxxxxxQ85XtsEKMU4Nxxxxxxxxxxxxxxxx7SSLZxd', thermostatId = '27xxxxxxxxx3', password = '2xxxxxx0' . --+++++++++++++++++++++++++++++++++++++++++-- --+++++++++++++++++++++++++++++++++++++++++-- local id_vd = "25" -- id virtual device --+++++++++++++++++++++++++++++++++++++++++-- --+++++++++++++++++++++++++++++++++++++++++-- GreenMomit = { loginToken = nil, sessionToken = nil, isConnected = false, isLogged = false, host = 'https://apist.greenmomit.com', port = 8443, root = '/momitst/webserviceapi' } --+++++++++++++++++++++++++++++++++++++++++-- --+++++++++++++++++++++++++++++++++++++++++-- GreenMomit.settings = { email = 'xxxxxxxx@gmail.com', clientId = '8GI8FdCMFyCxxxxxxxxxxxxxxENG6nYzyTsXJ9lMxxxxxxxxxxxxxxxxz6b4dWdt', secretKey = '1xm70ixxxxxxxxxxxxxxxxxQ85XtsEKMU4Nxxxxxxxxxxxxxxxx7SSLZxd', thermostatId = '27xxxxxxxxx3', password = '2xxxxxx0' } --+++++++++++++++++++++++++++++++++++++++++-- --+++++++++++++++++++++++++++++++++++++++++-- Merci à Jean-Christophe Akka Krikroff pour son aide. ------------------------------------------------------------- Les principales fonctions sont présentes dans ce module Virtuel. Il devient facile de gérer son thermostat via ce module et d'autres scènes par exemple. Pour info, dans le "mainLoop" du Module, le lance la scène toutes les 10 sec ce qui est largement suffisant. Un Plugin verra sans doute le jour . La Thermostat GreenMomit est disponible chez notre partenaire Domadoo >> ici
×