// Wemos D1 mini temp sensor in each room // SCL pin = d1 SDA = d2 // OLED display 128x64 //#define CAYENNE_DEBUG //#define CAYENNE_PRINT Serial #include #include #include #include #include #include #include #define ONE_WIRE_BUS D4 // DS18B20 pin OneWire oneWire(ONE_WIRE_BUS); DallasTemperature DS18B20(&oneWire); #define OLED_RESET 4 Adafruit_SSD1306 display(OLED_RESET); char ssid[] = "ssid"; char wifiPassword[] = "pass"; // Cayenne authentication info. char username[] = "username"; char password[] = "password"; char clientID[] = "clientID"; unsigned long lastMillis = 0; void setup() { Serial.begin(115200); pinMode(D0, OUTPUT); // Initialize display display.begin(SSD1306_SWITCHCAPVCC, 0x78>>1); //display.display(); delay(500); display.clearDisplay(); Cayenne.begin(username, password, clientID, ssid, wifiPassword); } void displayTemp(float temp) { display.setTextSize(1); display.setCursor(32,0); display.println("Temperature"); display.setTextSize(3); display.setTextColor(WHITE); display.setCursor(20,20); display.print(temp); display.display(); display.clearDisplay(); } void loop() { Cayenne.loop(); DS18B20.requestTemperatures(); float tmp; tmp = (DS18B20.getTempCByIndex(0)); if (millis() - lastMillis > 10000) { lastMillis = millis(); Cayenne.virtualWrite(0, tmp); } displayTemp(tmp); } CAYENNE_IN(1) { int currentValue = getValue.asInt(); if (currentValue == 1) { digitalWrite(D0, HIGH); } else { digitalWrite(D0, LOW); } } CAYENNE_IN_DEFAULT() { CAYENNE_LOG("CAYENNE_IN_DEFAULT(%u) - %s, %s", request.channel, getValue.getId(), getValue.asString()); }