77 612 läst · 420 svar
78k läst
420 svar
Prata med IVT 490
=====================ivtlogger.py=======================
import serial #pip3 install pyserial
# https://spellfoundry.com/2016/05/29/configuring-gpio-serial-port-raspbian-jessie-including-pi-3-4/
import csv
INFLUXDB_TOKEN="ixSkaffaEgetTokenPåInfluxdbLKJQWELRKJQWLERJKQWLERJQWLKERJ=="
import influxdb_client, os, time
from influxdb_client import InfluxDBClient, Point, WritePrecision
from influxdb_client.client.write_api import SYNCHRONOUS
token = INFLUXDB_TOKEN
org = "per@lengquist.se"
url = "https://westeurope-1.azure.cloud2.influxdata.com"
client = influxdb_client.InfluxDBClient(url=url, token=token, org=org)
bucket="ivt"
write_api = client.write_api(write_options=SYNCHRONOUS)
field_names=['To radiators GT1','Outdoor GT2','Tap water top GT3-1','Warm water mid GT3-2','Warm water bottom GT3-3','field6','Hot gas GT6','field8','Pressure guard defrost','High pressure','Low pressure','Vacation state on','Compressor active','Schunt Opening SV1','Schunt Closing SV1','Radiator pump P1','Fan','Alarm','Extern P2','LLT GT1','LL GT1','Target Radiator out GT1','UL GT1','LL GT3:2','ULT GT3:2','UL GT3:2','LL GT3:3','BV GT3:3','SV3 BV Foerskj','Effekt ink vit VV behov','Tillskotstimer VV behov','Tappv prio','Elpatron varme','Tillskott rad','Elpatron extra vv','Default SV2 Open']
with open('ivtdata.csv', 'a', newline='') as f:
writer = csv.writer(f)
writer.writerow(field_names)
ser = serial.Serial ("/dev/ttyS0", 9600) #Use raspi-config to enable serial and disable serial console.
# https://spellfoundry.com/2016/05/29/configuring-gpio-serial-port-raspbian-jessie-including-pi-3-4/
while True:
received_data = ser.readline()
print(received_data)
s = received_data.decode('ascii')
#print(s)
values=[]
for x in s.split(';'):
values.append(int(x.strip()))
#print (values)
writer.writerow(values)
f.flush()
write_api.write(bucket=bucket, org=org, record=[
Point("Heating").field("heating", values[1]/10),
Point("Outdoor").field("outdoor", values[2]/10),
Point("Compressor").field("compressor", values[7]/10),
Point("Compresson On").field("comp_on", values[13]),
Point("SV1 Open").field("sv1_open", values[14]),
Point("SV1 Close").field("sv1_close", values[15]),
Point("DesiredHeating").field("desired_heating", values[22]/10)])
write_api.write(bucket=bucket, org=org, record=[
Point("Heatpump").field("Sekvensnr", values[0]),
Point("Heatpump").field("To radiators GT1", values[1]),
Point("Heatpump").field("Outdoor GT2", values[2]),
Point("Heatpump").field("Tap water top GT3-1", values[3]),
Point("Heatpump").field("Warm water mid GT3-2", values[4]),
Point("Heatpump").field("Warm water bottom GT3-3", values[5]),
Point("Heatpump").field("field6", values[6]),
Point("Heatpump").field("Hot gas GT6", values[7]),
Point("Heatpump").field("field8", values[8]),
Point("Heatpump").field("Pressure guard defrost", values[9]),
Point("Heatpump").field("High pressure", values[10]),
Point("Heatpump").field("Low pressure", values[11]),
Point("Heatpump").field("Vacation state on", values[12]),
Point("Heatpump").field("Compressor active", values[13]),
Point("Heatpump").field("Shunt Opening SV1", values[14]),
Point("Heatpump").field("Shunt Closing SV1", values[15]),
Point("Heatpump").field("Radiator pump P1", values[16]),
Point("Heatpump").field("Fan", values[17]),
Point("Heatpump").field("Alarm", values[18]),
Point("Heatpump").field("Extern P2", values[19]),
Point("Heatpump").field("LLT GT1", values[20]),
Point("Heatpump").field("LL GT1", values[21]),
Point("Heatpump").field("Target Radiator out GT1", values[22]),
Point("Heatpump").field("UL GT1", values[23]),
Point("Heatpump").field("LL GT3:2", values[24]),
Point("Heatpump").field("ULT GT3:2", values[25]),
Point("Heatpump").field("UL GT3:2", values[26]),
Point("Heatpump").field("LL GT3:3", values[27]),
Point("Heatpump").field("BV GT3:3", values[28]),
Point("Heatpump").field("SV3 BV Foerskj", values[29]),
Point("Heatpump").field("Effekt ink vit VV behov", values[30]),
Point("Heatpump").field("Tillskotstimer VV behov", values[31]),
Point("Heatpump").field("Tappv prio", values[32]),
Point("Heatpump").field("Elpatron varme", values[33]),
Point("Heatpump").field("Tillskott rad", values[34]),
Point("Heatpump").field("Elpatron extra vv", values[35]),
Point("Heatpump").field("Default SV2 Open", values[36]) ])
print("Posted!")
======================ivtlogger.service================================
[Unit]
Description=Read IVT log data over UART and post to InfluxDB
After=network.target
[Service]
User=pi
ExecStart=/usr/bin/python3 /home/pi/ivt_logger.py
Restart=always
WorkingDirectory=/home/pi/
[Install]
WantedBy=multi-user.target
## located in /lib/systemd/system/ivt_logger.service
import serial #pip3 install pyserial
# https://spellfoundry.com/2016/05/29/configuring-gpio-serial-port-raspbian-jessie-including-pi-3-4/
import csv
INFLUXDB_TOKEN="ixSkaffaEgetTokenPåInfluxdbLKJQWELRKJQWLERJKQWLERJQWLKERJ=="
import influxdb_client, os, time
from influxdb_client import InfluxDBClient, Point, WritePrecision
from influxdb_client.client.write_api import SYNCHRONOUS
token = INFLUXDB_TOKEN
org = "per@lengquist.se"
url = "https://westeurope-1.azure.cloud2.influxdata.com"
client = influxdb_client.InfluxDBClient(url=url, token=token, org=org)
bucket="ivt"
write_api = client.write_api(write_options=SYNCHRONOUS)
field_names=['To radiators GT1','Outdoor GT2','Tap water top GT3-1','Warm water mid GT3-2','Warm water bottom GT3-3','field6','Hot gas GT6','field8','Pressure guard defrost','High pressure','Low pressure','Vacation state on','Compressor active','Schunt Opening SV1','Schunt Closing SV1','Radiator pump P1','Fan','Alarm','Extern P2','LLT GT1','LL GT1','Target Radiator out GT1','UL GT1','LL GT3:2','ULT GT3:2','UL GT3:2','LL GT3:3','BV GT3:3','SV3 BV Foerskj','Effekt ink vit VV behov','Tillskotstimer VV behov','Tappv prio','Elpatron varme','Tillskott rad','Elpatron extra vv','Default SV2 Open']
with open('ivtdata.csv', 'a', newline='') as f:
writer = csv.writer(f)
writer.writerow(field_names)
ser = serial.Serial ("/dev/ttyS0", 9600) #Use raspi-config to enable serial and disable serial console.
# https://spellfoundry.com/2016/05/29/configuring-gpio-serial-port-raspbian-jessie-including-pi-3-4/
while True:
received_data = ser.readline()
print(received_data)
s = received_data.decode('ascii')
#print(s)
values=[]
for x in s.split(';'):
values.append(int(x.strip()))
#print (values)
writer.writerow(values)
f.flush()
write_api.write(bucket=bucket, org=org, record=[
Point("Heating").field("heating", values[1]/10),
Point("Outdoor").field("outdoor", values[2]/10),
Point("Compressor").field("compressor", values[7]/10),
Point("Compresson On").field("comp_on", values[13]),
Point("SV1 Open").field("sv1_open", values[14]),
Point("SV1 Close").field("sv1_close", values[15]),
Point("DesiredHeating").field("desired_heating", values[22]/10)])
write_api.write(bucket=bucket, org=org, record=[
Point("Heatpump").field("Sekvensnr", values[0]),
Point("Heatpump").field("To radiators GT1", values[1]),
Point("Heatpump").field("Outdoor GT2", values[2]),
Point("Heatpump").field("Tap water top GT3-1", values[3]),
Point("Heatpump").field("Warm water mid GT3-2", values[4]),
Point("Heatpump").field("Warm water bottom GT3-3", values[5]),
Point("Heatpump").field("field6", values[6]),
Point("Heatpump").field("Hot gas GT6", values[7]),
Point("Heatpump").field("field8", values[8]),
Point("Heatpump").field("Pressure guard defrost", values[9]),
Point("Heatpump").field("High pressure", values[10]),
Point("Heatpump").field("Low pressure", values[11]),
Point("Heatpump").field("Vacation state on", values[12]),
Point("Heatpump").field("Compressor active", values[13]),
Point("Heatpump").field("Shunt Opening SV1", values[14]),
Point("Heatpump").field("Shunt Closing SV1", values[15]),
Point("Heatpump").field("Radiator pump P1", values[16]),
Point("Heatpump").field("Fan", values[17]),
Point("Heatpump").field("Alarm", values[18]),
Point("Heatpump").field("Extern P2", values[19]),
Point("Heatpump").field("LLT GT1", values[20]),
Point("Heatpump").field("LL GT1", values[21]),
Point("Heatpump").field("Target Radiator out GT1", values[22]),
Point("Heatpump").field("UL GT1", values[23]),
Point("Heatpump").field("LL GT3:2", values[24]),
Point("Heatpump").field("ULT GT3:2", values[25]),
Point("Heatpump").field("UL GT3:2", values[26]),
Point("Heatpump").field("LL GT3:3", values[27]),
Point("Heatpump").field("BV GT3:3", values[28]),
Point("Heatpump").field("SV3 BV Foerskj", values[29]),
Point("Heatpump").field("Effekt ink vit VV behov", values[30]),
Point("Heatpump").field("Tillskotstimer VV behov", values[31]),
Point("Heatpump").field("Tappv prio", values[32]),
Point("Heatpump").field("Elpatron varme", values[33]),
Point("Heatpump").field("Tillskott rad", values[34]),
Point("Heatpump").field("Elpatron extra vv", values[35]),
Point("Heatpump").field("Default SV2 Open", values[36]) ])
print("Posted!")
======================ivtlogger.service================================
[Unit]
Description=Read IVT log data over UART and post to InfluxDB
After=network.target
[Service]
User=pi
ExecStart=/usr/bin/python3 /home/pi/ivt_logger.py
Restart=always
WorkingDirectory=/home/pi/
[Install]
WantedBy=multi-user.target
## located in /lib/systemd/system/ivt_logger.service
Redigerat:
Jag behövde konvertera spänningsnivåerna för den seriella kommunikationen mellan värmepumpens kontrollerkort och Raspberryins GPIO-ingång. Löste det med en transistor och två resistorer.
Minns inte exakt hur jag kopplade, men prata med någon som kan lite om transistorer och seriella protokoll (tex skillnad mellan RS-232 och UART). Det var inte avancerat.
Här är lite blandade anteckningar jag gjorde när jag konfigurerade raspberryn och skrev koden:
https://manpages.debian.org/testing/systemd/systemd.service.5.en.html
journalctl -u ivt_logger
sudo service ivt_logger restart
pip install pyserial
sudo pip3 install pyserial
sudo pip3 install wiringpi
pip3 install influxdb-client
nohup python3 serial_readline.py > nohup2.out &
export INFLUXDB_TOKEN=ixqSkaffaEnEgenTokenPåInfluxdbLKJWROIWUEROIUAWDFIAWECCJOQWEEFIJ==
sudo service ivt_logger restart
https://blog.usedbytes.com/2019/11/run-at-startup-without-rc.local/
https://github.com/raspberrypi/docu...22fb56b30e4d62c5ccba24/linux/usage/systemd.md
Minns inte exakt hur jag kopplade, men prata med någon som kan lite om transistorer och seriella protokoll (tex skillnad mellan RS-232 och UART). Det var inte avancerat.
Här är lite blandade anteckningar jag gjorde när jag konfigurerade raspberryn och skrev koden:
https://manpages.debian.org/testing/systemd/systemd.service.5.en.html
journalctl -u ivt_logger
sudo service ivt_logger restart
pip install pyserial
sudo pip3 install pyserial
sudo pip3 install wiringpi
pip3 install influxdb-client
nohup python3 serial_readline.py > nohup2.out &
export INFLUXDB_TOKEN=ixqSkaffaEnEgenTokenPåInfluxdbLKJWROIWUEROIUAWDFIAWECCJOQWEEFIJ==
sudo service ivt_logger restart
https://blog.usedbytes.com/2019/11/run-at-startup-without-rc.local/
https://github.com/raspberrypi/docu...22fb56b30e4d62c5ccba24/linux/usage/systemd.md
Om du sparar data på SD-kortet så kommer det inte att överleva längre än något år. Jag har därför en ESP i min IVT (ren spänningsdelning från 5V till 3,3V). Sedan läser jag in all data till en Raspberry pi med SSD centralt istället. Och skaffar du dig en ESP på har du två saker att styra med reläer också:
- sommardrift (kortslutning av två skruvplintar). Undviker att dra igång värmen i onödan.
- gt 3:2 (tempsensor i tanken) som du kan växla mellan 65°C och verklig temperatur. Det är denna som styr när kompressorn går igång. Perfekt om man vill styra kompressorn till billiga timmar.
Läs mer om hur du gör detta tidigare i tråden...
- sommardrift (kortslutning av två skruvplintar). Undviker att dra igång värmen i onödan.
- gt 3:2 (tempsensor i tanken) som du kan växla mellan 65°C och verklig temperatur. Det är denna som styr när kompressorn går igång. Perfekt om man vill styra kompressorn till billiga timmar.
Läs mer om hur du gör detta tidigare i tråden...
Redigerat:
Om du syftar på min kod är det bara att ta bort raden:pacman42 skrev:
writer.writerow(values)
så sparas mätdata bara på Influxdb. Det är en molntjänst så då används SD-kortet minimalt.
Intressant att styra om tempsensorer för att få IVTn att dra mindre el när det är dyrt. Måste man inte styra om både GT3:2 och utomhussensorn, så att den tror att varken varmvatten eller värmevatten behövs? Jag ska leta upp den diskussionen tidigare i tråden, låter intressant.
För övrigt gissar jag att det som går att styra med en ESP32 även går att styra med en Raspberrrys GPIO. Jag gillar egentligen microcontrollers bättre än Raspberry, men en Rasp kändes lättare att använda när man ska anropa ett API över HTTP.
Värmen styrs via semesterläge, dvs kortslutning av två skruvplintar. Så man behöver inte styra utetemperaturen.
Det finns bra http-bibliotek till ESP också. Jag har dock en central hjärna på en Raspberry som styr hela huset. Jag gillar att ha dumma klienter
Det finns bra http-bibliotek till ESP också. Jag har dock en central hjärna på en Raspberry som styr hela huset. Jag gillar att ha dumma klienter
Vågade du gå vidare med den här lösningen? Min fläkt stod inställd på 150V. Testade både 180V och 230V manuellt genom att flytta kabeln men det blev ingen märkbar skillnad så för mig skulle det inte förbättra något att kunna styra hastigheten. Det kan ju vara värt för dig att testa manuellt först för att se om du märker någon skillnad, annars antar jag att fläkten i IVT 490 helt enkelt är för klen för att kunna forcera ventilationen rejält som man skulle vilja ibland.A ArttuP skrev:
Jag tänker ju tvärtom, dvs att jag ställer ned den när ingen är hemma och om det är tillräckligt torrt i badrummen.S Sp1nd3l skrev:Vågade du gå vidare med den här lösningen? Min fläkt stod inställd på 150V. Testade både 180V och 230V manuellt genom att flytta kabeln men det blev ingen märkbar skillnad så för mig skulle det inte förbättra något att kunna styra hastigheten. Det kan ju vara värt för dig att testa manuellt först för att se om du märker någon skillnad, annars antar jag att fläkten i IVT 490 helt enkelt är för klen för att kunna forcera ventilationen rejält som man skulle vilja ibland.
Jag har bytt från 495 till en GEO med VBX box. VBX boxen verkar ha samma transformator för fläktstyrning som 490 maskinen, här har du hur jag kopplade för min VBX box.S Sp1nd3l skrev:Något du kan utveckla lite hur det är uppsatt med vilken hårdvara osv?
Vi har nämligen en IVT 490 som jag skulle vilja styra fläkthastigheten med. Det finns ju 1-6 lägen (115V, 125V, 135V, 150V, 180V, 230V) men jag är lite osäker på vad som krävs för att kunna styra dessa. Idag sitter det ju en transformator som man manuellt måste flytta kontakten för att ändra hastighet (se bilder).
Syftet är främst att höja fläkthastigheten när det är flera personer i huset som gör att CO2-värden är lite väl höga (jag har Aranet4 CO2-mätare). Då vill jag öka fläkthastigheten. Har Home Assistant så någon lösning med Z-wave, Zigbee, Bluetooth, Wifi är att föredra, som går att styra från Home Assistant.
Vill ha minst 3 lägen (ingen hemma, 2 personer, Fler än 2 personer), men skulle kunna klara mig med 2 lägen (2 personer/Normal-läge, Fler än 2 personer/Högre hastighet).
Några förslag? Har inga problem att sätta upp det i Home Assistant, det enda jag behöver är möjligheten att i princip kunna säga i vilket läge fläkten ska vara i. Mest optimalt vore ju att kunna ha alla 1-6 lägen som finns manuellt idag men att jag kan styra vilket läge den ska vara i.
https://github.com/stefanh12/HA/tree/main/ivt-vbx
Vad behöver jag för att få temperaturerna, både Nu och Bör, till Home Assistant som ligger på en Elite desk?
Kan jag få datan via nätverkskabel då det är lite taskig mottagning i pannrummet men cat kabel kan jag dra dit, är kanske 15-20m kabel
Kan jag få datan via nätverkskabel då det är lite taskig mottagning i pannrummet men cat kabel kan jag dra dit, är kanske 15-20m kabel
https://github.com/stefanh12/IVT_490_esphomenino skrev:
Hmm jag har också en tidig rego 600, från 99-01 nånstans där.T t3o skrev:Jag kör en D1 mini som drivs av styrkortet. Det driver också 3 reläer som styr fläkt, utetemperatur och vattentemperatur. Kan tyvärr inte läsa datat från pannan då jag har en av de gamla versionerna från 2001 som inte stödjer datadumpning. Har automatiserat detta med homey och fuktmätare i badrummen och tanken är väl att integrera med min D1 mini som jag tryckt in i elmätaren och köra på billiga elpriser eller när solen producerar. Nu på sommarhalvåret då kör den mellan 11-18 och värmer vatten till 60 grader vilket täcker för oss fyra i hushållet. I vinter antar jag att den måste gå mestadels av tiden men att man styr den att inte köra vid högsta elpriserna som den alltid går för sig att göra.
Måste höra med min lokala ivt gubbe om det finns ett styrkort jag kan köpa och byta i min
Är det värt det med risken för plötslig död på pumpen? Jag försöker hålla min vid liv så länge som möjligt, men den börjar närma sig time-of-death...nino skrev: