ESP_IOT v2.5
IOT ESP Coding
AtomSocket.cpp
Go to the documentation of this file.
1//! from: https://github.com/m5stack/M5Atom/blob/master/examples/ATOM_BASE/ATOM_Socket/AtomSocket.cpp
2#include "AtomSocket.h"
3//#include "../../Defines.h"
4#ifdef ATOM_SOCKET_MODULE
5
6void ATOMSOCKET::Init(HardwareSerial& SerialData, int _RelayIO, int _RXD) {
7 AtomSerial = &SerialData;
8 RelayIO = _RelayIO;
9 RXD = _RXD;
10 AtomSerial->begin(4800, SERIAL_8E1, RXD);
11 pinMode(RelayIO, OUTPUT);
12 VF = VolR1 / VolR2 / 1000.0;
13 CF = 1.0 / (CurrentRF * 1000.0);
14
15 //! 7.26.25 trying power all day...
16 //! poweroff on init..
17 digitalWrite(RelayIO, LOW);
18
19}
20
22 digitalWrite(RelayIO, HIGH);
23}
24
26 digitalWrite(RelayIO, LOW);
27}
28
29void ATOMSOCKET::setVF(float Data) {
30 VF = Data;
31}
32
33void ATOMSOCKET::setCF(float Data) {
34 CF = Data;
35}
36
38 if (AtomSerial->available() > 0) {
39 delay(55);
40 SeriaDataLen = AtomSerial->available();
41
42 if (SeriaDataLen != 24) {
43 while (AtomSerial->read() >= 0) {
44 }
45 return;
46 }
47
48 for (byte a = 0; a < SeriaDataLen; a++) {
49 SerialTemps[a] = AtomSerial->read();
50 }
51
52 if (SerialTemps[1] != 0x5A) {
53 while (AtomSerial->read() >= 0) {
54 }
55 return;
56 }
57 if (Checksum() == false) {
58 return;
59 }
60
61 SerialRead = 1;
62 VolPar = ((uint32_t)SerialTemps[2] << 16) |
63 ((uint32_t)SerialTemps[3] << 8) | SerialTemps[4];
64 VolData = ((uint32_t)SerialTemps[5] << 16) |
65 ((uint32_t)SerialTemps[6] << 8) | SerialTemps[7];
66 CurrentPar = ((uint32_t)SerialTemps[8] << 16) |
67 ((uint32_t)SerialTemps[9] << 8) | SerialTemps[10];
68 CurrentData = ((uint32_t)SerialTemps[11] << 16) |
69 ((uint32_t)SerialTemps[12] << 8) | SerialTemps[13];
70 PowerPar = ((uint32_t)SerialTemps[14] << 16) |
71 ((uint32_t)SerialTemps[15] << 8) | SerialTemps[16];
72 PowerData = ((uint32_t)SerialTemps[17] << 16) |
73 ((uint32_t)SerialTemps[18] << 8) | SerialTemps[19];
74 PF = ((uint32_t)SerialTemps[21] << 8) | SerialTemps[22];
75 if (bitRead(SerialTemps[20], 7) == 1) {
76 PFData++;
77 }
78 }
79}
80
82 float Vol = GetVolAnalog() * VF;
83 return Vol;
84}
85
87 float FVolPar = VolPar;
88 float Vol = FVolPar / VolData;
89 return Vol;
90}
91
93 float Current = GetCurrentAnalog() * CF - 0.06f;
94 return Current;
95}
96
98 float FCurrentPar = CurrentPar;
99 float Current = FCurrentPar / (float)CurrentData;
100 return Current;
101}
102
104 float FPowerPar = PowerPar;
105 float FPowerData = PowerData;
106 SerialLots.print("FPowerData:");
107 SerialLots.println(FPowerData);
108 SerialLots.print("FPowerPar:");
109 SerialLots.println(FPowerPar);
110 float Power = (FPowerPar / FPowerData) * VF * CF;
111 return Power;
112}
113
115 float vol = GetVol();
116 float current = GetCurrent();
117 return vol * current;
118}
119
121 float ActivePower = GetActivePower();
122 float InspectingPower = GetInspectingPower();
123 return ActivePower / InspectingPower;
124}
125
127 return PF;
128}
129
131 return PFData * PF;
132}
133
135 float InspectingPower = GetInspectingPower(); //è§†ćœšćŠŸçŽ‡
136 uint32_t PFcnt = (1 / PowerPar) * (1 / InspectingPower) * 1000000000 * 3600;
137 float KWh = (PFData * PF) / PFcnt;
138 return KWh;
139}
140
141bool ATOMSOCKET::Checksum() {
142 byte check = 0;
143 for (byte a = 2; a <= 22; a++) {
144 check = check + SerialTemps[a];
145 }
146 if (check == SerialTemps[23]) {
147 return true;
148 } else {
149 return false;
150 }
151}
152#endif // ATOM_SOCKET_MODULE
float GetInspectingPower()
Definition: AtomSocket.cpp:114
float GetCurrent()
Definition: AtomSocket.cpp:92
void SetPowerOff()
Definition: AtomSocket.cpp:25
float GetActivePower()
Definition: AtomSocket.cpp:103
void SetPowerOn()
Definition: AtomSocket.cpp:21
uint32_t CurrentPar
Definition: AtomSocket.h:33
float GetVol()
Definition: AtomSocket.cpp:81
void setVF(float Data)
Definition: AtomSocket.cpp:29
float GetVolAnalog()
Definition: AtomSocket.cpp:86
float CF
Definition: AtomSocket.h:37
void Init(HardwareSerial &SerialData, int _RelayIO, int _RXD)
from: https://github.com/m5stack/M5Atom/blob/master/examples/ATOM_BASE/ATOM_Socket/AtomSocket....
Definition: AtomSocket.cpp:6
byte SerialTemps[24]
Definition: AtomSocket.h:28
bool SerialRead
Definition: AtomSocket.h:30
float GetKWh()
Definition: AtomSocket.cpp:134
uint32_t CurrentData
Definition: AtomSocket.h:35
float VF
Definition: AtomSocket.h:36
uint16_t GetPF()
Definition: AtomSocket.cpp:126
uint32_t VolPar
Definition: AtomSocket.h:32
byte SeriaDataLen
Definition: AtomSocket.h:29
float GetPowerFactor()
Definition: AtomSocket.cpp:120
uint32_t PowerPar
Definition: AtomSocket.h:34
float GetCurrentAnalog()
Definition: AtomSocket.cpp:97
void SerialReadLoop()
Definition: AtomSocket.cpp:37
void setCF(float Data)
Definition: AtomSocket.cpp:33
uint32_t GetPFAll()
Definition: AtomSocket.cpp:130