The old controller gave up the magic smoke and this is my way to fix it.
The controller consists of a raspberry pi 3 with a DAQCplate for sensors and controlling relays.
-I am using the original NTC thermistors.
+I am using the original NTC thermistors. The sensors are connected: one lead to +5V, the other lead to ADC input, and a 1.5kΩ between ADC input and GND. This makes a voltage divider and 1.5kΩ fits the complete sensor range for the ADC.
+A 5v relay is connected to the output. +5V to flyback protection and the othera lead to GND. The 5V relay run the big 3-phase relay for the compressor.
import piplates.DAQCplate as DAQC
import time
from decimal import Decimal
+import os
+import paho.mqtt.client as mqtt #import the client1
+from prometheus_client import start_http_server, Summary, Gauge
+
#DAQC.setDOUTbit(0,0)
#thermistor reading function
def compressor(state=None):
tempc = temp - Decimal(273.15) #K to C
return tempc
+def log(fp, data):
+ print(*data,sep=',', file=fp)
+ fp.flush()
+
+fp = open("/var/tmp/heatpump.csv","w+")
+start_http_server(8000)
+running_g = Gauge('heatpump_running', 'Is the compressor running?')
+top_g = Gauge('heatpump_toptemp', 'Temperature at top of tank.')
+return_g = Gauge('heatpump_returntemp', 'Temperature at inlet sensor.')
+gas_g = Gauge('heatpump_hottemp', 'Temperature at Hot Gas side sensor.')
while(True):
vv_retur=temp_get(DAQC.getADC(0,0),DAQC.getADC(0,8))
vv_top=temp_get(DAQC.getADC(0,2),DAQC.getADC(0,8))
print("VV top:",vv_top)
print("Hetgas:",hetgas)
print("Kompressor:",compressor())
- if vv_top < 35:
+ log(fp, [vv_retur,vv_top,hetgas,str(compressor()[0])])
+ broker_address="monitor.tranquillity.se"
+ client = mqtt.Client("P1") #create new instance
+ client.connect(broker_address) #connect to broker
+ client.publish("heatpump/running",str(compressor()[0]), retain=True)#publish
+ client.publish("heatpump/toptemp",str(vv_top), retain=True)#publish
+ client.publish("heatpump/returntemp",str(vv_retur), retain=True)#publish
+ client.publish("heatpump/hottemp",str(hetgas), retain=True)#publish
+ running_g.set(compressor()[0])
+ top_g.set(vv_top)
+ return_g.set(vv_retur)
+ gas_g.set(hetgas)
+ if vv_top < 47:
compressor(True)
- print("Toptemp under 35. Startar kompressor")
- if vv_top > 45:
+ print("Toptemp under 47. Startar kompressor")
+ if vv_top > 51:
compressor(False)
- print("Toptemp över 45. Stänger av kompressor")
+ print("Toptemp över 51. Stänger av kompressor")
# import pdb;pdb.set_trace()
time.sleep(1)