0 votes
asked in ESPaper by (440 points)
I purchased an ESPaper Plus kit and have configured variables for basic setup.

How do I add the following data to the display:

Feels Like?
Dew Point?
Wind Speed?
Humidity?
Pressure?
Precipitation?

2 Answers

+1 vote
answered by (2.9k points)
Hi, I dont have yet ESPaper hardware, but here are some hints:

Look at espaper-weatherstation.ino, the function drawCurrentWeatherDetail looks OK there, but maybe never called? It contains what you asked for.

All available strings are declared in in esp8266-weather-station library, see WundergroundConditions.h

currentTemp;
windSpeed;
windDir;
weatherIcon;
weatherText;
humidity;
pressure;
dewPoint;
precipitationToday;
feelslike;
UV;
observationTime;
date;
observationDate;
commented by (440 points)
I've spent four hours trying to figure this out and I'm still stumped!

Can you please help me with a single case example of how to display humidity on the Espaper?

I can probably apply that example to the other available strings like windDir.
commented by (2.9k points)
What happens if you put between lines 164 and 165 drawCurrentWeatherDetail();?
commented by (440 points)
lorol,

I placed drawCurrentWeatherDetail(); on line 165 and no effect on the display.  Please advise.

163    if (connected) {
164     updateData();
165     drawCurrentWeatherDetail();
166     gfx.fillBuffer(MINI_WHITE);
commented by (2.9k points)
You can try this for test:
...
    if (connected) {
      updateData();
      gfx.fillBuffer(MINI_WHITE);      //clear the background
      drawCurrentWeatherDetail();  //test if this will draw something
      gfx.commit();                                 //execute
    } else {
...

Sorry, I don't have the module to help you better.
+1 vote
answered by (160 points)
Hi,
in my soloution (with the hints of lorol) you get the Pressure, Humidity, ... but
you loose 3 of 4 forcasts and get space at the right side of the screen for the information.
You have to make some changes in 5 procedures:

void setup() {
...
      drawButtons();
      drawCurrentWeatherDetail(); // added
      gfx.commit();
...      
}

void drawCurrentWeather() {
...
  //  gfx.drawLine(0, 65, SCREEN_WIDTH, 65);            // changed to
  gfx.drawLine(0, 65, SCREEN_WIDTH / 2 + 22 , 65);    // new
  gfx.drawLine(SCREEN_WIDTH / 2  + 25, 12, SCREEN_WIDTH / 2  + 25, SCREEN_HEIGHT - 12); // added
...  
}

void drawForecast() {
  drawForecastDetail(SCREEN_WIDTH / 2 - 20, 15, 3);
  //  drawForecastDetail(SCREEN_WIDTH / 2 + 22, 15, 6);        // changed
  //  drawForecastDetail(SCREEN_WIDTH / 2 + 64, 15, 9);        // changed
  //  drawForecastDetail(SCREEN_WIDTH / 2 + 106, 15, 12);    // changed
}

void drawCurrentWeatherDetail() {
  //  gfx.setFont(ArialRoundedMTBold_14);            // changed to
  gfx.setFont(ArialMT_Plain_10);                        // smaller font
  gfx.setTextAlignment(TEXT_ALIGN_CENTER);
  gfx.setColor(MINI_BLACK);                            // changed WHITE -> BLACK
  //  gfx.drawString(120, 2, "Current Conditions");        // changed
...
}

void drawLabelValue(uint8_t line, String label, String value) {
  //  const uint8_t labelX = 15;    // changed to
  const uint8_t labelX = 180;        // new location
  //  const uint8_t valueX = 150;    // changed to
  const uint8_t valueX = 250;        // new location
  gfx.setTextAlignment(TEXT_ALIGN_LEFT);
  gfx.setColor(MINI_BLACK);                    // changed WHITE -> BLACK
  gfx.drawString(labelX, 15 + line * 9, label);   // changed, FontH 14 -> 15; FontH 10 -> 9
  gfx.setColor(MINI_BLACK);                    // changed WHITE -> BLACK
  gfx.drawString(valueX, 15 + line * 9, value);    // changed
}

You can get the changed ino-file from
https://www.dropbox.com/s/4wnff1bzqnnaq9p/espaper-weatherstation0.ino?dl=0

Hope, I could help
siram
commented by (440 points)
siram,

I'm going to try your code on my Epaper Plus.  

Thank you for posting!

Welcome to ThingPulse Q&A, where you can ask questions and receive answers from other members of the community.

https://thingpulse.com

...