aboutsummaryrefslogtreecommitdiffhomepage
path: root/kauf-plug.yaml
diff options
context:
space:
mode:
Diffstat (limited to 'kauf-plug.yaml')
-rw-r--r--kauf-plug.yaml105
1 files changed, 62 insertions, 43 deletions
diff --git a/kauf-plug.yaml b/kauf-plug.yaml
index c8fe5c0..ac68c94 100644
--- a/kauf-plug.yaml
+++ b/kauf-plug.yaml
@@ -15,7 +15,7 @@ substitutions:
# https://esphome.io/components/esphome.html#esphome-creators-project
project_name: Kauf.PLF10
- project_ver_num: "2.014"
+ project_ver_num: "2.015"
project_ver_let: y
# https://esphome.io/components/switch/gpio.html?highlight=restore_mode
@@ -65,13 +65,9 @@ substitutions:
voltage_cal_val2_in: "302.1"
voltage_cal_val2_out: "117.1"
- # set power monitoring mode in yaml, selecting the "yaml_configured" option in the select entity will cause these
- # values to be used after next reboot.
- # https://esphome.io/components/sensor/hlw8012.html#configuration-variables
- sub_change_mode_every: "1"
+ # set default power monitoring update interval in yaml.
+ # this will only be effective as long as the select entity is set to "YAML Configured"
sub_update_interval: 10s
- sub_initial_mode: CURRENT
- select_monitor_mode_initial_option: "10s P / 20s V,I"
# GPIO definitions
sub_pm_sel_pin: GPIO12
@@ -110,10 +106,6 @@ globals:
type: boolean
restore_value: no
initial_value: "false"
- - id: global_has_powermode
- type: boolean
- restore_value: no
- initial_value: "false"
# https://esphome.io/components/esphome.html#adjusting-flash-writes
@@ -145,7 +137,7 @@ external_components:
- source:
type: git
url: https://github.com/KaufHA/common
- ref: v2022.11.26.1
+ ref: v2022.11.29
refresh: 365250d
@@ -491,7 +483,7 @@ time:
sensor: # Power monitoring sensors output to Home Assistant
# https://esphome.io/components/sensor/hlw8012.html
- - platform: hlw8012
+ - platform: kauf_hlw8012
id: hlw_main
sel_pin:
number: $sub_pm_sel_pin
@@ -501,9 +493,7 @@ sensor: # Power monitoring sensors output to Home Assistant
current_resistor: $current_resistor_val
voltage_divider: $voltage_divider_val
- change_mode_every: $sub_change_mode_every
update_interval: $sub_update_interval
- initial_mode: $sub_initial_mode
model: $sub_hlw_model
@@ -823,10 +813,13 @@ select:
- light.turn_off: red_led
- script.execute: script_set_power_leds
- # change mode of power monitoring
+ # legacy select monitor mode configuration; remove December 1, 2023
+ # removed name, so won't show up in UI. This is kept so that previous
+ # setting can be migrated to new select entities.
+ # new entity is saved at same address with incremented hash so once the new
+ # one is saved, this one won't be loaded next time.
- platform: template
- name: $friendly_name Monitoring Mode
- id: select_monitor_mode
+ id: select_monitor_mode_old
optimistic: true
options:
- "10s P / 20s V,I"
@@ -836,7 +829,8 @@ select:
- " 2s P,V Only"
- "YAML Configured"
- " 2s P / 4s V,I"
- initial_option: $select_monitor_mode_initial_option
+ - "Didn't Restore"
+ initial_option: "Didn't Restore"
restore_value: true
icon: mdi:wrench-clock
entity_category: config
@@ -848,33 +842,58 @@ select:
- script.execute: script_save_changes
- script.execute: script_setting_reboot
on_value:
+ - wait_until: # wait until new select entity is setup so it won't get overwritten with default value on setup
+ lambda: return ( id(select_monitor_interval).has_state() );
- lambda: |-
- if ( !id(global_has_powermode) ) {
- if ( x == "10s P / 20s V,I") {
- id(hlw_main).set_update_interval(10000);
- id(hlw_main).set_change_mode_every(1); }
- else if ( x == "10s P,I Only" ) {
- id(hlw_main).set_update_interval(10000);
- id(hlw_main).set_change_mode_every(4294967295);
- id(hlw_main).set_initial_mode(hlw8012::HLW8012_INITIAL_MODE_CURRENT); }
- else if ( x == "10s P,V Only" ) {
- id(hlw_main).set_update_interval(10000);
- id(hlw_main).set_change_mode_every(4294967295);
- id(hlw_main).set_initial_mode(hlw8012::HLW8012_INITIAL_MODE_VOLTAGE); }
- else if ( x == " 2s P / 4s V,I" ) {
- id(hlw_main).set_update_interval(2000);
- id(hlw_main).set_change_mode_every(1); }
- else if ( x == " 2s P,I Only" ) {
- id(hlw_main).set_update_interval(2000);
- id(hlw_main).set_change_mode_every(4294967295);
- id(hlw_main).set_initial_mode(hlw8012::HLW8012_INITIAL_MODE_CURRENT); }
- else if ( x == " 2s P,V Only" ) {
- id(hlw_main).set_update_interval(2000);
- id(hlw_main).set_change_mode_every(4294967295);
- id(hlw_main).set_initial_mode(hlw8012::HLW8012_INITIAL_MODE_VOLTAGE); }
- id(global_has_powermode) = true;
+ if ( x == "Didn't Restore" ) {
+ id(select_monitor_mode_old).set_restore_value(false); // don't let old select save over new select
+ ESP_LOGD("Kauf Config Migration", "No legacy monitor mode configuration to migrate.");
+ } else {
+ ESP_LOGD("Kauf Config Migration", "Found legacy monitor mode configuration, migrating to new format.");
+
+ // set monitor mode config select entity. 10s is default so just need to
+ auto call_sel = id(select_monitor_interval).make_call();
+ if ( str_startswith(x,"10s") ) { call_sel.set_option("10s"); }
+ else if ( str_startswith(x," 2s") ) { call_sel.set_option("2s"); }
+ else { call_sel.set_option("YAML Configured"); }
+ call_sel.perform();
+
+ // go ahead and trigger a reboot on every config restoration
+ id(script_save_changes).execute();
+ id(script_setting_reboot).execute();
}
+ # change update interval for power monitoring sensors
+ - platform: template
+ name: $friendly_name Monitoring Update Interval
+ id: select_monitor_interval
+ optimistic: true
+ options:
+ - 60s
+ - 30s
+ - 10s
+ - 5s
+ - 2s
+ - YAML Configured
+ initial_option: 10s
+ restore_value: true
+ icon: mdi:wrench-clock
+ entity_category: config
+ disabled_by_default: $disable_entities
+ forced_hash: 1025003091
+ forced_addr: 0
+ global_addr: global_forced_addr
+ set_action:
+ - script.execute: script_save_changes
+ - script.execute: script_setting_reboot
+ on_value:
+ - lambda: |-
+ if ( x == "60s" ) { id(hlw_main).set_update_interval(60000); }
+ else if ( x == "30s" ) { id(hlw_main).set_update_interval(30000); }
+ else if ( x == "10s" ) { id(hlw_main).set_update_interval(10000); }
+ else if ( x == "5s" ) { id(hlw_main).set_update_interval(5000); }
+ else if ( x == "2s" ) { id(hlw_main).set_update_interval(2000); }
+
- platform: template
name: $friendly_name Boot State
id: select_boot_state