Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- import minimalmodbus
- import requests
- import time
- import sys
- import datetime
- import random
- import traceback
- #sys.stdout = open('/home/pi/nilan.log', 'w')
- #instrument = minimalmodbus.Instrument('/dev/ttyUSB0', 30) # port name, slave address (in decimal)
- #instrument.serial.parity = minimalmodbus.serial.PARITY_EVEN
- #sudo strace -ewrite -p 2222 pour voir le stdout quand il tourne en bg
- hum_hist0 = 0
- hum_hist1 = 0
- flag_hum = 0
- def lire_nilan (un, deux, trois, quatre):
- success = 0
- while (success != 1):
- try:
- resultat = instrument.read_register(un, deux, trois, quatre)
- success = 1
- except:
- print 'exception lecture'
- print traceback.format_exc()
- time.sleep (2)
- return resultat
- def ecrire_nilan (un, deux, trois):
- success = 0
- while (success != 1):
- try:
- instrument.write_register(un, deux, trois)
- success = 1
- except:
- print 'exception ecriture'
- print traceback.format_exc()
- time.sleep (2)
- while (1):
- try:
- instrument = minimalmodbus.Instrument('/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A9O3R1L9-if00-port0', 30) # port name, slave address (in decimal)
- instrument.serial.parity = minimalmodbus.serial.PARITY_EVEN
- instrument.CLOSE_PORT_AFTER_EACH_CALL=True
- print time.strftime('%X %x %Z')
- # AirFilterAlarm = lire_nilan(101, 0, 4, False) # Registernumber, number of decimals
- # print 'AirFilterAlarm 101 = ', AirFilterAlarm
- Alarm = lire_nilan(400, 0, 4, False) # Registernumber, number of decimals
- print 'Alarm 400 = ', Alarm
- # Alarm1 = lire_nilan(401, 0, 4, False) # Registernumber, number of decimals
- # print 'Alarm1 401 = ', Alarm1
- # Alarm2 = lire_nilan(404, 0, 4, False) # Registernumber, number of decimals
- # print 'Alarm2 404 = ', Alarm2
- try:
- if (Alarm > 0):
- request = "http://192.168.0.19:9090/json.htm?type=command¶m=switchlight&idx=92&switchcmd=On&level=0"
- r = requests.get(request, timeout=13)
- else:
- request = "http://192.168.0.19:9090/json.htm?type=command¶m=switchlight&idx=92&switchcmd=Off&level=0"
- r = requests.get(request, timeout=13)
- except requests.RequestException:
- pass
- ## Read temperature (PV = ProcessValue) ##
- temp_maison = lire_nilan(210, 2, 4, True) # Registernumber, number of decimals
- print 'Temp. maison = ', temp_maison
- if temp_maison < 5 :
- os.exit()
- temp_puls = lire_nilan(207, 2, 4, True) # Registernumber, number of decimals
- print 'Temp. air pulsee = ', temp_puls
- request = "http://192.168.0.19:9090/json.htm?type=command¶m=udevice&idx=41&nvalue=0&svalue=" + str(temp_puls)
- try:
- r = requests.get(request, timeout=13)
- except requests.RequestException:
- pass
- # request = "http://emoncms.org/input/post.json?json={Idx41:" + str(temp_puls) + "}&apikey=mettre_sa_clé"
- # try:
- # r = requests.get(request, timeout=13)
- # except requests.RequestException:
- # pass
- #Outdoor temp
- temp_ext = lire_nilan(208, 2, 4, True) # Registernumber, number of decimals
- print 'Temp. ext. = ', temp_ext
- request = "http://192.168.0.19:9090/json.htm?type=command¶m=udevice&idx=38&nvalue=0&svalue=" + str(temp_ext)
- try:
- r = requests.get(request, timeout=13)
- except requests.RequestException:
- pass
- # request = "http://emoncms.org/input/post.json?json={Idx38:" + str(temp_ext) + "}&apikey=mettre_sa_clé"
- # try:
- # r = requests.get(request, timeout=13)
- # except requests.RequestException:
- # pass
- temp_air_extrait = lire_nilan(210, 2, 4, True) # Registernumber, number of decimals
- print 'Temp. air extrait = ', temp_air_extrait
- temp_haut = lire_nilan(211, 2, 4, True) # Registernumber, number of decimals
- print 'Temp. haut du ballon = ', temp_haut
- request = "http://192.168.0.19:9090/json.htm?type=command¶m=udevice&idx=39&nvalue=0&svalue=" + str(temp_haut)
- try:
- r = requests.get(request, timeout=13)
- except requests.RequestException:
- pass
- # request = "http://emoncms.org/input/post.json?json={Idx39:" + str(temp_haut) + "}&apikey=mettre_sa_clé"
- # try:
- # r = requests.get(request, timeout=13)
- # except requests.RequestException:
- # pass
- temp_bas = lire_nilan(212, 2, 4, True) # Registernumber, number of decimals
- print 'Temp. bas du ballon = ', temp_bas
- request = "http://192.168.0.19:9090/json.htm?type=command¶m=udevice&idx=40&nvalue=0&svalue=" + str(temp_bas)
- try:
- r = requests.get(request, timeout=13)
- except requests.RequestException:
- pass
- # request = "http://emoncms.org/input/post.json?json={Idx40:" + str(temp_bas) + "}&apikey=mettre_sa_clé"
- # try:
- # r = requests.get(request, timeout=13)
- # except requests.RequestException:
- # pass
- #temp_defrost = lire_nilan(204, 2, 4, True) # Registernumber, number of decimals
- #request = "http://emoncms.org/input/post.json?json={Degivrage:" + str(temp_defrost) + "}&apikey=mettre_sa_clé"
- #try:
- # r = requests.get(request, timeout=13)
- #except requests.RequestException:
- # pass
- temperature = lire_nilan(215, 2, 4, True) # Registernumber, number of decimals
- print 'Temp. buanderie = ', temperature
- request = "http://192.168.0.19:9090/json.htm?type=command¶m=udevice&idx=36&nvalue=0&svalue=" + str(temperature)
- try:
- r = requests.get(request, timeout=13)
- except requests.RequestException:
- pass
- # request = "http://emoncms.org/input/post.json?json={Idx36:" + str(temperature) + "}&apikey=mettre_sa_clé"
- # try:
- # r = requests.get(request, timeout=13)
- # except requests.RequestException:
- # pass
- #Ventil_consigne = instrument.read_register(1003, 0, 3, True) # Registernumber, number of decimals
- Ventil_consigne = lire_nilan(1003, 0, 3, True)
- print 'Ventilation 1003', Ventil_consigne
- Ventil_consigne_modif = Ventil_consigne * 10
- request = "http://192.168.0.19:9090/json.htm?type=command¶m=switchlight&idx=117&switchcmd=Set%20Level&level=" + str(Ventil_consigne_modif)
- try:
- result = requests.get(request, timeout=13)
- except requests.RequestException:
- pass
- #humidite = instrument.read_register(221, 2, 4, True) # Registernumber, number of decimals
- humidite = lire_nilan(221, 2, 4, True)
- print 'Humidite maison = ', humidite
- request = "http://192.168.0.19:9090/json.htm?type=command¶m=udevice&idx=37&nvalue=0&svalue=" + str(temp_maison) + ";" + str(humidite) + ";1"
- try:
- result = requests.get(request, timeout=13)
- except requests.RequestException:
- pass
- # request = "http://emoncms.org/input/post.json?json={Idx37t:" + str(temp_maison) + "}&apikey=mettre_sa_clé"
- # try:
- # r = requests.get(request, timeout=13)
- # request = "http://emoncms.org/input/post.json?json={Idx37h:" + str(humidite) + "}&apikey=mettre_sa_clé"
- # r = requests.get(request, timeout=13)
- # except requests.RequestException:
- # pass
- if (hum_hist0 == 0) or (hum_hist1 == 0):
- hum_hist1 = humidite;
- hum_hist0 = humidite;
- if (Ventil_consigne > 2):
- ecrire_nilan(1003,2,0)
- print 'hum hist 0', hum_hist0
- print 'hum hist 1', hum_hist1
- coef = (3 * (hum_hist0 + hum_hist1*2 + humidite*3) - 6 * (hum_hist0+hum_hist1+humidite)) / 6
- print 'Coef humidite = ', coef
- #request = "http://emoncms.org/input/post.json?json={Coef_hum:" + str(coef) + "}&apikey=mettre_sa_clé"
- #r = requests.get(request, timeout=13)
- if flag_hum != 1:
- speed3 = 0
- if coef > 1 and (humidite-hum_hist0) > 0.75:
- Store_consigne = Ventil_consigne;
- print 'Store consigne', Store_consigne
- print 'On passe en vitesse 4'
- flag_hum = 1
- debut = datetime.datetime.now()
- ecrire_nilan(1003,4,0)
- else:
- if coef > 1:
- debut = datetime.datetime.now()
- fin = datetime.datetime.now()
- duree = fin - debut
- print 'duree', duree.seconds
- if speed3 != 1:
- if (duree.seconds / 60) > 10:
- speed3 = 1
- print 'On passe en vitesse 3'
- ecrire_nilan(1003,3,0)
- else:
- if (duree.seconds / 60) > 40:
- flag_hum = 0
- ecrire_nilan(1003,Store_consigne,0)
- print 'On revient a la vitesse initiale', Store_consigne
- else:
- if coef > 1:
- print 'On repart en vitesse 4'
- debut = datetime.datetime.now()
- ecrire_nilan(1003,4,0)
- speed3 = 0
- hum_hist0 = hum_hist1
- hum_hist1 = humidite
- Status = lire_nilan(1001, 0, 4, True) # Registernumber, number of decimals
- if Status == 0: print 'Off'
- elif Status == 1: print 'Chauffage'
- elif Status == 2: print 'Refroidissement'
- elif Status == 3: print 'Auto'
- Status = lire_nilan(1002, 0, 4, True) # Registernumber, number of decimals
- print Status
- if Status == 0: print 'Off'
- elif Status == 2: print 'Arret'
- elif Status == 3: print 'Demarrage'
- elif Status == 4: print 'Pause'
- elif Status == 5: print 'Ventilation Stop'
- elif Status == 6: print 'Ventilation'
- elif Status == 7: print 'Chauffage'
- elif Status == 8: print 'Refroidissement'
- elif Status == 9: print 'Production Eau Chaude'
- elif Status == 10: print 'Legionelles'
- elif Status == 11: print 'Refroidissement + Eau Chaude'
- elif Status == 12: print 'Chauffage central'
- elif Status == 13: print 'Degivrage'
- elif Status == 15: print 'Service'
- elif Status == 16: print 'Alarme'
- if (Status == 9) or (Status == 11):
- request = "http://emoncms.org/input/post.json?json={ProdEauChaude:1}&apikey=mettre_sa_clé"
- try:
- r = requests.get(request, timeout=13)
- except requests.RequestException:
- pass
- request = "http://192.168.0.19:9090/json.htm?type=command¶m=switchlight&idx=44&switchcmd=On&level=0"
- try:
- r = requests.get(request, timeout=13)
- except requests.RequestException:
- pass
- print 'ProdEauChaude 1'
- else:
- request = "http://emoncms.org/input/post.json?json={ProdEauChaude:0}&apikey=mettre_sa_clé"
- try:
- r = requests.get(request, timeout=13)
- except requests.RequestException:
- pass
- request = "http://192.168.0.19:9090/json.htm?type=command¶m=switchlight&idx=44&switchcmd=Off&level=0"
- try:
- r = requests.get(request, timeout=13)
- except requests.RequestException:
- pass
- print 'ProdEauChaude 0'
- Compressor = lire_nilan(109, 0, 3, True) # Registernumber, number of decimals
- print 'Compressor 109', Compressor
- if (Compressor == 1) and (Status != 9): #temp_puls > temp_maison
- request = "http://emoncms.org/input/post.json?json={PAC:1}&apikey=mettre_sa_clé"
- try:
- r = requests.get(request, timeout=13)
- except requests.RequestException:
- pass
- request = "http://192.168.0.19:9090/json.htm?type=command¶m=switchlight&idx=45&switchcmd=On&level=0"
- try:
- r = requests.get(request, timeout=13)
- except requests.RequestException:
- pass
- print 'PAC 1'
- elif (Compressor == 1) and (Status == 9) and (temp_puls > temp_maison) and (temp_maison > temp_ext):
- request = "http://emoncms.org/input/post.json?json={PAC:1}&apikey=mettre_sa_clé"
- try:
- r = requests.get(request, timeout=13)
- except requests.RequestException:
- pass
- request = "http://192.168.0.19:9090/json.htm?type=command¶m=switchlight&idx=45&switchcmd=On&level=0"
- try:
- r = requests.get(request, timeout=13)
- except requests.RequestException:
- pass
- print 'PAC 1'
- else:
- request = "http://emoncms.org/input/post.json?json={PAC:0}&apikey=mettre_sa_clé"
- try:
- r = requests.get(request, timeout=13)
- except requests.RequestException:
- pass
- request = "http://192.168.0.19:9090/json.htm?type=command¶m=switchlight&idx=45&switchcmd=Off&level=0"
- try:
- r = requests.get(request, timeout=13)
- except requests.RequestException:
- pass
- print 'PAC 0'
- Bypassopen = lire_nilan(102, 0, 3, True) # Registernumber, number of decimals
- print 'BypassOpen 102', Bypassopen
- if (Bypassopen == 1):
- request = "http://emoncms.org/input/post.json?json={Bypass:1}&apikey=mettre_sa_clé"
- try:
- r = requests.get(request, timeout=13)
- except requests.RequestException:
- pass
- try:
- request = "http://192.168.0.19:9090/json.htm?type=command¶m=switchlight&idx=43&switchcmd=On&level=0"
- r = requests.get(request, timeout=13)
- except requests.RequestException:
- pass
- else:
- request = "http://emoncms.org/input/post.json?json={Bypass:0}&apikey=mettre_sa_clé"
- try:
- r = requests.get(request, timeout=13)
- except requests.RequestException:
- pass
- request = "http://192.168.0.19:9090/json.htm?type=command¶m=switchlight&idx=43&switchcmd=Off&level=0"
- try:
- r = requests.get(request, timeout=13)
- except requests.RequestException:
- pass
- # Bypassclose = lire_nilan(103, 0, 3, True) # Registernumber, number of decimals
- # print 'BypassClose 103', Bypassclose
- # Air = lire_nilan(104, 0, 3, True) # Registernumber, number of decimals
- # print 'Air heating circ pump 104', Air
- # Air = lire_nilan(105, 0, 3, True) # Registernumber, number of decimals
- # print 'Air heating selected 105', Air
- # Air = lire_nilan(106, 0, 3, True) # Registernumber, number of decimals
- # print 'Air heater relays 106', Air
- # Status = lire_nilan(116, 0, 3, True) # Registernumber, number of decimals
- # print 'Chauffe Eau 116', Status
- # Status = lire_nilan(1002, 0, 3, True) # Registernumber, number of decimals
- # print 'Mode Select 1002', Status
- Status = lire_nilan(1004, 2, 3, True) # Registernumber, number of decimals
- print 'Temp consigne 1004', Status
- request = "http://192.168.0.19:9090/json.htm?type=command¶m=udevice&idx=78&nvalue=0&svalue=" + str(Status)
- try:
- r = requests.get(request, timeout=13)
- except requests.RequestException:
- pass
- # Ventil_user = lire_nilan(603, 0, 3, True) # Registernumber, number of decimals
- # print 'user vent 603', Ventil_user
- # User_active = lire_nilan(600, 0, 3, True) # Registernumber, number of decimals
- # print 'user active 600', User_active
- # User_function = lire_nilan(601, 0, 3, True) # Registernumb$
- # print 'user function 601', User_function
- # Humidity_high_step = lire_nilan(1911, 0, 3, True) # Registernumbe$
- # print 'Humidity hight step 1911', Humidity_high_step
- Inlet = lire_nilan(200, 2, 3, True) # Regis$
- print 'Inlet 200', Inlet
- # Exhaust = lire_nilan(201, 2, 3, True) # Regis$
- # print 'Exhaust 201', Exhaust
- # rendement = lire_nilan(1204,2,4,False)
- # print 'Rendement 1204', rendement
- request = "http://emoncms.org/input/post.json?json={Idx41:" + str(temp_puls) + ",Idx38:" + str(temp_ext) + ",Idx39:" + str(temp_haut) + ",Idx40:" + str(temp_bas) + ",Idx36:" + str(temperature) + ",Idx37t:" + str(temp_maison) + ",Idx37h:" + str(humidite) + ",Ventilation:" + str(Inlet) + "}&apikey=mettre_sa_clé"
- try:
- r = requests.get(request, timeout=13)
- except requests.RequestException:
- pass
- ventil_domoticz = int(round((Inlet *16) / 100))
- print 'Ventil domoticz', ventil_domoticz
- request = "http://192.168.0.19:9090/json.htm?type=command¶m=switchlight&idx=47&switchcmd=Set%20Level&level=" + str(ventil_domoticz)
- # print request
- try:
- r = requests.get(request, timeout=13)
- except requests.RequestException:
- pass
- # instrument.serial.close()
- time.sleep(40)
- except:
- print 'Exception'
- print traceback.format_exc()
- sys.exit(0)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement