Heater: Difference between revisions
| (62 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
{{ContainerInfo | {{ContainerInfo | ||
|image = Froeling.jpg | |image = Froeling.jpg | ||
|Domain = [https://heater.flowerhouse.at heater.flowerhouse.at] | |Domain = [https://heater.flowerhouse.at heater.flowerhouse.at] | ||
|IP = 192.168.88. | |IP = 192.168.88.11 | ||
|MAC = DA:62:17:83:4E:8F | |MAC = DA:62:17:83:4E:8F | ||
|Privileged = No | |Privileged = No | ||
|OS = Debian | |OS = Debian Bullseye | ||
|RAM = 512MB | |RAM = 512MB | ||
|Cores = 1 | |Cores = 1 | ||
}} | }} | ||
<p>The Heater-LXC is reachable under <syntaxhighlight lang="Bash" inline>192.168.88. | <p>The Heater-LXC is reachable under <syntaxhighlight lang="Bash" inline>192.168.88.11</syntaxhighlight> which is located in the ServerVLAN.</p> | ||
<p>The subdomain is [https://heater.flowerhouse.at heater.flowerhouse.at] which is handled by the [[ReverseProxy]].</p> | <p>The subdomain is [https://heater.flowerhouse.at heater.flowerhouse.at] which is handled by the [[ReverseProxy]].</p> | ||
<p>The Serial-IP-Konverter is reachable under <syntaxhighlight lang="Bash" inline>192.168.88. | <p>The Serial-IP-Konverter is reachable under <syntaxhighlight lang="Bash" inline>192.168.88.12</syntaxhighlight> which is located in the ServerVLAN.</p> | ||
__TOC__ | __TOC__ | ||
== Basic Setup == | == Basic Setup == | ||
| Line 24: | Line 23: | ||
<p>Install required packages:</p> | <p>Install required packages:</p> | ||
<syntaxhighlight lang="console"> | <syntaxhighlight lang="console"> | ||
apt install pkg-config cmake | apt install pkg-config cmake git build-essential libssl-dev liblua5.3-dev | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| Line 37: | Line 36: | ||
cd libwebsockets | cd libwebsockets | ||
mkdir build | mkdir build | ||
cd build | |||
</syntaxhighlight> | </syntaxhighlight> | ||
| Line 60: | Line 60: | ||
<p>Install required packages:</p> | <p>Install required packages:</p> | ||
<syntaxhighlight lang="console"> | <syntaxhighlight lang="console"> | ||
apt install | apt install libssl-dev libjansson-dev libxml2-dev libcurl4-openssl-dev libssl-dev libmariadb-dev-compat uuid-dev python3-dev libcap-dev | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<p> | <p>Download latest version:</p> | ||
<syntaxhighlight lang="console" line> | <syntaxhighlight lang="console" line> | ||
wget https://github.com/horchi/linux-p4d/archive/refs/tags/0.8.8.tar.gz | |||
tar -xvf 0.8.8.tar.gz | |||
rm 0.8.8.tar.gz | |||
mv linux-p4d-0.8.8 linux-p4d | |||
cd linux-p4d | cd linux-p4d | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<p> | <p>Build it:</p> | ||
<syntaxhighlight lang="console"> | <syntaxhighlight lang="console" line> | ||
make clean all NO_RASPBERRY_PI=1 | |||
make install NO_RASPBERRY_PI=1 | |||
</syntaxhighlight> | |||
<p>Delete build files:</p> | |||
<syntaxhighlight lang="console" line> | |||
cd /usr/src | |||
rm -r linux-p4d | |||
</syntaxhighlight> | </syntaxhighlight> | ||
<p>Create database at [[DataBase]] and add credentials to '' | <p>Create database at [[DataBase]] and add credentials to ''daemon.conf'':</p> | ||
<syntaxhighlight lang="console"> | <syntaxhighlight lang="console"> | ||
nano /etc/p4d/ | nano /etc/p4d/daemon.conf | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| Line 88: | Line 95: | ||
=== Serial-IP-Converter === | === Serial-IP-Converter === | ||
<p>Access the Serial-IP-Converter-UI under <syntaxhighlight lang="Bash" inline>192.168.88. | <p>Access the Serial-IP-Converter-UI under <syntaxhighlight lang="Bash" inline>192.168.88.12</syntaxhighlight> with <syntaxhighlight lang="Bash" inline>user: admin</syntaxhighlight> and <syntaxhighlight lang="Bash" inline>pw: admin</syntaxhighlight> and set the UART-settings:</p> | ||
[[File:Serial settings.png|1000px|center]] | [[File:Serial settings.png|1000px|center]] | ||
<p>Install socat:</p> | |||
<syntaxhighlight lang="console"> | |||
apt install socat | |||
</syntaxhighlight> | |||
<p>Connect to Serial-IP-Converter with:</p> | <p>Connect to Serial-IP-Converter with:</p> | ||
<syntaxhighlight lang="console"> | <syntaxhighlight lang="console"> | ||
socat pty,link=/dev/ | socat pty,link=/dev/ttyUSB0,raw tcp:192.168.88.12:8899& | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| Line 104: | Line 116: | ||
<p>Add to file:</p> | <p>Add to file:</p> | ||
<syntaxhighlight lang="console" line> | <syntaxhighlight lang="console" line> | ||
[Unit] | [Unit] | ||
Description=SOCAT Listen Service | Description=SOCAT Listen Service | ||
| Line 111: | Line 124: | ||
[Service] | [Service] | ||
Type=simple | Type=simple | ||
StandardOutput=journal | |||
StandardError=journal | |||
SyslogIdentifier=socat-serial-log | |||
User=root | User=root | ||
ExecStart=/bin/bash -c '/usr/bin/socat pty,link=/dev/ | ExecStart=/bin/bash -c '/usr/bin/socat pty,link=/dev/ttyUSB0,raw tcp:192.168.88.12:8899' | ||
Restart=on-failure | Restart=on-failure | ||
| Line 129: | Line 145: | ||
systemctl enable socat | systemctl enable socat | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Web Interface Setup === | |||
<p>The default port of the web interface is 1111, the default username is <syntaxhighlight lang="Bash" inline>p4</syntaxhighlight> and the password is <syntaxhighlight lang="Bash" inline>p4</syntaxhighlight>.</p> | |||
<p>Fist steps to enable data logging:</p> | |||
# Log in to the web interface | |||
# Click ''Init Messwerte'' | |||
# Go to ''Aufzeichnung'' and select the values you like to record and store your selection and save | |||
# Go to ''Setup'' and click 'Init Service Menü' | |||
== Update Script == | |||
<p>Bash script to update p4d:</p> | |||
<syntaxhighlight lang="bash" line> | |||
#!/bin/bash | |||
# Variables | |||
name="P4D" | |||
repo="horchi/linux-p4d" | |||
binary_path="/usr/local/bin" | |||
binary_name="p4d" | |||
# ===== VERSION CHECKING, CUSTOMIZE VARIBLES FOR IT ===== | |||
# Get current version | |||
current=$($binary_path/$binary_name -v) | |||
# Retain everything after last space | |||
current=${current//[!0-9.]/} | |||
# Get latest release tag | |||
latest=$(curl -sL https://api.github.com/repos/$repo/tags | jq -r '.[0].name') | |||
# Check if new version available | |||
if (("$(expr ${current//[!0-9]/} + 0)" == "$(expr ${latest//[!0-9]/} + 0)")); then | |||
echo -e "--------------------------------------" | |||
echo -e "- Installed ${current} is up to date" | |||
echo -e "--------------------------------------" | |||
exit 0 | |||
fi | |||
# Check if repo is deprecated | |||
if (("$(expr ${current//[!0-9]/} + 0)" > "$(expr ${latest//[!0-9]/} + 0)")); then | |||
echo -e "--------------------------------------------------------------------------------" | |||
echo -e "- Installed ${current} is newer than available version, repository deprecated?" | |||
echo -e "--------------------------------------------------------------------------------" | |||
exit 0 | |||
fi | |||
# Write information | |||
echo -e "--------------------------------------------" | |||
echo -e "- Update ${name} ${current} to ${latest}?" | |||
echo -e "--------------------------------------------" | |||
echo -e -n "Continue? [y/N]" | |||
echo "" | |||
read -n 1 c | |||
if [ "${c}" != "y" ]; then | |||
exit 0 | |||
fi | |||
# ===== INSTALLATION PART, CUSTOMIZE FOR EACH SOFTWARE ===== | |||
# Go to folder | |||
cd /usr/src | |||
# Download files | |||
wget https://github.com/horchi/linux-p4d/archive/refs/tags/${latest}.tar.gz || exit 1 | |||
# Untar files | |||
tar -xvf ${latest}.tar.gz || exit 1 | |||
# Enter folder | |||
cd linux-p4d-${latest} || exit 1 | |||
# Start compiling | |||
make clean all NO_RASPBERRY_PI=1 || exit 1 | |||
make install NO_RASPBERRY_PI=1 || exit 1 | |||
# Exit folder | |||
cd .. || exit 1 | |||
# Restart p4d | |||
systemctl restart p4d || exit 1 | |||
# Remove old files | |||
rm ${latest}.tar.gz || exit 1 | |||
rm -r linux-p4d-${latest} || exit 1 | |||
# ===== FINISH INSTALLATION SCRIPT ==== | |||
echo -e "-----------------------------------" | |||
echo -e "- Update to ${latest} completed!" | |||
echo -e "-----------------------------------" | |||
</syntaxhighlight> | |||
== Additional Configuration == | |||
=== Mail Notification === | |||
<p>Install required packages:</p> | |||
<syntaxhighlight lang="Bash"> | |||
apt install msmtp-mta bsd-mailx | |||
</syntaxhighlight> | |||
<p>Create the msmspt configuration file:</p> | |||
<syntaxhighlight lang="Bash"> | |||
nano /etc/msmtprc | |||
</syntaxhighlight> | |||
<p>And paste following entry:</p> | |||
<syntaxhighlight lang="Bash" line> | |||
# Set default values for all following accounts. | |||
defaults | |||
port 587 | |||
tls on | |||
tls_trust_file /etc/ssl/certs/ca-certificates.crt | |||
account flowerhouse | |||
host smtp.world4you.com | |||
from heater@flowerhouse.at | |||
auth on | |||
user heater@flowerhouse.at | |||
password XXXXXXX | |||
# Set a default account | |||
account default : flowerhouse | |||
</syntaxhighlight> | |||
<p>The setup can be tested with:</p> | |||
<syntaxhighlight lang="Bash"> | |||
mail -s "test" address@email.com < /dev/null | |||
</syntaxhighlight> | |||
<p>If the setup is working, go to the webinterface and configure the mail notifications in the setup page.</p> | |||
== Sources == | == Sources == | ||
| Line 134: | Line 280: | ||
* [https://stackoverflow.com/questions/22624653/create-a-virtual-serial-port-connection-over-tcp SoCat] | * [https://stackoverflow.com/questions/22624653/create-a-virtual-serial-port-connection-over-tcp SoCat] | ||
* [https://forum.iobroker.net/topic/24792/gel%C3%B6st-adapter-smartmeter-per-ser2net-und-socat/3 SoCat-Service] | * [https://forum.iobroker.net/topic/24792/gel%C3%B6st-adapter-smartmeter-per-ser2net-und-socat/3 SoCat-Service] | ||
* [https://wiki.debian.org/msmtp Mail-Service] | |||
Latest revision as of 21:52, 24 February 2024
| IP: | 192.168.88.11 |
|---|---|
| MAC: | DA:62:17:83:4E:8F |
| Domain: | heater.flowerhouse.at |
| OS: | Debian Bullseye |
|---|---|
| RAM: | 512MB |
| Cores: | 1 |
| Privileged: | No |
The Heater-LXC is reachable under 192.168.88.11 which is located in the ServerVLAN.
The subdomain is heater.flowerhouse.at which is handled by the ReverseProxy.
The Serial-IP-Konverter is reachable under 192.168.88.12 which is located in the ServerVLAN.
Basic Setup
Change locales to de_DE.UTF-8:
dpkg-reconfigure locales
libwebsockets
Install required packages:
apt install pkg-config cmake git build-essential libssl-dev liblua5.3-dev
Clone libwebsockets repo:
cd /usr/src
git clone https://libwebsockets.org/repo/libwebsockets
Create build directory:
cd libwebsockets
mkdir build
cd build
Run make to build libwebsockets:
cmake ..
make
make install
Create the necessary links and cache:
ldconfig
Delete unnecessary files:
cd /usr/src
rm -r libwebsockets
p4d daemon
Install required packages:
apt install libssl-dev libjansson-dev libxml2-dev libcurl4-openssl-dev libssl-dev libmariadb-dev-compat uuid-dev python3-dev libcap-dev
Download latest version:
wget https://github.com/horchi/linux-p4d/archive/refs/tags/0.8.8.tar.gz
tar -xvf 0.8.8.tar.gz
rm 0.8.8.tar.gz
mv linux-p4d-0.8.8 linux-p4d
cd linux-p4d
Build it:
make clean all NO_RASPBERRY_PI=1
make install NO_RASPBERRY_PI=1
Delete build files:
cd /usr/src
rm -r linux-p4d
Create database at DataBase and add credentials to daemon.conf:
nano /etc/p4d/daemon.conf
Start p4d:
systemctl start p4d
Serial-IP-Converter
Access the Serial-IP-Converter-UI under 192.168.88.12 with user: admin and pw: admin and set the UART-settings:
Install socat:
apt install socat
Connect to Serial-IP-Converter with:
socat pty,link=/dev/ttyUSB0,raw tcp:192.168.88.12:8899&
For it to connect at boot we have create an service:
nano /etc/systemd/system/socat.service
Add to file:
[Unit]
Description=SOCAT Listen Service
After=network.target redis.service
Wants=redis.service
[Service]
Type=simple
StandardOutput=journal
StandardError=journal
SyslogIdentifier=socat-serial-log
User=root
ExecStart=/bin/bash -c '/usr/bin/socat pty,link=/dev/ttyUSB0,raw tcp:192.168.88.12:8899'
Restart=on-failure
[Install]
WantedBy=multi-user.target
Start and check if service is running:
systemctl start socat
systemctl status socat
Enable service to start at boot:
systemctl enable socat
Web Interface Setup
The default port of the web interface is 1111, the default username is p4 and the password is p4.
Fist steps to enable data logging:
- Log in to the web interface
- Click Init Messwerte
- Go to Aufzeichnung and select the values you like to record and store your selection and save
- Go to Setup and click 'Init Service Menü'
Update Script
Bash script to update p4d:
#!/bin/bash
# Variables
name="P4D"
repo="horchi/linux-p4d"
binary_path="/usr/local/bin"
binary_name="p4d"
# ===== VERSION CHECKING, CUSTOMIZE VARIBLES FOR IT =====
# Get current version
current=$($binary_path/$binary_name -v)
# Retain everything after last space
current=${current//[!0-9.]/}
# Get latest release tag
latest=$(curl -sL https://api.github.com/repos/$repo/tags | jq -r '.[0].name')
# Check if new version available
if (("$(expr ${current//[!0-9]/} + 0)" == "$(expr ${latest//[!0-9]/} + 0)")); then
echo -e "--------------------------------------"
echo -e "- Installed ${current} is up to date"
echo -e "--------------------------------------"
exit 0
fi
# Check if repo is deprecated
if (("$(expr ${current//[!0-9]/} + 0)" > "$(expr ${latest//[!0-9]/} + 0)")); then
echo -e "--------------------------------------------------------------------------------"
echo -e "- Installed ${current} is newer than available version, repository deprecated?"
echo -e "--------------------------------------------------------------------------------"
exit 0
fi
# Write information
echo -e "--------------------------------------------"
echo -e "- Update ${name} ${current} to ${latest}?"
echo -e "--------------------------------------------"
echo -e -n "Continue? [y/N]"
echo ""
read -n 1 c
if [ "${c}" != "y" ]; then
exit 0
fi
# ===== INSTALLATION PART, CUSTOMIZE FOR EACH SOFTWARE =====
# Go to folder
cd /usr/src
# Download files
wget https://github.com/horchi/linux-p4d/archive/refs/tags/${latest}.tar.gz || exit 1
# Untar files
tar -xvf ${latest}.tar.gz || exit 1
# Enter folder
cd linux-p4d-${latest} || exit 1
# Start compiling
make clean all NO_RASPBERRY_PI=1 || exit 1
make install NO_RASPBERRY_PI=1 || exit 1
# Exit folder
cd .. || exit 1
# Restart p4d
systemctl restart p4d || exit 1
# Remove old files
rm ${latest}.tar.gz || exit 1
rm -r linux-p4d-${latest} || exit 1
# ===== FINISH INSTALLATION SCRIPT ====
echo -e "-----------------------------------"
echo -e "- Update to ${latest} completed!"
echo -e "-----------------------------------"
Additional Configuration
Mail Notification
Install required packages:
apt install msmtp-mta bsd-mailx
Create the msmspt configuration file:
nano /etc/msmtprc
And paste following entry:
# Set default values for all following accounts.
defaults
port 587
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
account flowerhouse
host smtp.world4you.com
from heater@flowerhouse.at
auth on
user heater@flowerhouse.at
password XXXXXXX
# Set a default account
account default : flowerhouse
The setup can be tested with:
mail -s "test" address@email.com < /dev/null
If the setup is working, go to the webinterface and configure the mail notifications in the setup page.