How mtrossbach/noah-mqtt works
noah-mqtt polls Growatt NOAH batteries, publishes device status, battery details, and parameters over MQTT, and accepts MQTT parameter commands when App API control is enabled. The main entry point selects App, Web, or combined mode; Web mode retrieves data, while parameter changes require the App API. Device discovery also configures Home Assistant through MQTT auto-discovery. The graph follows the sampled entry point and service code; unsampled configuration and API internals are represented only at their supported paths.
Main entry points: endpoint_mqtt.go MQTT endpoint · main.go Application entry · growatt_web/service.go Web API service · growatt_app/service.go App API service
Components 15
Application setup
- Application entry
cmd/noah-mqtt/main.go - Runtime configuration
internal/config
Growatt integration
- App API service
internal/growatt_app/service.go - App polling
internal/growatt_app/service_polling.go - App API client
internal/growatt_app/client.go - Web API service
internal/growatt_web/service.go - Web API client
internal/growatt_web/client.go
MQTT interface
- MQTT endpoint
internal/endpoint_mqtt/endpoint_mqtt.go - Payload models
pkg/models/payload.go
Home Assistant discovery
- Discovery service
internal/homeassistant/service.go
Other components
- Operator
- Growatt App API
- Growatt Web API
- MQTT broker
- Home Assistant
Connections 26
- Operator → Application entry: starts
- Application entry → Runtime configuration: loads settings
- Application entry → MQTT endpoint: creates endpoint
- Application entry → App API service: selects App mode
- Application entry → Web API service: selects Web mode
- Application entry → Web API service: selects combined mode
- Application entry → App API service: enables parameter control
- App API service → App API client: fetches and sets
- Web API service → Web API client: fetches data
- App API client → Growatt App API: requests API data
- Web API client → Growatt Web API: requests API data
- App API service → App polling: starts polling
- App polling → App API client: fetches status and details
- Web API service → Web API client: enumerates and polls devices
- App polling → Payload models: builds payloads
- Web API service → Payload models: builds payloads
- App API service → MQTT endpoint: sets devices
- Web API service → MQTT endpoint: sets devices
- App polling → MQTT endpoint: publishes polled data
- Web API service → MQTT endpoint: publishes polled data
- MQTT endpoint → MQTT broker: publishes state
- MQTT broker → MQTT endpoint: delivers parameter commands
- MQTT endpoint → App API service: applies parameter changes
- MQTT endpoint → Discovery service: provides device details
- Discovery service → MQTT broker: publishes discovery
- Home Assistant → MQTT broker: consumes discovery