Added power dashboard based on environment template. Added total and serverroom meter.
This commit is contained in:
parent
41aa777e2b
commit
c761fe3285
@ -6,6 +6,7 @@ esphome:
|
|||||||
priority: -10
|
priority: -10
|
||||||
then:
|
then:
|
||||||
- delay: 10s
|
- delay: 10s
|
||||||
|
- display.page.show: power # temporary for power page dev
|
||||||
- component.update: epaper
|
- component.update: epaper
|
||||||
|
|
||||||
wifi:
|
wifi:
|
||||||
@ -28,8 +29,8 @@ logger:
|
|||||||
# Enable Home Assistant API
|
# Enable Home Assistant API
|
||||||
api:
|
api:
|
||||||
password: !secret api
|
password: !secret api
|
||||||
# encryption:
|
encryption:
|
||||||
# key: !secret apikey
|
key: !secret apikey
|
||||||
|
|
||||||
ota:
|
ota:
|
||||||
password: !secret ota
|
password: !secret ota
|
||||||
@ -118,6 +119,14 @@ sensor:
|
|||||||
- platform: homeassistant
|
- platform: homeassistant
|
||||||
entity_id: sensor.serveraum_temperatur
|
entity_id: sensor.serveraum_temperatur
|
||||||
id: temp_serverroom
|
id: temp_serverroom
|
||||||
|
|
||||||
|
- platform: homeassistant
|
||||||
|
entity_id: sensor.line_power_total
|
||||||
|
id: power_total
|
||||||
|
|
||||||
|
- platform: homeassistant
|
||||||
|
entity_id: sensor.serverraum_power
|
||||||
|
id: power_serverroom
|
||||||
|
|
||||||
text_sensor:
|
text_sensor:
|
||||||
- platform: homeassistant
|
- platform: homeassistant
|
||||||
@ -234,7 +243,9 @@ 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
|
||||||
|
'', # mdi-lightning-bolt
|
||||||
|
'' # mdi-transmission-tower
|
||||||
]
|
]
|
||||||
|
|
||||||
- file: 'fonts/materialdesignicons-webfont.ttf'
|
- file: 'fonts/materialdesignicons-webfont.ttf'
|
||||||
@ -327,8 +338,8 @@ display:
|
|||||||
/* OUTSIDE */
|
/* OUTSIDE */
|
||||||
it.print(10, 10, id(sensor_unit), "Umwelt");
|
it.print(10, 10, id(sensor_unit), "Umwelt");
|
||||||
/*
|
/*
|
||||||
Draw the outline of a rectangle with the top left at [78,21],
|
Draw the outline of a rectangle with the top left at [86,21],
|
||||||
a width of 305 and a height of 3
|
a width of 297 and a height of 3
|
||||||
*/
|
*/
|
||||||
it.filled_rectangle(86, 21, 297, 3);
|
it.filled_rectangle(86, 21, 297, 3);
|
||||||
|
|
||||||
@ -628,7 +639,170 @@ display:
|
|||||||
ESP_LOGI("WiFi", "Unlikely");
|
ESP_LOGI("WiFi", "Unlikely");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
- id: logo
|
- id: power
|
||||||
lambda: |-
|
lambda: |-
|
||||||
|
|
||||||
it.image(1, 48, id(c1024_logo));
|
float total_power = id(power_total).state;
|
||||||
|
float serverroom_power = id(power_serverroom).state;
|
||||||
|
int offsetX = 0;
|
||||||
|
int offsetY = 0;
|
||||||
|
|
||||||
|
/* BASEMENT */
|
||||||
|
it.print(10, 10, id(sensor_unit), "Keller");
|
||||||
|
/*
|
||||||
|
Draw the outline of a rectangle with the top left at [86,21],
|
||||||
|
a width of 297 and a height of 3
|
||||||
|
*/
|
||||||
|
it.filled_rectangle(76, 21, 317, 3);
|
||||||
|
|
||||||
|
/* C1024 logo */
|
||||||
|
it.image(10 , 37, id(c1024_logo));
|
||||||
|
|
||||||
|
/* Livingroom */
|
||||||
|
offsetY = 127;
|
||||||
|
it.print(10, 10 + offsetY, id(sensor_unit), "Wohnzimmer");
|
||||||
|
it.filled_rectangle(136, 21 + offsetY, 247, 3);
|
||||||
|
/*
|
||||||
|
it.print(10, 114 + offsetY, id(mdi_small), TextAlign::BASELINE_LEFT, ""); // PM2.5
|
||||||
|
it.print(375, 75 + offsetY, id(mdi_small), TextAlign::BASELINE_CENTER, ""); // thermometer
|
||||||
|
it.print(375, 115 + offsetY, id(mdi_small), TextAlign::BASELINE_CENTER, ""); // water percent
|
||||||
|
it.print(10, 75 + offsetY, id(mdi_small), TextAlign::BASELINE_LEFT, ""); // CO2
|
||||||
|
|
||||||
|
|
||||||
|
if(livingroom_temp > -100 && livingroom_temp < 100) {
|
||||||
|
it.printf(357, 75 + offsetY, id(sub_sensor_font), TextAlign::BASELINE_RIGHT, "%2.1fºC", livingroom_temp);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
it.print(357, 75 + offsetY, id(sub_sensor_font), TextAlign::BASELINE_RIGHT, " - ºC");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(livingroom_humid >=0 && livingroom_humid <= 100) {
|
||||||
|
it.printf(357, 115 + offsetY, id(sub_sensor_font), TextAlign::BASELINE_RIGHT, "%3d%%", livingroom_humid);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
it.print(357, 115 + offsetY, id(sub_sensor_font), TextAlign::BASELINE_RIGHT, " - %");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(livingroom_co2 >=380 && livingroom_co2 <= 20000) {
|
||||||
|
it.printf(150, 75 + offsetY, id(big_sensor_font), TextAlign::BASELINE_RIGHT, "%4.0f", livingroom_co2);
|
||||||
|
it.print(150, 50 + offsetY, id(sensor_unit), TextAlign::BASELINE_LEFT, "ppm");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
it.print(150, 75 + offsetY, id(big_sensor_font), TextAlign::BASELINE_RIGHT, "- ");
|
||||||
|
it.print(150, 50 + offsetY, id(sensor_unit), TextAlign::BASELINE_LEFT, "ppm³");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(livingroom_pm25 < 255 && livingroom_pm25 >=0) {
|
||||||
|
it.printf(200, 114 + offsetY, id(big_sensor_font), TextAlign::BASELINE_RIGHT, "%3d", livingroom_pm25);
|
||||||
|
it.print(205, 114 + offsetY, id(sensor_unit), TextAlign::BASELINE_LEFT, "µg/m³");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
it.print(200, 114 + offsetY, id(big_sensor_font), TextAlign::BASELINE_RIGHT, "- ");
|
||||||
|
it.print(205, 114 + offsetY, id(sensor_unit), TextAlign::BASELINE_LEFT, "µg/m³");
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Sleepingroom */
|
||||||
|
offsetY = 247;
|
||||||
|
it.print(10, 10 + offsetY, id(sensor_unit), "Schlafzimmer");
|
||||||
|
it.filled_rectangle(144, 21 + offsetY, 239, 3);
|
||||||
|
/*
|
||||||
|
it.print(10, 114 + offsetY, id(mdi_small), TextAlign::BASELINE_LEFT, ""); // PM2.5
|
||||||
|
it.print(375, 75 + offsetY, id(mdi_small), TextAlign::BASELINE_CENTER, ""); // thermometer
|
||||||
|
it.print(375, 115 + offsetY, id(mdi_small), TextAlign::BASELINE_CENTER, ""); // water percent
|
||||||
|
it.print(10, 75 + offsetY, id(mdi_small), TextAlign::BASELINE_LEFT, ""); // CO2
|
||||||
|
|
||||||
|
|
||||||
|
if(sleepingroom_temp > -100 && sleepingroom_temp < 100) {
|
||||||
|
it.printf(357, 75 + offsetY, id(sub_sensor_font), TextAlign::BASELINE_RIGHT, "%2.1fºC", sleepingroom_temp);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
it.print(357, 75 + offsetY, id(sub_sensor_font), TextAlign::BASELINE_RIGHT, " - ºC");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(sleepingroom_humid >=0 && sleepingroom_humid <= 100) {
|
||||||
|
it.printf(357, 115 + offsetY, id(sub_sensor_font), TextAlign::BASELINE_RIGHT, "%3d%%", sleepingroom_humid);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
it.print(357, 115 + offsetY, id(sub_sensor_font), TextAlign::BASELINE_RIGHT, " - %");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(sleepingroom_co2 >=380 && sleepingroom_co2 <= 20000) {
|
||||||
|
it.printf(150, 75 + offsetY, id(big_sensor_font), TextAlign::BASELINE_RIGHT, "%4.0f", sleepingroom_co2);
|
||||||
|
it.print(150, 50 + offsetY, id(sensor_unit), TextAlign::BASELINE_LEFT, "ppm");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
it.print(150, 75 + offsetY, id(big_sensor_font), TextAlign::BASELINE_RIGHT, "- ");
|
||||||
|
it.print(150, 50 + offsetY, id(sensor_unit), TextAlign::BASELINE_LEFT, "ppm³");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(sleepingroom_pm25 < 255 && sleepingroom_pm25 >=0) {
|
||||||
|
it.printf(200, 114 + offsetY, id(big_sensor_font), TextAlign::BASELINE_RIGHT, "%3d", sleepingroom_pm25);
|
||||||
|
it.print(205, 114 + offsetY, id(sensor_unit), TextAlign::BASELINE_LEFT, "µg/m³");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
it.print(200, 114 + offsetY, id(big_sensor_font), TextAlign::BASELINE_RIGHT, "- ");
|
||||||
|
it.print(205, 114 + offsetY, id(sensor_unit), TextAlign::BASELINE_LEFT, "µg/m³");
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* LINEPOWER */
|
||||||
|
offsetX = 390;
|
||||||
|
offsetY = 65;
|
||||||
|
it.print(10 + offsetX, 10, id(sensor_unit), "Gesamt");
|
||||||
|
it.filled_rectangle(90 + offsetX, 21, 155, 3);
|
||||||
|
|
||||||
|
it.print(227 + offsetX, 20 + offsetY, id(mdi_small), TextAlign::BASELINE_CENTER, ""); // transmission-tower
|
||||||
|
|
||||||
|
if(total_power > 0 && total_power < 19999) {
|
||||||
|
it.printf(207 + offsetX, 20 + offsetY, id(sub_sensor_font), TextAlign::BASELINE_RIGHT, "W");
|
||||||
|
it.printf(170 + offsetX, 20 + offsetY, id(big_sensor_font), TextAlign::BASELINE_RIGHT, "%2.1f", total_power);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
it.print(207 + offsetX, 20 + offsetY, id(sub_sensor_font), TextAlign::BASELINE_RIGHT, " - W");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Serverroom */
|
||||||
|
offsetY = 247;
|
||||||
|
it.print(10 + offsetX, 10 + offsetY, id(sensor_unit), "Serverraum");
|
||||||
|
it.filled_rectangle(125 + offsetX, 21 + offsetY, 110, 3);
|
||||||
|
|
||||||
|
it.print(227 + offsetX, 110 + offsetY, id(mdi_small), TextAlign::BASELINE_CENTER, ""); // lightning-bolt
|
||||||
|
|
||||||
|
if(serverroom_power > 0 && serverroom_power < 999) {
|
||||||
|
it.printf(207 + offsetX, 110 + offsetY, id(sub_sensor_font), TextAlign::BASELINE_RIGHT, "W");
|
||||||
|
it.printf(170 + offsetX, 110 + offsetY, id(big_sensor_font), TextAlign::BASELINE_RIGHT, "%2.1f", serverroom_power);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
it.print(207 + offsetX, 110 + offsetY, id(sub_sensor_font), TextAlign::BASELINE_RIGHT, " - W");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* FOOTER */
|
||||||
|
it.strftime(614, 380, id(footer_font), TextAlign::BASELINE_RIGHT , "Aktualisiert um %d.%m.%Y %H:%M", id(homeassistant_time).now());
|
||||||
|
|
||||||
|
/* WiFi Signal Strenght */
|
||||||
|
if(id(wifisignal).has_state()) {
|
||||||
|
int x = 630;
|
||||||
|
int y = 384;
|
||||||
|
if (id(wifisignal).state >= -50) {
|
||||||
|
//Excellent
|
||||||
|
it.print(x, y, id(mdi_wifi), TextAlign::BASELINE_CENTER, "");
|
||||||
|
ESP_LOGI("WiFi", "Excellent");
|
||||||
|
} else if (id(wifisignal).state >= -60) {
|
||||||
|
//Good
|
||||||
|
it.print(x, y, id(mdi_wifi), TextAlign::BASELINE_CENTER, "");
|
||||||
|
ESP_LOGI("WiFi", "Good");
|
||||||
|
} else if (id(wifisignal).state >= -75) {
|
||||||
|
//Fair
|
||||||
|
it.print(x, y, id(mdi_wifi), TextAlign::BASELINE_CENTER, "");
|
||||||
|
ESP_LOGI("WiFi", "Fair");
|
||||||
|
} else if (id(wifisignal).state >= -100) {
|
||||||
|
//Weak
|
||||||
|
it.print(x, y, id(mdi_wifi), TextAlign::BASELINE_CENTER, "");
|
||||||
|
ESP_LOGI("WiFi", "Weak");
|
||||||
|
} else {
|
||||||
|
//Unlikely working signal
|
||||||
|
it.print(x, y, id(mdi_wifi), TextAlign::BASELINE_CENTER, "");
|
||||||
|
ESP_LOGI("WiFi", "Unlikely");
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user