le but de mon installation est la gestion de deux/trois espaces intérieur qui reproduise la condition idéal pour leurs occupants
il y a donc
- 3 éclairages avec 2 plages d'activité différente
- 1 système d'extraction d'air ainsi que d'intraction et aussi un dernier qui permet un transfert de l espace 1 vers le 2 eme
- 2 chauffage
- 1 humidificateur
- 3 brassage d'air actif en simultané
coté information
il y a actuellement
- 2 sonde DHT22 t°C hydro
- 3 sonde température en radio ( qui risque de disparaitre car crash rare mais pénible ) la 3 eme sonde est a l extérieur des espaces pour connaitre la température de la pièces dans laquel ce trouve le système
j'ai aussi
un bouton virtuel (clim auto) qui permet de désactivé la gestion de l ensemble sauf des lampes pour des maintenance par exemple
un autre bouton pour passer du mode 12h a 18h de lumiere
il y a bien entendu d'autre dispositif brancher en h24 donc non géré par domoticz comme
pompe a eau, pompe air, chauffe eau
concernant les conditions du système nécessaire:
- lumiere on/off 18/6 ou 12/12
- température entre 18 et 24 mais je suis plus entre 15 et 28 donc on va s'amélioré cette hiver surtout sans être avec le chauffage ON dès que la lumière est OFF. J'ai travaillé le problème a la source niveau isolation mais au détriment du renouvellement d air pour le moment (evolutif)
- humidité par d action pour le moment me reste un problème, c est que mon nouvelle humidificateur est en veille dès que je le rallume. faut que je lise bien la notice sinon faire un bypass
j'ai besoin aussi d activer le renouvellement d'air même si je suis dans la bonne plage de température car lumiere on la lumière chauffe et active le système mais lumière off faut que je fasse un truc genre On 5min toute les heures entre tel heure et tel heure
-PH 5.8 a 6.2
-EC différente valeur au long du cycle mais fixe sur une période défini mais faudrait que je puisse déjà monitoré cette valeur car je pense ajouter quelque script sous certaine conditions ( en gros si une grosse chute ajouter tel produit car c'est le moment idéal )
concernant les évolutions j'aimerai ajouter
une gestion de humidité de la terre pour une arrosage auto pour un espace
une gestion du ph EC et température d'eau d'un réservoir
pompe péristaltique pour ajout de complément
ainsi que son niveau max et critique pour gérer les complément sur une base d'un niveau max et coupure pompe lorsque le niveau viendrai a être critique
gestion d un ajout d'eau ( pompe a eau car plus gros volume a ajouter que les complément)
gestion de la consommation électrique
au delà du fait que la gestion automatique permet de passer moins de temps a devoir m'occuper de tous cela. la gestion permet d'avoir une stabilité de l'environnement ainsi qu'un monitoring très utile pour un suivie en temps réel mais surtout avoir un recule sur l'ensemble d'une période et d'optimisé et affiné certains paramètre sans oublié que cette gestion permet de détecter un éventuel problème. bref tous ça pour dire que cela me permet de faire mieux a chaque nouveau cycle
Voila pour la présentation du système c'est encore brouillon mais je vais bien entendu éditer ce post pour détaillé plus et surtout rentré dans le technique (et profiter de vos conseils pour épuré car je suis doué pour me compliqué la vie)
scripts LUA domoticz
LUMIERE PRINCIPALE
Code : Tout sélectionner
local executionTimeon = '16:25'
local executionTimeoff = '10:25'
local executionTimeflo = '04:25'
commandArray = {}
--cro--
if os.date('%H:%M') >= executionTimeon and otherdevices['Lampe x160 (1)'] == 'Off' and otherdevices['ON=12H / OFF=18H'] == 'Off' and otherdevices['Lampe x160 Off'] == 'Off' then
commandArray['Lampe x160 (1)']='On'
else
if os.date('%H:%M') == executionTimeoff and otherdevices['Lampe x160 (1)'] == 'On' and otherdevices['ON=12H / OFF=18H'] == 'Off' then
commandArray['Lampe x160 (1)']='Off'
end
end
--flo
if os.date('%H:%M') >= executionTimeon and otherdevices['Lampe x160 (1)'] == 'Off' and otherdevices['ON=12H / OFF=18H'] == 'On' and otherdevices['Lampe x160 Off'] == 'Off' then
commandArray['Lampe x160 (1)']='On'
else
if os.date('%H:%M') == executionTimeflo and otherdevices['Lampe x160 (1)'] == 'On' and otherdevices['ON=12H / OFF=18H'] == 'On' then
commandArray['Lampe x160 (1)']='Off'
end
end
return commandArrayCode : Tout sélectionner
local executionTime = '16:25'
local executionTimeoff = '10:25'
commandArray = {}
if os.date('%H:%M') >= executionTime and otherdevices['Lampe TN110 (2)'] == 'Off' then
commandArray['Lampe TN110 (2)']='On'
else
if os.date('%H:%M') == executionTimeoff and otherdevices['Lampe TN110 (2)'] == 'On'then
commandArray['Lampe TN110 (2)']='Off'
end
end
return commandArrayCode : Tout sélectionner
commandArray = {}
--gestion Temperature PM --
if(otherdevices_temperature ['t et h PM'] >= 23 and otherdevices['Extra PM=>Principale (5)'] == 'Off' and otherdevices['clim auto'] == 'On') then
-- commandArray['Extracteur (3)']="On"
commandArray['Extra PM=>Principale (5)']="On"
-- commandArray['Ventilateur x2P x1PM (8)']="Off"
else
if(otherdevices_temperature ['t et h PM'] <= 22 and otherdevices['clim auto'] == 'On'and otherdevices['Extra PM=>Principale (5)'] == 'On') then
-- commandArray['Extracteur (3)']="Off"
commandArray['Extra PM=>Principale (5)']="Off"
-- commandArray['Ventilateur x2P x1PM (8)']="On"
end
end
-- gestion temperature principale --
if(otherdevices_temperature ['t et h box'] >= 24 and otherdevices['Extracteur (3)'] == 'Off' and otherdevices['clim auto'] == 'On') then
commandArray['Extracteur (3)']="On"
else
if(otherdevices_temperature ['t et h box'] <= 23.5 and otherdevices['Extracteur (3)'] == 'On' and otherdevices['clim auto'] == 'On') then
commandArray['Extracteur (3)']="Off"
end
end
--gestion renouvellement d'air la nuit PM
--if(otherdevices_temperature ['Temp Pm'] <= 24 and otherdevices['Lampe TN110 (2)'] == 'Off' and otherdevices['Extracteur (3)'] == 'Off' and otherdevices['Extra PM=>Principale (5)'] == 'Off' and uservariables['Tempo extra on'] == 0) then
-- commandArray['Extracteur (3)']="On FOR 5"
-- commandArray['Extra PM=>Principale (5)']="On FOR 5"
-- commandArray['Ventilateur x2P x1PM (8)']="Off"
-- commandArray['Variable:Tempo extra on']='20'
--else
--if(otherdevices_temperature ['Temp Pm'] <= 20 and otherdevices['Lampe TN110 (2)'] == 'Off' and otherdevices['Extracteur (3)'] == 'On' and otherdevices['Extra PM=>Principale (5)'] == 'On') then
-- commandArray['Extracteur (3)']="Off"
-- commandArray['Extra PM=>Principale (5)']="Off"
-- commandArray['Ventilateur x2P x1PM (8)']="On"
--end
--end
--gestion renouvellement d'air la nuit --
--if(otherdevices_temperature ['Temp box'] <= 22 and otherdevices['Lampe x160 (1)'] == 'Off' and otherdevices['Extracteur (3)'] == 'Off' and uservariables['Tempo extra on'] == 0) then
-- commandArray['Extracteur (3)']="On FOR 5"
-- commandArray['Ventilateur x2P x1PM (8)']="Off"
-- commandArray['Variable:Tempo extra on']='20'
--else
--if(otherdevices_temperature ['Temp box'] <= 20 and otherdevices['Lampe x160 (1)'] == 'Off' and otherdevices['Extracteur (3)'] == 'On') then
--commandArray['Extracteur (3)']="Off"
-- commandArray['Ventilateur x2P x1PM (8)']="On"
--end
-- gestion Clim auto --
if(otherdevices['clim auto'] == 'Off') then
commandArray['Extracteur (3)']="Off"
commandArray['Extra PM=>Principale (5)']="Off"
end
return commandArrayINTRA
Code : Tout sélectionner
commandArray = {}
if (otherdevices_temperature ['t et h box'] >= 24 and otherdevices['clim auto'] == 'On' and otherdevices['intra Principale (4)'] == 'Off') then
commandArray['intra Principale (4)']='On'
else
if (otherdevices_temperature ['t et h box'] <= 23.5 and otherdevices['clim auto'] == 'On' and otherdevices['intra Principale (4)'] == 'On') then
commandArray['intra Principale (4)']='Off'
end
end
if (otherdevices['clim auto'] == 'Off') then
commandArray['intra Principale (4)']='Off'
end
return commandArrayCode : Tout sélectionner
commandArray = {}
if (otherdevices['clim auto'] == 'On' and uservariables['Tempo extra on'] == 10 and otherdevices['Ventilateur x2P x1PM (8)'] == 'Off') then
commandArray['Ventilateur x2P x1PM (8)']='On'
else
if (otherdevices['clim auto'] == 'On' and uservariables['Tempo extra on'] == 5 and otherdevices['Ventilateur x2P x1PM (8)'] == 'On') then
commandArray['Ventilateur x2P x1PM (8)']='Off'
else
if (otherdevices['clim auto'] == 'Off' and otherdevices['Ventilateur x2P x1PM (8)'] == 'On') then
commandArray['Ventilateur x2P x1PM (8)']="Off"
end
end
end
return commandArray1
Code : Tout sélectionner
commandArray = {}
local compteur = uservariables['Tempo extra on']
if (compteur > 0) then
compteur = compteur - 1
commandArray ['Variable:Tempo extra on'] = tostring(compteur)
end
return commandArrayCode : Tout sélectionner
commandArray = {}
if(uservariables['Tempo extra on'] == 0 ) then
commandArray['Variable:Tempo extra on']='10'
end
return commandArray
RESET pour alim dht22
Code : Tout sélectionner
#!/usr/bin/env python3
#-- coding: utf-8 --
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GP = 11
GPIO.setup(GP, GPIO.OUT, initial=GPIO.HIGH)
state = GPIO.input(GP)
if state :
GPIO.output(GP, GPIO.LOW)
time.sleep(2)
GPIO.output(GP, GPIO.HIGH)Code : Tout sélectionner
#!/usr/bin/python
# -*- coding: latin-1 -*-
# basé sur le script Adafruit et adapté pour Domoticz
# Copyright (c) 2014 Adafruit Industries
# Author: Tony DiCola
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
import os
import sys
import Adafruit_DHT
from requests.auth import HTTPBasicAuth
import requests
############# Parametres ################################
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# les parametres de Domoticz
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
domoticz_ip='x
domoticz_port='x'
user='x'
password='x'
domoticz_idx='71'
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# les parametres du DHT
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#sensor est 11,22,ou 2302
# pin est le numero d la pin que vous avez cablée
sensor=22
pin=10
############# Fin des parametres #################################
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# le fomat pour la temp hum est celui ci
#/json.htm?type=command¶m=udevice&idx=IDX&nvalue=0&svalue=TEMP;HUM;HUM_STAT
def maj_widget(val_url):
requete='http://'+domoticz_ip+':'+domoticz_port+val_url
# print requete
r=requests.get(requete,auth=HTTPBasicAuth(user,password))
if r.status_code != 200:
print "Erreur API Domoticz"
humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
if humidity is not None and temperature is not None:
print('Temp={0:0.1f}* Humidity={1:0.1f}%'.format(temperature, humidity))
# l URL Domoticz pour le widget virtuel
url='/json.htm?type=command¶m=udevice&idx='+str(domoticz_idx)
url+='&nvalue=0&svalue='