Sécuriser l'utilisation des plannings

Posez ici vos questions d'utilisation, de configuration de DomoticZ, de bugs, de conseils sur le logiciel lui même dans son utilisation et son paramétrage.
Des forums spécifiques sont ouverts ci-dessous pour regrouper les différents sujets.
Dim33
Messages : 209
Inscription : 29 janv. 2017, 23:19

Sécuriser l'utilisation des plannings

Message par Dim33 »

Bonjour,

La gestion de mon chauffage électrique est basé sur une consigne de température (avec hystérésis).
Cette consigne est ensuite modifié via un planning.

Par exemple, consigne de 20°C avant 20h puis à 20h passage a 17°C.

Si une panne de courant ou un plantage du système a lieu à 19h30 et que le système redémarre à 20h30, la consigne sera toujours de 20°C, la même avant l’arrêt du système. Le changement à 20h ayant été shunté

Quelles sont vos solutions pour éviter ça ?

Merci.
NUC sous Ubuntu Server / RFXCom / Domoticz Version: 2020.2
ogulf
Messages : 445
Inscription : 15 juin 2017, 14:41

Re: Sécuriser l'utilisation des plannings

Message par ogulf »

Je me suis déjà posé la question.
En analysant dans la BDD les plannings, j'avais constaté qu'il était assez simple de retrouver la "valeur demandée" par rapport à celle en cours (que ce soit une consigne, un selector switch etc.).
Le plus dur a été de trouver comment sont gérés les plannings en base : il y a une ligne par entrée, et un nombre calculé à base de puissances de 2 pour identifier le ou les jours de la programmation.
L'heure et la "valeur" sont parfaitement lisibles.

Je ne me souviens plus de la règle, mais un reste de la division du fameux nombre modulo... je sais plus quoi te disait si le planning s'appliquait un lundi ou un mardi etc...

Il faudrait que je recherche pour donner au moins cette règle d'identification du jour, pour le reste ce sera facile.

Mon principal pb en ce moment.... trouver du temps...
Domoticz Stable sur RPi3 + RFPlayer + ZWave+ + RFLink R48 :
- 11 x RF660P
- 1 x FGSD-002
- 10 x F007TH
- 5 x Emcoluxr EV1527 + 4 x NAS-DS01Z
- 4 x NAS-PD02Z
- 1 x Shelly 1PM
Datawolf
Messages : 273
Inscription : 03 avr. 2018, 13:51

Re: Sécuriser l'utilisation des plannings

Message par Datawolf »

Salut,
Je me suis déjà posé la question.
Mais n'ayant jamais été confronté au problème je n'ai pas creusé.
J'imagine qu'il doit y avoir sous linux moyen de déclencher un shell au redémarrage d'une appli...
@+
The Datawolf
lost
Messages : 1511
Inscription : 12 nov. 2016, 11:01

Re: Sécuriser l'utilisation des plannings

Message par lost »

ogulf a écrit : 13 nov. 2019, 08:06 Je me suis déjà posé la question.
En analysant dans la BDD les plannings, j'avais constaté qu'il était assez simple de retrouver la "valeur demandée" par rapport à celle en cours (que ce soit une consigne, un selector switch etc.).
...
Je vois que je n'étais pas le seul!

Il y a qq années, j'avais émis l'idée de pouvoir récupérer une info "current_planning" d'un switch dans la partie suggestion du forum anglophone...

Ce serait amha le plus simple/perenne: Le format de la BDD Domoticz a déjà évolué dans le passé et aller y taper direct peut ne plus fonctionner d'une version à l'autre.

Pour ma part, il ne s'agissait pas de gérer le cas "panne de courant" qui n'arrive pas si souvent mais la partie adaptative scriptée qui passe éventuellement par dessus mes plannings chauffage: En effet, le planning gère le cas habituel (fonction de nos heures habituelles de départ/retour boulot, emplois du temps des enfants)... Mais si on rentre hors de ces heures (cours qui sautent pour les enfants...) avec un chauffage en consigne économique depuis quelques heures, faut bien réchauffer l'ambiance.

Et là, c'est géré par script (lié à l'état présence de l'alarme) pour, si qqun est là, que la consigne est basse (éco ou hors gel, correspondant à nos heures habituelles d'absence) et la température aussi... envoyer une consigne confort pour 30mn.

Au bout de 30mn, c'est la consigne précédente qui est alors remise, pouvant potentiellement invalider une commande planifiée confort repassée entre temps.

Bon, au pire, si la condition est encore vraie ça va repartir pour 30mn... Pas si grave dans mon cas, mais cela pourrait être évité.

Il faudrait peut-être relancer cette idée, mais le focus actuel semblant plus être sur l'intégration d'open-zwave 1.6 pas certain que qqun s'y colle.
Datawolf
Messages : 273
Inscription : 03 avr. 2018, 13:51

Re: Sécuriser l'utilisation des plannings

Message par Datawolf »

Salut,

Pour le chauffage j'ai renoncé très vite au planning.
Notamment parce que je suis en abonnement Tempo.
Les horaires sont donc hardcodés dans un script.
C'est lourd mais on peut bypasser (mode "Forçage") avec un switch.
Il faudra quand même que je jette un oeil au planning pensé par vil1driver...

@+
The Datawolf
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: Sécuriser l'utilisation des plannings

Message par denis_brasseur »

