Optimized for mem pressure, inverted colors.

This commit is contained in:
2026-05-26 15:34:03 +02:00
parent 4bd62f539c
commit 91f3f69bd9
2 changed files with 23 additions and 107 deletions
+21 -107
View File
@@ -44,11 +44,25 @@ wifi:
ssid: "OWON B35T Fallback Hotspot" ssid: "OWON B35T Fallback Hotspot"
password: !secret fallback_psk password: !secret fallback_psk
captive_portal: # Disabled to save RAM on the M5Stack Core 1. Re-enable temporarily if Wi-Fi recovery is needed.
# captive_portal:
interval:
- interval: 10s
then:
- lambda: |-
ESP_LOGI("mem", "heap free=%u min_free=%u internal_free=%u internal_largest=%u dma_free=%u dma_largest=%u",
static_cast<unsigned>(esp_get_free_heap_size()),
static_cast<unsigned>(esp_get_minimum_free_heap_size()),
static_cast<unsigned>(heap_caps_get_free_size(MALLOC_CAP_INTERNAL)),
static_cast<unsigned>(heap_caps_get_largest_free_block(MALLOC_CAP_INTERNAL)),
static_cast<unsigned>(heap_caps_get_free_size(MALLOC_CAP_DMA)),
static_cast<unsigned>(heap_caps_get_largest_free_block(MALLOC_CAP_DMA)));
esp32_ble_tracker: esp32_ble_tracker:
scan_parameters: scan_parameters:
active: true active: true
continuous: true
ble_client: ble_client:
- mac_address: ${owon_mac_address} - mac_address: ${owon_mac_address}
@@ -158,7 +172,7 @@ display:
cs_pin: GPIO14 cs_pin: GPIO14
dc_pin: GPIO27 dc_pin: GPIO27
reset_pin: GPIO33 reset_pin: GPIO33
invert_colors: false invert_colors: true
color_palette: 8BIT color_palette: 8BIT
rotation: 0 rotation: 0
update_interval: 500ms update_interval: 500ms
@@ -235,34 +249,6 @@ binary_sensor:
name: "${friendly_name} Low Battery" name: "${friendly_name} Low Battery"
lambda: |- lambda: |-
return owon_meter.low_battery; return owon_meter.low_battery;
- platform: template
name: "${friendly_name} Auto Range"
lambda: |-
return owon_meter.auto_range();
- platform: template
name: "${friendly_name} Hold"
lambda: |-
return owon_meter.hold();
- platform: template
name: "${friendly_name} Relative"
lambda: |-
return owon_meter.relative();
- platform: template
name: "${friendly_name} AC"
lambda: |-
return owon_meter.ac();
- platform: template
name: "${friendly_name} DC"
lambda: |-
return owon_meter.dc();
- platform: template
name: "${friendly_name} Continuity"
lambda: |-
return owon_meter.continuity();
- platform: template
name: "${friendly_name} Diode"
lambda: |-
return owon_meter.diode();
sensor: sensor:
- platform: ble_client - platform: ble_client
@@ -286,7 +272,7 @@ sensor:
name: "${friendly_name} Display Value" name: "${friendly_name} Display Value"
id: owon_display_value id: owon_display_value
accuracy_decimals: 6 accuracy_decimals: 6
update_interval: 1s update_interval: 2s
lambda: |- lambda: |-
return owon_meter.has_reading && !owon_meter.overload ? owon_meter.value() : NAN; return owon_meter.has_reading && !owon_meter.overload ? owon_meter.value() : NAN;
@@ -294,95 +280,23 @@ sensor:
name: "${friendly_name} Base Value" name: "${friendly_name} Base Value"
id: owon_base_value id: owon_base_value
accuracy_decimals: 9 accuracy_decimals: 9
update_interval: 1s update_interval: 2s
lambda: |- lambda: |-
return owon_meter.has_reading && !owon_meter.overload ? owon_meter.value_base() : NAN; return owon_meter.has_reading && !owon_meter.overload ? owon_meter.value_base() : NAN;
- platform: template
name: "${friendly_name} Voltage"
device_class: voltage
unit_of_measurement: "V"
accuracy_decimals: 6
update_interval: 1s
lambda: |-
return owon_meter.kind() == owon_b35t::Meter::KIND_VOLTAGE && !owon_meter.overload ? owon_meter.value_base() : NAN;
- platform: template
name: "${friendly_name} Current"
device_class: current
unit_of_measurement: "A"
accuracy_decimals: 6
update_interval: 1s
lambda: |-
return owon_meter.kind() == owon_b35t::Meter::KIND_CURRENT && !owon_meter.overload ? owon_meter.value_base() : NAN;
- platform: template
name: "${friendly_name} Resistance"
unit_of_measurement: "Ω"
accuracy_decimals: 3
update_interval: 1s
lambda: |-
return owon_meter.kind() == owon_b35t::Meter::KIND_RESISTANCE && !owon_meter.overload ? owon_meter.value_base() : NAN;
- platform: template
name: "${friendly_name} Frequency"
device_class: frequency
unit_of_measurement: "Hz"
accuracy_decimals: 3
update_interval: 1s
lambda: |-
return owon_meter.kind() == owon_b35t::Meter::KIND_FREQUENCY && !owon_meter.overload ? owon_meter.value_base() : NAN;
- platform: template
name: "${friendly_name} Capacitance"
unit_of_measurement: "F"
accuracy_decimals: 12
update_interval: 1s
lambda: |-
return owon_meter.kind() == owon_b35t::Meter::KIND_CAPACITANCE && !owon_meter.overload ? owon_meter.value_base() : NAN;
- platform: template
name: "${friendly_name} Temperature"
device_class: temperature
unit_of_measurement: "°C"
accuracy_decimals: 2
update_interval: 1s
lambda: |-
if (owon_meter.kind() == owon_b35t::Meter::KIND_TEMP_C && !owon_meter.overload) return owon_meter.value();
if (owon_meter.kind() == owon_b35t::Meter::KIND_TEMP_F && !owon_meter.overload) return (owon_meter.value() - 32.0f) * 5.0f / 9.0f;
return NAN;
- platform: template
name: "${friendly_name} Duty Cycle"
unit_of_measurement: "%"
accuracy_decimals: 2
update_interval: 1s
lambda: |-
return owon_meter.kind() == owon_b35t::Meter::KIND_DUTY && !owon_meter.overload ? owon_meter.value() : NAN;
text_sensor: text_sensor:
- platform: template - platform: template
name: "${friendly_name} Reading" name: "${friendly_name} Reading"
update_interval: 1s update_interval: 2s
lambda: |- lambda: |-
return owon_meter.reading_text(); return owon_meter.reading_text();
- platform: template - platform: template
name: "${friendly_name} Unit" name: "${friendly_name} Unit"
update_interval: 1s update_interval: 2s
lambda: |- lambda: |-
return std::string(owon_meter.scale()) + owon_meter.unit(); return std::string(owon_meter.scale()) + owon_meter.unit();
- platform: template - platform: template
name: "${friendly_name} Mode" name: "${friendly_name} Mode"
update_interval: 1s update_interval: 2s
lambda: |- lambda: |-
return owon_meter.mode_text(); return owon_meter.mode_text();
- platform: template
name: "${friendly_name} Meter Type"
update_interval: 1s
lambda: |-
return owon_meter.is_plus ? std::string("B35T+") : std::string("B35T");
- platform: template
name: "${friendly_name} Selected Button"
update_interval: 1s
lambda: |-
return std::string(owon_meter.selected_button_name());
+2
View File
@@ -10,6 +10,8 @@
#include <cstring> #include <cstring>
#include <string> #include <string>
#include <vector> #include <vector>
#include "esp_heap_caps.h"
#include "esp_system.h"
#include "esphome/core/helpers.h" #include "esphome/core/helpers.h"
#include "esphome/core/log.h" #include "esphome/core/log.h"
#include "esphome/components/display/display.h" #include "esphome/components/display/display.h"