diff --git a/core/class/thermostat.class.php b/core/class/thermostat.class.php index d9785b1..c3d69fe 100644 --- a/core/class/thermostat.class.php +++ b/core/class/thermostat.class.php @@ -343,13 +343,16 @@ public static function temporal($_options) { $thermostat->reschedule(null, true); } - if ($thermostat->getCache('lastState') == 'heat' && $temporal_data['direction'] < 0) { + if ($thermostat->getCache('lastState','none') == 'heat' && $temporal_data['direction'] < 0) { + log::add(__CLASS__, 'debug', $thermostat->getHumanName() . ' ' . __('Je dois refroidir mais avant je chauffais, je stop tout avant', __FILE__)); $thermostat->setCache('lastState', 'stop'); $thermostat->stopThermostat(); - } - if ($thermostat->getCache('lastState') == 'cool' && $temporal_data['direction'] > 0) { + sleep(5); + }else if ($thermostat->getCache('lastState','none') == 'cool' && $temporal_data['direction'] > 0) { + log::add(__CLASS__, 'debug', $thermostat->getHumanName() . ' ' . __('Je dois chauffer mais avant je refroidissait, je stop tout avant', __FILE__)); $thermostat->setCache('lastState', 'stop'); $thermostat->stopThermostat(); + sleep(5); } $thermostat->save(); if ($duration > 0) { @@ -610,6 +613,7 @@ public function windowOpen($_window) { } public function reschedule($_next = null, $_stop = false, $_smartThermostat = false) { + log::add(__CLASS__, 'debug', $this->getHumanName() . ' Reschedule, next : '.$_next.', stop : '.$_stop.', smartThermostat : '.$_smartThermostat); $options = array('thermostat_id' => intval($this->getId())); if ($_stop) { $options['stop'] = intval(1); @@ -624,6 +628,9 @@ public function reschedule($_next = null, $_stop = false, $_smartThermostat = fa $options['smartThermostat'] = intval(1); $options['next'] = $_smartThermostat; } + if($_next == null){ + return; + } $cron = cron::byClassAndFunction(__CLASS__, 'pull', $options); if (is_object($cron)) { $cron->remove(false); @@ -633,7 +640,7 @@ public function reschedule($_next = null, $_stop = false, $_smartThermostat = fa $cron->setFunction('pull'); $cron->setOption($options); $_next = strtotime($_next); - $cron->setTimeout($this->getConfiguration('cycle', 60) + 10); + $cron->setTimeout($this->getConfiguration('cycle') + 10); $cron->setSchedule(cron::convertDateToCron($_next)); $cron->setOnce(1); $cron->save(); @@ -887,7 +894,7 @@ public function preSave() { throw new Exception(__('Le temps de chauffe minimal doit être compris entre 0% et 90%', __FILE__)); } if ($this->getConfiguration('cycle') === '') { - $this->setConfiguration('cycle', 60); + $this->setConfiguration('cycle', 59); } if ($this->getConfiguration('smart_start') === '') { $this->setConfiguration('smart_start', 1); @@ -1581,7 +1588,12 @@ public function cool($_repeat = false) { public function stopThermostat($_repeat = false, $_suspend = false) { if (!$_repeat && $this->getCmd(null, 'status')->execCmd() == __('Arrêté', __FILE__)) { - return; + $power = $this->getCmd(null, 'power'); + if (is_object($power) && $power->execCmd() > 0) { + $_repeat = true; + }else{ + return; + } } log::add(__CLASS__, 'debug', $this->getHumanName() . ' ' . __('Action stop', __FILE__)); $consigne = $this->getCmd(null, 'order')->execCmd(); diff --git a/core/i18n/de_DE.json b/core/i18n/de_DE.json index 4b4b57a..5b8a725 100644 --- a/core/i18n/de_DE.json +++ b/core/i18n/de_DE.json @@ -229,6 +229,8 @@ "je relance le calcul avec consigne + delta\/2": "Ich starte die Berechnung neu mit Sollwert + Delta \/ 2", "Durée du cycle": "Zykluszeit", "Durée du cycle trop courte, aucun lancement": "Zykluszeit zu kurz, kein Start", + "Je dois refroidir mais avant je chauffais, je stop tout avant": "Ich muss abkühlen, aber bevor ich aufheize, höre ich vorher alles auf", + "Je dois chauffer mais avant je refroidissait, je stop tout avant": "Ich muss aufheizen, aber bevor ich abgekühlt bin, höre ich vorher alles auf", "Attention le thermostat est suspendu à cause d'une fenêtre ouverte depuis": "Bitte beachten Sie, dass der Thermostat aufgrund eines geöffneten Fensters ausgeschaltet ist", "Attention la température intérieure est en dessous du seuil autorisé": "Bitte beachten Sie, dass die Innentemperatur unter dem zulässigen Schwellenwert liegt", "Attention la température intérieure est au dessus du seuil autorisé": "Bitte beachten Sie, dass die Innentemperatur über dem zulässigen Schwellenwert liegt", diff --git a/core/i18n/en_US.json b/core/i18n/en_US.json index 6f636b4..589e141 100644 --- a/core/i18n/en_US.json +++ b/core/i18n/en_US.json @@ -229,6 +229,8 @@ "je relance le calcul avec consigne + delta\/2": "I restart the calculation with setpoint + delta \/ 2", "Durée du cycle": "Cycle time", "Durée du cycle trop courte, aucun lancement": "Cycle time too short, no launch", + "Je dois refroidir mais avant je chauffais, je stop tout avant": "I have to cool down but before I was heating up, I stop everything before", + "Je dois chauffer mais avant je refroidissait, je stop tout avant": "I have to heat up but before I cooled down, I stop everything before", "Attention le thermostat est suspendu à cause d'une fenêtre ouverte depuis": "Please note that the thermostat is suspended due to a window that has been open for", "Attention la température intérieure est en dessous du seuil autorisé": "Please note the interior temperature is below the authorized threshold", "Attention la température intérieure est au dessus du seuil autorisé": "Please note the interior temperature is above the authorized threshold", diff --git a/core/i18n/es_ES.json b/core/i18n/es_ES.json index a8b096c..4ecc4bf 100644 --- a/core/i18n/es_ES.json +++ b/core/i18n/es_ES.json @@ -229,6 +229,8 @@ "je relance le calcul avec consigne + delta\/2": "Reinicio el cálculo con setpoint + delta \/ 2", "Durée du cycle": "Tiempo del ciclo", "Durée du cycle trop courte, aucun lancement": "El tiempo de ciclo es demasiado corto, no se inicia", + "Je dois refroidir mais avant je chauffais, je stop tout avant": "Me tengo que enfriar pero antes me calentaba, paro todo antes", + "Je dois chauffer mais avant je refroidissait, je stop tout avant": "Tengo que calentar pero antes de enfriar, paro todo antes", "Attention le thermostat est suspendu à cause d'une fenêtre ouverte depuis": "Tenga en cuenta que el termostato está suspendido debido a una ventana que ha estado abierta durante", "Attention la température intérieure est en dessous du seuil autorisé": "Tenga en cuenta que la temperatura interior está por debajo del umbral autorizado", "Attention la température intérieure est au dessus du seuil autorisé": "Tenga en cuenta que la temperatura interior está por encima del umbral autorizado", diff --git a/core/i18n/fr_FR.json b/core/i18n/fr_FR.json index aae6438..1842958 100644 --- a/core/i18n/fr_FR.json +++ b/core/i18n/fr_FR.json @@ -229,6 +229,8 @@ "je relance le calcul avec consigne + delta\/2": "je relance le calcul avec consigne + delta\/2", "Durée du cycle": "Durée du cycle", "Durée du cycle trop courte, aucun lancement": "Durée du cycle trop courte, aucun lancement", + "Je dois refroidir mais avant je chauffais, je stop tout avant": "Je dois refroidir mais avant je chauffais, je stop tout avant", + "Je dois chauffer mais avant je refroidissait, je stop tout avant": "Je dois chauffer mais avant je refroidissait, je stop tout avant", "Attention le thermostat est suspendu à cause d'une fenêtre ouverte depuis": "Attention le thermostat est suspendu à cause d'une fenêtre ouverte depuis", "Attention la température intérieure est en dessous du seuil autorisé": "Attention la température intérieure est en dessous du seuil autorisé", "Attention la température intérieure est au dessus du seuil autorisé": "Attention la température intérieure est au dessus du seuil autorisé", diff --git a/core/i18n/id_ID.json b/core/i18n/id_ID.json index f1e9bf2..55a25eb 100644 --- a/core/i18n/id_ID.json +++ b/core/i18n/id_ID.json @@ -229,6 +229,8 @@ "je relance le calcul avec consigne + delta\/2": "je relance le calcul avec consigne + delta\/2", "Durée du cycle": "Durée du cycle", "Durée du cycle trop courte, aucun lancement": "Durée du cycle trop courte, aucun lancement", + "Je dois refroidir mais avant je chauffais, je stop tout avant": "Je dois refroidir mais avant je chauffais, je stop tout avant", + "Je dois chauffer mais avant je refroidissait, je stop tout avant": "Je dois chauffer mais avant je refroidissait, je stop tout avant", "Attention le thermostat est suspendu à cause d'une fenêtre ouverte depuis": "Attention le thermostat est suspendu à cause d'une fenêtre ouverte depuis", "Attention la température intérieure est en dessous du seuil autorisé": "Attention la température intérieure est en dessous du seuil autorisé", "Attention la température intérieure est au dessus du seuil autorisé": "Attention la température intérieure est au dessus du seuil autorisé", diff --git a/core/i18n/it_IT.json b/core/i18n/it_IT.json index ec844fc..fd992b1 100644 --- a/core/i18n/it_IT.json +++ b/core/i18n/it_IT.json @@ -229,6 +229,8 @@ "je relance le calcul avec consigne + delta\/2": "je relance le calcul avec consigne + delta\/2", "Durée du cycle": "Durée du cycle", "Durée du cycle trop courte, aucun lancement": "Durée du cycle trop courte, aucun lancement", + "Je dois refroidir mais avant je chauffais, je stop tout avant": "Je dois refroidir mais avant je chauffais, je stop tout avant", + "Je dois chauffer mais avant je refroidissait, je stop tout avant": "Je dois chauffer mais avant je refroidissait, je stop tout avant", "Attention le thermostat est suspendu à cause d'une fenêtre ouverte depuis": "Attention le thermostat est suspendu à cause d'une fenêtre ouverte depuis", "Attention la température intérieure est en dessous du seuil autorisé": "Attention la température intérieure est en dessous du seuil autorisé", "Attention la température intérieure est au dessus du seuil autorisé": "Attention la température intérieure est au dessus du seuil autorisé", diff --git a/core/i18n/ja_JP.json b/core/i18n/ja_JP.json index 39929e9..2fac899 100644 --- a/core/i18n/ja_JP.json +++ b/core/i18n/ja_JP.json @@ -229,6 +229,8 @@ "je relance le calcul avec consigne + delta\/2": "je relance le calcul avec consigne + delta\/2", "Durée du cycle": "Durée du cycle", "Durée du cycle trop courte, aucun lancement": "Durée du cycle trop courte, aucun lancement", + "Je dois refroidir mais avant je chauffais, je stop tout avant": "Je dois refroidir mais avant je chauffais, je stop tout avant", + "Je dois chauffer mais avant je refroidissait, je stop tout avant": "Je dois chauffer mais avant je refroidissait, je stop tout avant", "Attention le thermostat est suspendu à cause d'une fenêtre ouverte depuis": "Attention le thermostat est suspendu à cause d'une fenêtre ouverte depuis", "Attention la température intérieure est en dessous du seuil autorisé": "Attention la température intérieure est en dessous du seuil autorisé", "Attention la température intérieure est au dessus du seuil autorisé": "Attention la température intérieure est au dessus du seuil autorisé", diff --git a/core/i18n/pt_PT.json b/core/i18n/pt_PT.json index 46ffaa6..c180537 100644 --- a/core/i18n/pt_PT.json +++ b/core/i18n/pt_PT.json @@ -229,6 +229,8 @@ "je relance le calcul avec consigne + delta\/2": "Eu reinicio o cálculo com setpoint + delta\/2", "Durée du cycle": "Duração do ciclo", "Durée du cycle trop courte, aucun lancement": "Duração do ciclo muito curta, nenhum lançamento", + "Je dois refroidir mais avant je chauffais, je stop tout avant": "Tenho que esfriar, mas antes de esquentar, paro tudo antes", + "Je dois chauffer mais avant je refroidissait, je stop tout avant": "Tenho que esquentar, mas antes de esfriar, paro tudo antes", "Attention le thermostat est suspendu à cause d'une fenêtre ouverte depuis": "Observe que o termostato está suspenso devido a uma janela que esteve aberta por", "Attention la température intérieure est en dessous du seuil autorisé": "Observe que a temperatura interior está abaixo do limite autorizado", "Attention la température intérieure est au dessus du seuil autorisé": "Observe que a temperatura interior está acima do limite autorizado", diff --git a/core/i18n/ru_RU.json b/core/i18n/ru_RU.json index 6aaf358..3493b63 100644 --- a/core/i18n/ru_RU.json +++ b/core/i18n/ru_RU.json @@ -229,6 +229,8 @@ "je relance le calcul avec consigne + delta\/2": "je relance le calcul avec consigne + delta\/2", "Durée du cycle": "Durée du cycle", "Durée du cycle trop courte, aucun lancement": "Durée du cycle trop courte, aucun lancement", + "Je dois refroidir mais avant je chauffais, je stop tout avant": "Je dois refroidir mais avant je chauffais, je stop tout avant", + "Je dois chauffer mais avant je refroidissait, je stop tout avant": "Je dois chauffer mais avant je refroidissait, je stop tout avant", "Attention le thermostat est suspendu à cause d'une fenêtre ouverte depuis": "Attention le thermostat est suspendu à cause d'une fenêtre ouverte depuis", "Attention la température intérieure est en dessous du seuil autorisé": "Attention la température intérieure est en dessous du seuil autorisé", "Attention la température intérieure est au dessus du seuil autorisé": "Attention la température intérieure est au dessus du seuil autorisé", diff --git a/core/i18n/tr.json b/core/i18n/tr.json index 2d9572e..a2ff367 100644 --- a/core/i18n/tr.json +++ b/core/i18n/tr.json @@ -229,6 +229,8 @@ "je relance le calcul avec consigne + delta\/2": "je relance le calcul avec consigne + delta\/2", "Durée du cycle": "Durée du cycle", "Durée du cycle trop courte, aucun lancement": "Durée du cycle trop courte, aucun lancement", + "Je dois refroidir mais avant je chauffais, je stop tout avant": "Je dois refroidir mais avant je chauffais, je stop tout avant", + "Je dois chauffer mais avant je refroidissait, je stop tout avant": "Je dois chauffer mais avant je refroidissait, je stop tout avant", "Attention le thermostat est suspendu à cause d'une fenêtre ouverte depuis": "Attention le thermostat est suspendu à cause d'une fenêtre ouverte depuis", "Attention la température intérieure est en dessous du seuil autorisé": "Attention la température intérieure est en dessous du seuil autorisé", "Attention la température intérieure est au dessus du seuil autorisé": "Attention la température intérieure est au dessus du seuil autorisé", diff --git a/docs/de_DE/changelog.md b/docs/de_DE/changelog.md index e2be287..a4c6e36 100644 --- a/docs/de_DE/changelog.md +++ b/docs/de_DE/changelog.md @@ -4,6 +4,13 @@ > >Zur Erinnerung: Wenn keine Informationen zum Update vorhanden sind, bedeutet dies, dass es sich nur um die Aktualisierung von Dokumentation, Übersetzung oder Text handelt +- Es wurde ein Fehler behoben, der ungültige Crons erstellte +- Fehlerbehebung, wenn es 2 Bestellungen gleichzeitig gab (Danke @phpvarious) + +# 01.03.2024 + +- Vorbereitung auf Jeedom 4.4 + # 19.12.2023 - Möglichkeit der Eingabe negativer Werte für Offset-Befehle in Bezug auf interne Beiträge diff --git a/docs/en_US/changelog.md b/docs/en_US/changelog.md index d795838..f475b7a 100644 --- a/docs/en_US/changelog.md +++ b/docs/en_US/changelog.md @@ -4,6 +4,13 @@ > >As a reminder if there is no information on the update, it means that it only concerns the updating of documentation, translation or text +- Fixed a bug that creates invalid crons +- Bug fix if there were 2 orders at the same time (thanks @phpvarious) + +# 03/01/2024 + +- Preparing for jeedom 4.4 + # 12/19/2023 - Possibility of entering negative values for Offsets commands relating to internal contributions diff --git a/docs/es_ES/changelog.md b/docs/es_ES/changelog.md index 6480c7e..5deae02 100644 --- a/docs/es_ES/changelog.md +++ b/docs/es_ES/changelog.md @@ -4,6 +4,13 @@ > >Como recordatorio si no hay información sobre la actualización, significa que solo se refiere a la actualización de documentación, traducción o texto +- Se corrigió un error que crea crons no válidos +- Corrección de error si había 2 pedidos al mismo tiempo (gracias @phpvarious) + +# 01/03/2024 + +- Preparándose para el apuro 4.4 + # 19/12/2023 - Posibilidad de ingresar valores negativos para los comandos de Compensaciones relacionados con contribuciones internas diff --git a/docs/fr_FR/changelog.md b/docs/fr_FR/changelog.md index eaf51e3..9e5caa3 100644 --- a/docs/fr_FR/changelog.md +++ b/docs/fr_FR/changelog.md @@ -4,6 +4,11 @@ > >Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte +# 19/02/2024 + +- Correction d'un bug qui crée des crons invalide +- Correction de bug si il y avait 2 ordres en meme temps (merci @phpvarious) + # 03/01/2024 - Préparation pour jeedom 4.4 diff --git a/docs/i18n/de_DE.json b/docs/i18n/de_DE.json index 5d69fa3..d1c014c 100644 --- a/docs/i18n/de_DE.json +++ b/docs/i18n/de_DE.json @@ -2,6 +2,10 @@ "changelog.md": { "Changelog Thermostat": "Changelog Thermostat", "Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte": "Zur Erinnerung: Wenn keine Informationen zum Update vorhanden sind, bedeutet dies, dass es sich nur um die Aktualisierung von Dokumentation, Übersetzung oder Text handelt", + "Correction d'un bug qui crée des crons invalide": "Es wurde ein Fehler behoben, der ungültige Crons erstellte", + "Correction de bug si il y avait 2 ordres en meme temps (merci @phpvarious": "Fehlerbehebung, wenn es 2 Bestellungen gleichzeitig gab (Danke @phpvarious", + "03\/01\/2024": "01.03.2024", + "Préparation pour jeedom 4.4": "Vorbereitung auf Jeedom 4.4", "19\/12\/2023": "19.12.2023", "Possibilité de saisir des valeurs négatives pour les commandes Offsets relatives aux apports internes": "Möglichkeit der Eingabe negativer Werte für Offset-Befehle in Bezug auf interne Beiträge", "27\/04\/2023": "27.04.2023", diff --git a/docs/i18n/en_US.json b/docs/i18n/en_US.json index 2993a9d..598df95 100644 --- a/docs/i18n/en_US.json +++ b/docs/i18n/en_US.json @@ -2,6 +2,10 @@ "changelog.md": { "Changelog Thermostat": "Changelog Thermostat", "Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte": "As a reminder if there is no information on the update, it means that it only concerns the updating of documentation, translation or text", + "Correction d'un bug qui crée des crons invalide": "Fixed a bug that creates invalid crons", + "Correction de bug si il y avait 2 ordres en meme temps (merci @phpvarious": "Bug fix if there were 2 orders at the same time (thanks @phpvarious", + "03\/01\/2024": "03\/01\/2024", + "Préparation pour jeedom 4.4": "Preparing for jeedom 4.4", "19\/12\/2023": "12\/19\/2023", "Possibilité de saisir des valeurs négatives pour les commandes Offsets relatives aux apports internes": "Possibility of entering negative values for Offsets commands relating to internal contributions", "27\/04\/2023": "04\/27\/2023", diff --git a/docs/i18n/es_ES.json b/docs/i18n/es_ES.json index 4b94427..8283b55 100644 --- a/docs/i18n/es_ES.json +++ b/docs/i18n/es_ES.json @@ -2,6 +2,10 @@ "changelog.md": { "Changelog Thermostat": "Changelog Thermostat", "Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte": "Como recordatorio si no hay información sobre la actualización, significa que solo se refiere a la actualización de documentación, traducción o texto", + "Correction d'un bug qui crée des crons invalide": "Se corrigió un error que crea crons no válidos", + "Correction de bug si il y avait 2 ordres en meme temps (merci @phpvarious": "Corrección de error si había 2 pedidos al mismo tiempo (gracias @phpvarious", + "03\/01\/2024": "01\/03\/2024", + "Préparation pour jeedom 4.4": "Preparándose para el apuro 4.4", "19\/12\/2023": "19\/12\/2023", "Possibilité de saisir des valeurs négatives pour les commandes Offsets relatives aux apports internes": "Posibilidad de ingresar valores negativos para los comandos de Compensaciones relacionados con contribuciones internas", "27\/04\/2023": "27\/04\/2023", diff --git a/docs/i18n/fr_FR.json b/docs/i18n/fr_FR.json index 1df336e..94de93e 100644 --- a/docs/i18n/fr_FR.json +++ b/docs/i18n/fr_FR.json @@ -3,6 +3,10 @@ "Changelog Thermostat": "Changelog Thermostat", "IMPORTANT": "IMPORTANT", "Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte": "Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte", + "Correction d'un bug qui crée des crons invalide": "Correction d'un bug qui crée des crons invalide", + "Correction de bug si il y avait 2 ordres en meme temps (merci @phpvarious": "Correction de bug si il y avait 2 ordres en meme temps (merci @phpvarious", + "03\/01\/2024": "03\/01\/2024", + "Préparation pour jeedom 4.4": "Préparation pour jeedom 4.4", "19\/12\/2023": "19\/12\/2023", "Possibilité de saisir des valeurs négatives pour les commandes Offsets relatives aux apports internes": "Possibilité de saisir des valeurs négatives pour les commandes Offsets relatives aux apports internes", "27\/04\/2023": "27\/04\/2023", diff --git a/docs/i18n/pt_PT.json b/docs/i18n/pt_PT.json index 8ef1183..6a89242 100644 --- a/docs/i18n/pt_PT.json +++ b/docs/i18n/pt_PT.json @@ -2,6 +2,10 @@ "changelog.md": { "Changelog Thermostat": "Changelog Thermostat", "Pour rappel s'il n'y a pas d'information sur la mise à jour, c'est que celle-ci concerne uniquement de la mise à jour de documentation, de traduction ou de texte": "Como lembrete, se não houver informações sobre a atualização, isso significa que se trata apenas da atualização da documentação, tradução ou texto", + "Correction d'un bug qui crée des crons invalide": "Corrigido um bug que cria crons inválidos", + "Correction de bug si il y avait 2 ordres en meme temps (merci @phpvarious": "Correção de bug se houvesse 2 pedidos ao mesmo tempo (obrigado @phpvarious", + "03\/01\/2024": "01\/03\/2024", + "Préparation pour jeedom 4.4": "Preparando-se para Jeedom 4.4", "19\/12\/2023": "19\/12\/2023", "Possibilité de saisir des valeurs négatives pour les commandes Offsets relatives aux apports internes": "Possibilidade de inserir valores negativos para comandos de Compensações relativos a contribuições internas", "27\/04\/2023": "27\/04\/2023", diff --git a/docs/pt_PT/changelog.md b/docs/pt_PT/changelog.md index f6a62dd..419ae2e 100644 --- a/docs/pt_PT/changelog.md +++ b/docs/pt_PT/changelog.md @@ -4,6 +4,13 @@ > >Como lembrete, se não houver informações sobre a atualização, isso significa que se trata apenas da atualização da documentação, tradução ou texto +- Corrigido um bug que cria crons inválidos +- Correção de bug se houvesse 2 pedidos ao mesmo tempo (obrigado @phpvarious) + +# 01/03/2024 + +- Preparando-se para Jeedom 4.4 + # 19/12/2023 - Possibilidade de inserir valores negativos para comandos de Compensações relativos a contribuições internas