Remote Homelab cabinet fabrication is done. Moving on to temperature control testing where the system is run with minimal equipment; more equipment added over time, maybe a couple of weeks. Hope to have entire equipment rack deployed and running real-soon-now. First Remote Homelab service is rsync support for off-site backup.
Two temperature monitoring options are available:
- RPi5 Raspberry OS connected to two BME280 modules via I2C;
- Tasmota WT32-ETH01 (aka ESP32-S1) connected to two BME280 modules via I2C.
There are six temperature probes in total. Four within the insulated case, one in the remote building, and one external to the building. The only one that counts is the STC-1000 All-Purpose Digital Temperature Controller that runs the show. It switches on the heating and cooling. The others are a sanity check, and for remote monitoring, to help analysis should something go wrong.
Will first try the RPi5 loadout. It can interface to BME 280 temperature probes, and at some point deliver rsync services to the main homelab. With a USB3 2.5G NIC this is a viable replacement for the ITX system, for now, and may be how things shake out until the next project is ready (AI requirements being defined pending more research).
WT32-ETH01 SBC running Tasmota & RPi5 connected to two BME280 sensors
As Pictured (USB Serial to Rpi5 debug port wiring harness). The colors non-standard vendor specific.
USB Serial RX -> RPi5 TX Red
USB Serial TX -> RPi5 RX Blue
USB Serial GND -> RPi5 GND Black
RPi5 Bash Shell
ls /dev/i2c*
/dev/i2c-1 /dev/i2c-13 /dev/i2c-14
RPi5 I2C-1 to BME280 via 4 Pin USB-C connector
SD0 -> GND (White) or N/C Address 0x77
VCC (White) Address 0x76
CSB -> NC
SDA -> USB D- (Blue) -> RPi5 Pin 3, GPIO 2, I2C1 SDA
SCL -> USB D+ (Yellow) -> RPi5 Pin 5, GPIO 3, I2C1 SCL
GND -> USB GND (Black) -> RPi5 Pin 39, Ground
VCC -> USB VCC (Red) -> RPi5 Pin 1, 3.3V
i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- 76 77
cat test_bme280.py
#!/usr/bin/python
import time
import smbus2
import bme280
address = 0x76
bus = smbus2.SMBus(1)
calibration_params = bme280.load_calibration_params(bus, address)
data = bme280.sample(bus, address, calibration_params)
temperature_celsius = data.temperature
print("Temperature: {:.2f} °C".format(temperature_celsius))
address = 0x77
bus = smbus2.SMBus(1)
calibration_params = bme280.load_calibration_params(bus, address)
data = bme280.sample(bus, address, calibration_params)
temperature_celsius = data.temperature
print("Temperature: {:.2f} °C".format(temperature_celsius))
python test_bme280.py
Temperature: 25.36 °C
Temperature: 25.60 °C