inverter_control/
├── main.py # Entry point + InverterController class
├── config.py # Configuration constants and settings
├── victron.py # D-Bus communication with Victron Venus OS
├── homeassistant.py # Home Assistant REST API integration
├── mqtt_bridge.py # MQTT bridge for remote dashboard
├── ui_config.py # UI configuration for dashboard
├── keepalive.py # Keepalive/watchdog functionality
├── secrets.py # API keys and sensitive data (gitignored)
└── version # Version file for SetupHelper
The main controller class (~800 lines) handles:
__init__- Setup D-Bus, Home Assistant, UI config
calculate_setpoint- Core algorithm for grid-zero feed-in- Handles modes: ONLY_CHARGING, NO_FEED, HOUSE_SUPPORT, etc.
- EMA smoothing, split-phase compensation
format_console_output- Terminal display formattingupdate_terminal_title- Screen/tmux title updates
update_state- Collect data for MQTT/dashboardget_state- Return current state dict
run_cycle- Main control cycle- Watchdog, error handling
main- Argument parsing, MQTT bridge setup- Signal handlers, exception hooks
D-Bus interface to Victron Venus OS:
- System data (grid, battery, solar)
- ESS mode control
- MPPT charger data
- Battery chain monitoring
Home Assistant integration:
- REST API communication
- Boolean toggles (input_boolean.*)
- Vue energy sensors
- Switch control
All configuration constants:
- Power limits, deadbands
- Feature flags (ENABLE_EV, ENABLE_WATER, etc.)
- HA entity mappings
- UI settings
MQTT communication for remote dashboard:
- State publishing
- Command receiving
- WebSocket bridge