BLYNK
HOME       📲 GETTING STARTED       📗 DOCS       ❓HELP CENTER       👉 SKETCH BUILDER

[solved] Library 0.5.3 (shows error) with DallasTemperature or onewire?


#1

Hi

just tried to update with the new 0.5.3.

but now my temperature readings of a DS18B20 with the dallastemperature.h and onewire.h only shows %.3f in labels.
could it be the 0.5.3 update?

It also reboots alot…

“My” code below is a mess, I know…

/*************************************************************

  ITEAD Sonoff S31 and S20 for the Blynk app.
 *************************************************************/

/* Comment this out to disable prints and save space */
//#define BLYNK_PRINT Serial

#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SimpleTimer.h>
#include <TimeLib.h>
#include <WidgetRTC.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 1        // (nodemcu D4=2 & TX=1 & RX=3) This is the ESP8266 pin
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

int buttonPin = 0;              // Sonoff On/Off button
int relayPin = 12;              // Sonoff relay
int ledPin = 13;                // Sonoff green LED - always on

int relayStatus = 0;
int buttonState = LOW;          // variable for reading the pushbutton status
int lastButtonState = HIGH;     // previous state of the button
int relayState = LOW;
int ledState = LOW;

long lastTime = 0;             // the last time the output pin was toggled
long debounce = 200;           // the debounce time, increase if the output flickers


DeviceAddress tempSensor1 = { 0x28, 0xFF, 0x2E, 0x3E, 0x24, 0x17, 0x03, 0x25 }; // Temperature probe #1
float temperature1;     // Variables for storing temperatures

SimpleTimer timer;
WidgetRTC rtc;

char Date[16];
char Time[16];
int manual=0;

long startsecondswd;            // weekday start time in seconds
long stopsecondswd;             // weekday stop  time in seconds
long nowseconds;                // time now in seconds


// V1 is virtualbutton
// v2 test button for timer
// V8 is virtualLed-green
// V9 is greenstandyled
// V10 is virtualLed-blue
// V11 is Dateprint
// V12 is wifi signal
// v13 auto-manual
// V14 is virtual time-date picker
// V15 is DS18B20 sensor




// Your WiFi credentials.
// Set password to "" for open networks.
const char* ssid     = "xxx";
const char* password = "xxx";


char auth[] = "xxxxxxx"; // Sonoff S20 "1M(512k SPIFFS)"

WidgetLED led1(V10); // Widget Relay LED
WidgetLED led2(V8); // Widget Relay LED

BLYNK_WRITE(V1) { // Widget relay button
  relayStatus = param.asInt();
  if (relayStatus == 1) {
    relayState = HIGH;
  }
  else {
    relayState = LOW;
  }
} // end - BLYNK_WRITE(V1)


void setup() {
  WiFi.mode(WIFI_STA);
  //Serial.begin(115200);
  delay(10);

  Blynk.begin(auth, ssid, password);
  while (Blynk.connect() == false) {
    //Wait until connected
    Serial.print("trying to connect waiting");
  }
  rtc.begin();
  pinMode(buttonPin, INPUT);  // on/off button
  pinMode(relayPin, OUTPUT);  // relay
  pinMode(ledPin, OUTPUT);    // greenled
  digitalWrite(ledPin, LOW);  // always on
  
  //Setting automaticmode to on(1)
  Blynk.virtualWrite(V13, 0);
  
  timer.setInterval(100000L, sendWifi);
  timer.setInterval(60000L, syncRelay);
  timer.setInterval(1000,showCurrentTime);
  timer.setInterval(1000,ledStatus);
  timer.setInterval(1000,pushButton);

  //Setting tempSensor1
  sensors.begin();
  sensors.setResolution(tempSensor1, 12);
  timer.setInterval(10500L, sendSensor1);
  
} // end - setup()



BLYNK_WRITE(V9)
{
  int pinValue = param.asInt();         // assigning incoming value from pin V1 to a variable
  if (pinValue == 0) {                        // If value is 1 run this command
    digitalWrite(ledPin, HIGH);               //D4 output from Wemos D1 mini
    led2.off();
  }
  if (pinValue == 1) {                        // If value is 1 run this command
    digitalWrite(ledPin, millis()>>10 &1);              //D4 output from Wemos D1 mini
  }
  if (pinValue == 2)  {                                           // If value is 0 run this command
    digitalWrite(ledPin, LOW);
    led2.on();
  }
  
}




