A measurement node connecting the SHT30 temperature/humidity sensor to the Raspberry Pi (Pi-B) over I2C (bus 1, address 0x44).
This node only reports readings to the server every 5 minutes; high/low temperature and high/low humidity threshold decisions and SMS dispatch are handled by the server.
Raspberry Pi 4 Model BBCM2711Raspberry Pi OS Bookworm 64-bitSensirion SHT30 (Hanjin Data P4422-3)I2C bus 1addr 0x44sensor_id=2Report interval 5 min
240-Pin Header Pinmap Diagram Used pins highlighted · others in gray
Pull-up resistors R1·R2 (4.7kΩ ×2) connect to the 3.3V rail. Omit if built into the SHT30 module.
The half-circle (hop) on the SDA line only marks a wire crossing — it is not an electrical connection.
5Electrical Design · Cautions
Critical Warning — On the Pi it MUST be 3.3V
Connect the SHT30's VCC to physical pin 1 (3.3V).
Do NOT connect 5V (pins 2·4) on the Pi — the SHT30 module itself tolerates 2.4–5.5V, but
powering it with 5V pulls the SDA/SCL lines up to 5V as well, which damages the 3.3V-only Pi GPIO.
Double-check the pin numbers before wiring.
I2C pull-ups: Connect a 4.7kΩ pull-up resistor on each of SDA and SCL to 3.3V. Can be omitted if built into the sensor module.
Address setting: ADDR → GND gives 0x44 (default), ADDR → VDD gives 0x45. Must match the I2C_ADDR value in config.py.
I2C bus: Uses bus 1. I2C must be enabled after boot (raspi-config or dtparam=i2c_arm=on).
Wiring length: Short cables are recommended for I2C. Long cables may cause communication errors or require adjusting the pull-up values.
Role split: This node only reports readings to the server every 5 minutes. High/low temperature and high/low humidity threshold decisions and SMS dispatch are done by the server.
Config file:raspberry_pi4_sht30/config.py (I2C_BUS=1, I2C_ADDR=0x44). Per-device values are overridden in config_local.py.
# Check I2C connection (OK if 0x44 appears in the grid)
$ i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
40: -- -- -- -- 44 -- -- -- -- -- -- -- -- -- -- --
6Installation Checklist
Do wiring work with power disconnected (no hot-plugging)
Connect VCC → physical pin 1 (3.3V) — re-verify it is NOT a 5V pin (2·4)
Connect GND → physical pin 6 (or 9·14·20·25·30·34·39 for alt GND)
Connect SDA → pin 3 (GPIO2), SCL → pin 5 (GPIO3)
Connect 4.7kΩ ×2 pull-up resistors from SDA·SCL → 3.3V (omit if built into module)
Verify ADDR → GND (address 0x44 selected)
Re-check all wiring, then power up the Pi
Verify I2C is enabled (raspi-config / dtparam=i2c_arm=on)
Run i2cdetect -y 1 → confirm 0x44 is shown
Verify I2C_BUS=1, I2C_ADDR=0x44 in config.py / config_local.py
Check measurement log and server reception (5-min reporting OK)