mirror of
https://github.com/arendst/Tasmota.git
synced 2025-08-07 09:57:42 +00:00
6.4.1.6 Re-introduce Cal commands
6.4.1.6 20190105 * Add commands PowerCal, VoltageCal and CurrentCal for HLW8012, HJL01 and BL0937 based energy sensors
This commit is contained in:
parent
f8ab1a8207
commit
41351001f5
@ -1,4 +1,7 @@
|
|||||||
/* 6.4.1.5 20190103
|
/* 6.4.1.6 20190105
|
||||||
|
* Add commands PowerCal, VoltageCal and CurrentCal for HLW8012, HJL01 and BL0937 based energy sensors
|
||||||
|
*
|
||||||
|
* 6.4.1.5 20190103
|
||||||
* Remove command SetOption35 0-255 for mDNS start-up delay (#4793)
|
* Remove command SetOption35 0-255 for mDNS start-up delay (#4793)
|
||||||
* Add command SetOption55 0/1 to disable/enable mDNS (#4793)
|
* Add command SetOption55 0/1 to disable/enable mDNS (#4793)
|
||||||
*
|
*
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
#ifndef _SONOFF_VERSION_H_
|
#ifndef _SONOFF_VERSION_H_
|
||||||
#define _SONOFF_VERSION_H_
|
#define _SONOFF_VERSION_H_
|
||||||
|
|
||||||
#define VERSION 0x06040105
|
#define VERSION 0x06040106
|
||||||
|
|
||||||
#define D_PROGRAMNAME "Sonoff-Tasmota"
|
#define D_PROGRAMNAME "Sonoff-Tasmota"
|
||||||
#define D_AUTHOR "Theo Arends"
|
#define D_AUTHOR "Theo Arends"
|
||||||
|
@ -31,9 +31,14 @@
|
|||||||
|
|
||||||
#include <Ticker.h>
|
#include <Ticker.h>
|
||||||
|
|
||||||
|
#define D_CMND_POWERCAL "PowerCal"
|
||||||
|
#define D_CMND_VOLTAGECAL "VoltageCal"
|
||||||
|
#define D_CMND_CURRENTCAL "CurrentCal"
|
||||||
|
|
||||||
enum EnergyCommands {
|
enum EnergyCommands {
|
||||||
CMND_POWERDELTA,
|
CMND_POWERDELTA,
|
||||||
CMND_POWERLOW, CMND_POWERHIGH, CMND_VOLTAGELOW, CMND_VOLTAGEHIGH, CMND_CURRENTLOW, CMND_CURRENTHIGH,
|
CMND_POWERLOW, CMND_POWERHIGH, CMND_VOLTAGELOW, CMND_VOLTAGEHIGH, CMND_CURRENTLOW, CMND_CURRENTHIGH,
|
||||||
|
CMND_POWERCAL, CMND_VOLTAGECAL, CMND_CURRENTCAL,
|
||||||
CMND_POWERSET, CMND_VOLTAGESET, CMND_CURRENTSET, CMND_FREQUENCYSET,
|
CMND_POWERSET, CMND_VOLTAGESET, CMND_CURRENTSET, CMND_FREQUENCYSET,
|
||||||
CMND_ENERGYRESET, CMND_MAXENERGY, CMND_MAXENERGYSTART,
|
CMND_ENERGYRESET, CMND_MAXENERGY, CMND_MAXENERGYSTART,
|
||||||
CMND_MAXPOWER, CMND_MAXPOWERHOLD, CMND_MAXPOWERWINDOW,
|
CMND_MAXPOWER, CMND_MAXPOWERHOLD, CMND_MAXPOWERWINDOW,
|
||||||
@ -41,6 +46,7 @@ enum EnergyCommands {
|
|||||||
const char kEnergyCommands[] PROGMEM =
|
const char kEnergyCommands[] PROGMEM =
|
||||||
D_CMND_POWERDELTA "|"
|
D_CMND_POWERDELTA "|"
|
||||||
D_CMND_POWERLOW "|" D_CMND_POWERHIGH "|" D_CMND_VOLTAGELOW "|" D_CMND_VOLTAGEHIGH "|" D_CMND_CURRENTLOW "|" D_CMND_CURRENTHIGH "|"
|
D_CMND_POWERLOW "|" D_CMND_POWERHIGH "|" D_CMND_VOLTAGELOW "|" D_CMND_VOLTAGEHIGH "|" D_CMND_CURRENTLOW "|" D_CMND_CURRENTHIGH "|"
|
||||||
|
D_CMND_POWERCAL "|" D_CMND_VOLTAGECAL "|" D_CMND_CURRENTCAL "|"
|
||||||
D_CMND_POWERSET "|" D_CMND_VOLTAGESET "|" D_CMND_CURRENTSET "|" D_CMND_FREQUENCYSET "|"
|
D_CMND_POWERSET "|" D_CMND_VOLTAGESET "|" D_CMND_CURRENTSET "|" D_CMND_FREQUENCYSET "|"
|
||||||
D_CMND_ENERGYRESET "|" D_CMND_MAXENERGY "|" D_CMND_MAXENERGYSTART "|"
|
D_CMND_ENERGYRESET "|" D_CMND_MAXENERGY "|" D_CMND_MAXENERGYSTART "|"
|
||||||
D_CMND_MAXPOWER "|" D_CMND_MAXPOWERHOLD "|" D_CMND_MAXPOWERWINDOW "|"
|
D_CMND_MAXPOWER "|" D_CMND_MAXPOWERHOLD "|" D_CMND_MAXPOWERWINDOW "|"
|
||||||
@ -413,21 +419,36 @@ boolean EnergyCommand(void)
|
|||||||
command, energy_total_chr, energy_yesterday_chr, energy_daily_chr);
|
command, energy_total_chr, energy_yesterday_chr, energy_daily_chr);
|
||||||
status_flag = 1;
|
status_flag = 1;
|
||||||
}
|
}
|
||||||
else if ((CMND_POWERSET == command_code) && XnrgCall(FUNC_COMMAND)) { // Watt
|
else if ((CMND_POWERCAL == command_code) && XnrgCall(FUNC_COMMAND)) { // microseconds
|
||||||
|
if ((XdrvMailbox.payload > 999) && (XdrvMailbox.payload < 32001)) { Settings.energy_power_calibration = XdrvMailbox.payload; }
|
||||||
nvalue = Settings.energy_power_calibration;
|
nvalue = Settings.energy_power_calibration;
|
||||||
unit = UNIT_MICROSECOND;
|
unit = UNIT_MICROSECOND;
|
||||||
}
|
}
|
||||||
else if ((CMND_VOLTAGESET == command_code) && XnrgCall(FUNC_COMMAND)) { // Volt
|
else if ((CMND_VOLTAGECAL == command_code) && XnrgCall(FUNC_COMMAND)) { // microseconds
|
||||||
|
if ((XdrvMailbox.payload > 999) && (XdrvMailbox.payload < 32001)) { Settings.energy_voltage_calibration = XdrvMailbox.payload; }
|
||||||
nvalue = Settings.energy_voltage_calibration;
|
nvalue = Settings.energy_voltage_calibration;
|
||||||
unit = UNIT_MICROSECOND;
|
unit = UNIT_MICROSECOND;
|
||||||
}
|
}
|
||||||
else if ((CMND_CURRENTSET == command_code) && XnrgCall(FUNC_COMMAND)) { // milliAmpere
|
else if ((CMND_CURRENTCAL == command_code) && XnrgCall(FUNC_COMMAND)) { // microseconds
|
||||||
|
if ((XdrvMailbox.payload > 999) && (XdrvMailbox.payload < 32001)) { Settings.energy_current_calibration = XdrvMailbox.payload; }
|
||||||
nvalue = Settings.energy_current_calibration;
|
nvalue = Settings.energy_current_calibration;
|
||||||
unit = UNIT_MICROSECOND;
|
unit = UNIT_MICROSECOND;
|
||||||
}
|
}
|
||||||
|
else if ((CMND_POWERSET == command_code) && XnrgCall(FUNC_COMMAND)) { // Watt
|
||||||
|
nvalue = Settings.energy_power_calibration;
|
||||||
|
unit = UNIT_MILLISECOND;
|
||||||
|
}
|
||||||
|
else if ((CMND_VOLTAGESET == command_code) && XnrgCall(FUNC_COMMAND)) { // Volt
|
||||||
|
nvalue = Settings.energy_voltage_calibration;
|
||||||
|
unit = UNIT_MILLISECOND;
|
||||||
|
}
|
||||||
|
else if ((CMND_CURRENTSET == command_code) && XnrgCall(FUNC_COMMAND)) { // milliAmpere
|
||||||
|
nvalue = Settings.energy_current_calibration;
|
||||||
|
unit = UNIT_MILLISECOND;
|
||||||
|
}
|
||||||
else if ((CMND_FREQUENCYSET == command_code) && XnrgCall(FUNC_COMMAND)) { // Hz
|
else if ((CMND_FREQUENCYSET == command_code) && XnrgCall(FUNC_COMMAND)) { // Hz
|
||||||
nvalue = Settings.energy_frequency_calibration;
|
nvalue = Settings.energy_frequency_calibration;
|
||||||
unit = UNIT_MICROSECOND;
|
unit = UNIT_MILLISECOND;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if FEATURE_POWER_LIMIT
|
#if FEATURE_POWER_LIMIT
|
||||||
@ -493,8 +514,9 @@ boolean EnergyCommand(void)
|
|||||||
|
|
||||||
if (serviced && !status_flag) {
|
if (serviced && !status_flag) {
|
||||||
|
|
||||||
if (UNIT_MICROSECOND == unit) {
|
if (UNIT_MILLISECOND == unit) {
|
||||||
snprintf_P(command, sizeof(command), PSTR("%sCal"), command);
|
snprintf_P(command, sizeof(command), PSTR("%sCal"), command);
|
||||||
|
unit = UNIT_MICROSECOND;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Settings.flag.value_units) {
|
if (Settings.flag.value_units) {
|
||||||
|
@ -237,7 +237,10 @@ boolean HlwCommand(void)
|
|||||||
{
|
{
|
||||||
boolean serviced = true;
|
boolean serviced = true;
|
||||||
|
|
||||||
if (CMND_POWERSET == energy_command_code) {
|
if ((CMND_POWERCAL == energy_command_code) || (CMND_VOLTAGECAL == energy_command_code) || (CMND_CURRENTCAL == energy_command_code)) {
|
||||||
|
// Service in xdrv_03_energy.ino
|
||||||
|
}
|
||||||
|
else if (CMND_POWERSET == energy_command_code) {
|
||||||
if (XdrvMailbox.data_len && hlw_cf_pulse_length) {
|
if (XdrvMailbox.data_len && hlw_cf_pulse_length) {
|
||||||
Settings.energy_power_calibration = ((unsigned long)(CharToDouble(XdrvMailbox.data) * 10) * hlw_cf_pulse_length) / hlw_power_ratio;
|
Settings.energy_power_calibration = ((unsigned long)(CharToDouble(XdrvMailbox.data) * 10) * hlw_cf_pulse_length) / hlw_power_ratio;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user