J'ai été confronté à cette même problématique de planning et de coupure du pi.
J'ai sécurisé la problématique de coupure d'alimentation par batterie + onduleur, j'ai aujourd'hui ~24 h d'autonomie.
J'ai abandonné l'utilisation des plannings pour passer par ma propre gestion via script lua, puisque possibilité de faire des "relances" toutes les minutes, toutes les heures, comme je le souhaite en tout cas.
Beaucoup plus laborieux à mettre en oeuvre, mais tellement plus fiable en cas de coupure.
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
lost
Messages : 1511
Inscription : 12 nov. 2016, 11:01

Re: Sécuriser l'utilisation des plannings

Message par lost »

Datawolf a écrit : 14 nov. 2019, 10:03 Pour le chauffage j'ai renoncé très vite au planning.
Notamment parce que je suis en abonnement Tempo.
Les horaires sont donc hardcodés dans un script.
C'est lourd mais on peut bypasser (mode "Forçage") avec un switch.
Sur les plannings, il y a une case activation par entrée... Certes, aucune inactivation globale ce qui est un peu pénible.

Mais j'ai un script python qui fait cela très bien. On l'appelle avec un nom de switch et comme les wildcards sont supportés, si on a pris une convention de nommage cohérente de ses switches, il est possible d'activer/désactiver tous les plannings radiateurs de la maison, switches nommés "radiateur_pièce" en l'appelant avec "radiateur*".

Aller modifier un script à chaque fois, c'est quand même peu convivial (bonjour le WAF!) même si les plannings domoticz pourraient être améliorés.

A noter ceci, tout neuf, mais je ne sais pas ce que ca vaut:
https://www.domoticz.com/forum/viewtopi ... 38&t=30158

Au moins, c'est une feuille de tableur qui gère les entrées, avec un script plus aisément adaptable derrière.
Dim33
Messages : 209
Inscription : 29 janv. 2017, 23:19

Re: Sécuriser l'utilisation des plannings

Message par Dim33 »

Un script lua semble être à ce jour la seule solution viable, mais il faut trouver un script modifiable aisément et qui permet les mêmes possibilités que les plannings domoticz.

Celui-la, est pas mal mais il ne gère que des heures entières.

Code : Tout sélectionner

https://www.domoticz.com/wiki/Thermostat_planning
NUC sous Ubuntu Server / RFXCom / Domoticz Version: 2020.2
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: Sécuriser l'utilisation des plannings

Message par denis_brasseur »

Dim33 a écrit : 15 nov. 2019, 21:43 ----------------------------
Celui-la, est pas mal mais il ne gère que des heures entières.

Code : Tout sélectionner

https://www.domoticz.com/wiki/Thermostat_planning
J'avais utilisé ce script à sa sortie en le modifiant pour obtenir une plage de 30 mn au lieu d'un plage de 1 h, même si je ne l'utilise plus aujourd'hui :

Code : Tout sélectionner

-- retourne le jour actuel en français ex: "Mardi"
days = {"Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"}
jour_semaine = days[(os.date("%w")+1)]

Code : Tout sélectionner

local planning =
{
--0 on ne chauffe jamais
--1 on chauffe en fonction du GPS
--2 on chauffe toujours
--          00 XX|01 XX|02 XX|03 XX|04 XX|05 XX|06 XX|07 XX|08 XX|09 XX|10 XX|11 XX|12 XX|13 XX|14 XX|15 XX|16 XX|17 XX|18 XX|19 XX|20 XX|21 XX|22 XX|23 XX
Lundi    = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1 ,1},
--          00 XX|01 XX|02 XX|03 XX|04 XX|05 XX|06 XX|07 XX|08 XX|09 XX|10 XX|11 XX|12 XX|13 XX|14 XX|15 XX|16 XX|17 XX|18 XX|19 XX|20 XX|21 XX|22 XX|23 XX
Mardi    = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
--          00 XX|01 XX|02 XX|03 XX|04 XX|05 XX|06 XX|07 XX|08 XX|09 XX|10 XX|11 XX|12 XX|13 XX|14 XX|15 XX|16 XX|17 XX|18 XX|19 XX|20 XX|21 XX|22 XX|23 XX
Mercredi = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1},
--          00 XX|01 XX|02 XX|03 XX|04 XX|05 XX|06 XX|07 XX|08 XX|09 XX|10 XX|11 XX|12 XX|13 XX|14 XX|15 XX|16 XX|17 XX|18 XX|19 XX|20 XX|21 XX|22 XX|23 XX
Jeudi    = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
--          00 XX|01 XX|02 XX|03 XX|04 XX|05 XX|06 XX|07 XX|08 XX|09 XX|10 XX|11 XX|12 XX|13 XX|14 XX|15 XX|16 XX|17 XX|18 XX|19 XX|20 XX|21 XX|22 XX|23 XX
Vendredi = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1},
--          00 XX|01 XX|02 XX|03 XX|04 XX|05 XX|06 XX|07 XX|08 XX|09 XX|10 XX|11 XX|12 XX|13 XX|14 XX|15 XX|16 XX|17 XX|18 XX|19 XX|20 XX|21 XX|22 XX|23 XX
Samedi   = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
--          00 XX|01 XX|02 XX|03 XX|04 XX|05 XX|06 XX|07 XX|08 XX|09 XX|10 XX|11 XX|12 XX|13 XX|14 XX|15 XX|16 XX|17 XX|18 XX|19 XX|20 XX|21 XX|22 XX|23 XX
Dimanche = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
}

Code : Tout sélectionner

if os.date('%M') < 30 then demi_heure = 1
else demi_heure = 2 end

Code : Tout sélectionner

local planning_etat = planning[jour_semaine][(tonumber(os.date('%H'))*2) + demi_heure]
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
Répondre