#define CAYENNE_PRINT Serial #include #include #include Adafruit_INA219 ina219; #include #define OLED_RESET 4 Adafruit_SSD1306 display(OLED_RESET); float shuntvoltage = 0; float busvoltage = 0; float current_mA = 0; float current_A = 0; float loadvoltage = 0; float power_W = 0; // WiFi network info. char ssid[] = "SSID"; char wifiPassword[] = "PASSWORD"; // Cayenne authentication info. This should be obtained from the Cayenne Dashboard. char username[] = "username"; char password[] = "password"; char clientID[] = "clientID"; unsigned long lastMillis = 0; void setup() { Serial.begin(9600); Cayenne.begin(username, password, clientID, ssid, wifiPassword); uint32_t currentFrequency; ina219.begin(); display.begin(SSD1306_SWITCHCAPVCC, 0x3C); } 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); shuntvoltage = ina219.getShuntVoltage_mV(); busvoltage = ina219.getBusVoltage_V(); current_mA = ina219.getCurrent_mA(); loadvoltage = busvoltage + (shuntvoltage / 1000); current_A = current_mA / 1000; power_W = current_A * loadvoltage; display.clearDisplay(); display.setTextColor(WHITE); display.setTextSize(1); display.setCursor(0, 0); display.println(loadvoltage); display.setCursor(45, 0); display.println("V"); display.setCursor(0, 10); display.println(current_A); display.setCursor(45, 10); display.println("A"); display.setCursor(0, 20); display.println(power_W); display.setCursor(45, 20); display.println("W"); display.display(); Cayenne.virtualWrite(V1, loadvoltage); Cayenne.virtualWrite(V2, current_A); Cayenne.virtualWrite(V3, power_W); } }