From c495a6eafe48506e5c3c321ffa62219405435093 Mon Sep 17 00:00:00 2001 From: Gerard Date: Thu, 17 Mar 2022 21:21:59 +0100 Subject: [PATCH 1/4] Add localization for weather forecast Show the day in local format for the weather forecast --- .../nspanel-lovelace-ui.py | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/apps/nspanel-lovelace-ui/nspanel-lovelace-ui.py b/apps/nspanel-lovelace-ui/nspanel-lovelace-ui.py index 9db53ef4..8e1c028e 100644 --- a/apps/nspanel-lovelace-ui/nspanel-lovelace-ui.py +++ b/apps/nspanel-lovelace-ui/nspanel-lovelace-ui.py @@ -4,6 +4,13 @@ import hassapi as hass import math import colorsys +# check Babel +import importlib +babel_spec = importlib.util.find_spec("babel") +if babel_spec is not None: + import babel.dates + + class NsPanelLovelaceUIManager(hass.Hass): def initialize(self): @@ -20,6 +27,8 @@ class NsPanelLovelaceUI: # check configured items self.check_items() + self.babel_spec = importlib.util.find_spec("babel") + # Setup, mqtt subscription and callback self.mqtt = self.api.get_plugin_api("MQTT") self.mqtt.mqtt_subscribe(topic=self.config["panelRecvTopic"]) @@ -140,12 +149,8 @@ class NsPanelLovelaceUI: self.send_mqtt_msg("time,{0}".format(time)) def update_date(self, kwargs): - - import importlib - babel_spec = importlib.util.find_spec("babel") - if babel_spec is not None: - self.api.log("babel package found", level="DEBUG") - import babel.dates + if self.babel_spec is not None: + self.api.log("Babel package found", level="DEBUG") if "dateFormatBabel" in self.config: dateformat = self.config["dateFormatBabel"] else: @@ -153,7 +158,7 @@ class NsPanelLovelaceUI: date = babel.dates.format_date(datetime.datetime.now(), dateformat, locale=self.config["locale"]) self.send_mqtt_msg(f"date,?{date}") else: - self.api.log("babel package not found", level="DEBUG") + self.api.log("Babel package not found", level="DEBUG") date = datetime.datetime.now().strftime(self.config["dateFormat"]) self.send_mqtt_msg(f"date,?{date}") @@ -187,12 +192,12 @@ class NsPanelLovelaceUI: o1 = we.attributes.forecast[0]['datetime'] o1 = datetime.datetime.fromisoformat(o1) - o1 = o1.strftime("%a") + o1 = babel.dates.format_date(o1, "E", locale=self.config["locale"]) i1 = weathericons[we.attributes.forecast[0]['condition']] u1 = we.attributes.forecast[0]['temperature'] o2 = we.attributes.forecast[1]['datetime'] o2 = datetime.datetime.fromisoformat(o2) - o2 = o2.strftime("%a") + o2 = babel.dates.format_date(o2, "E", locale=self.config["locale"]) i2 = weathericons[we.attributes.forecast[1]['condition']] u2 = we.attributes.forecast[1]['temperature'] self.send_mqtt_msg(f"weatherUpdate,?{weathericons[we.state]}?{we.attributes.temperature}{unit}?{26}?{we.attributes.humidity} %?{o1}?{i1}?{u1}?{o2}?{i2}?{u2}") @@ -554,4 +559,4 @@ class NsPanelLovelaceUI: sat = r hsv = (math.degrees(math.atan2(y, x))%360/360, sat, 1) rgb = self.hsv2rgb(hsv[0],hsv[1],hsv[2]) - return rgb \ No newline at end of file + return rgb From 16153c9ed84ef6dce4e1f9c5701237c4018d1157 Mon Sep 17 00:00:00 2001 From: Gerard Date: Thu, 17 Mar 2022 21:28:05 +0100 Subject: [PATCH 2/4] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index a917ea84..45e6dd7f 100644 --- a/README.md +++ b/README.md @@ -260,6 +260,7 @@ nspanel-1: value: 0 locale: "de_DE" # only used if babel python package is installed dateFormatBabel: "full" # only used if babel python package is installed + # formatting options on https://babel.pocoo.org/en/latest/dates.html?highlight=name%20of%20day#date-fields timeFormat: "%H:%M" dateFormat: "%A, %d. %B %Y" # ignored if babel python package is installed weatherEntity: weather.example From f0b26e57d08994c68d5413b6b6d72ca930a5c12f Mon Sep 17 00:00:00 2001 From: Gerard Date: Thu, 17 Mar 2022 21:28:57 +0100 Subject: [PATCH 3/4] Update apps.yaml --- appdaemon/apps.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/appdaemon/apps.yaml b/appdaemon/apps.yaml index eaa7ff8f..92e6c4bd 100644 --- a/appdaemon/apps.yaml +++ b/appdaemon/apps.yaml @@ -14,6 +14,7 @@ nspanel: value: 0 locale: "de_DE" # only used if babel python package is installed dateFormatBabel: "full" # only used if babel python package is installed + # formatting options on https://babel.pocoo.org/en/latest/dates.html?highlight=name%20of%20day#date-fields timeFormat: "%H:%M" dateFormat: "%A, %d. %B %Y" # ignored if babel python package is installed weatherEntity: weather.example From 94b7af9b3ad981e57b0b347e7be7c1e7a2fef125 Mon Sep 17 00:00:00 2001 From: Gerard Date: Thu, 17 Mar 2022 21:29:23 +0100 Subject: [PATCH 4/4] Update info.md --- info.md | 1 + 1 file changed, 1 insertion(+) diff --git a/info.md b/info.md index ffc5a16e..31629e63 100644 --- a/info.md +++ b/info.md @@ -20,6 +20,7 @@ nspanel-1: value: 0 locale: "de_DE" # only used if babel python package is installed dateFormatBabel: "full" # only used if babel python package is installed + # formatting options on https://babel.pocoo.org/en/latest/dates.html?highlight=name%20of%20day#date-fields timeFormat: "%H:%M" dateFormat: "%A, %d. %B %Y" # ignored if babel python package is installed weatherEntity: weather.example