mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-24 19:26:37 +00:00
Add relay power control emulation
Add relay power control emulation (#10640)
This commit is contained in:
parent
aa2b6043ee
commit
db4399d89b
@ -20,7 +20,7 @@
|
|||||||
#ifdef USE_ENERGY_SENSOR
|
#ifdef USE_ENERGY_SENSOR
|
||||||
#ifdef USE_ENERGY_DUMMY
|
#ifdef USE_ENERGY_DUMMY
|
||||||
/*********************************************************************************************\
|
/*********************************************************************************************\
|
||||||
* Provides dummy energy monitoring
|
* Provides dummy energy monitoring for up to three channels based on relay count
|
||||||
*
|
*
|
||||||
* User is supposed to enter valid data for Voltage, Current and Power
|
* User is supposed to enter valid data for Voltage, Current and Power
|
||||||
* Active Power is adjusted to calculated Apparent Power (=U*I) if the latter is smaller than the first
|
* Active Power is adjusted to calculated Apparent Power (=U*I) if the latter is smaller than the first
|
||||||
@ -30,7 +30,6 @@
|
|||||||
|
|
||||||
#define XNRG_20 20
|
#define XNRG_20 20
|
||||||
|
|
||||||
#define NRG_DUMMY_PHASES 1 // 1 to 3 channels as x phases
|
|
||||||
#define NRG_DUMMY_U_COMMON true // Phase voltage = false, Common voltage = true
|
#define NRG_DUMMY_U_COMMON true // Phase voltage = false, Common voltage = true
|
||||||
#define NRG_DUMMY_F_COMMON true // Phase frequency = false, Common frequency = true
|
#define NRG_DUMMY_F_COMMON true // Phase frequency = false, Common frequency = true
|
||||||
#define NRG_DUMMY_DC false // AC = false, DC = true;
|
#define NRG_DUMMY_DC false // AC = false, DC = true;
|
||||||
@ -45,17 +44,18 @@
|
|||||||
void NrgDummyEverySecond(void) {
|
void NrgDummyEverySecond(void) {
|
||||||
if (Energy.power_on) { // Powered on
|
if (Energy.power_on) { // Powered on
|
||||||
float energy = 0;
|
float energy = 0;
|
||||||
uint32_t max_channel = (NRG_DUMMY_PHASES < 4) ? NRG_DUMMY_PHASES : 3;
|
for (uint32_t channel = 0; channel < Energy.phase_count; channel++) {
|
||||||
for (uint32_t channel = 0; channel < max_channel; channel++) {
|
|
||||||
Energy.data_valid[channel] = 0;
|
|
||||||
Energy.voltage[channel] = ((float)Settings.energy_voltage_calibration / 100); // V
|
Energy.voltage[channel] = ((float)Settings.energy_voltage_calibration / 100); // V
|
||||||
Energy.frequency[channel] = ((float)Settings.energy_frequency_calibration / 100); // Hz
|
Energy.frequency[channel] = ((float)Settings.energy_frequency_calibration / 100); // Hz
|
||||||
Energy.active_power[channel] = ((float)Settings.energy_power_calibration / 100); // W
|
if (bitRead(TasmotaGlobal.power, channel)) { // Emulate power read only if device is powered on
|
||||||
if (0 == Energy.active_power[channel]) {
|
Energy.active_power[channel] = ((float)Settings.energy_power_calibration / 100); // W
|
||||||
Energy.current[channel] = 0;
|
if (0 == Energy.active_power[channel]) {
|
||||||
} else {
|
Energy.current[channel] = 0;
|
||||||
Energy.current[channel] = ((float)Settings.energy_current_calibration / 100000); // A
|
} else {
|
||||||
energy += Energy.active_power[channel];
|
Energy.current[channel] = ((float)Settings.energy_current_calibration / 100000); // A
|
||||||
|
energy += Energy.active_power[channel];
|
||||||
|
}
|
||||||
|
Energy.data_valid[channel] = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -113,10 +113,10 @@ void NrgDummyDrvInit(void) {
|
|||||||
Settings.energy_power_calibration = NRG_DUMMY_PREF;
|
Settings.energy_power_calibration = NRG_DUMMY_PREF;
|
||||||
}
|
}
|
||||||
|
|
||||||
Energy.type_dc = NRG_DUMMY_DC; // AC = false, DC = true;
|
Energy.phase_count = (TasmotaGlobal.devices_present < 3) ? TasmotaGlobal.devices_present : 3;
|
||||||
Energy.phase_count = NRG_DUMMY_PHASES; // 1 to 3 channels as x phases
|
|
||||||
Energy.voltage_common = NRG_DUMMY_U_COMMON; // Phase voltage = false, Common voltage = true
|
Energy.voltage_common = NRG_DUMMY_U_COMMON; // Phase voltage = false, Common voltage = true
|
||||||
Energy.frequency_common = NRG_DUMMY_F_COMMON; // Phase frequency = false, Common frequency = true
|
Energy.frequency_common = NRG_DUMMY_F_COMMON; // Phase frequency = false, Common frequency = true
|
||||||
|
Energy.type_dc = NRG_DUMMY_DC; // AC = false, DC = true;
|
||||||
|
|
||||||
TasmotaGlobal.energy_driver = XNRG_20;
|
TasmotaGlobal.energy_driver = XNRG_20;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user