Проекты GitHub SourceForge |
BtMesh /
ThermostatK5HТермостат для теплого пола K5HВ качестве основы был взят термостат с Али-Экспресс неизвестного производителя K5H16A-wifi. Конструктивно, термостат построен на собственном контроллере, который выполняет все функуии термостата, а для удаленного управления используется стантартный Wi-Fi модуть Tuya. Соответственно, модуль Tuya убирается, а на его место, через специальный переходник, ставится nRF52. Протокол TUYAИсследование показало следующие параметры, которые контролирует протокол Tuya:
Проблемы
Список реализованных моделейReceived composition: Feature support: relay: yes proxy: yes friend: yes lpn: no Element 0: location: 0000 SIG defined models: Model ID 0000 "Configuration Server" Model ID 0002 "Health Server" Model ID 1000 "Generic OnOff Server" Model ID 1002 "Generic Level Server" Model ID 1004 "Generic Default Transition Time Server" Model ID 1203 "Scene Server" Model ID 1204 "Scene Setup Server" Model ID 1100 "Sensor Server" Model ID 1101 "Sensor Setup Server" Model ID 1202 "Time Client" Vendor defined models: Model ID 0005 0000 Model ID: 0005 0000 - это и есть кастомная модель термостата. Кастомная BT модель для термостата./* Thermostat model message opcodes. */ typedef enum { THERMOSTAT_OPCODE_GET = 0x00, THERMOSTAT_OPCODE_SET, THERMOSTAT_OPCODE_STATUS, THERMOSTAT_OPCODE_RANGE_GET, THERMOSTAT_OPCODE_RANGE_STATUS, } thermostat_opcode_t; /* status values for thermostat_status_msg_pkt_t */ typedef enum { THERMOSTAT_STATUS_GOOD = 0, THERMOSTAT_STATUS_INVALID_MODE, THERMOSTAT_STATUS_INVALID_TEMPERATURE } thermostat_status_t; /* mode values for thermostat_status_msg_pkt_t */ typedef enum { THERMOSTAT_MODE_MANUAL = 0, THERMOSTAT_MODE_AUTO } thermostat_mode_t; /** Message format for Thermostat Set. */ typedef struct __attribute((packed)) { uint8_t mode : 2; uint8_t padding : 6; uint16_t temperature; } thermostat_set_msg_pkt_t; /** Message format for Thermostat Status. */ typedef struct __attribute((packed)) { uint8_t status_code; uint8_t onoff_status : 1; uint8_t mode : 2; uint8_t heater_status : 1; uint8_t padding : 4; uint16_t target_temperature; uint16_t present_temperature; } thermostat_status_msg_pkt_t; /** Message format for Thermostat Range Status. */ typedef struct __attribute((packed)) { uint16_t min_temperature; uint16_t max_temperature; } thermostat_range_status_msg_pkt_t; Ссылки |