#include #include "WiFi.h" #include "WiFiMulti.h" #include "src/InfluxDB-Client-for-Arduino/src/InfluxDbClient.h" #include "src/EmonLib/EmonLib.h" #include "config.h" #define Apin 32 #define Vpin 33 EnergyMonitor emon1; // Create an instance WiFiMulti WiFiMulti; InfluxDBClient client(INFLUXDB_URL, INFLUXDB_DB_NAME); // Data point Point sensor("solar_status"); void ConnectToWiFiMulti(){ WiFi.mode(WIFI_STA); WiFiMulti.addAP(SSID, WiFiPassword); Serial.println("Connecting Wifi..."); while(WiFiMulti.run() != WL_CONNECTED) { delay(100); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } void ConnectToInflux(){ // Add constant tags - only once sensor.addTag("Phase", "Solar 1"); // Check server connection if (client.validateConnection()) { Serial.print("Connected to InfluxDB: "); Serial.println(client.getServerUrl()); } else { Serial.print("InfluxDB connection failed: "); Serial.println(client.getLastErrorMessage()); } } void setup() { Serial.begin(115200); ConnectToWiFiMulti(); ConnectToInflux(); analogReadResolution(ADC_BITS); emon1.voltage(Vpin, 234.26, 1.7); // Voltage: input pin, calibration, phase_shift emon1.current(Apin, 111.1); // Current: input pin, calibration. } void loop() { emon1.calcVI(20,2000); // Calculate all. No.of half wavelengths (crossings), time-out emon1.serialprint(); // Print out all variables (realpower, apparent power, Vrms, Irms, power factor) delay(5000); //influx to be implemented... Point sensor("wifi_status"); }