How supla/supla-device works
supla-device is an SDK for implementing SUPLA-compatible smart-home devices, not a complete firmware or server. The main workflow is that a firmware developer configures device logic and channels, runs the device lifecycle, and connects it to SUPLA Server through the protocol layer. The framework also supports sensor/control elements, scheduled behavior, persistent configuration and state, and multiple platform ports. Relationships are limited to README statements and visible SOURCE INDEX references; unsampled implementation details are not inferred.
Main entry points: SuplaDevice.cpp Device API · channel_element.cpp Elements · storage.cpp Storage framework · srpc.c SRPC
Components 21
Device framework
- Device API
src/SuplaDevice.cpp - Elements
src/supla/channel_element.cpp - Channels
src/supla/channels/channel.cpp - Storage framework
src/supla/storage/storage.cpp - State storage
src/supla/storage/state_storage_interface.cpp - Config storage
src/supla/storage/config.h
Device features
- Device services
src/supla/device/register_device.cpp - Controls
src/supla/control/relay.cpp - Sensor handlers
src/supla/sensor/multi_ds_handler_base.cpp - Weekly schedules
src/supla/control/weekly_schedule_storage.cpp - Modbus integration
src/supla/modbus/modbus_client_handler.cpp - Schedule components
src/supla/control/weekly_schedule_component.h
Protocol
- Protocol definitions
src/supla-common/proto.h - SRPC
src/supla-common/srpc.c - MQTT handlers
src/supla/protocol/mqtt_handler_registry.cpp
Platform ports
- Linux port
extras/porting/linux/linux_client.cpp - Linux file storage
extras/porting/linux/linux_file_storage.cpp - ESP-IDF port
extras/porting/esp-idf/esp_idf_client.cpp - SPIFFS storage
extras/porting/esp-idf/spiffs_storage.cpp
Other components
- Firmware developer
- SUPLA Server
Connections 18
- Firmware developer → Device API: uses
- Device API → Elements: runs lifecycle
- Elements → Channels: may expose
- Device API → SUPLA Server: connects device
- Device services → Device API: supports device
- Controls → Elements: implements logic
- Sensor handlers → Elements: implements logic
- Weekly schedules → Schedule components: uses
- Modbus integration → Elements: integrates device
- Storage framework → State storage: creates state store
src/supla/storage/storage.cpp - Storage framework → Config storage: uses config
src/supla/storage/storage.cpp - SRPC → Protocol definitions: uses definitions
src/supla-common/srpc.c - Device API → SRPC: uses protocol
- MQTT handlers → SUPLA Server: supports MQTT
- Linux port → SUPLA Server: connects device
- ESP-IDF port → SUPLA Server: connects device
- Linux file storage → Storage framework: implements backend
extras/porting/linux/linux_file_storage.cpp - SPIFFS storage → Storage framework: implements backend
extras/porting/esp-idf/spiffs_storage.cpp