Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Bridge.h>
- #include <BridgeClient.h>
- #include <BridgeServer.h>
- #include <HttpClient.h>
- #include <ArduinoJson.h>
- #include "EmonLib.h"
- #define PIN_EMON_TX_SHIELD_LED 9
- #define DELAY_LOOP 0
- #define SECOND_UNIT 1000
- #define SEND_READ false
- #define SEND_READ_SECONDS 15
- #define URL_SEND_READ "http://192.168.240.154/AddRead.aspx"
- #define APPARENT_POWER "apparent_power"
- #define IRMS "irms"
- #define POWER_FACTOR "power_factor"
- #define REAL_POWER "real_power"
- #define VRMS "vrms"
- unsigned long _ReadTime;
- unsigned long _RutineTime;
- unsigned long _SendReadTime;
- BridgeServer _Server;
- EnergyMonitor _CT1;
- void setup() {
- Serial.begin(9600);
- delay(5 * SECOND_UNIT);
- if (Serial) {
- Serial.println();
- Serial.println("Iniciando...");
- Serial.println();
- }
- pinMode(13, OUTPUT);
- digitalWrite(13, LOW);
- Bridge.begin();
- digitalWrite(13, HIGH);
- _Server.listenOnLocalhost();
- _Server.begin();
- _CT1.voltage(0, 140.8, 1.7);
- _CT1.current(1, 60.606);
- pinMode(PIN_EMON_TX_SHIELD_LED, OUTPUT);
- if (SEND_READ) {
- _SendReadTime = millis() + (10 * SECOND_UNIT);
- }
- }
- void loop() {
- _ReadTime = millis();
- digitalWrite(PIN_EMON_TX_SHIELD_LED, HIGH);
- _CT1.calcVI(20, 2000);
- digitalWrite(PIN_EMON_TX_SHIELD_LED, LOW);
- _ReadTime = millis() - _ReadTime;
- _RutineTime = millis();
- if (Serial) {
- for (int i = 1; i <= 3; i++) {
- Serial.print("==================================================");
- }
- Serial.println();
- Serial.println();
- Serial.print("> Tiempo de lectura: ");
- if (_ReadTime >= SECOND_UNIT) {
- Serial.print(_ReadTime / SECOND_UNIT);
- Serial.print(" s");
- } else {
- Serial.print(_ReadTime);
- Serial.print(" ms");
- }
- Serial.println();
- Serial.println();
- }
- printRead();
- requestRead();
- if (SEND_READ && millis() >= _SendReadTime) {
- sendRead();
- _SendReadTime = millis() + (SEND_READ_SECONDS * SECOND_UNIT);
- }
- _RutineTime = millis() - _RutineTime;
- const int duration = DELAY_LOOP - (_ReadTime + _RutineTime);
- if (duration > 0) {
- delay(duration);
- }
- }
- void printRead() {
- if (Serial) {
- Serial.print("Voltaje: ");
- Serial.print(validateValue(_CT1.Vrms));
- Serial.print(" V");
- Serial.println();
- Serial.print("Corriente: ");
- Serial.print(validateValue(_CT1.Irms));
- Serial.print(" A");
- Serial.println();
- Serial.print("Potencia real: ");
- Serial.print(validateValue(_CT1.realPower));
- Serial.print(" W");
- Serial.println();
- Serial.print("Potencia aparente: ");
- Serial.print(validateValue(_CT1.apparentPower));
- Serial.print(" W");
- Serial.println();
- Serial.print("Factor de potencia: ");
- Serial.print(validateValue(_CT1.powerFactor));
- Serial.println();
- Serial.println();
- }
- }
- void sendRead() {
- String URL = URL_SEND_READ;
- URL += "?" + paramURL(VRMS, _CT1.Vrms);
- URL += "&" + paramURL(IRMS, _CT1.Irms);
- URL += "&" + paramURL(REAL_POWER, _CT1.realPower);
- URL += "&" + paramURL(APPARENT_POWER, _CT1.apparentPower);
- URL += "&" + paramURL(POWER_FACTOR, _CT1.powerFactor);
- HttpClient client;
- client.get(URL);
- if (Serial) {
- Serial.println("> Enviando lectura... " + URL);
- Serial.println();
- }
- if (client.available()) {
- while (client.available()) {
- const char r = client.read();
- if (Serial) {
- if (r == '0') {
- Serial.println("Respuesta: No se guardo la lectura");
- } else if (r == '1') {
- Serial.println("Respuesta: Lectura guardada");
- } else {
- Serial.println("Sin respuesta");
- }
- Serial.println();
- }
- break;
- }
- } else if (Serial) {
- Serial.println("Servidor no disponible");
- Serial.println();
- }
- }
- void requestRead() {
- BridgeClient client = _Server.accept();
- if (client) {
- if (Serial) {
- Serial.println("> Lectura solicitada");
- }
- StaticJsonBuffer<200> jsonBuffer;
- JsonObject& json = jsonBuffer.createObject();
- json[VRMS] = validateValue(_CT1.Vrms).toFloat();
- json[IRMS] = validateValue(_CT1.Irms).toFloat();
- json[REAL_POWER] = validateValue(_CT1.realPower).toFloat();
- json[APPARENT_POWER] = validateValue(_CT1.apparentPower).toFloat();
- json[POWER_FACTOR] = validateValue(_CT1.powerFactor).toFloat();
- json.prettyPrintTo(client);
- if (Serial) {
- Serial.println();
- json.prettyPrintTo(Serial);
- Serial.println();
- Serial.println();
- }
- client.stop();
- }
- }
- String paramURL(String key, float value) {
- return key + String("=") + validateValue(value);
- }
- String validateValue(float value) {
- return String(abs(value), 2);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement