PM8000 Goal achieved in a memory constraint way
This commit is contained in:
parent
42554a57da
commit
03e46e0582
BIN
docs/Arduino/memories-of-an-arduino.pdf
Normal file
BIN
docs/Arduino/memories-of-an-arduino.pdf
Normal file
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@ -29,9 +29,9 @@ for d in range(1, len(data)):
|
|||||||
continue
|
continue
|
||||||
# if data[d][9] == "NONE":
|
# if data[d][9] == "NONE":
|
||||||
# continue
|
# continue
|
||||||
if data[d][4] == "---" or data[d][4] == "seconds" or data[d][4] == "degrees":
|
if data[d][4] == "seconds" or data[d][4] == "degrees":
|
||||||
continue
|
continue
|
||||||
if data[d][3] == "UTF8" or data[d][3] == "DATETIME" or data[d][3] == "BITMAP" or data[d][3] == "N/A":
|
if data[d][3] == "DATETIME" or data[d][3] == "BITMAP" or data[d][3] == "N/A":
|
||||||
continue
|
continue
|
||||||
if data[d][0].find("Magnitude") >= 0:
|
if data[d][0].find("Magnitude") >= 0:
|
||||||
continue
|
continue
|
||||||
@ -44,6 +44,8 @@ for d in range(1, len(data)):
|
|||||||
typeint = 3
|
typeint = 3
|
||||||
elif data[d][3] == "INT32U":
|
elif data[d][3] == "INT32U":
|
||||||
typeint = 4
|
typeint = 4
|
||||||
|
elif data[d][3] == "UTF8":
|
||||||
|
typeint = 5
|
||||||
|
|
||||||
|
|
||||||
#print("{} @ {}:{} ({}) Tag: {}".format(data[d][0], data[d][1] ,data[d][2] ,data[d][3],data[d][7]))
|
#print("{} @ {}:{} ({}) Tag: {}".format(data[d][0], data[d][1] ,data[d][2] ,data[d][3],data[d][7]))
|
||||||
|
22
docs/formulas.md
Normal file
22
docs/formulas.md
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
|
||||||
|
# Calculations
|
||||||
|
|
||||||
|
## LED Formula
|
||||||
|
|
||||||
|
### LED Spec:
|
||||||
|
2.8v (forward voltage)
|
||||||
|
20ma (current)
|
||||||
|
|
||||||
|
Vsupply = 5v (Pi Power)
|
||||||
|
Vf = 2.8v (Led Volts)
|
||||||
|
R = resistor value
|
||||||
|
If = desired current
|
||||||
|
|
||||||
|
Vr = Vsupply - Vf
|
||||||
|
R = Vr / If
|
||||||
|
|
||||||
|
Vr = 5V - 2.8V = 2.2V
|
||||||
|
R = 2.2V / 20mA = 110 ohms
|
||||||
|
|
||||||
|
Make sure to add some play room, we use a 120 omhs resistor
|
||||||
|
|
@ -39,18 +39,22 @@ ModbusMaster node;
|
|||||||
|
|
||||||
unsigned long lastRefreshTime = 0;
|
unsigned long lastRefreshTime = 0;
|
||||||
bool headerWritten = false;
|
bool headerWritten = false;
|
||||||
|
bool booted = false;
|
||||||
|
|
||||||
void flicker(uint8_t pin ,uint8_t times , uint16_t speed ) {
|
void flicker(uint8_t pin, uint8_t times, uint16_t speed)
|
||||||
for (int i = 0; i < times; i++) {
|
{
|
||||||
|
for (int i = 0; i < times; i++)
|
||||||
|
{
|
||||||
|
delay(speed);
|
||||||
digitalWrite(pin, HIGH);
|
digitalWrite(pin, HIGH);
|
||||||
delay(speed);
|
delay(speed);
|
||||||
digitalWrite(pin, LOW);
|
digitalWrite(pin, LOW);
|
||||||
delay(speed);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
|
booted = false;
|
||||||
pinMode(LED_A_PID, OUTPUT);
|
pinMode(LED_A_PID, OUTPUT);
|
||||||
pinMode(LED_B_PID, OUTPUT);
|
pinMode(LED_B_PID, OUTPUT);
|
||||||
digitalWrite(LED_A_PID, LOW);
|
digitalWrite(LED_A_PID, LOW);
|
||||||
@ -63,7 +67,10 @@ void setup()
|
|||||||
if (!rtc.begin())
|
if (!rtc.begin())
|
||||||
{
|
{
|
||||||
Serial.println(F("Couldn't find RTC\n"));
|
Serial.println(F("Couldn't find RTC\n"));
|
||||||
flicker(LED_B_PID,4,500); //4 times on LED b is RTC Error
|
flicker(LED_B_PID, 4, 1000); // 4 times on LED b is RTC Error
|
||||||
|
digitalWrite(LED_B_PID, HIGH);
|
||||||
|
digitalWrite(LED_A_PID, HIGH);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rtc.lostPower())
|
if (rtc.lostPower())
|
||||||
@ -71,7 +78,7 @@ void setup()
|
|||||||
Serial.println(F("RTC lost power, let's set the time!\n"));
|
Serial.println(F("RTC lost power, let's set the time!\n"));
|
||||||
// Comment out the following line once the time is set to avoid resetting on every start
|
// Comment out the following line once the time is set to avoid resetting on every start
|
||||||
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
|
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
|
||||||
flicker(LED_B_PID,4,100); //4 times fast on LED b is RTC reset
|
flicker(LED_B_PID, 4, 500); // 6 times fast on LED b is RTC reset
|
||||||
}
|
}
|
||||||
|
|
||||||
Serial.print(F("Time: "));
|
Serial.print(F("Time: "));
|
||||||
@ -90,8 +97,11 @@ void setup()
|
|||||||
// Initialize the SD.
|
// Initialize the SD.
|
||||||
if (!sd.begin(SD_CONFIG))
|
if (!sd.begin(SD_CONFIG))
|
||||||
{
|
{
|
||||||
|
flicker(LED_B_PID, 2, 1000);
|
||||||
|
digitalWrite(LED_B_PID, HIGH);
|
||||||
sd.initErrorHalt(&Serial);
|
sd.initErrorHalt(&Serial);
|
||||||
flicker(LED_B_PID,2,500); //2 Times slow, SD Card initilize error
|
|
||||||
|
// 2 Times slow and stay on, SD Card initilize error
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Serial.println(F("SD card initialized.\n"));
|
Serial.println(F("SD card initialized.\n"));
|
||||||
@ -105,7 +115,9 @@ void setup()
|
|||||||
node.begin(SLAVE_ID, modbusSerial);
|
node.begin(SLAVE_ID, modbusSerial);
|
||||||
node.preTransmission(preTransmission);
|
node.preTransmission(preTransmission);
|
||||||
node.postTransmission(postTransmission);
|
node.postTransmission(postTransmission);
|
||||||
flicker(LED_A_PID,2,100);
|
flicker(LED_B_PID, 10, 100);
|
||||||
|
digitalWrite(LED_B_PID, LOW);
|
||||||
|
booted = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void preTransmission()
|
void preTransmission()
|
||||||
@ -150,7 +162,7 @@ void primeFileDate()
|
|||||||
String getFilename()
|
String getFilename()
|
||||||
{
|
{
|
||||||
DateTime now = rtc.now();
|
DateTime now = rtc.now();
|
||||||
String mb = F("");
|
String mb = F("pm8k_");
|
||||||
mb += now.year();
|
mb += now.year();
|
||||||
mb += now.month();
|
mb += now.month();
|
||||||
mb += now.day();
|
mb += now.day();
|
||||||
@ -163,6 +175,14 @@ String getFilename()
|
|||||||
|
|
||||||
void loop()
|
void loop()
|
||||||
{
|
{
|
||||||
|
if (!booted)
|
||||||
|
{
|
||||||
|
Serial.print(F("\nBoot failed, cycle "));
|
||||||
|
|
||||||
|
delay(10000);
|
||||||
|
digitalWrite(LED_A_PID, LOW);
|
||||||
|
return;
|
||||||
|
}
|
||||||
delay(100);
|
delay(100);
|
||||||
String writebuffer;
|
String writebuffer;
|
||||||
|
|
||||||
@ -182,7 +202,7 @@ void loop()
|
|||||||
Serial.print("\n");
|
Serial.print("\n");
|
||||||
if (!dataFile.open(filename.c_str(), FILE_WRITE))
|
if (!dataFile.open(filename.c_str(), FILE_WRITE))
|
||||||
{
|
{
|
||||||
flicker(LED_B_PID,6,100); //Six quick flickers. SD Card error
|
flicker(LED_B_PID, 6, 500); // Six quick flickers. SD Card error
|
||||||
Serial.println(F("Failed to Open Card "));
|
Serial.println(F("Failed to Open Card "));
|
||||||
}
|
}
|
||||||
if (!headerWritten)
|
if (!headerWritten)
|
||||||
@ -191,12 +211,12 @@ void loop()
|
|||||||
for (int i = 0; i < totalReg; i++)
|
for (int i = 0; i < totalReg; i++)
|
||||||
{
|
{
|
||||||
const uint16_t regaddr = pgm_read_word(®isters[i].regaddr);
|
const uint16_t regaddr = pgm_read_word(®isters[i].regaddr);
|
||||||
dataFile.print("Addr @ ");
|
dataFile.print("@");
|
||||||
dataFile.print(regaddr);
|
dataFile.print(regaddr);
|
||||||
dataFile.print(",");
|
dataFile.print(",");
|
||||||
}
|
}
|
||||||
headerWritten = true;
|
headerWritten = true;
|
||||||
flicker(LED_A_PID,50,10); //10 flickers, written header
|
flicker(LED_A_PID, 50, 10); // 10 flickers, written header
|
||||||
}
|
}
|
||||||
primeFileDate();
|
primeFileDate();
|
||||||
Serial.print("\n");
|
Serial.print("\n");
|
||||||
@ -214,9 +234,9 @@ void loop()
|
|||||||
|
|
||||||
if (regaddr > 0)
|
if (regaddr > 0)
|
||||||
{
|
{
|
||||||
delay(50); //Gives the pending communication a little delay
|
delay(25); // Gives the pending communication a little delay
|
||||||
uint8_t result = node.readHoldingRegisters(regaddr - 1, 2);
|
uint8_t result = node.readHoldingRegisters(regaddr - 1, 2);
|
||||||
delay(50); //Delay the read for a little bit so that the buffer can be read
|
delay(25); // Delay the read for a little bit so that the buffer can be read
|
||||||
|
|
||||||
if (result == node.ku8MBSuccess)
|
if (result == node.ku8MBSuccess)
|
||||||
{
|
{
|
||||||
@ -236,6 +256,18 @@ void loop()
|
|||||||
{
|
{
|
||||||
dataFile.print(getRegisterInt32(node.getResponseBuffer(0), node.getResponseBuffer(1)));
|
dataFile.print(getRegisterInt32(node.getResponseBuffer(0), node.getResponseBuffer(1)));
|
||||||
}
|
}
|
||||||
|
else if (regtype == 5)
|
||||||
|
{
|
||||||
|
for (uint8_t j = 0; j < 20; j++)
|
||||||
|
{
|
||||||
|
uint8_t v = node.getResponseBuffer(j);
|
||||||
|
char a = v;
|
||||||
|
if (v == 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
dataFile.print(a);
|
||||||
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
dataFile.print(F("null"));
|
dataFile.print(F("null"));
|
||||||
@ -248,6 +280,7 @@ void loop()
|
|||||||
Serial.print("\n");
|
Serial.print("\n");
|
||||||
dataFile.print(F("E"));
|
dataFile.print(F("E"));
|
||||||
dataFile.print(result, HEX);
|
dataFile.print(result, HEX);
|
||||||
|
flicker(LED_B_PID, 2, 250);
|
||||||
}
|
}
|
||||||
dataFile.print(",");
|
dataFile.print(",");
|
||||||
}
|
}
|
||||||
@ -266,7 +299,7 @@ void loop()
|
|||||||
|
|
||||||
Serial.print(F("\n\n"));
|
Serial.print(F("\n\n"));
|
||||||
|
|
||||||
flicker(LED_A_PID,4,10); //Cycle written 4 quick flickers
|
flicker(LED_A_PID, 4, 100); // Cycle written 4 quick flickers
|
||||||
}
|
}
|
||||||
|
|
||||||
// // Check if the read was successful
|
// // Check if the read was successful
|
||||||
|
@ -8,6 +8,8 @@ struct RegisterMap
|
|||||||
};
|
};
|
||||||
|
|
||||||
const PROGMEM RegisterMap registers[] = {
|
const PROGMEM RegisterMap registers[] = {
|
||||||
|
//{ 30, 5} , // Name: Meter Name (DeviceName) - [30,20] as UTF8
|
||||||
|
//{ 50, 5} , // Name: Meter Model (DeviceType) - [50,20] as UTF8
|
||||||
{ 1837, 1} , // Name: Year (Year) - [1837,1] as INT16U
|
{ 1837, 1} , // Name: Year (Year) - [1837,1] as INT16U
|
||||||
{ 1838, 1} , // Name: Month (Month) - [1838,1] as INT16U
|
{ 1838, 1} , // Name: Month (Month) - [1838,1] as INT16U
|
||||||
{ 1839, 1} , // Name: Day (Day) - [1839,1] as INT16U
|
{ 1839, 1} , // Name: Day (Day) - [1839,1] as INT16U
|
||||||
@ -17,53 +19,53 @@ const PROGMEM RegisterMap registers[] = {
|
|||||||
{ 2702, 2} , // Name: Active Energy Received (Out of Load) (kWh rec) - [2702,2] as FLOAT32
|
{ 2702, 2} , // Name: Active Energy Received (Out of Load) (kWh rec) - [2702,2] as FLOAT32
|
||||||
{ 2704, 2} , // Name: Active Energy Delivered + Received (kWh del+rec) - [2704,2] as FLOAT32
|
{ 2704, 2} , // Name: Active Energy Delivered + Received (kWh del+rec) - [2704,2] as FLOAT32
|
||||||
{ 2706, 2} , // Name: Active Energy Delivered- Received (kWh del-rec) - [2706,2] as FLOAT32
|
{ 2706, 2} , // Name: Active Energy Delivered- Received (kWh del-rec) - [2706,2] as FLOAT32
|
||||||
// { 2708, 2} , // Name: Reactive Energy Delivered (kVARh del) - [2708,2] as FLOAT32
|
{ 2708, 2} , // Name: Reactive Energy Delivered (kVARh del) - [2708,2] as FLOAT32
|
||||||
// { 2710, 2} , // Name: Reactive Energy Received (kVARh rec) - [2710,2] as FLOAT32
|
{ 2710, 2} , // Name: Reactive Energy Received (kVARh rec) - [2710,2] as FLOAT32
|
||||||
// { 2712, 2} , // Name: Reactive Energy Delivered + Received (kVARh del+rec) - [2712,2] as FLOAT32
|
{ 2712, 2} , // Name: Reactive Energy Delivered + Received (kVARh del+rec) - [2712,2] as FLOAT32
|
||||||
// { 2714, 2} , // Name: Reactive Energy Delivered - Received (kVARh del-rec) - [2714,2] as FLOAT32
|
{ 2714, 2} , // Name: Reactive Energy Delivered - Received (kVARh del-rec) - [2714,2] as FLOAT32
|
||||||
// { 2716, 2} , // Name: Apparent Energy Delivered (kVAh del) - [2716,2] as FLOAT32
|
{ 2716, 2} , // Name: Apparent Energy Delivered (kVAh del) - [2716,2] as FLOAT32
|
||||||
// { 2718, 2} , // Name: Apparent Energy Received (kVAh rec) - [2718,2] as FLOAT32
|
{ 2718, 2} , // Name: Apparent Energy Received (kVAh rec) - [2718,2] as FLOAT32
|
||||||
// { 2720, 2} , // Name: Apparent Energy Delivered + Received (kVAh del+rec) - [2720,2] as FLOAT32
|
{ 2720, 2} , // Name: Apparent Energy Delivered + Received (kVAh del+rec) - [2720,2] as FLOAT32
|
||||||
// { 2722, 2} , // Name: Apparent Energy Delivered - Received (kVAh del-rec) - [2722,2] as FLOAT32
|
{ 2722, 2} , // Name: Apparent Energy Delivered - Received (kVAh del-rec) - [2722,2] as FLOAT32
|
||||||
// { 2724, 2} , // Name: Active Energy in Quadrant I (kWh Q1) - [2724,2] as FLOAT32
|
{ 2724, 2} , // Name: Active Energy in Quadrant I (kWh Q1) - [2724,2] as FLOAT32
|
||||||
// { 2726, 2} , // Name: Active Energy in Quadrant II (kWh Q2) - [2726,2] as FLOAT32
|
{ 2726, 2} , // Name: Active Energy in Quadrant II (kWh Q2) - [2726,2] as FLOAT32
|
||||||
// { 2728, 2} , // Name: Active Energy in Quadrant III (kWh Q3) - [2728,2] as FLOAT32
|
{ 2728, 2} , // Name: Active Energy in Quadrant III (kWh Q3) - [2728,2] as FLOAT32
|
||||||
// { 2730, 2} , // Name: Active Energy in Quadrant IV (kWh Q4) - [2730,2] as FLOAT32
|
{ 2730, 2} , // Name: Active Energy in Quadrant IV (kWh Q4) - [2730,2] as FLOAT32
|
||||||
// { 2732, 2} , // Name: Reactive Energy in Quadrant I (kVARh Q1) - [2732,2] as FLOAT32
|
{ 2732, 2} , // Name: Reactive Energy in Quadrant I (kVARh Q1) - [2732,2] as FLOAT32
|
||||||
// { 2734, 2} , // Name: Reactive Energy in Quadrant II (kVARh Q2) - [2734,2] as FLOAT32
|
{ 2734, 2} , // Name: Reactive Energy in Quadrant II (kVARh Q2) - [2734,2] as FLOAT32
|
||||||
// { 2736, 2} , // Name: Reactive Energy in Quadrant III (kVARh Q3) - [2736,2] as FLOAT32
|
{ 2736, 2} , // Name: Reactive Energy in Quadrant III (kVARh Q3) - [2736,2] as FLOAT32
|
||||||
// { 2738, 2} , // Name: Reactive Energy in Quadrant IV (kVARh Q4) - [2738,2] as FLOAT32
|
{ 2738, 2} , // Name: Reactive Energy in Quadrant IV (kVARh Q4) - [2738,2] as FLOAT32
|
||||||
// { 2740, 2} , // Name: Apparent Energy in Quadrant I (kVAh Q1) - [2740,2] as FLOAT32
|
{ 2740, 2} , // Name: Apparent Energy in Quadrant I (kVAh Q1) - [2740,2] as FLOAT32
|
||||||
// { 2742, 2} , // Name: Apparent Energy in Quadrant II (kVAh Q2) - [2742,2] as FLOAT32
|
{ 2742, 2} , // Name: Apparent Energy in Quadrant II (kVAh Q2) - [2742,2] as FLOAT32
|
||||||
// { 2744, 2} , // Name: Apparent Energy in Quadrant III (kVAh Q3) - [2744,2] as FLOAT32
|
{ 2744, 2} , // Name: Apparent Energy in Quadrant III (kVAh Q3) - [2744,2] as FLOAT32
|
||||||
// { 2746, 2} , // Name: Apparent Energy in Quadrant IV (kVAh Q4) - [2746,2] as FLOAT32
|
{ 2746, 2} , // Name: Apparent Energy in Quadrant IV (kVAh Q4) - [2746,2] as FLOAT32
|
||||||
// { 2748, 2} , // Name: Conditional Active Energy Delivered (Into Load) (Cnd kWh del) - [2748,2] as FLOAT32
|
{ 2748, 2} , // Name: Conditional Active Energy Delivered (Into Load) (Cnd kWh del) - [2748,2] as FLOAT32
|
||||||
// { 2750, 2} , // Name: Conditional Active Energy Received (Out of Load) (Cnd kWh rec) - [2750,2] as FLOAT32
|
{ 2750, 2} , // Name: Conditional Active Energy Received (Out of Load) (Cnd kWh rec) - [2750,2] as FLOAT32
|
||||||
// { 2754, 2} , // Name: Active Energy Delivered - Received, Conditional (Cnd kWh d-r) - [2754,2] as FLOAT32
|
{ 2754, 2} , // Name: Active Energy Delivered - Received, Conditional (Cnd kWh d-r) - [2754,2] as FLOAT32
|
||||||
// { 2756, 2} , // Name: Conditional Reactive Energy In (Delivered) (Cnd kVARh del) - [2756,2] as FLOAT32
|
{ 2756, 2} , // Name: Conditional Reactive Energy In (Delivered) (Cnd kVARh del) - [2756,2] as FLOAT32
|
||||||
// { 2758, 2} , // Name: Conditional Reactive Energy Out (Received) (Cnd kVARh rec) - [2758,2] as FLOAT32
|
{ 2758, 2} , // Name: Conditional Reactive Energy Out (Received) (Cnd kVARh rec) - [2758,2] as FLOAT32
|
||||||
// { 2762, 2} , // Name: Reactive Energy Delivered - Received, Conditional (Cnd kVARh d-r) - [2762,2] as FLOAT32
|
{ 2762, 2} , // Name: Reactive Energy Delivered - Received, Conditional (Cnd kVARh d-r) - [2762,2] as FLOAT32
|
||||||
// { 2768, 2} , // Name: Apparent Energy Delivered + Received, Conditional (Cnd kVAh d+r) - [2768,2] as FLOAT32
|
{ 2768, 2} , // Name: Apparent Energy Delivered + Received, Conditional (Cnd kVAh d+r) - [2768,2] as FLOAT32
|
||||||
// { 2772, 2} , // Name: Active Energy Delivered , Last Complete Interval (Inc kWh del C) - [2772,2] as FLOAT32
|
{ 2772, 2} , // Name: Active Energy Delivered , Last Complete Interval (Inc kWh del C) - [2772,2] as FLOAT32
|
||||||
// { 2774, 2} , // Name: Active Energy Received , Last Complete Interval (Inc kWh rec C) - [2774,2] as FLOAT32
|
{ 2774, 2} , // Name: Active Energy Received , Last Complete Interval (Inc kWh rec C) - [2774,2] as FLOAT32
|
||||||
// { 2776, 2} , // Name: Active Energy Delivered - Received , Last Complete Interval (Inc kWh d-r C) - [2776,2] as FLOAT32
|
{ 2776, 2} , // Name: Active Energy Delivered - Received , Last Complete Interval (Inc kWh d-r C) - [2776,2] as FLOAT32
|
||||||
// { 2778, 2} , // Name: Reactive Energy Delivered , Last Complete Interval (Inc kVARh del C) - [2778,2] as FLOAT32
|
{ 2778, 2} , // Name: Reactive Energy Delivered , Last Complete Interval (Inc kVARh del C) - [2778,2] as FLOAT32
|
||||||
// { 2780, 2} , // Name: Reactive Energy Received , Last Complete Interval (Inc kVARh rec C) - [2780,2] as FLOAT32
|
{ 2780, 2} , // Name: Reactive Energy Received , Last Complete Interval (Inc kVARh rec C) - [2780,2] as FLOAT32
|
||||||
// { 2782, 2} , // Name: Reactive Energy Delivered - Received , Last Complete Interval (Inc kVARh d-r C) - [2782,2] as FLOAT32
|
{ 2782, 2} , // Name: Reactive Energy Delivered - Received , Last Complete Interval (Inc kVARh d-r C) - [2782,2] as FLOAT32
|
||||||
// { 2784, 2} , // Name: Apparent Energy Delivered + Received , Last Complete Interval (Inc kVAh d+r C) - [2784,2] as FLOAT32
|
{ 2784, 2} , // Name: Apparent Energy Delivered + Received , Last Complete Interval (Inc kVAh d+r C) - [2784,2] as FLOAT32
|
||||||
// { 2786, 2} , // Name: Active Energy Delivered , Present Interval (Inc kWh del) - [2786,2] as FLOAT32
|
{ 2786, 2} , // Name: Active Energy Delivered , Present Interval (Inc kWh del) - [2786,2] as FLOAT32
|
||||||
// { 2788, 2} , // Name: Active Energy Received , Present Interval (Inc kWh rec) - [2788,2] as FLOAT32
|
{ 2788, 2} , // Name: Active Energy Received , Present Interval (Inc kWh rec) - [2788,2] as FLOAT32
|
||||||
// { 2790, 2} , // Name: Active Energy Delivered - Received , Present Interval (Inc kWh d-r) - [2790,2] as FLOAT32
|
{ 2790, 2} , // Name: Active Energy Delivered - Received , Present Interval (Inc kWh d-r) - [2790,2] as FLOAT32
|
||||||
// { 2792, 2} , // Name: Reactive Energy Delivered , Present Interval (Inc kVARh del) - [2792,2] as FLOAT32
|
{ 2792, 2} , // Name: Reactive Energy Delivered , Present Interval (Inc kVARh del) - [2792,2] as FLOAT32
|
||||||
// { 2794, 2} , // Name: Reactive Energy Received , Present Interval (Inc kVARh rec) - [2794,2] as FLOAT32
|
{ 2794, 2} , // Name: Reactive Energy Received , Present Interval (Inc kVARh rec) - [2794,2] as FLOAT32
|
||||||
// { 2796, 2} , // Name: Reactive Energy Delivered - Received , Present Interval (Inc kVARh d-r) - [2796,2] as FLOAT32
|
{ 2796, 2} , // Name: Reactive Energy Delivered - Received , Present Interval (Inc kVARh d-r) - [2796,2] as FLOAT32
|
||||||
// { 2798, 2} , // Name: Apparent Energy Delivered + Received , Present Interval (Inc kVAh d+r) - [2798,2] as FLOAT32
|
{ 2798, 2} , // Name: Apparent Energy Delivered + Received , Present Interval (Inc kVAh d+r) - [2798,2] as FLOAT32
|
||||||
// { 2800, 2} , // Name: Active Energy Delivered Interval (kWh del int) - [2800,2] as FLOAT32
|
{ 2800, 2} , // Name: Active Energy Delivered Interval (kWh del int) - [2800,2] as FLOAT32
|
||||||
// { 2802, 2} , // Name: Active Energy Received Interval (kWh rec int) - [2802,2] as FLOAT32
|
{ 2802, 2} , // Name: Active Energy Received Interval (kWh rec int) - [2802,2] as FLOAT32
|
||||||
// { 2804, 2} , // Name: Reactive Energy Delivered Interval (kVARh del int) - [2804,2] as FLOAT32
|
{ 2804, 2} , // Name: Reactive Energy Delivered Interval (kVARh del int) - [2804,2] as FLOAT32
|
||||||
// { 2806, 2} , // Name: Reactive Energy Received Interval (kVARh rec int) - [2806,2] as FLOAT32
|
{ 2806, 2} , // Name: Reactive Energy Received Interval (kVARh rec int) - [2806,2] as FLOAT32
|
||||||
// { 2808, 2} , // Name: Apparent Energy Delivered Interval (kVAh del int) - [2808,2] as FLOAT32
|
{ 2808, 2} , // Name: Apparent Energy Delivered Interval (kVAh del int) - [2808,2] as FLOAT32
|
||||||
// { 2810, 2} , // Name: Apparent Energy Received Interval (kVAh rec int) - [2810,2] as FLOAT32
|
{ 2810, 2} , // Name: Apparent Energy Received Interval (kVAh rec int) - [2810,2] as FLOAT32
|
||||||
{ 3000, 2} , // Name: Current A (I a) - [3000,2] as FLOAT32
|
{ 3000, 2} , // Name: Current A (I a) - [3000,2] as FLOAT32
|
||||||
{ 3002, 2} , // Name: Current B (I b) - [3002,2] as FLOAT32
|
{ 3002, 2} , // Name: Current B (I b) - [3002,2] as FLOAT32
|
||||||
{ 3004, 2} , // Name: Current C (I c) - [3004,2] as FLOAT32
|
{ 3004, 2} , // Name: Current C (I c) - [3004,2] as FLOAT32
|
||||||
@ -81,16 +83,16 @@ const PROGMEM RegisterMap registers[] = {
|
|||||||
{ 3054, 2} , // Name: Active Power A (kW a) - [3054,2] as FLOAT32
|
{ 3054, 2} , // Name: Active Power A (kW a) - [3054,2] as FLOAT32
|
||||||
{ 3056, 2} , // Name: Active Power B (kW b) - [3056,2] as FLOAT32
|
{ 3056, 2} , // Name: Active Power B (kW b) - [3056,2] as FLOAT32
|
||||||
{ 3058, 2} , // Name: Active Power C (kW c) - [3058,2] as FLOAT32
|
{ 3058, 2} , // Name: Active Power C (kW c) - [3058,2] as FLOAT32
|
||||||
// { 3060, 2} , // Name: Active Power Total (kW tot) - [3060,2] as FLOAT32
|
{ 3060, 2} , // Name: Active Power Total (kW tot) - [3060,2] as FLOAT32
|
||||||
// { 3062, 2} , // Name: Reactive Power A (kVAR a) - [3062,2] as FLOAT32
|
{ 3062, 2} , // Name: Reactive Power A (kVAR a) - [3062,2] as FLOAT32
|
||||||
// { 3064, 2} , // Name: Reactive Power B (kVAR b) - [3064,2] as FLOAT32
|
{ 3064, 2} , // Name: Reactive Power B (kVAR b) - [3064,2] as FLOAT32
|
||||||
// { 3066, 2} , // Name: Reactive Power C (kVAR c) - [3066,2] as FLOAT32
|
{ 3066, 2} , // Name: Reactive Power C (kVAR c) - [3066,2] as FLOAT32
|
||||||
// { 3068, 2} , // Name: Reactive Power Total (kVAR tot) - [3068,2] as FLOAT32
|
{ 3068, 2} , // Name: Reactive Power Total (kVAR tot) - [3068,2] as FLOAT32
|
||||||
// { 3070, 2} , // Name: Apparent Power A (kVA a) - [3070,2] as FLOAT32
|
{ 3070, 2} , // Name: Apparent Power A (kVA a) - [3070,2] as FLOAT32
|
||||||
// { 3072, 2} , // Name: Apparent Power B (kVA b) - [3072,2] as FLOAT32
|
{ 3072, 2} , // Name: Apparent Power B (kVA b) - [3072,2] as FLOAT32
|
||||||
// { 3074, 2} , // Name: Apparent Power C (kVA c) - [3074,2] as FLOAT32
|
{ 3074, 2} , // Name: Apparent Power C (kVA c) - [3074,2] as FLOAT32
|
||||||
// { 3076, 2} , // Name: Apparent Power Total (kVA tot) - [3076,2] as FLOAT32
|
{ 3076, 2} , // Name: Apparent Power Total (kVA tot) - [3076,2] as FLOAT32
|
||||||
// { 3110, 2} , // Name: Frequency (Freq) - [3110,2] as FLOAT32
|
{ 3110, 2} , // Name: Frequency (Freq) - [3110,2] as FLOAT32
|
||||||
// { 3204, 3} , // Name: Active Energy Delivered (Into Load) (kWh del) - [3204,4] as INT64
|
// { 3204, 3} , // Name: Active Energy Delivered (Into Load) (kWh del) - [3204,4] as INT64
|
||||||
// { 3208, 3} , // Name: Active Energy Received (Out of Load) (kWh rec) - [3208,4] as INT64
|
// { 3208, 3} , // Name: Active Energy Received (Out of Load) (kWh rec) - [3208,4] as INT64
|
||||||
// { 3212, 3} , // Name: Active Energy Delivered + Received (kWh del+rec) - [3212,4] as INT64
|
// { 3212, 3} , // Name: Active Energy Delivered + Received (kWh del+rec) - [3212,4] as INT64
|
||||||
|
Loading…
Reference in New Issue
Block a user