Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Dhcp.h>
- #include <Dns.h>
- #include <Ethernet2.h>
- #include <EthernetClient.h>
- #include <EthernetServer.h>
- #include <EthernetUdp2.h>
- #include <Twitter.h>
- #include <util.h>
- #include <millisDelay.h>
- #include <PubSubClient.h>
- #define CLIENT_ID "Power Meter I/O"
- millisDelay publishDelay;
- #define ct1 A0
- #define ct2 A1
- uint8_t mac[6] = {0xDE, 0xAD, 0x5E, 0xEF, 0x8E, 0xED};
- byte ip[] = { 192, 168, 1, 50 }; //SET STATIC IP ADDRESS OF MODULE - Change to something in your ip range
- EthernetClient ethClient;
- PubSubClient mqttClient;
- //CT Fine Tuning - Value used for math equation
- float ctdivision = 10.23;
- void setup() {
- pinMode(A0, INPUT);
- pinMode(A1, INPUT);
- // setup serial communication
- Serial.begin(9600);
- while (!Serial) {};
- Serial.println(F("Energy Monitor I/O"));
- Serial.println();
- Ethernet.begin(mac,ip);
- Serial.print("IP address: ");
- Serial.println(Ethernet.localIP());
- Serial.println();
- mqttClient.setClient(ethClient);
- mqttClient.setServer( "192.168.1.10", 1883); //SET TO YOUR MQTT SERVER IP
- mqttClient.setCallback(callback);
- publishDelay.start(1000);
- }
- void reconnect() {
- // Loop until we're reconnected
- while (!mqttClient.connected()) {
- Serial.print("Attempting MQTT connection...");
- if (mqttClient.connect(CLIENT_ID)) {
- Serial.println("connected");
- mqttClient.publish("sensor/power/connect", "true");
- } else {
- Serial.print("failed, rc=");
- Serial.print(mqttClient.state());
- Serial.println(" try again in 5 seconds");
- // Wait 5 seconds before retrying
- delay(5000);
- }
- }
- }
- void loop() {
- if (!mqttClient.connected()) {
- reconnect();
- }
- mqttClient.loop();
- if (publishDelay.justFinished()) {
- sendData();
- publishDelay.repeat();
- }
- }
- void sendData() {
- if (!mqttClient.connected()) {
- reconnect();
- }
- int ct1Reading = analogRead(ct1);
- ct1Reading = ct1Reading / ctdivision;
- char ct1Amp[8];
- dtostrf(ct1Reading, 1, 2, ct1Amp);
- int ct2Reading = analogRead(ct2);
- ct2Reading = ct2Reading / ctdivision;
- char ct2Amp[8];
- dtostrf(ct2Reading, 1, 2, ct2Amp);
- Serial.println("------------------------------------");
- Serial.println("Current Data - 1 Second Refresh");
- Serial.println();
- Serial.print("L1:");
- Serial.println(ct1Amp);
- Serial.println(ct1Reading);
- Serial.print("L2:");
- Serial.println(ct2Amp);
- Serial.println(ct2Reading);
- Serial.println("------------------------------------");
- if (mqttClient.connect(CLIENT_ID)) {
- mqttClient.publish("sensor/power/L1", ct1Amp);
- mqttClient.publish("sensor/power/L2", ct2Amp);
- }
- }
- void callback(char* topic, byte* payload, unsigned int length) {
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement