Added weather panel, icons, rearranged widgets.
This commit is contained in:
parent
632a4d6a6f
commit
aca118beba
@ -135,6 +135,10 @@ text_sensor:
|
|||||||
entity_id: sensor.moon
|
entity_id: sensor.moon
|
||||||
id: moonphase
|
id: moonphase
|
||||||
|
|
||||||
|
- platform: homeassistant
|
||||||
|
entity_id: weather.zuhause
|
||||||
|
id: weather
|
||||||
|
|
||||||
# Webserver configuration
|
# Webserver configuration
|
||||||
web_server:
|
web_server:
|
||||||
port: 80
|
port: 80
|
||||||
@ -213,7 +217,13 @@ font:
|
|||||||
'', # mdi-gauge (air pressure)
|
'', # mdi-gauge (air pressure)
|
||||||
'', # mdi-weather-sunny
|
'', # mdi-weather-sunny
|
||||||
'', # mdi-weather-sunset-down
|
'', # mdi-weather-sunset-down
|
||||||
'', # mdi-weather-sunset-up
|
'' # mdi-weather-sunset-up
|
||||||
|
]
|
||||||
|
|
||||||
|
- file: 'fonts/materialdesignicons-webfont.ttf'
|
||||||
|
id: mdi_weather
|
||||||
|
size: 80
|
||||||
|
glyphs: [
|
||||||
'', # mdi-moon-first-quarter
|
'', # mdi-moon-first-quarter
|
||||||
'', # mdi-moon-full
|
'', # mdi-moon-full
|
||||||
'', # mdi-moon-last-quarter
|
'', # mdi-moon-last-quarter
|
||||||
@ -221,7 +231,22 @@ font:
|
|||||||
'', # mdi-moon-waning-crescent
|
'', # mdi-moon-waning-crescent
|
||||||
'', # mdi-moon-waning-gibbous
|
'', # mdi-moon-waning-gibbous
|
||||||
'', # mdi-moon-waxing-crescent
|
'', # mdi-moon-waxing-crescent
|
||||||
'' # mdi-moon-waxing-gibbous
|
'', # mdi-moon-waxing-gibbous
|
||||||
|
'', # mdi-weather-night
|
||||||
|
'', # mdi-weather-cloudy
|
||||||
|
'', # mdi-weather-fog
|
||||||
|
'', # mdi-weather-hail
|
||||||
|
'', # mdi-weather-lightning
|
||||||
|
'', # mdi-weather-lightning-rainy
|
||||||
|
'', # mdi-weather-partly-cloudy
|
||||||
|
'', # mdi-weather-pouring
|
||||||
|
'', # mdi-weather-rainy
|
||||||
|
'', # mdi-weather-snowy
|
||||||
|
'', # mdi-weather-snowy-rainy
|
||||||
|
'', # mdi-weather-sunny
|
||||||
|
'', # mdi-weather-windy
|
||||||
|
'', # mdi-weather-windy-variant
|
||||||
|
'' # mdi-weather-exceptional
|
||||||
]
|
]
|
||||||
|
|
||||||
- file: 'fonts/materialdesignicons-webfont.ttf'
|
- file: 'fonts/materialdesignicons-webfont.ttf'
|
||||||
@ -308,16 +333,8 @@ display:
|
|||||||
a width of 305 and a height of 3
|
a width of 305 and a height of 3
|
||||||
*/
|
*/
|
||||||
it.filled_rectangle(86, 21, 297, 3);
|
it.filled_rectangle(86, 21, 297, 3);
|
||||||
if(id(sun_state).has_state()) {
|
|
||||||
ESP_LOGI("Sun", "State of the sun: %s, sunrise: %s, sunset: %s",
|
|
||||||
id(sun_state).state.c_str(), sunrise, sunset);
|
|
||||||
|
|
||||||
it.print(10, 75, id(mdi_small), TextAlign::BASELINE_LEFT, ""); // sun-up
|
it.print(10, 115, id(mdi_small), TextAlign::BASELINE_LEFT, ""); // air pressure icon
|
||||||
it.printf(50, 75, id(sensor_unit), TextAlign::BASELINE_LEFT, "%s", sunrise);
|
|
||||||
it.print(135, 75, id(mdi_small), TextAlign::BASELINE_LEFT, ""); // sun-down
|
|
||||||
it.printf(175, 75, id(sensor_unit), TextAlign::BASELINE_LEFT, "%s", sunset);
|
|
||||||
}
|
|
||||||
it.print(250, 115, id(mdi_small), TextAlign::BASELINE_CENTER, ""); // air pressure icon
|
|
||||||
it.print(375, 75, id(mdi_small), TextAlign::BASELINE_CENTER, ""); // thermometer icon
|
it.print(375, 75, id(mdi_small), TextAlign::BASELINE_CENTER, ""); // thermometer icon
|
||||||
it.print(375, 115, id(mdi_small), TextAlign::BASELINE_CENTER, ""); // water percent icon
|
it.print(375, 115, id(mdi_small), TextAlign::BASELINE_CENTER, ""); // water percent icon
|
||||||
|
|
||||||
@ -335,55 +352,15 @@ display:
|
|||||||
it.print(357, 115, id(sub_sensor_font), TextAlign::BASELINE_RIGHT, " - %");
|
it.print(357, 115, id(sub_sensor_font), TextAlign::BASELINE_RIGHT, " - %");
|
||||||
}
|
}
|
||||||
|
|
||||||
if(air_pressure < 1200 && air_pressure >=800) { // Has valid value
|
if(air_pressure < 1200 && air_pressure >=800) {
|
||||||
it.printf(228, 115, id(sub_sensor_font), TextAlign::BASELINE_RIGHT, "%4.1fhPa", air_pressure);
|
it.printf(220, 114 + offsetY, id(big_sensor_font), TextAlign::BASELINE_RIGHT, "%4.1f", air_pressure);
|
||||||
|
it.print(225, 114 + offsetY, id(sensor_unit), TextAlign::BASELINE_LEFT, "hPa");
|
||||||
}
|
}
|
||||||
else { // Invalid or error value
|
else {
|
||||||
it.print(228, 115, id(sub_sensor_font), TextAlign::BASELINE_RIGHT, "- hPa");
|
it.print(220, 114 + offsetY, id(big_sensor_font), TextAlign::BASELINE_RIGHT, "- ");
|
||||||
|
it.print(225, 114 + offsetY, id(sensor_unit), TextAlign::BASELINE_LEFT, "hPa");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Moon phase display */
|
|
||||||
if(id(moonphase).has_state()) {
|
|
||||||
int x = 10;
|
|
||||||
int y = 116;
|
|
||||||
if (id(moonphase).state == "new_moon") {
|
|
||||||
// new moon
|
|
||||||
it.print(x, y, id(mdi_small), TextAlign::BASELINE_LEFT, "");
|
|
||||||
ESP_LOGI("Moonphase", "new moon");
|
|
||||||
} else if (id(moonphase).state == "waxing_crescent") {
|
|
||||||
// waxing crescent
|
|
||||||
it.print(x, y, id(mdi_small), TextAlign::BASELINE_LEFT, "");
|
|
||||||
ESP_LOGI("Moonphase", "waxing crescent");
|
|
||||||
} else if (id(moonphase).state == "first_quarter") {
|
|
||||||
// first_quarter
|
|
||||||
it.print(x, y, id(mdi_small), TextAlign::BASELINE_LEFT, "");
|
|
||||||
ESP_LOGI("Moonphase", "first quarter");
|
|
||||||
} else if (id(moonphase).state == "waxing_gibbous") {
|
|
||||||
// waxing gibbous
|
|
||||||
it.print(x, y, id(mdi_small), TextAlign::BASELINE_LEFT, "");
|
|
||||||
ESP_LOGI("Moonphase", "waxing gibbous");
|
|
||||||
} else if (id(moonphase).state == "full_moon") {
|
|
||||||
// full moon
|
|
||||||
it.print(x, y, id(mdi_small), TextAlign::BASELINE_LEFT, "");
|
|
||||||
ESP_LOGI("Moonphase", "full moon");
|
|
||||||
} else if (id(moonphase).state == "waning_gibbous") {
|
|
||||||
// waning gibbous
|
|
||||||
it.print(x, y, id(mdi_small), TextAlign::BASELINE_LEFT, "");
|
|
||||||
ESP_LOGI("Moonphase", "waning gibbous");
|
|
||||||
} else if (id(moonphase).state == "last_quarter") {
|
|
||||||
// last quarter
|
|
||||||
it.print(x, y, id(mdi_small), TextAlign::BASELINE_LEFT, "");
|
|
||||||
ESP_LOGI("Moonphase", "last quarter");
|
|
||||||
} else if (id(moonphase).state == "waning_crescent") {
|
|
||||||
// waning crescent
|
|
||||||
it.print(x, y, id(mdi_small), TextAlign::BASELINE_LEFT, "");
|
|
||||||
ESP_LOGI("Moonphase", "waning crescent");
|
|
||||||
} else {
|
|
||||||
// N/A
|
|
||||||
it.print(x, y, id(sub_sensor_font), TextAlign::BASELINE_LEFT, "-");
|
|
||||||
ESP_LOGE("Moonphase", "No data");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Livingroom */
|
/* Livingroom */
|
||||||
offsetY = 127;
|
offsetY = 127;
|
||||||
@ -430,6 +407,7 @@ display:
|
|||||||
it.print(205, 114 + offsetY, id(sensor_unit), TextAlign::BASELINE_LEFT, "µg/m³");
|
it.print(205, 114 + offsetY, id(sensor_unit), TextAlign::BASELINE_LEFT, "µg/m³");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Sleepingroom */
|
/* Sleepingroom */
|
||||||
offsetY = 247;
|
offsetY = 247;
|
||||||
it.print(10, 10 + offsetY, id(sensor_unit), "Schlafzimmer");
|
it.print(10, 10 + offsetY, id(sensor_unit), "Schlafzimmer");
|
||||||
@ -480,6 +458,129 @@ display:
|
|||||||
it.print(10 + offsetX, 10, id(sensor_unit), "Wetter");
|
it.print(10 + offsetX, 10, id(sensor_unit), "Wetter");
|
||||||
it.filled_rectangle(80 + offsetX, 21, 155, 3);
|
it.filled_rectangle(80 + offsetX, 21, 155, 3);
|
||||||
|
|
||||||
|
/* Current weather */
|
||||||
|
if(id(weather).has_state()) {
|
||||||
|
int x = 227 + offsetX;
|
||||||
|
int y = 116;
|
||||||
|
if (id(weather).state == "clear-night") {
|
||||||
|
// clear night
|
||||||
|
it.print(x, y, id(mdi_weather), TextAlign::BASELINE_RIGHT, "");
|
||||||
|
ESP_LOGI("Weather", "clear night");
|
||||||
|
} else if (id(weather).state == "cloudy") {
|
||||||
|
// cloudy
|
||||||
|
it.print(x, y, id(mdi_weather), TextAlign::BASELINE_RIGHT, "");
|
||||||
|
ESP_LOGI("Weather", "cloudy");
|
||||||
|
} else if (id(weather).state == "fog") {
|
||||||
|
// fog
|
||||||
|
it.print(x, y, id(mdi_weather), TextAlign::BASELINE_RIGHT, "");
|
||||||
|
ESP_LOGI("Weather", "fog");
|
||||||
|
} else if (id(weather).state == "hail") {
|
||||||
|
// hail
|
||||||
|
it.print(x, y, id(mdi_weather), TextAlign::BASELINE_RIGHT, "");
|
||||||
|
ESP_LOGI("Weather", "hail");
|
||||||
|
} else if (id(weather).state == "lightning") {
|
||||||
|
// lightning
|
||||||
|
it.print(x, y, id(mdi_weather), TextAlign::BASELINE_RIGHT, "");
|
||||||
|
ESP_LOGI("Weather", "lightning");
|
||||||
|
} else if (id(weather).state == "lightning-rainy") {
|
||||||
|
// lightning-rainy
|
||||||
|
it.print(x, y, id(mdi_weather), TextAlign::BASELINE_RIGHT, "");
|
||||||
|
ESP_LOGI("Weather", "lightning-rainy");
|
||||||
|
} else if (id(weather).state == "partlycloudy") {
|
||||||
|
// partly cloudy
|
||||||
|
it.print(x, y, id(mdi_weather), TextAlign::BASELINE_RIGHT, "");
|
||||||
|
ESP_LOGI("Weather", "partlycloudy");
|
||||||
|
} else if (id(weather).state == "pouring") {
|
||||||
|
// pouring
|
||||||
|
it.print(x, y, id(mdi_weather), TextAlign::BASELINE_RIGHT, "");
|
||||||
|
ESP_LOGI("Weather", "pouring");
|
||||||
|
} else if (id(weather).state == "rainy") {
|
||||||
|
// rainy
|
||||||
|
it.print(x, y, id(mdi_weather), TextAlign::BASELINE_RIGHT, "");
|
||||||
|
ESP_LOGI("Weather", "rainy");
|
||||||
|
} else if (id(weather).state == "snowy") {
|
||||||
|
// snowy
|
||||||
|
it.print(x, y, id(mdi_weather), TextAlign::BASELINE_RIGHT, "");
|
||||||
|
ESP_LOGI("Weather", "snowy");
|
||||||
|
} else if (id(weather).state == "snowy-rainy") {
|
||||||
|
// snowy-rainy
|
||||||
|
it.print(x, y, id(mdi_weather), TextAlign::BASELINE_RIGHT, "");
|
||||||
|
ESP_LOGI("Weather", "snowy-rainy");
|
||||||
|
} else if (id(weather).state == "sunny") {
|
||||||
|
// sunny
|
||||||
|
it.print(x, y, id(mdi_weather), TextAlign::BASELINE_RIGHT, "");
|
||||||
|
ESP_LOGI("Weather", "sunny");
|
||||||
|
} else if (id(weather).state == "windy") {
|
||||||
|
// windy
|
||||||
|
it.print(x, y, id(mdi_weather), TextAlign::BASELINE_RIGHT, "");
|
||||||
|
ESP_LOGI("Weather", "windy");
|
||||||
|
} else if (id(weather).state == "windy-variant") {
|
||||||
|
// windy variant
|
||||||
|
it.print(x, y, id(mdi_weather), TextAlign::BASELINE_RIGHT, "");
|
||||||
|
ESP_LOGI("Weather", "windy variant");
|
||||||
|
} else if (id(weather).state == "exceptional") {
|
||||||
|
// exceptional
|
||||||
|
it.print(x, y, id(mdi_weather), TextAlign::BASELINE_RIGHT, "");
|
||||||
|
ESP_LOGI("Weather", "exceptional");
|
||||||
|
} else {
|
||||||
|
// N/A
|
||||||
|
it.print(x, y, id(big_sensor_font), TextAlign::BASELINE_RIGHT, "-");
|
||||||
|
ESP_LOGE("Weather", "No data");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Moon phase display */
|
||||||
|
if(id(moonphase).has_state()) {
|
||||||
|
int x = 10 + offsetX;
|
||||||
|
int y = 200;
|
||||||
|
if (id(moonphase).state == "new_moon") {
|
||||||
|
// new moon
|
||||||
|
it.print(x, y, id(mdi_weather), TextAlign::BASELINE_LEFT, "");
|
||||||
|
ESP_LOGI("Moonphase", "new moon");
|
||||||
|
} else if (id(moonphase).state == "waxing_crescent") {
|
||||||
|
// waxing crescent
|
||||||
|
it.print(x, y, id(mdi_weather), TextAlign::BASELINE_LEFT, "");
|
||||||
|
ESP_LOGI("Moonphase", "waxing crescent");
|
||||||
|
} else if (id(moonphase).state == "first_quarter") {
|
||||||
|
// first_quarter
|
||||||
|
it.print(x, y, id(mdi_weather), TextAlign::BASELINE_LEFT, "");
|
||||||
|
ESP_LOGI("Moonphase", "first quarter");
|
||||||
|
} else if (id(moonphase).state == "waxing_gibbous") {
|
||||||
|
// waxing gibbous
|
||||||
|
it.print(x, y, id(mdi_weather), TextAlign::BASELINE_LEFT, "");
|
||||||
|
ESP_LOGI("Moonphase", "waxing gibbous");
|
||||||
|
} else if (id(moonphase).state == "full_moon") {
|
||||||
|
// full moon
|
||||||
|
it.print(x, y, id(mdi_weather), TextAlign::BASELINE_LEFT, "");
|
||||||
|
ESP_LOGI("Moonphase", "full moon");
|
||||||
|
} else if (id(moonphase).state == "waning_gibbous") {
|
||||||
|
// waning gibbous
|
||||||
|
it.print(x, y, id(mdi_weather), TextAlign::BASELINE_LEFT, "");
|
||||||
|
ESP_LOGI("Moonphase", "waning gibbous");
|
||||||
|
} else if (id(moonphase).state == "last_quarter") {
|
||||||
|
// last quarter
|
||||||
|
it.print(x, y, id(mdi_weather), TextAlign::BASELINE_LEFT, "");
|
||||||
|
ESP_LOGI("Moonphase", "last quarter");
|
||||||
|
} else if (id(moonphase).state == "waning_crescent") {
|
||||||
|
// waning crescent
|
||||||
|
it.print(x, y, id(mdi_weather), TextAlign::BASELINE_LEFT, "");
|
||||||
|
ESP_LOGI("Moonphase", "waning crescent");
|
||||||
|
} else {
|
||||||
|
// N/A
|
||||||
|
it.print(x, y, id(big_sensor_font), TextAlign::BASELINE_LEFT, "-");
|
||||||
|
ESP_LOGE("Moonphase", "No data");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(id(sun_state).has_state()) {
|
||||||
|
ESP_LOGI("Sun", "State of the sun: %s, sunrise: %s, sunset: %s",
|
||||||
|
id(sun_state).state.c_str(), sunrise, sunset);
|
||||||
|
|
||||||
|
it.print(10 + offsetX, 250, id(mdi_small), TextAlign::BASELINE_LEFT, ""); // sun-up
|
||||||
|
it.printf(50 + offsetX, 250, id(sensor_unit), TextAlign::BASELINE_LEFT, "%s", sunrise);
|
||||||
|
it.print(135 + offsetX, 250, id(mdi_small), TextAlign::BASELINE_LEFT, ""); // sun-down
|
||||||
|
it.printf(175 + offsetX, 250, id(sensor_unit), TextAlign::BASELINE_LEFT, "%s", sunset);
|
||||||
|
}
|
||||||
|
|
||||||
/* Serverroom */
|
/* Serverroom */
|
||||||
offsetY = 247;
|
offsetY = 247;
|
||||||
@ -503,6 +604,7 @@ display:
|
|||||||
it.print(207 + offsetX, 115 + offsetY, id(sub_sensor_font), TextAlign::BASELINE_RIGHT, " - %");
|
it.print(207 + offsetX, 115 + offsetY, id(sub_sensor_font), TextAlign::BASELINE_RIGHT, " - %");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* FOOTER */
|
/* FOOTER */
|
||||||
it.strftime(614, 380, id(footer_font), TextAlign::BASELINE_RIGHT , "Aktualisiert um %d.%m.%Y %H:%M", id(homeassistant_time).now());
|
it.strftime(614, 380, id(footer_font), TextAlign::BASELINE_RIGHT , "Aktualisiert um %d.%m.%Y %H:%M", id(homeassistant_time).now());
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user