<pre>#include <ESP8266WiFi.h> #include <PubSubClient.h> const int sense_Pin= A0; // Current Sensor input at Analog PIN A0 int mVperAmp = 66; // use 100 for 20A Module and 66 for 30A Module int RawValue= 0; int ACSoffset = 2500; double Voltage = 0; double Amps = 0; double Pwr = 0; // Change the credentials below, so your ESP8266 connects to your router const char* ssid = "Testing"; const char* password = "Test123"; // Change the variable to your Gateway (Raspberry Pi) IP address, so it connects to your MQTT broker const char* mqtt_server = "localhost"; WiFiClient espClient; PubSubClient client(espClient); void setup_current_sensor() { Serial.begin(9600); } void setup_wifi() { delay(10); // Connecting to a WiFi network Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.print("WiFi connected - ESP IP address: "); Serial.println(WiFi.localIP()); } // This functions is executed when some device publishes a message to a topic that your ESP8266 is subscribed to // Change the function below to add logic to your program, so when a device publishes a message to a topic that // your ESP8266 is subscribed you can actually do something void callback(String topic, byte* message, unsigned int length) { Serial.print("Message arrived on topic: "); Serial.print(topic); Serial.print(". Message: "); String messageTemp; for (int i = 0; i < length; i++) { Serial.print((char)message[i]); messageTemp += (char)message[i]; } Serial.println(); } // This functions reconnects your ESP8266 to your MQTT broker // Change the function below if you want to subscribe to more topics with your ESP8266 void reconnect() { // Loop until we're reconnected while (!client.connected()) { Serial.print("Attempting MQTT connection..."); // Attempt to connect if (client.connect("ESP8266Client")) { Serial.println("connected"); // Subscribe or resubscribe to a topic // You can subscribe to more topics (to control more LEDs in this example) client.subscribe("Electricity Energy Monitoring System/Current"); } else { Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" try again in 5 seconds"); // Wait 5 seconds before retrying delay(5000); } } } // The setup function sets your ESP GPIOs to Outputs, starts the serial communication at a baud rate of 115200 // Sets your mqtt broker and sets the callback function // The callback function is what receives messages and actually controls the LEDs void setup() { Serial.begin(115200); setup_wifi(); client.setServer(mqtt_server, 1883); client.setCallback(callback); } float getVPP() { float result; int readValue; //value read from the sensor int maxValue = 0; // store max value here int minValue = 1024; // store min value here // Timers auxiliar variables long now = millis(); long lastMeasure = 0; } // For this project, you don't need to change anything in the loop function. Basically it ensures that you ESP is connected to your broker void loop() { //buttonState = digitalRead(buttonPin); RawValue= analogRead(sense_Pin); Voltage = (RawValue / 1024.0) * 5000; // Gets you mV Amps = ((Voltage - ACSoffset) / mVperAmp); Pwr = (Voltage * Amps); delay(10000); Serial.print("Raw Value : " ); // shows pre-scaled value Serial.print(RawValue); Serial.print("\nAmpere(A) : "); Serial.println(Amps,3); Serial.print("Voltage(mV) : "); Serial.println(Voltage,3); { if (!client.connected()) { reconnect(); } if(!client.loop()) client.connect("ESP8266Client"); } }
var
This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)