Comments (6)
Hi,
you can find information on that method here
https://www.mischianti.org/2020/08/20/abb-aurora-pv-inverter-library-for-arduino-esp8266-and-esp32/#Measure_request_to_the_DSP
Bye Renzo
from abb_aurora_solar_inverter_library.
Yes that is the article I am using as a reference however the data seems not to be returned
from abb_aurora_solar_inverter_library.
Hi,
add your code to this issue and we are going to check.
Bye Renzo
from abb_aurora_solar_inverter_library.
Code below. There is some code which is specific to ESPHome and HomeAssistant.
#include <Aurora.h>
#include "esphome.h"
#define RED_LED_PIN 13
#define LED_PIN 12
Aurora inverter = Aurora(2, 3, 1, 5);
class AuroraSensor : public PollingComponent {
public:
TextSensor *DcDcChannel1State_sensor = new TextSensor();
TextSensor *DateTime_sensor = new TextSensor();
TextSensor *SerialNumber_sensor = new TextSensor();
TextSensor *InverterName_sensor = new TextSensor();
Sensor *PowerIn1_sensor = new Sensor();
Sensor *PowerIn2_sensor = new Sensor();
Sensor *GridPower_sensor = new Sensor();
Sensor *TemperatureInverter_sensor = new Sensor();
Sensor *TemperatureBooster_sensor = new Sensor();
Sensor *DayCumulatedEnergy_sensor = new Sensor();
Sensor *VIn1_sensor = new Sensor();
Sensor *IIn1_sensor = new Sensor();
Sensor *VIn2_sensor = new Sensor();
Sensor *IIn2_sensor = new Sensor();
Sensor *IsolationResistance_sensor = new Sensor();
Sensor *PowerPeak_sensor = new Sensor();
Sensor *PowerPeakToday_sensor = new Sensor();
AuroraSensor() : PollingComponent(60000) { }
void setup() override
{
pinMode(RED_LED_PIN, OUTPUT);
pinMode(LED_PIN, OUTPUT);
inverter.begin();
ESP_LOGD("Aurora", "Setup ok");
digitalWrite(LED_PIN, HIGH);
}
void update() override
{
digitalWrite(RED_LED_PIN, HIGH);
ESP_LOGD("Aurora", "-- Init update data --");
Aurora::DataSystemSerialNumber dataSystemSerialNumber = inverter.readSystemSerialNumber();
SerialNumber_sensor->publish_state(dataSystemSerialNumber.SerialNumber.c_str());
Aurora::DataTimeDate dataTimeDate = inverter.readTimeDate();
DateTime_sensor->publish_state(dataTimeDate.getDateTimeString().c_str());
Aurora::DataVersion dataVersion = inverter.readVersion();
InverterName_sensor->publish_state(dataVersion.getModelName().name.c_str());
Aurora::DataCumulatedEnergy cumulatedEnergy = inverter.readCumulatedEnergy(CUMULATED_DAILY_ENERGY);
DayCumulatedEnergy_sensor->publish_state(cumulatedEnergy.energy);
Aurora::DataDSP VIn1dataDSP = inverter.readDSP(DSP_VOLTAGE_ALL);
ESP_LOGD("Aurora", "Read state --> %d",VIn1dataDSP.state.readState);
if (VIn1dataDSP.state.readState == 1) {
ESP_LOGD("Aurora", "VIn1dataDSP: %s",VIn1dataDSP.value);
VIn1_sensor->publish_state(VIn1dataDSP.value);
}
Aurora::DataDSP VIn2dataDSP = inverter.readDSP(DSP_VOLTAGE_GT);
if (VIn2dataDSP.state.readState == 1) {
VIn2_sensor->publish_state(VIn2dataDSP.value);
}
Aurora::DataDSP IIn1dataDSP = inverter.readDSP(DSP_CURRENT_ALL);
if (IIn1dataDSP.state.readState == 1) {
IIn1_sensor->publish_state(IIn1dataDSP.value);
}
Aurora::DataDSP IIn2dataDSP = inverter.readDSP(DSP_CURRENT_GT);
if (IIn2dataDSP.state.readState == 1) {
IIn2_sensor->publish_state(IIn2dataDSP.value);
}
Aurora::DataDSP TemperatureInverterdataDSP = inverter.readDSP(DSP_INVERTER_TEMPERATURE_GT);
if (TemperatureInverterdataDSP.state.readState == 1) {
TemperatureInverter_sensor->publish_state(TemperatureInverterdataDSP.value);
}
Aurora::DataDSP TemperatureBoosterdataDSP = inverter.readDSP(DSP_BOOSTER_TEMPERATURE_GT);
if (TemperatureBoosterdataDSP.state.readState == 1) {
TemperatureBooster_sensor->publish_state(TemperatureBoosterdataDSP.value);
}
Aurora::DataDSP PowerIn1dataDSP = inverter.readDSP(DSP_PIN1_ALL);
if (PowerIn1dataDSP.state.readState == 1) {
PowerIn1_sensor->publish_state(PowerIn1dataDSP.value);
}
Aurora::DataDSP PowerIn2dataDSP = inverter.readDSP(DSP_PIN2);
if (PowerIn2dataDSP.state.readState == 1) {
PowerIn2_sensor->publish_state(PowerIn2dataDSP.value);
}
Aurora::DataDSP GridPowerdataDSP = inverter.readDSP(DSP_GRID_POWER_ALL);
if (GridPowerdataDSP.state.readState == 1) {
GridPower_sensor->publish_state(GridPowerdataDSP.value);
}
Aurora::DataDSP IsolationResistancedataDSP = inverter.readDSP(DSP_ISOLATION_RESISTANCE_RISO_ALL);
if (IsolationResistancedataDSP.state.readState == 1) {
IsolationResistance_sensor->publish_state(IsolationResistancedataDSP.value);
}
Aurora::DataDSP PowerPeakdataDSP = inverter.readDSP(DSP_POWER_PEAK_ALL);
if (PowerPeakdataDSP.state.readState == 1) {
PowerPeak_sensor->publish_state(PowerPeakdataDSP.value);
}
Aurora::DataDSP PowerPeakTodaydataDSP = inverter.readDSP(DSP_POWER_PEAK_TODAY_ALL);
if (PowerPeakTodaydataDSP.state.readState == 1) {
PowerPeakToday_sensor->publish_state(PowerPeakTodaydataDSP.value);
}
ESP_LOGD("Aurora", "-- Done update data --");
digitalWrite(RED_LED_PIN, LOW);
}
};
from abb_aurora_solar_inverter_library.
ok so I updated the code and this is the output!!
#include <Aurora.h>
#include "esphome.h"
#define RED_LED_PIN 13
#define LED_PIN 12
Aurora inverter = Aurora(2, 3, 1, 5);
class AuroraSensor : public PollingComponent {
public:
TextSensor *DcDcChannel1State_sensor = new TextSensor();
TextSensor *DateTime_sensor = new TextSensor();
TextSensor *SerialNumber_sensor = new TextSensor();
TextSensor *InverterName_sensor = new TextSensor();
Sensor *PowerIn1_sensor = new Sensor();
Sensor *PowerIn2_sensor = new Sensor();
Sensor *GridPower_sensor = new Sensor();
Sensor *TemperatureInverter_sensor = new Sensor();
Sensor *TemperatureBooster_sensor = new Sensor();
Sensor *DayCumulatedEnergy_sensor = new Sensor();
Sensor *WeekCumulatedEnergy_sensor = new Sensor();
Sensor *SevenDayCumulatedEnergy_sensor = new Sensor();
Sensor *MonthCumulatedEnergy_sensor = new Sensor();
Sensor *YearCumulatedEnergy_sensor = new Sensor();
Sensor *LifetimeCumulatedEnergy_sensor = new Sensor();
Sensor *SinceResetEnergy_sensor = new Sensor();
Sensor *VIn1_sensor = new Sensor();
Sensor *IIn1_sensor = new Sensor();
Sensor *VIn2_sensor = new Sensor();
Sensor *IIn2_sensor = new Sensor();
Sensor *IsolationResistance_sensor = new Sensor();
Sensor *PowerPeak_sensor = new Sensor();
Sensor *PowerPeakToday_sensor = new Sensor();
AuroraSensor() : PollingComponent(60000) { }
void setup() override
{
pinMode(RED_LED_PIN, OUTPUT);
pinMode(LED_PIN, OUTPUT);
inverter.begin();
ESP_LOGD("Aurora", "Setup ok");
digitalWrite(LED_PIN, HIGH);
}
void update() override
{
digitalWrite(RED_LED_PIN, HIGH);
ESP_LOGD("Aurora", "-- Init update data --");
Aurora::DataSystemSerialNumber dataSystemSerialNumber = inverter.readSystemSerialNumber();
SerialNumber_sensor->publish_state(dataSystemSerialNumber.SerialNumber.c_str());
Aurora::DataTimeDate dataTimeDate = inverter.readTimeDate();
DateTime_sensor->publish_state(dataTimeDate.getDateTimeString().c_str());
Aurora::DataVersion dataVersion = inverter.readVersion();
InverterName_sensor->publish_state(dataVersion.getModelName().name.c_str());
// ------------- Energy Sensors ------------------
Aurora::DataCumulatedEnergy cumulatedDayEnergy = inverter.readCumulatedEnergy(CUMULATED_DAILY_ENERGY);
DayCumulatedEnergy_sensor->publish_state(cumulatedDayEnergy.energy);
Aurora::DataCumulatedEnergy cumulatedWeekEnergy = inverter.readCumulatedEnergy(CUMULATED_WEEKLY_ENERGY);
WeekCumulatedEnergy_sensor->publish_state(cumulatedWeekEnergy.energy);
Aurora::DataCumulatedEnergy cumulatedSevenDayEnergy = inverter.readCumulatedEnergy(CUMULATED_ENERGY_OF_LAST_7_DAYS);
SevenDayCumulatedEnergy_sensor->publish_state(cumulatedSevenDayEnergy.energy);
Aurora::DataCumulatedEnergy cumulatedMonthEnergy = inverter.readCumulatedEnergy(CUMULATED_MONTHLY_ENERGY);
MonthCumulatedEnergy_sensor->publish_state(cumulatedMonthEnergy.energy);
Aurora::DataCumulatedEnergy cumulatedYearEnergy = inverter.readCumulatedEnergy(CUMULATED_YEARLY_ENERGY);
YearCumulatedEnergy_sensor->publish_state(cumulatedYearEnergy.energy);
Aurora::DataCumulatedEnergy cumulatedTotalEnergy = inverter.readCumulatedEnergy(CUMULATED_TOTAL_ENERGY_LIFETIME);
LifetimeCumulatedEnergy_sensor->publish_state(cumulatedTotalEnergy.energy);
Aurora::DataCumulatedEnergy cumulatedSinceResetEnergy = inverter.readCumulatedEnergy(CUMULATED_PARTIAL_ENERGY_SINCE_RESET);
SinceResetEnergy_sensor->publish_state(cumulatedSinceResetEnergy.energy);
// ------------- END Energy Sensors ------------------
Aurora::DataDSP VIn1dataDSP = inverter.readDSP(DSP_VOLTAGE_ALL);
ESP_LOGD("Aurora", "Transmission state --> %s",VIn1dataDSP.state.getTransmissionState().c_str());
ESP_LOGD("Aurora", "Global state --> %s",VIn1dataDSP.state.getGlobalState().c_str());
ESP_LOGD("Aurora", "Read state --> %d",VIn1dataDSP.state.readState);
if (VIn1dataDSP.state.readState == 1) {
ESP_LOGD("Aurora", "VIn1dataDSP: %s",VIn1dataDSP.value);
VIn1_sensor->publish_state(VIn1dataDSP.value);
}
Aurora::DataDSP VIn2dataDSP = inverter.readDSP(DSP_VOLTAGE_GT);
if (VIn2dataDSP.state.readState == 1) {
VIn2_sensor->publish_state(VIn2dataDSP.value);
}
Aurora::DataDSP IIn1dataDSP = inverter.readDSP(DSP_CURRENT_ALL);
if (IIn1dataDSP.state.readState == 1) {
IIn1_sensor->publish_state(IIn1dataDSP.value);
}
Aurora::DataDSP IIn2dataDSP = inverter.readDSP(DSP_CURRENT_GT);
if (IIn2dataDSP.state.readState == 1) {
IIn2_sensor->publish_state(IIn2dataDSP.value);
}
Aurora::DataDSP TemperatureInverterdataDSP = inverter.readDSP(DSP_INVERTER_TEMPERATURE_GT);
if (TemperatureInverterdataDSP.state.readState == 1) {
TemperatureInverter_sensor->publish_state(TemperatureInverterdataDSP.value);
}
Aurora::DataDSP TemperatureBoosterdataDSP = inverter.readDSP(DSP_BOOSTER_TEMPERATURE_GT);
if (TemperatureBoosterdataDSP.state.readState == 1) {
TemperatureBooster_sensor->publish_state(TemperatureBoosterdataDSP.value);
}
Aurora::DataDSP PowerIn1dataDSP = inverter.readDSP(DSP_PIN1_ALL);
if (PowerIn1dataDSP.state.readState == 1) {
PowerIn1_sensor->publish_state(PowerIn1dataDSP.value);
}
Aurora::DataDSP PowerIn2dataDSP = inverter.readDSP(DSP_PIN2);
if (PowerIn2dataDSP.state.readState == 1) {
PowerIn2_sensor->publish_state(PowerIn2dataDSP.value);
}
Aurora::DataDSP GridPowerdataDSP = inverter.readDSP(DSP_GRID_POWER_ALL);
if (GridPowerdataDSP.state.readState == 1) {
GridPower_sensor->publish_state(GridPowerdataDSP.value);
}
Aurora::DataDSP IsolationResistancedataDSP = inverter.readDSP(DSP_ISOLATION_RESISTANCE_RISO_ALL);
if (IsolationResistancedataDSP.state.readState == 1) {
IsolationResistance_sensor->publish_state(IsolationResistancedataDSP.value);
}
Aurora::DataDSP PowerPeakdataDSP = inverter.readDSP(DSP_POWER_PEAK_ALL);
if (PowerPeakdataDSP.state.readState == 1) {
PowerPeak_sensor->publish_state(PowerPeakdataDSP.value);
}
Aurora::DataDSP PowerPeakTodaydataDSP = inverter.readDSP(DSP_POWER_PEAK_TODAY_ALL);
if (PowerPeakTodaydataDSP.state.readState == 1) {
PowerPeakToday_sensor->publish_state(PowerPeakTodaydataDSP.value);
}
ESP_LOGD("Aurora", "-- Done update data --");
digitalWrite(RED_LED_PIN, LOW);
}
};
from abb_aurora_solar_inverter_library.
Hi fencers,
the coffee seems good, check my code that work with my inverter.
https://github.com/xreef/Aurora_Web_Invert_Monitor/blob/056c5ecba246478ee3b7c47151d0cda3456b2dc0/Aurora-Web-Invert-Monitor.ino
Bye Renzo
from abb_aurora_solar_inverter_library.
Related Issues (6)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from abb_aurora_solar_inverter_library.