Solar Heating and Ventilation Control based on Raspberry Pi
Keywords: RaspberryPI , Home Automation, Temperature Sensor, AD converter, Relay, Solar, Heating, Ventilation, Control with Web Interface,Data Logging
Abstract: To create a solar heating control this article describes how to connect temperature sensor via SPI to a RaspberryPI and how to use GPIO-pins to control relays. In the second part there are detailed control algorithms for a combined solar and combustion heating with web interface to visualize the data logging and as control pannel.
Motivation
When my heating control broke down I decided to create my own to
- implement my own control algorithms
- have an easy to use web interface
- be able to repair it myself!
- safe money
As heating setup I have one central hot water storage tank (550 l Water including 180 l tap water), which provides heat for warm water consumption and heating of my house.
There are two possibilities to heat up this tank which have to be controlled:
- Solar heating One solar collector (6.93 m2, with pump and sensors for hot loading temperature and return flow temperature .
- Wood pellet burner The Calimax "Twist 80/20" oven has its own control for lighting the fire and control the circulation pump. To activate it there are contacts which have to be closed without potentitial by my control. To do this a second relay is needed.
So far I have 4 sensors ( Ttank , Tcoll , Tload , Tret ) and 2 actuators ( Asolar , Aoven ) to handle...
So let's set up the RaspberryPI, design the electronis, implement the communication and design the control.
1.0 Set up the RaspberryPi
- Dowload and install the RaspberryPi Imager on your regular computer.
- Start the imager application and set hostname enable ssh set user + password set local settings
- set hostname
- enable ssh
- set user + password
- set local settings
- Write ISO to SSD.
- Plug SSD into RaspberryPi, connect Monitor, Mouse, Keyboard and boot; initial boot is slow, keep patient
- sudo raspi-config System Options > Boot / Auto Login > Console System Options > Hostname System Options > WLAN Interface Options > ssh = yes Localisation Options > Locale = de_DE.UTF-8 en_US.UTF-8
- System Options > Boot / Auto Login > Console
- System Options > Hostname
- System Options > WLAN
- Interface Options > ssh = yes
- Localisation Options > Locale = de_DE.UTF-8 en_US.UTF-8
- reboot
- connect LAN and login to console sudo apt-get update sudo apt-get upgrade sudo shutdown -r now
- route ssh to some different port:
sudo nano /etc/ssh/sshd_config
Port 65022
LoginGraceTime 1m
axAuthTries 6
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
Optionally, enable AutrhorizedKeysFile and put your ssh-key in there:
cat your_id_rsa.pub > ~/.ssh/authorized_keys
or, from extern computer do:
ssh-copy-id -p 65022@
Set access rights:
sudo chown -R.ssh/
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
restart service:
sudo service sshd restart
Before you logout, try to login in from different shell first!
ssh -p 65022 -X user@IP
Be aware of your firewall settings. - find IP address by ifconfig or
and try to login via
ssh -p 12345 user@192.168.xxx.xxx
(If you should work on a Windows PC, you may use PowerShell.) - Install further usefull applications:
sudo apt-get install emacs
sudo apt-get install gnuplot
sudo apt-get install meld
sudo apt-get install git-cola
- sudo apt-get install lighttpd
- To get your IP use
hostname -I or ifconfig - install php
sudo apt install php php-cgi #php-mysql
sudo lighty-enable-mod fastcgi
sudo lighty-enable-mod fastcgi-phpsudo apt install php-curl
- Change the port number:
sudo nano /etc/lighttpd/lighttpd.confserver.port = 12380
restart service: sudo service sshd restart Before you logout, try to login in from different shell first! ssh -p 65022 -X user@IP Be aware of your firewall settings. - find IP address by ifconfig and try to login via ssh -p 12345 user@192.168.xxx.xxx (If you should work on a Windows PC, you may use PowerShell.)
- Install further usefull applications: sudo apt-get install emacs sudo apt-get install gnuplot sudo apt-get install meld sudo apt-get install git-cola
1.1 Set up the Web Server
How to setup Raspberry Pi Lighttpd1.1 Set up the Web Server
- sudo apt-get install lighttpd
- To get your IP use hostname -I or ifconfig
- install php sudo apt install php php-cgi #php-mysql sudo lighty-enable-mod fastcgi sudo lighty-enable-mod fastcgi-php
- Change the port number: sudo nano /etc/lighttpd/lighttpd.conf server.port = 12380
- finally restart sudo /etc/init.d/lighttpd restart
- Edit default page:
sudo chown pi:www-data /var/www/html/index.php
nano /var/www/html/index.php
;-) php echo \"\"; echo \"
This is lighttp, hello my fried :-)
\"; phpinfo(); echo \"\"; ;-) - And test it:
lynx http://localhost:12380
";
echo "