mirror of
https://github.com/nekorevend/esphome-emporia-vue-utility.git
synced 2026-01-10 05:10:40 -07:00
Some more stubbed stuff.
This commit is contained in:
@@ -0,0 +1,26 @@
|
|||||||
|
#include "esphome/core/log.h"
|
||||||
|
#include "emporia_vue_utility.h"
|
||||||
|
|
||||||
|
namespace esphome {
|
||||||
|
namespace emporia_vue_utility {
|
||||||
|
|
||||||
|
static const char *TAG = "emporia_vue_utility.sensor";
|
||||||
|
|
||||||
|
void EmporiaVueUtility::setup() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void EmporiaVueUtility::update() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void EmporiaVueUtility::loop() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void EmporiaVueUtility::dump_config(){
|
||||||
|
ESP_LOGCONFIG(TAG, "Stubbed Emporia Vue Utility");
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace emporia_vue_utility
|
||||||
|
} // namespace esphome
|
||||||
59
esphome/components/emporia_vue_utility/emporia_vue_utility.h
Normal file
59
esphome/components/emporia_vue_utility/emporia_vue_utility.h
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "esphome/core/component.h"
|
||||||
|
#include "esphome/components/sensor/sensor.h"
|
||||||
|
#include "esphome/components/uart/uart.h"
|
||||||
|
|
||||||
|
// Extra meter reading response debugging
|
||||||
|
#define DEBUG_VUE_RESPONSE true
|
||||||
|
|
||||||
|
// If the instant watts being consumed meter reading is outside of these ranges,
|
||||||
|
// the sample will be ignored which helps prevent garbage data from polluting
|
||||||
|
// home assistant graphs. Note this is the instant watts value, not the
|
||||||
|
// watt-hours value, which has smarter filtering. The defaults of 131kW
|
||||||
|
// should be fine for most people. (131072 = 0x20000)
|
||||||
|
#define WATTS_MIN -131072
|
||||||
|
#define WATTS_MAX 131072
|
||||||
|
|
||||||
|
// How much the watt-hours consumed value can change between samples.
|
||||||
|
// Values that change by more than this over the avg value across the
|
||||||
|
// previous 5 samples will be discarded.
|
||||||
|
#define MAX_WH_CHANGE 2000
|
||||||
|
|
||||||
|
// How many samples to average the watt-hours value over.
|
||||||
|
#define MAX_WH_CHANGE_ARY 5
|
||||||
|
|
||||||
|
// How often to request a reading from the meter in seconds.
|
||||||
|
// Meters typically update the reported value only once every
|
||||||
|
// 10 to 30 seconds, so "5" is usually fine.
|
||||||
|
// You might try setting this to "1" to see if your meter has
|
||||||
|
// new values more often
|
||||||
|
#define METER_READING_INTERVAL 30
|
||||||
|
|
||||||
|
// How often to attempt to re-join the meter when it hasn't
|
||||||
|
// been returning readings
|
||||||
|
#define METER_REJOIN_INTERVAL 30
|
||||||
|
|
||||||
|
// On first startup, how long before trying to start to talk to meter
|
||||||
|
#define INITIAL_STARTUP_DELAY 10
|
||||||
|
|
||||||
|
// Should this code manage the "wifi" and "link" LEDs?
|
||||||
|
// set to false if you want manually manage them elsewhere
|
||||||
|
#define USE_LED_PINS true
|
||||||
|
|
||||||
|
#define LED_PIN_LINK 32
|
||||||
|
#define LED_PIN_WIFI 33
|
||||||
|
|
||||||
|
namespace esphome {
|
||||||
|
namespace emporia_vue_utility {
|
||||||
|
|
||||||
|
class EmporiaVueUtility : public sensor::Sensor, public PollingComponent, public uart::UARTDevice {
|
||||||
|
public:
|
||||||
|
void setup() override;
|
||||||
|
void update() override;
|
||||||
|
void loop() override;
|
||||||
|
void dump_config() override;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace emporia_vue_utility
|
||||||
|
} // namespace esphome
|
||||||
31
esphome/components/emporia_vue_utility/sensor.py
Normal file
31
esphome/components/emporia_vue_utility/sensor.py
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
import esphome.codegen as cg
|
||||||
|
import esphome.config_validation as cv
|
||||||
|
from esphome.components import uart, sensor
|
||||||
|
from esphome.const import CONF_ID, CONF_POWER
|
||||||
|
|
||||||
|
DEPENDENCIES = ['uart']
|
||||||
|
|
||||||
|
emporia_vue_utility_ns = cg.esphome_ns.namespace('emporia_vue_utility')
|
||||||
|
EmporiaVueUtility = emporia_vue_utility_ns.class_('EmporiaVueUtility', cg.PollingComponent, uart.UARTDevice)
|
||||||
|
|
||||||
|
CONFIG_SCHEMA = cv.All(
|
||||||
|
cv.Schema(
|
||||||
|
cv.GenerateID(): cv.declare_id(EmporiaVueUtility),
|
||||||
|
cv.Optional(CONF_POWER): sensor.sensor_schema(
|
||||||
|
unit_of_measurement=UNIT_WATT,
|
||||||
|
device_class=DEVICE_CLASS_POWER,
|
||||||
|
state_class=STATE_CLASS_MEASUREMENT,
|
||||||
|
accuracy_decimals=2,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
# sensor.sensor_schema(UNIT_EMPTY, ICON_EMPTY, 1).extend({
|
||||||
|
# cv.GenerateID(): cv.declare_id(EmporiaVueUtility),
|
||||||
|
# }).extend(cv.polling_component_schema('60s')).extend(uart.UART_DEVICE_SCHEMA)
|
||||||
|
|
||||||
|
# def to_code(config):
|
||||||
|
# var = cg.new_Pvariable(config[CONF_ID])
|
||||||
|
# yield cg.register_component(var, config)
|
||||||
|
# yield sensor.register_sensor(var, config)
|
||||||
|
# yield uart.register_uart_device(var, config)
|
||||||
Reference in New Issue
Block a user