We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Hi,
I am getting a compile errorfor my atom lite for your code. As I cant develop C, I have no clue how to solve it. Please assist.
NFO Reading configuration atom-lite.yaml... INFO Generating C++ source... INFO Compiling app... Processing atom-lite-1 (board: m5stack-atom; framework: espidf; platform: platformio/espressif32 @ 5.2.0) ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash - framework-espidf @ 3.40402.0 (4.4.2) - tool-cmake @ 3.16.4 - tool-ninja @ 1.7.1 - toolchain-esp32ulp @ 2.35.0-20220830 - toolchain-xtensa-esp32 @ 8.4.0+2021r2-patch3 Reading CMake configuration... LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf Dependency Graph |-- Improv @ 1.2.3 Compiling .pioenvs/atom-lite-1/src/main.o atom-lite.yaml: In static member function 'static void std::_Function_handler<void(_ArgTypes ...), _Functor>::_M_invoke(const std::_Any_data&, _ArgTypes&& ...) [with _Functor = setup()::<lambda(const esphome::esp32_ble_tracker::ESPBTDevice&)>; _ArgTypes = {const esphome::esp32_ble_tracker::ESPBTDevice&}]': atom-lite.yaml:86:40: error: '*((void*)& best_rssi +2)' may be used uninitialized in this function [-Werror=maybe-uninitialized] atom-lite.yaml:61:25: note: '*((void*)& best_rssi +2)' was declared here cc1plus: some warnings being treated as errors *** [.pioenvs/atom-lite-1/src/main.o] Error 1
line 86 is:
id(apple_watch_rssi).publish_state(*best_rssi);
here is the full yaml
substitutions: name: atom-lite-1 roomname: Wohnzimmer static_ip: 192.168.1.145 yourname: Lukas rssi_present: id(harssi_present).state rssi_not_present: id(harssi_not_present).state esphome: name: ${name} packages: esphome.bluetooth-proxy: github://esphome/bluetooth-proxies/m5stack-atom-lite.yaml@main esp32: board: m5stack-atom framework: # type: arduino type: esp-idf # Enable logging logger: # Enable Home Assistant API api: password: "" ota: password: "" wifi: ssid: "CLUELANSPEED" password: "xxxxx" # Enable fallback hotspot (captive portal) in case wifi connection fails ap: ssid: "Atom-Lite-1 Fallback Hotspot" password: "xxxx" #captive_portal: bluetooth_proxy: active: true #web_server: # port: 80 # auth: # username: admin # password: xxxxx esp32_ble_tracker: scan_parameters: interval: 1200ms window: 500ms active: true on_ble_advertise: - then: # Look for manufacturer data of form: 4c00 10 05 YY 98 XXXXXX # Where YY can be 01..0F or 20..2F; and XXXXXX is ignored - lambda: |- optional<int16_t> best_rssi = nullopt; for (auto data : x.get_manufacturer_datas()) { const int16_t device_rssi = x.get_rssi(); // ESP_LOGD("ble_adv", "Found Device (mac %s) rssi %i", x.address_str().c_str(), device_rssi); // Guard against non-Apple datagrams, or those that are too small. if (data.data.size() < 4 || data.uuid.to_string() != "0x004C" || data.data[0] != 0x10 || data.data[1] < 5) { // ESP_LOGD("ble_adv", "Non Apple datagrams found, skipping, uuid=%s, data.data.size()=%i, data.data[0]=%i, data.data[1]=%i",data.uuid.to_string().c_str(),data.data.size(),data.data[0],data.data[1]); continue; } const int16_t rssi = x.get_rssi(); const uint8_t status_flags = data.data[2] >> 4; // High nibble const uint8_t data_flags = data.data[3]; // ESP_LOGD("ble_adv", "status_flags=%i, data_flags=%i",status_flags,data_flags); if (data_flags == 0x98 || data_flags == 0x18) { // Match unlocked Apple Watch. To also match locked watch use: if (data_flags == 0x98 || data_flags == 0x18) { if (status_flags == 0 || status_flags == 2) { best_rssi = max(rssi, best_rssi.value_or(rssi)); ESP_LOGD("ble_adv", "Found Apple Watch (mac %s) rssi %i", x.address_str().c_str(), rssi); } else { ESP_LOGD("ble_adv", "Possible Apple Watch? (mac %s) rssi %i, unrecognised status/action flags %#04x", x.address_str().c_str(), rssi, data.data[2]); } } } if (best_rssi) { ESP_LOGD("ble_adv", "Publish State of Apple Watch (mac %s)", x.address_str().c_str()); id(apple_watch_rssi).publish_state(*best_rssi); } else { ESP_LOGD("ble_adv", "Not publishing State of Apple Watch (mac %s)", x.address_str().c_str()); } sensor: - platform: template id: apple_watch_rssi name: "$yourname Apple Watch $roomname RSSI" device_class: signal_strength unit_of_measurement: dBm accuracy_decimals: 0 filters: - exponential_moving_average: alpha: 0.3 send_every: 1 on_value: then: - lambda: |- if (id(apple_watch_rssi).state > $rssi_present) { id(room_presence_debounce).publish_state(1); } else if (id(apple_watch_rssi).state < $rssi_not_present) { id(room_presence_debounce).publish_state(0); } - script.execute: presence_timeout # Publish 0 if no rssi received - platform: template id: room_presence_debounce filters: - sliding_window_moving_average: window_size: 3 send_every: 1 - platform: homeassistant name: HA RSSI Present Value entity_id: input_number.rssi_present id: harssi_present internal: true - platform: homeassistant name: HA RSSI Not Present Value entity_id: input_number.rssi_not_present id: harssi_not_present internal: true binary_sensor: - platform: template id: room_presence name: "$yourname $roomname presence" device_class: occupancy lambda: |- if (id(room_presence_debounce).state > 0.99) { return true; } else if (id(room_presence_debounce).state < 0.01) { return false; } else { return id(room_presence).state; } script: # Publish event every 30 seconds when no rssi received id: presence_timeout mode: restart then: - delay: 30s - lambda: |- id(room_presence_debounce).publish_state(0); - script.execute: presence_timeout
Any tip is welcome. Thanks.
Lukas
The text was updated successfully, but these errors were encountered:
Did you figure this out? I'm getting the same error.
Sorry, something went wrong.
Yes
here the code to ignore the error:
esphome: name: ${name} name_add_mac_suffix: True platformio_options: build_flags: - -Wno-maybe-uninitialized
No branches or pull requests
Hi,
I am getting a compile errorfor my atom lite for your code. As I cant develop C, I have no clue how to solve it. Please assist.
line 86 is:
here is the full yaml
Any tip is welcome. Thanks.
Lukas
The text was updated successfully, but these errors were encountered: