Aller au contenu

OJC

Membres confirmés
  • Compteur de contenus

    390
  • Inscription

  • Dernière visite

Réputation sur la communauté

133 Excellent

À propos de OJC

  • Rang
    Membre passionné

Profile Information

  • Sexe :
    Homme
  • Ville :
    Bordeaux
  • Intéret :
    Domotique
  • Box
    Home Center 2
  • Version
    4.510

Visiteurs récents du profil

1 677 visualisations du profil
  1. OJC

    VD Yeelight Controller

    C'est sûr que ce serait mieux, mais je n'ai pas de HC2 fonctionnelle disponible en ce moment, et même si cette correction ne suffit pas, elle ne peut pas faire de mal
  2. OJC

    VD Yeelight Controller

    J'ai mis à jour le premier post en intégrant la remarque de @pepite. Merci à toi
  3. OJC

    VD Yeelight Controller

    Le problème semble venir de la MàJ 4.560 à en juger par ce post sur le forum Fibaro... Du coup, une solution serait de tester la valeur récupérée avec _f:getGlobalValue et d'enclencher une boucle While string.len(y_yeelight_) == 0 en exécutant à nouveau _f:getGlobalValue jusqu'à récupérer le contenu de la variable, et ensuite seulement exécuter json.decode. Un truc du style : local y_yeelight_raw = _f:getGlobalValue('y_yeelight_' .. _yid) while string.len(y_yeelight_raw or '') == 0 do y_yeelight_raw = _f:getGlobalValue('y_yeelight_' .. _yid) end local y_yeelight_ = json.decode(_f:getGlobalValue('y_yeelight_'.._yid))
  4. OJC

    VD Yeelight Controller

    C'est curieux par ce que la ligne 114 : local y_yeelight_ = json.decode(_f:getGlobalValue('y_yeelight_'.._yid)) est précédée plus haut par cette instruction : if not _f:getGlobalValue('y_yeelight_'.._yid) then api.post('/globalVariables', {name='y_yeelight_'.._yid, isEnum=0}) end qui est bien exécutée puisque le Debug affiche "Checking global Variable etc". Je n'ai pas de HC2 fonctionnelle sous la main en ce moment. Essaie de remplacer les lignes 79 à 81 du code du mainloop par celles-ci, et poste le résultat : if not _f:getGlobalValue('y_yeelight_'.._yid) then log('Variable y_yeelight_'.._yid .. ' inexistante') api.post('/globalVariables', {name='y_yeelight_'.._yid, isEnum=0}) end local y_yeelight = _f:getGlobalValue('y_yeelight'.._yid) Log('Valeur de la variable (1) : ' .. y_yeelight) if string.len(y_yeelight or '') == 0 then _f:setGlobal('y_yeelight_'.._yid, '{"properties":{},"last":{}}') end y_yeelight = _f:getGlobalValue('y_yeelight'.._yid) Log('Valeur de la variable (2) : ' .. y_yeelight)
  5. OJC

    Heating Manager

    @MAM78 Le souci, c'est que je n'ai pas de message d'erreur et que la scène ne plante pas, puisque la boucle qui contrôle l'usage de la mémoire continue de tourner sans problème... C'est un peu à s'arracher les cheveux : comme si à un moment donné, pour une raison qui m'échappe, la boucle setTimeout du mode proportionnel (c'est celui que j'utilise) n'est pas relancée...
  6. OJC

    Heating Manager

    @MAM78 Oui, le mode de régulation par hysteresis est compatible avec le mode événementiel.
  7. OJC

    Heating Manager

    PS : La boucle principale de la scène vient encore de planter Je vais faire des tests un peu plus poussés pour comprendre pourquoi... Jamais eu aucun problème l'hiver dernier, ce doit être lié à une des mises à jour intervenues depuis lors...
  8. OJC

    Heating Manager

    @MAM78 C'est exactement comme cela que ça fonctionne, à ceci près qu'en cas d'événement, la température de consigne appliquée est celle définie dans l'événement. Donc, pas forcément comfort ou eco, tout dépend de la configuration. Pour ce qui est du codage du test, comme je te dis, c'est trash. Donc un code un peu merdique. Il aurait effectivement été beaucoup plus simple et logique de tester directement la valeur des variables comfort et eco, sans même coder la valeur mais en faisant directement référence à la variable. Bien que ça commence à dater un peu, il me semble que c'était justifié à un moment, et qu'après diverses modifications rendant le test inutile, cette partie du code est passée au travers de l'optimisation... Je devais être un peu fatigué
  9. OJC

    Heating Manager

    @MAM78 C'est juste une bidouille un peu trash pour savoir si la température de consigne par défaut est la température de confort ou la température éco. Si tu regardes dans le bloc de déclarations des variables au début du code, la variable comfort est égale à 7000 et la variable eco est égale à 6000. Si event.setpoint est supérieur à 1000 (valeur arbitraire nécessairement supérieure à toute température de consigne pouvant raisonnablement être paramétrée) et inférieur à 6500 (donc on est par défaut sur le mode eco), alors la scène va chercher la valeur paramétrée dans le VD Thermostat de la pièce. S'il est inférieur à 7500, on est en mode confort. Et à défaut, la scène prend la valeur paramétrée. Le test n'a de sens que pour le fonctionnement en mode événementiel, puisque le principe de ce mode est de toujours appliquer une température de consigne sauf si un événement vient la modifier (à la différence de la planification où le principe est une variation de la température de consigne en fonction de l'horaire). Il y avait sûrement plus élégant pour faire ça...
  10. OJC

    Heating Manager

    @MAM78 Le VD Thermostat n'affiche pas la température actuellement mesurée. Ce n'est pas un oubli, c'est juste que l'info existe ailleurs. Mais je reconnais après coup que ce serait utile d'avoir l'information à cet endroit-là. En revanche, ce VD n'est pas conçu pour être utilisé quand Heating Manager fonctionne en utilisant une planification, il est conçu pour fonctionner avec le mode événementiel.
  11. OJC

    Heating Manager

    Essaie de supprimer la variable globale HeatingManager, le script a peut-être enregistré des données faussées (je n'ai pas la box à portée de main pour faire des tests moi-même).
  12. OJC

    Heating Manager

    Dans la fonction HM:getDefaultConfiguration, ajoute : if isnil(self.HMCF.kP.data) then self.HMCF.kP.data = {} end après cette ligne de code : self.HMCF.kP.start = isnil(self.HMCF.kP.data) PS : A première vue, ta modification ne me semble pas utile puisque les tests que tu as ajoutés lorsque origin = "addHeater" sont réalisés par la fonction checkDevice.
  13. OJC

    Heating Manager

    @MAM78 Dans les formules de configuration, il faut remplacer le nom des paramètres par leur valeur. Je vois aussi que tu n'as pas défini le mode de chauffage que tu veux utiliser : régulation proportionnelle ou via hysteresis ? En mode proportionnel, essaie ça : --GENERAL CONFIGURATION--------------------------------------------------------------------- self:setConfiguration(true, 180, true, false, {289}, false, true) self:setProportionalMode(60, true, 1, 15, 1, comfort) --HEATERS CONFIGURATION--------------------------------------------------------------------- self:addHeater(7, {411, "turnOn", "turnOff", "0"}, {359, "lblTemp"}) --SETPOINT SOURCES CONFIGURATION------------------------------------------------------------ self:setSetpoint(7, 192) --INDOOR TEMPERATURE SONDES DECLARATIONS---------------------------------------------------- self:setIndoorSonde(7, {359, "lblTemp"}) --OUTDOOR TEMPERATURE SONDE DECLARATION----------------------------------------------------- self:setOutdoorSonde({355, "lblTemp"}) Pour que ça fonctionne, il faut mettre un VD Thermostat dans la pièce ID 7.
  14. OJC

    Heating Manager

    Je n'ai pas encore fait de tests poussés. Et si, c'est ça le plus bizarre, la scène continue à tourner puisque j'ai l'affichage de la mémoire utilisée dans les logs toutes les 5 ou 10 minutes. Ce n'est pas la scène dans son ensemble qui plante...
  15. OJC

    Heating Manager

    @pepite Plus précisément, dans ma configuration, c'est la boucle HM:startProportionalManager qui ne tourne plus. Comme si le setTimeout cessait à un moment de repartir
×