Files
PlantCtrl/website/content/Software/1737993539359-MQTT/index.md
Empire Phoenix 776db785c4 Update hardware and firmware documentation for new modules and features
- Removed outdated TODOs and legacy references in hardware documentation.
- Added details on the new CH32V203-based Sensor Module for CAN bus soil moisture sensors.
- Documented updates to the Battery Management System (CH32V203-based) replacing the older bq34z100 design.
- Refined sensor, pump, and power module descriptions with updated specifications.
- Expanded firmware documentation to include Rust-based ESP32-C6 platform details, new OTA procedure, and MQTT telemetry topics.
- Simplified toolchain setup and compilation process with updated scripts and instructions.
2026-05-05 00:50:18 +02:00

4.5 KiB

title, date, draft, description, tags
title date draft description tags
MQTT 2025-01-27 false a description
mqtt
esp

MQTT

The PlantCtrl firmware publishes comprehensive status and telemetry data via MQTT when configured. The system uses the mcutie crate for Home Assistant integration and standard MQTT topics.

Topics

Topic Example Description
firmware/address 192.168.1.2 IP address in station mode
firmware/state {...} Debug information about the current firmware and OTA slots
firmware/last_online 2025-01-22T08:56:46.664+01:00 Last time the board was online
state online Current state of the controller
mppt {"current_ma":1200,"voltage_ma":18500} MPPT charging metrics (current and voltage from solar panel)
battery {"Info":{"voltage_milli_volt":12860,"state_of_charge":95,...}} Battery health and charge data from the BMS
water {"enough_water":true,"warn_level":false,"left_ml":1337,...} Water tank status (level, temperature, frozen detection)
plant{1-8} {"sensor_a":...,"sensor_b":...,"mode":"TargetMoisture",...} Detailed status for each plant slot including moisture sensors
pump{1-8} {"enabled":true,"median_current_ma":500,...} Metrics for each pump output
light {"enabled":true,"active":true,...} Night light status
deepsleep night 1h Reason and duration of deep sleep

Note: The batteries average_current_milli_ampere field uses a placeholder value (1337) and should be updated with actual current sensor readings when available.

Data Structures

Firmware State (firmware/state)

Contains a debug dump of the VersionInfo struct:

  • git_hash: Branch and commit hash
  • build_time: Compilation timestamp
  • current: Current running partition
  • slot0_state: State of OTA slot 0
  • slot1_state: State of OTA slot 1

MPPT (mppt)

  • current_ma: Solar charging current in mA
  • voltage_ma: Solar panel voltage in mV

Battery (battery)

Can be "Unknown" or an Info object. The battery data comes from a custom BMS (Battery Management System) board that uses the CH32V203 microcontroller with I2C communication.

  • voltage_milli_volt: Battery voltage in millivolts
  • average_current_milli_ampere: Current draw/charge in milliamperes (placeholder: 1337)
  • design_milli_ampere_hour: Battery design capacity in milliampere-hours
  • remaining_milli_ampere_hour: Remaining capacity in milliampere-hours
  • state_of_charge: Charge percentage (0-100)
  • state_of_health: Health percentage (0-100) based onLifetime capacity vs design capacity
  • temperature: Battery temperature in degrees Celsius

Water (water)

  • enough_water: Boolean, true if level is above empty threshold
  • warn_level: Boolean, true if level is below warning threshold
  • left_ml: Estimated remaining water in ml
  • percent: Estimated fill level in percent
  • raw: Raw sensor voltage in mV
  • sensor_error: Details if the level sensor fails
  • water_frozen: Boolean, true if temperature is below freezing
  • water_temp: Water temperature in degrees Celsius
  • temp_sensor_error: Details if the temperature sensor fails

Plant (plant{1-8})

  • sensor_a / sensor_b: Moisture sensor status
    • Disabled
    • {"MoistureValue":{"raw_hz":5000,"moisture_percent":65}}
    • {"SensorError":{"ShortCircuit":{"hz":...,"max":...}}}
  • mode: Watering mode (Off, TargetMoisture, MinMoisture, TimerOnly)
  • do_water: Boolean, true if watering is currently required
  • dry: Boolean, true if moisture is below target
  • cooldown: Boolean, true if the pump is in cooldown period
  • out_of_work_hour: Boolean, true if currently outside allowed watering hours
  • consecutive_pump_count: Number of pump cycles without reaching target
  • pump_error: Details if the pump is failing
  • last_pump: Timestamp of last activity
  • next_pump: Estimated timestamp for next allowed activity

Pump (pump{1-8})

  • enabled: Boolean, pump was active
  • pump_ineffective: Boolean, no flow detected during pumping
  • median_current_ma: Median pump current
  • max_current_ma: Peak pump current
  • min_current_ma: Minimum pump current

Light (light)

  • enabled: Boolean, is enabled in config
  • active: Boolean, led is currently on
  • out_of_work_hour: Boolean, led should not be on at this time of day
  • battery_low: Boolean, battery is low so led usage is restricted
  • is_day: Boolean, the sun is up (determined by solar panel voltage)