Heater: Difference between revisions

From FlowerHouseWiki
 
(36 intermediate revisions by the same user not shown)
Line 5: Line 5:
|MAC = DA:62:17:83:4E:8F
|MAC = DA:62:17:83:4E:8F
|Privileged = No
|Privileged = No
|OS = Debian Buster
|OS = Debian Bullseye
|RAM = 512MB
|RAM = 512MB
|Cores = 1
|Cores = 1
Line 23: Line 23:
<p>Install required packages:</p>
<p>Install required packages:</p>
<syntaxhighlight lang="console">
<syntaxhighlight lang="console">
apt install pkg-config cmake git
apt install pkg-config cmake git build-essential libssl-dev liblua5.3-dev
</syntaxhighlight>
</syntaxhighlight>


Line 36: Line 36:
cd libwebsockets
cd libwebsockets
mkdir build
mkdir build
cd build
</syntaxhighlight>
</syntaxhighlight>


Line 59: Line 60:
<p>Install required packages:</p>
<p>Install required packages:</p>
<syntaxhighlight lang="console">
<syntaxhighlight lang="console">
apt install build-essential libssl-dev libjansson-dev libxml2-dev libcurl4-openssl-dev libssl-dev libmariadbclient-dev libmariadb-dev-compat uuid-dev
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>Get p4d repo and build it:</p>
<p>Download latest version:</p>
<syntaxhighlight lang="console" line>
<syntaxhighlight lang="console" line>
cd /usr/src/
wget https://github.com/horchi/linux-p4d/archive/refs/tags/0.8.8.tar.gz
git clone https://github.com/horchi/linux-p4d/
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
make clean all
make install
</syntaxhighlight>
</syntaxhighlight>


<p>Create link for stylesheet:</p>
<p>Build it:</p>
<syntaxhighlight lang="console">
<syntaxhighlight lang="console" line>
ln -s /var/lib/p4/stylesheet-dark.css /var/lib/p4/stylesheet.css
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 ''p4d.conf'':</p>
<p>Create database at [[DataBase]] and add credentials to ''daemon.conf'':</p>
<syntaxhighlight lang="console">
<syntaxhighlight lang="console">
nano /etc/p4d/p4d.conf
nano /etc/p4d/daemon.conf
</syntaxhighlight>
</syntaxhighlight>


Line 90: Line 98:


[[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/HeaterCOM,raw tcp:192.168.88.12:8899&
socat pty,link=/dev/ttyUSB0,raw tcp:192.168.88.12:8899&
</syntaxhighlight>
</syntaxhighlight>


Line 103: 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 110: 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/HeaterCOM,raw tcp:192.168.88.12:8899$
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 130: Line 147:


=== Web Interface Setup ===
=== 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-3200</syntaxhighlight>.</p>
<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>
<p>Fist steps to enable data logging:</p>
# Log in to the web interface
# Log in to the web interface
# Go to ''Setup'' and add to ''TTY Device'': <syntaxhighlight lang="Bash" inline>/dev/HeaterCOM</syntaxhighlight>
# Click ''Init Messwerte''
# Save and then click ''Init Messwerte''
# Go to ''Aufzeichnung'' and select the values you like to record and store your selection and save
# 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ü'
# 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 ==
== Additional Configuration ==

Latest revision as of 21:52, 24 February 2024

Froeling.jpg

Network


IP: 192.168.88.11
MAC: DA:62:17:83:4E:8F
Domain: heater.flowerhouse.at

System


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:

Serial settings.png

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:

  1. Log in to the web interface
  2. Click Init Messwerte
  3. Go to Aufzeichnung and select the values you like to record and store your selection and save
  4. 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.

Sources