BLYNK_WRITE(V13)
{
  if (param.asInt()==1) 
  {
    manual=1;
  } 
  else 
  {
    manual=0;
  }
}



BLYNK_WRITE(V14)//datepicker 
{  
    if (manual==1)
      { 
      
      sprintf(Date, "%02d/%02d/%04d",  day(), month(), year());
      sprintf(Time, "%02d:%02d:%02d", hour(), minute(), second());
    
      TimeInputParam t(param);
      Serial.println(Time);
      Serial.println(Date);
    
      int dayadjustment = -1;  
      if(weekday() == 1){
        dayadjustment =  6; // needed for Sunday, Time library is day 1 and Blynk is day 7
      }
      if(t.isWeekdaySelected(weekday() + dayadjustment)){ //Time library starts week on Sunday, Blynk on Monday
            
      nowseconds = ((hour() * 3600) + (minute() * 60) + second());
      startsecondswd = (t.getStartHour() * 3600) + (t.getStartMinute() * 60);
      Serial.println(startsecondswd);  // used for debugging
      if(nowseconds >= startsecondswd){    
        
        if(nowseconds <= startsecondswd + 90){    // 90s on 60s timer ensures 1 trigger command is sent
          Blynk.virtualWrite(V1, 1);
          // code here to switch the relay ON
        }      
      }
      else
      {
      }
      stopsecondswd = (t.getStopHour() * 3600) + (t.getStopMinute() * 60);
      Serial.println(stopsecondswd);  // used for debugging
      if(nowseconds >= stopsecondswd){
        Blynk.virtualWrite(V1, 0);
        
        if(nowseconds <= stopsecondswd + 90){   // 90s on 60s timer ensures 1 trigger command is sent
          
         Blynk.virtualWrite(V1, 0);
          // code here to switch the relay OFF
        }              
      }
      else{
        if(nowseconds >= startsecondswd){  
          Blynk.virtualWrite(V1, 1);
          
         
        }          
      }
      }
      else
      {
       // nothing to do today, check again in 30 SECONDS time    
      }
      }
}



void pushButton() {
  buttonState = digitalRead(buttonPin);

  if (buttonState == HIGH && lastButtonState == LOW && millis() - lastTime > debounce) {
    if (relayState == HIGH) {
      relayState = LOW;
      Blynk.virtualWrite(V1, 0);
    }
    else {
      relayState = HIGH;
      Blynk.virtualWrite(V1, 1);
    }

    lastTime = millis();
  }

  digitalWrite(relayPin, relayState); // Relay open/close - digital pin 12
  lastButtonState = buttonState;
} //end - pushButton()

void ledStatus() { // Widget LED - relay status
  ledState = digitalRead(relayPin);
  if (ledState == HIGH)
    led1.on();
  else
    led1.off();
} // end - ledStatus()


void syncRelay()
{
  Blynk.syncAll();
  
  Serial.println("sync relay");
}


void showCurrentTime()
{
  String CurrentDate = String(day()) + '-' + monthShortStr(month()) + '-' + year();
  String CurrentTime = String(hour()) + ':' + minute() + ':' + second();
  String formattedDate = CurrentDate + String(" | ") + CurrentTime;
  Blynk.virtualWrite(V11,formattedDate);
}



void sendWifi() 
{
  Blynk.virtualWrite(12, map(WiFi.RSSI(), -105, -40, 0, 100) );
}


void sendSensor1() 
{
  sensors.requestTemperatures();                  // Polls the sensors
  temperature1 = sensors.getTempC(tempSensor1);   // Stores temp in F. Change getTempF to getTempC for celcius.
  Blynk.virtualWrite(15, temperature1);            // Send temp to Blynk virtual pin 1
}

void loop() {
  Blynk.run();
    timer.run();
  
 

}

#2

What is a new 2.5.3? :stuck_out_tongue_winking_eye:

If you meant the Blynk Library 0.5.3 then you also need to make sure your App and, if used Local Server, are also up to date as there was a small issue displaying floats that has been corrected.


#3

of course 0.5.3, edited org post :wink:

My blynk app is up to date, v.2.26.4


#4

Ah, sorry… it was the ESP CORE that needs updating… always recommended to search this forum for answers :stuck_out_tongue_winking_eye:


#5

thx, but dont think I would have guessed what to look for.

thanks for pointing in the right direction.


#6

updating esp8266 core board to v2.4.1 for arduino fixed the labels error (floating variable)