[LUA] Script et accès base SQLite
[LUA] Script et accès base SQLite
Bonjour,
voici ma problématique, sous Domoticz, j'ai développé un programme qui Thermostat afin de gérer la gestion du poêle à granulés. J'aimerais l'amméliorer en y ajoutant une détection de fenêtres ouvertes (notamment quand Madame toile et ouvre les fenêtres ou aère la maison).En effet elle ne pense pas à désactiver le thermostat. Du coup le poêle se met en route alors que les fenêtres sont ouvertes ... Pas très écologique tout cela.
Ayant des capteurs de température, on s'aperçoit très vite e l'ouverte de feneêtres ou porte la température chute à minima de 1° en 5/10 minutes, surtout à cette période dans le Nord Ouest de la France.
J'aimerais donc comparer la valeur de ma température actuelle avec celle d'il y a 10 minutes. Ma question : Comment récupérer la valeur d'il y a 10 minutes avec mon script LUA ?
Comment puis-je me connecter à la bdd SQLite ?
Concernant la requête exacte pour extraire la valeur, je n'y ai pas réfléchi mais je devrais pouvoir trouver facilement.
Merci de votre retour à tous.
voici ma problématique, sous Domoticz, j'ai développé un programme qui Thermostat afin de gérer la gestion du poêle à granulés. J'aimerais l'amméliorer en y ajoutant une détection de fenêtres ouvertes (notamment quand Madame toile et ouvre les fenêtres ou aère la maison).En effet elle ne pense pas à désactiver le thermostat. Du coup le poêle se met en route alors que les fenêtres sont ouvertes ... Pas très écologique tout cela.
Ayant des capteurs de température, on s'aperçoit très vite e l'ouverte de feneêtres ou porte la température chute à minima de 1° en 5/10 minutes, surtout à cette période dans le Nord Ouest de la France.
J'aimerais donc comparer la valeur de ma température actuelle avec celle d'il y a 10 minutes. Ma question : Comment récupérer la valeur d'il y a 10 minutes avec mon script LUA ?
Comment puis-je me connecter à la bdd SQLite ?
Concernant la requête exacte pour extraire la valeur, je n'y ai pas réfléchi mais je devrais pouvoir trouver facilement.
Merci de votre retour à tous.
-
vil1driver
- Messages : 5661
- Inscription : 30 janv. 2015, 11:07
- Localisation : Rennes (35)
Re: [LUA] Script et accès base SQLite
Salut,
Enregistre toutes les 10 minutes ta temp dans une variable
Enregistre toutes les 10 minutes ta temp dans une variable
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
Re: [LUA] Script et accès base SQLite
Cela manque un peu de ne pas pouvoir avoir de variable statiques, qui seraient conservées entre les appels d'un script. Je n'ai pas connaissance de ceci en Lua... Et ici, il faudra aussi enregistrer le temps du dernier enregistrement car un script time c'est appelé toutes les minutes. Ce qui complexifie encore en plus de générer une charge de travail d'appel de script et de comparaison de temps inutile 9 fois sur 10.vil1driver a écrit : Enregistre toutes les 10 minutes ta temp dans une variable
Cela oblige à créer une variable utilisateur domoticz, donc une dépendance crée hors script. Ce n'est pas très propre et ne facilite pas la portabilité aisée des scripts.
L'autre solution, ce serait de gérer de l'extérieur. Par exemple via un script Python exécuté en service avec une boucle infinie mise en sleep pour 10mn à la fin de chaque exécution... et qui agirait via l'API HTTP/JSON sur le switch de l'interface domoticz activant globalement le chauffage: Temp baisse de plus de X°C en 10mn = on coupe. Remonte de plus de Y°C en 10mn, on remets.
Pour des trucs simples (comme ici... le python ne devient vraiment utile que si on doit faire des trucs plus complexes en JSON avec Domoticz), un bash sans boucle appelé via un job cron toutes les 10mn peut aussi faire l'affaire.
-
jackslayter
- Messages : 1040
- Inscription : 30 sept. 2014, 14:40
- Localisation : Isère (38)
Re: [LUA] Script et accès base SQLite
c'est la seule solution dans Dz, sur un script tu es obligé de stocker une variable quelque part car il tourne en bloucle.
Raspberry Pi + RFLink + Domoticz Beta
Oregon - 3x Thgr122Nx / Chacon - micromodule 200w, télécommande 3b et 16b, 2x module 1000w, détecteur de fumée, contact de porte, 2x prise 3500w / OWL - CM180 / TRC02 v2 RGB 3M / Cheap - PIR, contact de porte
Oregon - 3x Thgr122Nx / Chacon - micromodule 200w, télécommande 3b et 16b, 2x module 1000w, détecteur de fumée, contact de porte, 2x prise 3500w / OWL - CM180 / TRC02 v2 RGB 3M / Cheap - PIR, contact de porte
-
vil1driver
- Messages : 5661
- Inscription : 30 janv. 2015, 11:07
- Localisation : Rennes (35)
Re: [LUA] Script et accès base SQLite
ah ba si justement ça existelost a écrit :Cela manque un peu de ne pas pouvoir avoir de variable statiques, qui seraient conservées entre les appels d'un script. Je n'ai pas connaissance de ceci en Lua...vil1driver a écrit : Enregistre toutes les 10 minutes ta temp dans une variable
c'est extrêmement utilisé dans de nombreux scripts ici sur ce forum pourtant.
depuis plus d'un an que tu utilises domoticz tu n'as jamais entendu parlé de variables utilisateur ?
menu réglage > plus d'options > variables utilisateur
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
Re: [LUA] Script et accès base SQLite
Donc sinon il n'existe aucun moyen en LUa d'accèder à la base SQLite de Domoticz par une connexion à la Bdd et des requêtes ?
Sinon je vais voir pour adapter mon code en python ou php pour pouvoir aller rechercher des valeurs dans la Bdd SQLite.
L'avantage c'était que la je pouvais modifier mon code de n'importe où. La ce sera un peu plus délicat, il me faudra un client ftp pour transférer le programme . Tant pis.
Car avec la porte ouverte j'ai d'autres améliorations à faire, comme avec mon capteur dans les combles qui m'est très utile pour connaître si le soleil chauffe la maison ou pas. Mais même chose il me faut récupérer des valeurs précédentes pour déterminer ma pente et savoir si je dois chauffer la maison au poêle ou si je laisse le soleil chauffer la maison.
Sinon je vais voir pour adapter mon code en python ou php pour pouvoir aller rechercher des valeurs dans la Bdd SQLite.
L'avantage c'était que la je pouvais modifier mon code de n'importe où. La ce sera un peu plus délicat, il me faudra un client ftp pour transférer le programme . Tant pis.
Car avec la porte ouverte j'ai d'autres améliorations à faire, comme avec mon capteur dans les combles qui m'est très utile pour connaître si le soleil chauffe la maison ou pas. Mais même chose il me faut récupérer des valeurs précédentes pour déterminer ma pente et savoir si je dois chauffer la maison au poêle ou si je laisse le soleil chauffer la maison.
-
vil1driver
- Messages : 5661
- Inscription : 30 janv. 2015, 11:07
- Localisation : Rennes (35)
Re: [LUA] Script et accès base SQLite
tu peux faire tout cela en lua et sans client ftp... mais si tu préfères t'embêter avec la base et risquer de tout casser..
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua
Un ex domoticzien
Re: [LUA] Script et accès base SQLite
Enfin avec un simplement un select, je ne risque pas de casser ma base ...
Je ne modifie rien, je veux juste récupérer une info d'il y a 5 ou 10 min.
C'est risqué à ce point ?
Je ne modifie rien, je veux juste récupérer une info d'il y a 5 ou 10 min.
C'est risqué à ce point ?
Re: [LUA] Script et accès base SQLite
Je connais ces variables utilisateur et en utilises... mais comme un pis-aller!vil1driver a écrit : ah ba si justement ça existe
c'est extrêmement utilisé dans de nombreux scripts ici sur ce forum pourtant.
depuis plus d'un an que tu utilises domoticz tu n'as jamais entendu parlé de variables utilisateur ?![]()
menu réglage > plus d'options > variables utilisateur
On s'est mal compris en fait: Je parlais d'une déclaration d'un type de variable statique (au sens de ce qui existe pour une fonction écrite en C), déclarée ainsi dans le source Lua qui l'utilise et sans dépendance à une une déclaration externe dans le clicodrome de Domoticz... avec ses limites (devoir la déclarer en dehors de son source, limité à du texte...).
Je trouve que cela manque!
-
Chrominator
- Messages : 1042
- Inscription : 19 déc. 2015, 07:29
- Localisation : France
Re: [LUA] Script et accès base SQLite
Pas besoin d'accéder directement à la base, il faut simplement lire les valeurs qui forment le graphique si un historique à 5 mn d’intervalle te convient.
Par exemple :
Ce qui renvoie (j'évite de poster toutes les lignes)
:
Extrait de la doc Domoticz :
Par exemple :
Code : Tout sélectionner
http://<ip domoticz>:<port domoticz>/json.htm?type=graph&sensor=temp&idx=<idx de ton capteur de température>&range=dayCode : Tout sélectionner
{
"result": [
{
"d": "2017-10-23 19:45",
"hu": "61",
"te": 21.4
},
{
"d": "2017-10-23 19:50",
"hu": "62",
"te": 21.3
},
{
"d": "2017-10-23 19:55",
"hu": "62",
"te": 21.3
},
{
"d": "2017-10-23 20:00",
"hu": "62",
"te": 21.3
},
{
"d": "2017-10-23 20:05",
"hu": "63",
"te": 21.3
},
{
"d": "2017-10-23 20:10",
"hu": "63",
"te": 21.3
},
{
"d": "2017-10-23 20:15",
"hu": "63",
"te": 21.2
},
{
"d": "2017-10-23 20:20",
"hu": "63",
"te": 21.1
},
{
"d": "2017-10-23 20:25",
"hu": "63",
"te": 21.1
},
{
"d": "2017-10-23 20:30",
Temperature
/json.htm?type=graph&sensor=temp&idx=IDX&range=day
/json.htm?type=graph&sensor=temp&idx=IDX&range=month
/json.htm?type=graph&sensor=temp&idx=IDX&range=year
Un bon frein vaut mieux que deux sparadraps.
Ubuntu 24.04.3 LTS - Domoticz 2025.1 (build 16782)
Pentium G3220T 2.6GHz - 4Go DDR3
RFXtrx433 USB Ver Pro1/1043
Z-Stick GEN5 Version: 1.6-1136-g07ea22bb
Rtl433 RTL-SDR receiver
RFLink Gateway
Zigbee SLZB-06
Ubuntu 24.04.3 LTS - Domoticz 2025.1 (build 16782)
Pentium G3220T 2.6GHz - 4Go DDR3
RFXtrx433 USB Ver Pro1/1043
Z-Stick GEN5 Version: 1.6-1136-g07ea22bb
Rtl433 RTL-SDR receiver
RFLink Gateway
Zigbee SLZB-06