Files
zh_nrf24_gateway/README.md
T
2026-11-01 09:07:02 +03:00

3.1 KiB
Executable File

#include "zh_nrf24_gateway.h"

#define GATEWAY_CHANNEL 120 #define GATEWAY_ADDRESS 0xDDEEFF

void zh_nrf24_gateway_event_handler(void *arg, esp_event_base_t event_base, int32_t event_id, void *event_data);

void app_main(void) { esp_err_t err = nvs_flash_init(); if (err == ESP_ERR_NVS_NO_FREE_PAGES || err == ESP_ERR_NVS_NEW_VERSION_FOUND) { ESP_ERROR_CHECK(nvs_flash_erase()); ESP_ERROR_CHECK(nvs_flash_init()); } esp_event_loop_create_default(); esp_event_handler_instance_register(ZH_NRF24_GATEWAY_EVENTS, ESP_EVENT_ANY_ID, &zh_nrf24_gateway_event_handler, NULL, NULL); zh_nrf_gateway_config_t config = { .spi_host = SPI2_HOST, .pin_sck = 18, .pin_miso = 19, .pin_mosi = 23, .pin_csn = 17, .pin_ce = 16, .pin_irq = 4, .channel = GATEWAY_CHANNEL, .address = GATEWAY_ADDRESS, .spi_clock_hz = 0, }; zh_nrf_gateway_init(&config); zh_nrf_gateway_start(); }

void zh_nrf24_gateway_event_handler(void *arg, esp_event_base_t event_base, int32_t event_id, void *event_data) { switch (event_id) { case ZH_NRF_GATEWAY_EVENT_SENSOR_DATA: zh_nrf24_sensor_transmitted_data_t *sensor_data = (zh_nrf24_sensor_transmitted_data_t *)event_data; printf("Data received - id=%d type=%s battery=%.2fV ", sensor_data->id, zh_get_nrf24_sensor_type_name((zh_nrf24_sensor_type_t)sensor_data->type), sensor_data->battery / 100.0); switch (sensor_data->type) { case ZH_NRF24_SENSOR_TOUCH_SWITCH: printf("button pressed\n"); break; case ZH_NRF24_SENSOR_WATER_LEAKAGE: printf("status=%s\n", sensor_data->value_1 == ZH_NRF24_SENSOR_STATUS_ALARM ? "ALARM" : "DRY"); break; case ZH_NRF24_SENSOR_OPEN_CLOSE: printf("status=%s\n", sensor_data->value_1 == ZH_NRF24_SENSOR_STATUS_OPEN ? "OPEN" : "CLOSE"); break; case ZH_NRF24_SENSOR_PLANT_HUMIDITY: printf("soil moisture=%.1f%%\n", sensor_data->value_1 / 10.0); break; case ZH_NRF24_SENSOR_BMP280: printf("temperature=%.1fC, atmospheric pressure=%.1fmmHg\n", sensor_data->value_1 / 10.0, sensor_data->value_2 / 10.0); break; case ZH_NRF24_SENSOR_BME280: printf("humidity=%.1f%%, temperature=%.1fC, atmospheric pressure=%.1fmmHg\n", sensor_data->value_1 / 10.0, sensor_data->value_2 / 10.0, sensor_data->value_3 / 10.0); break; default: break; } break; case ZH_NRF_GATEWAY_EVENT_SENSOR_PAIRED: zh_nrf_gateway_binding_t *pairing_data = (zh_nrf_gateway_binding_t *)event_data; printf("Sensor paired - id=%d type=%s\n", pairing_data->id, zh_get_nrf24_sensor_type_name((zh_nrf24_sensor_type_t)pairing_data->type)); break; case ZH_NRF_GATEWAY_EVENT_SENSOR_REGISTERED: zh_nrf_gateway_binding_t *registering_data = (zh_nrf_gateway_binding_t *)event_data; printf("Sensor registered - id=%d type=%s\n", registering_data->id, zh_get_nrf24_sensor_type_name((zh_nrf24_sensor_type_t)registering_data->type)); break; default: break; } }