change to atm90e26

master
Andrew Woodlee 3 weeks ago
parent b6c2810ddd
commit 7305b90d77

@ -9,8 +9,6 @@
#include <freertos/queue.h>
#include <idf_additions.h>
// Turn build flags (Macros) into strings
#define ST(A) #A
#define STR(A) ST(A)
@ -49,7 +47,7 @@
#include <transformerMonitorServerCert.h>
#endif
// pins for UART 2
// pins for UART
#define PIN_SerialATM_RX 16 //RX pin, CHANGE IT according to your board
#define PIN_SerialATM_TX 17 //TX pin, CHANGE IT according to your board
@ -59,27 +57,13 @@ void messageReceived(String &topic, String &payload);
WiFiClientSecure wifiClient;
PubSubClient mqttClient;
// HardwareSerial ATMSerial(1); //1 = just hardware serial number. ESP32 supports 3 hardware serials. UART 0 usually for flashing.
#ifdef ATM90E26_EIC
#include <ATM90E26_IC.h>
ATM90E26_IC eic;
#include <energyic_UART.h>
#else
// extract the ATM90E36 CT LINE from its macro
#ifdef TM_ATM90E36_CT_LINE
char const ctLine = (char) STR(TM_ATM90E36_CT_LINE);
#else // if nothing is defined, use 'A' as the default value
char const ctLine = 'A';
#endif
#include <ATM90E36_IC.h>
ATM90E36 ic;
ATM90E36_IC eic(ctLine, ic);
HardwareSerial ATMSerial(1); //1 = just hardware serial number. ESP32 supports 3 hardware serials. UART 0 usually for flashing.
ATM90E26_UART eic(&ATMSerial);
#endif
// we are using the transformer's name to provide a unique ID
char* client_id = "name-of-transformer";
@ -127,8 +111,9 @@ struct energyData {
};
struct xformerMonitorData {
unsigned short sys0Status, sys1Status;
double lineCurrent, neutralCurrent, lineVoltage, phase;
unsigned short sysStatus, meterStatus;
double neutralCurrent, lineVoltage, phase;
float lineCurrent;
tm *timeInfo;
tempData temps;
powerData power;

@ -17,11 +17,12 @@ board = featheresp32
framework = arduino
extra_scripts = pre:envSetup.py
monitor_speed = 9600
upload_port = COM6
upload_port = COM7
[env:dev]
build_flags = -D DEV ${env.build_flags}
build_flags = -D DEV ${env.build_flags} -D ATM90E26_EIC
lib_deps =
SPI
knolleary/pubsubclient
https://github.com/whatnick/ATM90E26_Arduino
bblanchon/ArduinoJson @ ^6.21.3

@ -1,7 +1,7 @@
#include <energyic_UART.h>
#define PIN_SerialATM_RX 9 //RX pin, CHANGE IT according to your board
#define PIN_SerialATM_TX 10 //TX pin, CHANGE IT according to your board
#define PIN_SerialATM_RX 19 //RX pin, CHANGE IT according to your board
#define PIN_SerialATM_TX 13 //TX pin, CHANGE IT according to your board
HardwareSerial ATMSerial(1); //1 = just hardware serial number. ESP32 supports 3 hardware serials. UART 0 usually for flashing.
@ -35,7 +35,7 @@ void loop() {
{
while (1);
}
Serial.println(eic.GetSysStatus(),HEX);
delay(10);
Serial.print("Meter Status:");

@ -40,12 +40,12 @@ void setup()
#endif
// Start the DS18B20 sensors
// monitorTempSensors.cabinet.begin();
// monitorTempSensors.oil.begin();
monitorTempSensors.cabinet.begin();
monitorTempSensors.oil.begin();
// // Get each DS18B20 sensors' address
// monitorTempSensors.oil.getAddress(oilTempSensorAddr, 0);
// monitorTempSensors.cabinet.getAddress(cabinetTempSensorAddr, 0);
// Get each DS18B20 sensors' address
monitorTempSensors.oil.getAddress(oilTempSensorAddr, 0);
monitorTempSensors.cabinet.getAddress(cabinetTempSensorAddr, 0);
@ -153,17 +153,19 @@ void loop()
char timeBuffer[32];
strftime(timeBuffer, sizeof(timeBuffer), "%FT%TZ", mqttSensorData.timeInfo);
// Sensor is not working
if (mqttSensorData.sys0Status == 6555 || mqttSensorData.sys0Status == 0)
if (mqttSensorData.sysStatus == 6555 || mqttSensorData.sysStatus == 0)
{
setLEDColor(255,0,0);
} else {
setLEDColor(0,255,0);
}
mqttJsonData["deviceId"] = client_id;
mqttJsonData["time"] = timeBuffer;
mqttJsonData["sys0Status"] = mqttSensorData.sys0Status;
mqttJsonData["sys1Status"] = mqttSensorData.sys1Status;
mqttJsonData["meterStatus"] = mqttSensorData.meterStatus;
mqttJsonData["sysStatus"] = mqttSensorData.sysStatus;
mqttJsonData["current"] = mqttSensorData.lineCurrent;
mqttJsonData["neutralCurrent"] = mqttSensorData.neutralCurrent;
mqttJsonData["voltage"] = mqttSensorData.lineCurrent;
@ -210,27 +212,12 @@ void setupMQTTClient()
// depending on which monitor is used, the function will have call different functions
void setupEnergyMonitor()
{
#ifdef ATM90E26_EIC
ATM90E26_IC eic;
#else
/* Initialize the serial port to host */
/*
The ATM90E36 has to be setup via SPI.
SPI for the ESP32:
- CLK: 18
- MISO: 19
- MOSI: 23
- CS: 5
*/
SPI.begin(SCK, MISO, MOSI, SS);
delay(1000);
eic.begin();
// Buad rate for UART serial
// Serial config
// Serial RX pin
// Serial TX pin
ATMSerial.begin(9600, SERIAL_8N1, PIN_SerialATM_RX, PIN_SerialATM_TX);
#endif
}
// readEICData: reads the EIC and inserts data into queue
@ -275,11 +262,17 @@ void IRAM_ATTR ReadData(){
time(&now);
// set {"time":"2021-05-04T13:13:04Z"}
sensorData.timeInfo = gmtime(&now);
sensorData.sys0Status = eic.GetMeterStatus0();
sensorData.sys1Status = eic.GetMeterStatus1();
// in hex
sensorData.meterStatus = eic.GetMeterStatus();
sensorData.sysStatus = eic.GetSysStatus();
sensorData.lineVoltage = eic.GetLineVoltage();
sensorData.lineCurrent = eic.GetLineCurrent();
sensorData.neutralCurrent = eic.GetLineCurrentN();
// convert lineVoltage and lineCurrent to floats
sensorData.power.factor = eic.GetPowerFactor();
xQueueSend(eicDataQueue, &sensorData, portMAX_DELAY);

Loading…
Cancel
Save