33 ESP_LOGCONFIG(TAG,
"Aranet");
34 LOG_SENSOR(
" ",
"Carbon Dioxide", this->co2_sensor_);
35 LOG_SENSOR(
" ",
"Temperature", this->temperature_sensor_);
36 LOG_SENSOR(
" ",
"Humidity", this->humidity_sensor_);
37 LOG_SENSOR(
" ",
"Pressure", this->pressure_sensor_);
38 LOG_SENSOR(
" ",
"Battery Level", this->battery_level_sensor_);
39 LOG_SENSOR(
" ",
"Measurement Interval", this->measurement_interval_sensor_);
40 LOG_SENSOR(
" ",
"Measurement Age", this->measurement_age_sensor_);
41 LOG_SENSOR(
" ",
"Signal Strength", this->signal_strength_sensor_);
42 LOG_SENSOR(
" ",
"Radon Concentration", this->radon_sensor_);
43 LOG_SENSOR(
" ",
"Radiation Dose Rate", this->radiation_rate_sensor_);
44 LOG_SENSOR(
" ",
"Radiation Total Dose", this->radiation_total_sensor_);
45 LOG_SENSOR(
" ",
"Radiation Dose Duration", this->radiation_duration_sensor_);
54 if (manufacturer_data.uuid != manufacturer_uuid)
57 const auto &data = manufacturer_data.data;
58 if (data.size() != ARANET4_DATA_LENGTH && data.size() != OTHER_ARANET_DATA_LENGTH) {
60 ESP_LOGW(TAG,
"Unexpected manufacturer data length: %u",
static_cast<unsigned>(data.size()));
67 const bool is_aranet4 = data.size() == ARANET4_DATA_LENGTH;
68 if ((data[is_aranet4 ? 0 : 1] & 0x20) == 0) {
70 ESP_LOGW(TAG,
"Smart Home integration is disabled on the Aranet device");
76 if (!is_aranet4 && (data[0] == 0 || data[0] > 3)) {
78 ESP_LOGW(TAG,
"Unsupported Aranet device type: %u", data[0]);
83 const auto device_type =
87 const uint8_t *
trailer = &data[is_aranet4 ? 15 : 17];
90 const uint8_t measurement_counter =
trailer[6];
92 publish_if_set(this->measurement_age_sensor_, measurement_age);
93 publish_if_set(this->signal_strength_sensor_, device.
get_rssi());
102 switch (device_type) {
105 publish_if_set(this->co2_sensor_, co2);
106 publish_if_set(this->temperature_sensor_,
temperature);
107 publish_if_set(this->pressure_sensor_,
pressure);
108 publish_if_set(this->humidity_sensor_, data[14]);
109 ESP_LOGD(TAG,
"Aranet4 CO2: %u ppm, temperature: %.1f C, humidity: %u%%, pressure: %.1f hPa", co2,
temperature,
114 const float humidity =
encode_uint16(data[15], data[14]) / 10.0f;
115 publish_if_set(this->temperature_sensor_,
temperature);
116 publish_if_set(this->humidity_sensor_, humidity);
117 ESP_LOGD(TAG,
"Aranet2 temperature: %.1f C, humidity: %.1f%%",
temperature, humidity);
123 const uint16_t radiation_rate =
encode_uint16(data[15], data[14]);
124 publish_if_set(this->radiation_rate_sensor_, radiation_rate / 1000.0f);
125 publish_if_set(this->radiation_total_sensor_, radiation_total);
126 publish_if_set(this->radiation_duration_sensor_, radiation_duration);
127 ESP_LOGD(TAG,
"Aranet Radiation dose rate: %u nSv/h, total dose: %" PRIu32
" nSv", radiation_rate,
133 const float humidity =
encode_uint16(data[15], data[14]) / 10.0f;
134 publish_if_set(this->radon_sensor_, radon);
137 publish_if_set(this->temperature_sensor_,
temperature);
138 publish_if_set(this->pressure_sensor_,
pressure);
140 publish_if_set(this->humidity_sensor_, humidity);
141 ESP_LOGD(TAG,
"Aranet Radon: %u Bq/m3, temperature: %.1f C, humidity: %.1f%%, pressure: %.1f hPa", radon,
148 publish_if_set(this->battery_level_sensor_,
trailer[0]);
149 publish_if_set(this->measurement_interval_sensor_, measurement_interval);