diff --git a/src/HaHelper.h b/src/HaHelper.h index 90319bb..eecaeec 100644 --- a/src/HaHelper.h +++ b/src/HaHelper.h @@ -29,17 +29,27 @@ public: bool publishSelectIndoorSensorType(bool enabledByDefault = true) { StaticJsonDocument<1536> doc; doc[FPSTR(HA_COMMAND_TOPIC)] = devicePrefix + F("/settings/set"); +#if USE_BLE doc[FPSTR(HA_COMMAND_TEMPLATE)] = F("{\"sensors\": {\"indoor\": {\"type\": {% if value == 'Manual' %}1{% elif value == 'External' %}2{% elif value == 'Bluetooth' %}3{% endif %}}}}"); +#else + doc[FPSTR(HA_COMMAND_TEMPLATE)] = F("{\"sensors\": {\"indoor\": {\"type\": {% if value == 'Manual' %}1{% elif value == 'External' %}2{% endif %}}}}"); +#endif doc[FPSTR(HA_ENABLED_BY_DEFAULT)] = enabledByDefault; doc[FPSTR(HA_UNIQUE_ID)] = devicePrefix + F("_indoor_sensor_type"); doc[FPSTR(HA_OBJECT_ID)] = devicePrefix + F("_indoor_sensor_type"); doc[FPSTR(HA_ENTITY_CATEGORY)] = F("config"); doc[FPSTR(HA_NAME)] = F("Indoor temperature source"); doc[FPSTR(HA_STATE_TOPIC)] = devicePrefix + F("/settings"); +#if USE_BLE doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{% if value_json.sensors.indoor.type == 1 %}Manual{% elif value_json.sensors.indoor.type == 2 %}External{% elif value_json.sensors.indoor.type == 3 %}Bluetooth{% endif %}"); +#else + doc[FPSTR(HA_VALUE_TEMPLATE)] = F("{% if value_json.sensors.indoor.type == 1 %}Manual{% elif value_json.sensors.indoor.type == 2 %}External{% endif %}"); +#endif doc[FPSTR(HA_OPTIONS)][0] = F("Manual"); doc[FPSTR(HA_OPTIONS)][1] = F("External"); +#if USE_BLE doc[FPSTR(HA_OPTIONS)][2] = F("Bluetooth"); +#endif return publish(getTopic("select", "indoor_sensor_type").c_str(), doc); } diff --git a/src/SensorsTask.h b/src/SensorsTask.h index 8634f58..05fe9c0 100644 --- a/src/SensorsTask.h +++ b/src/SensorsTask.h @@ -64,8 +64,9 @@ protected: if (settings.sensors.indoor.type == 2 && settings.sensors.indoor.pin) { indoorTemperatureSensor(); } + #if USE_BLE - else if (settings.sensors.indoor.type == 3 && strlen(settings.sensors.indoor.bleAddresss)) { + if (settings.sensors.indoor.type == 3 && strlen(settings.sensors.indoor.bleAddresss)) { bluetoothSensor(); } #endif @@ -93,10 +94,10 @@ protected: Log.sinfoln(FPSTR(S_SENSORS_BLE), "Failed to find environmental service"); } - } - else { + } else { Log.swarningln(FPSTR(S_SENSORS_BLE), "Error connecting to BLE device at %s", bleServerAddress.toString().c_str()); } + initBleSensor = true; } @@ -106,6 +107,7 @@ protected: uint8_t batteryLevel = *reinterpret_cast(pBleServiceBattery->getValue(bleUuidCharacteristicBatteryLevel).data()); Log.straceln(FPSTR(S_SENSORS_BLE), "Battery: %d", batteryLevel); } + if (pBleServiceEnvironment) { float temperature = *reinterpret_cast(pBleServiceEnvironment->getValue(bleUuidCharacteristicTemperature).data()) / 100.0f; Log.straceln(FPSTR(S_SENSORS_BLE), "Temperature: %.2f", temperature); @@ -114,9 +116,7 @@ protected: vars.temperatures.indoor = temperature + settings.sensors.indoor.offset; } - } - else - { + } else { Log.straceln(FPSTR(S_SENSORS_BLE), "Not connected"); } } diff --git a/src/WifiManagerTask.h b/src/WifiManagerTask.h index e325240..253efb1 100644 --- a/src/WifiManagerTask.h +++ b/src/WifiManagerTask.h @@ -28,7 +28,9 @@ CheckboxParameter* wmOtModSyncWithHeating; UnsignedIntParameter* wmOutdoorSensorPin; UnsignedIntParameter* wmIndoorSensorPin; -WiFiManagerParameter* wmBleAddress; +#if USE_BLE +WiFiManagerParameter* wmOutdoorSensorBleAddress; +#endif CheckboxParameter* wmExtPumpUse; UnsignedIntParameter* wmExtPumpPin; @@ -171,8 +173,10 @@ protected: wmIndoorSensorPin = new UnsignedIntParameter("indoor_sensor_pin", "Indoor sensor GPIO", settings.sensors.indoor.pin, 2); wm.addParameter(wmIndoorSensorPin); - wmBleAddress = new WiFiManagerParameter("ble_address", "BLE sensor address", settings.sensors.indoor.bleAddresss, 17); - wm.addParameter(wmBleAddress); +#if USE_BLE + wmOutdoorSensorBleAddress = new WiFiManagerParameter("ble_address", "BLE sensor address", settings.sensors.indoor.bleAddresss, 17); + wm.addParameter(wmOutdoorSensorBleAddress); +#endif wmExtPumpHeader = new HeaderParameter("External pump"); wm.addParameter(wmExtPumpHeader); @@ -449,12 +453,14 @@ protected: Log.sinfoln(FPSTR(S_WIFI_SETTINGS), F("New sensors.indoor.pin: %hhu"), settings.sensors.indoor.pin); } - if (strcmp(wmBleAddress->getValue(), settings.sensors.indoor.bleAddresss) != 0) { +#if USE_BLE + if (strcmp(wmOutdoorSensorBleAddress->getValue(), settings.sensors.indoor.bleAddresss) != 0) { changed = true; - strcpy(settings.sensors.indoor.bleAddresss, wmBleAddress->getValue()); + strcpy(settings.sensors.indoor.bleAddresss, wmOutdoorSensorBleAddress->getValue()); - Log.sinfoln(FPSTR(S_WIFI_SETTINGS), F("New BLE address: %s"), settings.sensors.indoor.bleAddresss); + Log.sinfoln(FPSTR(S_WIFI_SETTINGS), F("New sensors.indoor.bleAddresss: %s"), settings.sensors.indoor.bleAddresss); } +#endif if (wmExtPumpUse->getCheckboxValue() != settings.externalPump.use) { changed = true;