// This example shows how to connect DC shunt resistor to Cayenne using an ESP8266 and send/receive sample data. // Make sure you install the ESP8266 Board Package via the Arduino IDE Board Manager and select the correct ESP8266 board before compiling. //#define CAYENNE_DEBUG #define CAYENNE_PRINT Serial #include // WiFi network info. char ssid[] = "ssid"; char wifiPassword[] = "wifiPassword"; // Cayenne authentication info. This should be obtained from the Cayenne Dashboard. char username[] = "MQTT_USERNAME"; char password[] = "MQTT_PASSWORD"; char clientID[] = "CLIENT_ID"; unsigned long lastMillis = 0; float shuntR = 0.075; //Shunt resistor 0.075 ohm float shuntU; //Voltage on shunt resistor float current; void setup() { Serial.begin(9600); Cayenne.begin(username, password, clientID, ssid, wifiPassword); } void loop() { Cayenne.loop(); //Publish data every 1 seconds (1000 milliseconds). Change this value to publish at a different interval. if (millis() - lastMillis > 1000) { lastMillis = millis(); //Write data to Cayenne here. This example just sends the current uptime in milliseconds. Cayenne.virtualWrite(0, lastMillis); int analogValue = analogRead(A0); // read the input on analog pin 0 shuntU = 0.0009765625 * analogValue; // 0.0009765625 = 1 / 1024 current = shuntU / shuntR; Cayenne.virtualWrite(1, current, "current", "a"); } } //Default function for processing actuator commands from the Cayenne Dashboard. //You can also use functions for specific channels, e.g CAYENNE_IN(1) for channel 1 commands. CAYENNE_IN_DEFAULT() { CAYENNE_LOG("CAYENNE_IN_DEFAULT(%u) - %s, %s", request.channel, getValue.getId(), getValue.asString()); //Process message here. If there is an error set an error message using getValue.setError(), e.g getValue.setError("Error message"); }