Merge pull request #81 from schizza/feature/pocasi_cz
Support for resending data to Pocasi Meteo CZpull/82/head
commit
0c42c8d827
|
|
@ -17,11 +17,13 @@ from .const import (
|
||||||
DEFAULT_URL,
|
DEFAULT_URL,
|
||||||
DEV_DBG,
|
DEV_DBG,
|
||||||
DOMAIN,
|
DOMAIN,
|
||||||
|
POCASI_CZ_ENABLED,
|
||||||
SENSORS_TO_LOAD,
|
SENSORS_TO_LOAD,
|
||||||
WINDY_ENABLED,
|
WINDY_ENABLED,
|
||||||
WSLINK,
|
WSLINK,
|
||||||
WSLINK_URL,
|
WSLINK_URL,
|
||||||
)
|
)
|
||||||
|
from .pocasti_cz import PocasiPush
|
||||||
from .routes import Routes, unregistred
|
from .routes import Routes, unregistred
|
||||||
from .utils import (
|
from .utils import (
|
||||||
anonymize,
|
anonymize,
|
||||||
|
|
@ -51,6 +53,7 @@ class WeatherDataUpdateCoordinator(DataUpdateCoordinator):
|
||||||
self.hass = hass
|
self.hass = hass
|
||||||
self.config = config
|
self.config = config
|
||||||
self.windy = WindyPush(hass, config)
|
self.windy = WindyPush(hass, config)
|
||||||
|
self.pocasi: PocasiPush = PocasiPush(hass, config)
|
||||||
super().__init__(hass, _LOGGER, name=DOMAIN)
|
super().__init__(hass, _LOGGER, name=DOMAIN)
|
||||||
|
|
||||||
async def recieved_data(self, webdata):
|
async def recieved_data(self, webdata):
|
||||||
|
|
@ -85,6 +88,9 @@ class WeatherDataUpdateCoordinator(DataUpdateCoordinator):
|
||||||
if self.config_entry.options.get(WINDY_ENABLED):
|
if self.config_entry.options.get(WINDY_ENABLED):
|
||||||
response = await self.windy.push_data_to_windy(data)
|
response = await self.windy.push_data_to_windy(data)
|
||||||
|
|
||||||
|
if self.config.options.get(POCASI_CZ_ENABLED):
|
||||||
|
await self.pocasi.push_data_to_server(data, "WSLINK" if _wslink else "WU")
|
||||||
|
|
||||||
remaped_items = (
|
remaped_items = (
|
||||||
remap_wslink_items(data)
|
remap_wslink_items(data)
|
||||||
if self.config_entry.options.get(WSLINK)
|
if self.config_entry.options.get(WSLINK)
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ from typing import Any
|
||||||
|
|
||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
|
|
||||||
from homeassistant.config_entries import ConfigFlow, OptionsFlow
|
from homeassistant.config_entries import ConfigFlow, ConfigFlowResult, OptionsFlow
|
||||||
from homeassistant.core import callback
|
from homeassistant.core import callback
|
||||||
from homeassistant.exceptions import HomeAssistantError
|
from homeassistant.exceptions import HomeAssistantError
|
||||||
|
|
||||||
|
|
@ -14,6 +14,12 @@ from .const import (
|
||||||
DEV_DBG,
|
DEV_DBG,
|
||||||
DOMAIN,
|
DOMAIN,
|
||||||
INVALID_CREDENTIALS,
|
INVALID_CREDENTIALS,
|
||||||
|
POCASI_CZ_API_ID,
|
||||||
|
POCASI_CZ_API_KEY,
|
||||||
|
POCASI_CZ_ENABLED,
|
||||||
|
POCASI_CZ_LOGGER_ENABLED,
|
||||||
|
POCASI_CZ_SEND_INTERVAL,
|
||||||
|
POCASI_CZ_SEND_MINIMUM,
|
||||||
SENSORS_TO_LOAD,
|
SENSORS_TO_LOAD,
|
||||||
WINDY_API_KEY,
|
WINDY_API_KEY,
|
||||||
WINDY_ENABLED,
|
WINDY_ENABLED,
|
||||||
|
|
@ -43,6 +49,8 @@ class ConfigOptionsFlowHandler(OptionsFlow):
|
||||||
self.user_data_schema = {}
|
self.user_data_schema = {}
|
||||||
self.sensors: dict[str, Any] = {}
|
self.sensors: dict[str, Any] = {}
|
||||||
self.migrate_schema = {}
|
self.migrate_schema = {}
|
||||||
|
self.pocasi_cz: dict[str, Any] = {}
|
||||||
|
self.pocasi_cz_schema = {}
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def config_entry(self):
|
def config_entry(self):
|
||||||
|
|
@ -51,7 +59,7 @@ class ConfigOptionsFlowHandler(OptionsFlow):
|
||||||
async def _get_entry_data(self):
|
async def _get_entry_data(self):
|
||||||
"""Get entry data."""
|
"""Get entry data."""
|
||||||
|
|
||||||
self.user_data: dict[str, Any] = {
|
self.user_data = {
|
||||||
API_ID: self.config_entry.options.get(API_ID),
|
API_ID: self.config_entry.options.get(API_ID),
|
||||||
API_KEY: self.config_entry.options.get(API_KEY),
|
API_KEY: self.config_entry.options.get(API_KEY),
|
||||||
WSLINK: self.config_entry.options.get(WSLINK, False),
|
WSLINK: self.config_entry.options.get(WSLINK, False),
|
||||||
|
|
@ -65,7 +73,7 @@ class ConfigOptionsFlowHandler(OptionsFlow):
|
||||||
vol.Optional(DEV_DBG, default=self.user_data.get(DEV_DBG, False)): bool,
|
vol.Optional(DEV_DBG, default=self.user_data.get(DEV_DBG, False)): bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
self.sensors: dict[str, Any] = {
|
self.sensors = {
|
||||||
SENSORS_TO_LOAD: (
|
SENSORS_TO_LOAD: (
|
||||||
self.config_entry.options.get(SENSORS_TO_LOAD)
|
self.config_entry.options.get(SENSORS_TO_LOAD)
|
||||||
if isinstance(self.config_entry.options.get(SENSORS_TO_LOAD), list)
|
if isinstance(self.config_entry.options.get(SENSORS_TO_LOAD), list)
|
||||||
|
|
@ -73,7 +81,7 @@ class ConfigOptionsFlowHandler(OptionsFlow):
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
self.windy_data: dict[str, Any] = {
|
self.windy_data = {
|
||||||
WINDY_API_KEY: self.config_entry.options.get(WINDY_API_KEY),
|
WINDY_API_KEY: self.config_entry.options.get(WINDY_API_KEY),
|
||||||
WINDY_ENABLED: self.config_entry.options.get(WINDY_ENABLED, False),
|
WINDY_ENABLED: self.config_entry.options.get(WINDY_ENABLED, False),
|
||||||
WINDY_LOGGER_ENABLED: self.config_entry.options.get(
|
WINDY_LOGGER_ENABLED: self.config_entry.options.get(
|
||||||
|
|
@ -90,13 +98,46 @@ class ConfigOptionsFlowHandler(OptionsFlow):
|
||||||
vol.Optional(
|
vol.Optional(
|
||||||
WINDY_LOGGER_ENABLED,
|
WINDY_LOGGER_ENABLED,
|
||||||
default=self.windy_data[WINDY_LOGGER_ENABLED],
|
default=self.windy_data[WINDY_LOGGER_ENABLED],
|
||||||
): bool
|
): bool or False,
|
||||||
or False,
|
}
|
||||||
|
|
||||||
|
self.pocasi_cz = {
|
||||||
|
POCASI_CZ_API_ID: self.config_entry.options.get(POCASI_CZ_API_ID, ""),
|
||||||
|
POCASI_CZ_API_KEY: self.config_entry.options.get(POCASI_CZ_API_KEY, ""),
|
||||||
|
POCASI_CZ_ENABLED: self.config_entry.options.get(POCASI_CZ_ENABLED, False),
|
||||||
|
POCASI_CZ_LOGGER_ENABLED: self.config_entry.options.get(
|
||||||
|
POCASI_CZ_LOGGER_ENABLED, False
|
||||||
|
),
|
||||||
|
POCASI_CZ_SEND_INTERVAL: self.config_entry.options.get(
|
||||||
|
POCASI_CZ_SEND_INTERVAL, 30
|
||||||
|
),
|
||||||
|
}
|
||||||
|
|
||||||
|
self.pocasi_cz_schema = {
|
||||||
|
vol.Required(
|
||||||
|
POCASI_CZ_API_ID, default=self.pocasi_cz.get(POCASI_CZ_API_ID)
|
||||||
|
): str,
|
||||||
|
vol.Required(
|
||||||
|
POCASI_CZ_API_KEY, default=self.pocasi_cz.get(POCASI_CZ_API_KEY)
|
||||||
|
): str,
|
||||||
|
vol.Required(
|
||||||
|
POCASI_CZ_SEND_INTERVAL,
|
||||||
|
default=self.pocasi_cz.get(POCASI_CZ_SEND_INTERVAL),
|
||||||
|
): int,
|
||||||
|
vol.Optional(
|
||||||
|
POCASI_CZ_ENABLED, default=self.pocasi_cz.get(POCASI_CZ_ENABLED)
|
||||||
|
): bool,
|
||||||
|
vol.Optional(
|
||||||
|
POCASI_CZ_LOGGER_ENABLED,
|
||||||
|
default=self.pocasi_cz.get(POCASI_CZ_LOGGER_ENABLED),
|
||||||
|
): bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
async def async_step_init(self, user_input=None):
|
async def async_step_init(self, user_input=None):
|
||||||
"""Manage the options - show menu first."""
|
"""Manage the options - show menu first."""
|
||||||
return self.async_show_menu(step_id="init", menu_options=["basic", "windy"])
|
return self.async_show_menu(
|
||||||
|
step_id="init", menu_options=["basic", "windy", "pocasi"]
|
||||||
|
)
|
||||||
|
|
||||||
async def async_step_basic(self, user_input=None):
|
async def async_step_basic(self, user_input=None):
|
||||||
"""Manage basic options - credentials."""
|
"""Manage basic options - credentials."""
|
||||||
|
|
@ -124,6 +165,9 @@ class ConfigOptionsFlowHandler(OptionsFlow):
|
||||||
# retain sensors
|
# retain sensors
|
||||||
user_input.update(self.sensors)
|
user_input.update(self.sensors)
|
||||||
|
|
||||||
|
# retain pocasi data
|
||||||
|
user_input.update(self.pocasi_cz)
|
||||||
|
|
||||||
return self.async_create_entry(title=DOMAIN, data=user_input)
|
return self.async_create_entry(title=DOMAIN, data=user_input)
|
||||||
|
|
||||||
self.user_data = user_input
|
self.user_data = user_input
|
||||||
|
|
@ -162,10 +206,54 @@ class ConfigOptionsFlowHandler(OptionsFlow):
|
||||||
# retain senors
|
# retain senors
|
||||||
user_input.update(self.sensors)
|
user_input.update(self.sensors)
|
||||||
|
|
||||||
|
# retain pocasi cz
|
||||||
|
|
||||||
|
user_input.update(self.pocasi_cz)
|
||||||
|
|
||||||
|
return self.async_create_entry(title=DOMAIN, data=user_input)
|
||||||
|
|
||||||
|
async def async_step_pocasi(self, user_input: Any = None) -> ConfigFlowResult:
|
||||||
|
"""Handle the pocasi step."""
|
||||||
|
|
||||||
|
errors = {}
|
||||||
|
|
||||||
|
await self._get_entry_data()
|
||||||
|
|
||||||
|
if user_input is None:
|
||||||
|
return self.async_show_form(
|
||||||
|
step_id="pocasi",
|
||||||
|
data_schema=vol.Schema(self.pocasi_cz_schema),
|
||||||
|
errors=errors,
|
||||||
|
)
|
||||||
|
|
||||||
|
if user_input.get(POCASI_CZ_SEND_INTERVAL, 0) < POCASI_CZ_SEND_MINIMUM:
|
||||||
|
errors[POCASI_CZ_SEND_INTERVAL] = "pocasi_send_minimum"
|
||||||
|
|
||||||
|
if user_input.get(POCASI_CZ_ENABLED):
|
||||||
|
if user_input.get(POCASI_CZ_API_ID) == "":
|
||||||
|
errors[POCASI_CZ_API_ID] = "pocasi_id_required"
|
||||||
|
if user_input.get(POCASI_CZ_API_KEY) == "":
|
||||||
|
errors[POCASI_CZ_API_KEY] = "pocasi_key_required"
|
||||||
|
|
||||||
|
if len(errors) > 0:
|
||||||
|
return self.async_show_form(
|
||||||
|
step_id="pocasi",
|
||||||
|
data_schema=vol.Schema(self.pocasi_cz_schema),
|
||||||
|
errors=errors,
|
||||||
|
)
|
||||||
|
# retain user data
|
||||||
|
user_input.update(self.user_data)
|
||||||
|
|
||||||
|
# retain senors
|
||||||
|
user_input.update(self.sensors)
|
||||||
|
|
||||||
|
# retain windy
|
||||||
|
user_input.update(self.windy_data)
|
||||||
|
|
||||||
return self.async_create_entry(title=DOMAIN, data=user_input)
|
return self.async_create_entry(title=DOMAIN, data=user_input)
|
||||||
|
|
||||||
|
|
||||||
class ConfigFlow(ConfigFlow, domain=DOMAIN):
|
class ConfigFlowHandler(ConfigFlow, domain=DOMAIN):
|
||||||
"""Handle a config flow for Sencor SWS 12500 Weather Station."""
|
"""Handle a config flow for Sencor SWS 12500 Weather Station."""
|
||||||
|
|
||||||
data_schema = {
|
data_schema = {
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,9 @@ WSLINK_URL = "/data/upload.php"
|
||||||
WINDY_URL = "https://stations.windy.com/pws/update/"
|
WINDY_URL = "https://stations.windy.com/pws/update/"
|
||||||
DATABASE_PATH = "/config/home-assistant_v2.db"
|
DATABASE_PATH = "/config/home-assistant_v2.db"
|
||||||
|
|
||||||
|
POCASI_CZ_URL: Final = "http://ms.pocasimeteo.cz"
|
||||||
|
POCASI_CZ_SEND_MINIMUM: Final = 12 # minimal time to resend data
|
||||||
|
|
||||||
ICON = "mdi:weather"
|
ICON = "mdi:weather"
|
||||||
|
|
||||||
API_KEY = "API_KEY"
|
API_KEY = "API_KEY"
|
||||||
|
|
@ -20,6 +23,19 @@ SENSOR_TO_MIGRATE: Final = "sensor_to_migrate"
|
||||||
DEV_DBG: Final = "dev_debug_checkbox"
|
DEV_DBG: Final = "dev_debug_checkbox"
|
||||||
WSLINK: Final = "wslink"
|
WSLINK: Final = "wslink"
|
||||||
|
|
||||||
|
POCASI_CZ_API_KEY = "POCASI_CZ_API_KEY"
|
||||||
|
POCASI_CZ_API_ID = "POCASI_CZ_API_ID"
|
||||||
|
POCASI_CZ_SEND_INTERVAL = "POCASI_SEND_INTERVAL"
|
||||||
|
POCASI_CZ_ENABLED = "pocasi_enabled_chcekbox"
|
||||||
|
POCASI_CZ_LOGGER_ENABLED = "pocasi_logger_checkbox"
|
||||||
|
POCASI_INVALID_KEY: Final = (
|
||||||
|
"Pocasi Meteo refused to accept data. Invalid ID/Key combination?"
|
||||||
|
)
|
||||||
|
POCASI_CZ_SUCCESS: Final = "Successfully sent data to Pocasi Meteo"
|
||||||
|
POCASI_CZ_UNEXPECTED: Final = (
|
||||||
|
"Pocasti Meteo responded unexpectedly 3 times in row. Resendig is now disabled!"
|
||||||
|
)
|
||||||
|
|
||||||
WINDY_API_KEY = "WINDY_API_KEY"
|
WINDY_API_KEY = "WINDY_API_KEY"
|
||||||
WINDY_ENABLED: Final = "windy_enabled_checkbox"
|
WINDY_ENABLED: Final = "windy_enabled_checkbox"
|
||||||
WINDY_LOGGER_ENABLED: Final = "windy_logger_checkbox"
|
WINDY_LOGGER_ENABLED: Final = "windy_logger_checkbox"
|
||||||
|
|
@ -57,6 +73,13 @@ PURGE_DATA: Final = [
|
||||||
"dailyrainin",
|
"dailyrainin",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
PURGE_DATA_POCAS: Final = [
|
||||||
|
"ID",
|
||||||
|
"PASSWORD",
|
||||||
|
"action",
|
||||||
|
"rtfreq",
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
BARO_PRESSURE: Final = "baro_pressure"
|
BARO_PRESSURE: Final = "baro_pressure"
|
||||||
OUTSIDE_TEMP: Final = "outside_temp"
|
OUTSIDE_TEMP: Final = "outside_temp"
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,143 @@
|
||||||
|
"""Pocasi CZ resend functions."""
|
||||||
|
|
||||||
|
from datetime import datetime, timedelta
|
||||||
|
import logging
|
||||||
|
from typing import Any, Literal
|
||||||
|
|
||||||
|
from aiohttp import ClientError
|
||||||
|
|
||||||
|
from homeassistant.config_entries import ConfigEntry
|
||||||
|
from homeassistant.core import HomeAssistant
|
||||||
|
from homeassistant.helpers.aiohttp_client import async_get_clientsession
|
||||||
|
|
||||||
|
from .const import (
|
||||||
|
DEFAULT_URL,
|
||||||
|
POCASI_CZ_API_ID,
|
||||||
|
POCASI_CZ_API_KEY,
|
||||||
|
POCASI_CZ_ENABLED,
|
||||||
|
POCASI_CZ_LOGGER_ENABLED,
|
||||||
|
POCASI_CZ_SEND_INTERVAL,
|
||||||
|
POCASI_CZ_SUCCESS,
|
||||||
|
POCASI_CZ_UNEXPECTED,
|
||||||
|
POCASI_CZ_URL,
|
||||||
|
POCASI_INVALID_KEY,
|
||||||
|
WSLINK_URL,
|
||||||
|
)
|
||||||
|
from .utils import update_options
|
||||||
|
|
||||||
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class PocasiNotInserted(Exception):
|
||||||
|
"""NotInserted state."""
|
||||||
|
|
||||||
|
|
||||||
|
class PocasiSuccess(Exception):
|
||||||
|
"""WindySucces state."""
|
||||||
|
|
||||||
|
|
||||||
|
class PocasiApiKeyError(Exception):
|
||||||
|
"""Windy API Key error."""
|
||||||
|
|
||||||
|
|
||||||
|
class PocasiPush:
|
||||||
|
"""Push data to Windy."""
|
||||||
|
|
||||||
|
def __init__(self, hass: HomeAssistant, config: ConfigEntry) -> None:
|
||||||
|
"""Init."""
|
||||||
|
self.hass = hass
|
||||||
|
self.config = config
|
||||||
|
self._interval = int(self.config.options.get(POCASI_CZ_SEND_INTERVAL, 30))
|
||||||
|
|
||||||
|
self.last_update = datetime.now()
|
||||||
|
self.next_update = datetime.now() + timedelta(seconds=self._interval)
|
||||||
|
|
||||||
|
self.log = self.config.options.get(POCASI_CZ_LOGGER_ENABLED)
|
||||||
|
self.invalid_response_count = 0
|
||||||
|
|
||||||
|
def verify_response(
|
||||||
|
self,
|
||||||
|
response: str,
|
||||||
|
) -> PocasiNotInserted | PocasiSuccess | PocasiApiKeyError | None:
|
||||||
|
"""Verify answer form server."""
|
||||||
|
|
||||||
|
if self.log:
|
||||||
|
_LOGGER.debug("Pocasi CZ responded: %s", response)
|
||||||
|
|
||||||
|
# Server does not provide any responses.
|
||||||
|
# This is placeholder if future state is changed
|
||||||
|
|
||||||
|
return None
|
||||||
|
|
||||||
|
async def push_data_to_server(
|
||||||
|
self, data: dict[str, Any], mode: Literal["WU", "WSLINK"]
|
||||||
|
):
|
||||||
|
"""Pushes weather data to server."""
|
||||||
|
|
||||||
|
_data = data.copy()
|
||||||
|
_api_id = self.config.options.get(POCASI_CZ_API_ID)
|
||||||
|
_api_key = self.config.options.get(POCASI_CZ_API_KEY)
|
||||||
|
|
||||||
|
if self.log:
|
||||||
|
_LOGGER.info(
|
||||||
|
"Pocasi CZ last update = %s, next update at: %s",
|
||||||
|
str(self.last_update),
|
||||||
|
str(self.next_update),
|
||||||
|
)
|
||||||
|
|
||||||
|
if self.next_update > datetime.now():
|
||||||
|
_LOGGER.debug(
|
||||||
|
"Triggered update interval limit of %s seconds. Next possilbe update is set to: %s",
|
||||||
|
self._interval,
|
||||||
|
self.next_update,
|
||||||
|
)
|
||||||
|
return False
|
||||||
|
|
||||||
|
request_url: str = ""
|
||||||
|
if mode == "WSLINK":
|
||||||
|
_data["wsid"] = _api_id
|
||||||
|
_data["wspw"] = _api_key
|
||||||
|
request_url = f"{POCASI_CZ_URL}{WSLINK_URL}"
|
||||||
|
|
||||||
|
if mode == "WU":
|
||||||
|
_data["ID"] = _api_id
|
||||||
|
_data["PASSWORD"] = _api_key
|
||||||
|
request_url = f"{POCASI_CZ_URL}{DEFAULT_URL}"
|
||||||
|
|
||||||
|
session = async_get_clientsession(self.hass, verify_ssl=False)
|
||||||
|
_LOGGER.debug(
|
||||||
|
"Payload for Pocasi Meteo server: [mode=%s] [request_url=%s] = %s",
|
||||||
|
mode,
|
||||||
|
request_url,
|
||||||
|
_data,
|
||||||
|
)
|
||||||
|
try:
|
||||||
|
async with session.get(request_url, params=_data) as resp:
|
||||||
|
status = await resp.text()
|
||||||
|
try:
|
||||||
|
self.verify_response(status)
|
||||||
|
|
||||||
|
except PocasiApiKeyError:
|
||||||
|
# log despite of settings
|
||||||
|
_LOGGER.critical(POCASI_INVALID_KEY)
|
||||||
|
await update_options(
|
||||||
|
self.hass, self.config, POCASI_CZ_ENABLED, False
|
||||||
|
)
|
||||||
|
except PocasiSuccess:
|
||||||
|
if self.log:
|
||||||
|
_LOGGER.info(POCASI_CZ_SUCCESS)
|
||||||
|
|
||||||
|
except ClientError as ex:
|
||||||
|
_LOGGER.critical("Invalid response from Pocasi Meteo: %s", str(ex))
|
||||||
|
self.invalid_response_count += 1
|
||||||
|
if self.invalid_response_count > 3:
|
||||||
|
_LOGGER.critical(POCASI_CZ_UNEXPECTED)
|
||||||
|
await update_options(self.hass, self.config, POCASI_CZ_ENABLED, False)
|
||||||
|
|
||||||
|
self.last_update = datetime.now()
|
||||||
|
self.next_update = datetime.now() + timedelta(seconds=self._interval)
|
||||||
|
|
||||||
|
if self.log:
|
||||||
|
_LOGGER.info("Next update: %s", str(self.next_update))
|
||||||
|
|
||||||
|
return None
|
||||||
|
|
@ -5,7 +5,6 @@
|
||||||
"valid_credentials_key": "Provide valid API KEY.",
|
"valid_credentials_key": "Provide valid API KEY.",
|
||||||
"valid_credentials_match": "API ID and API KEY should not be the same."
|
"valid_credentials_match": "API ID and API KEY should not be the same."
|
||||||
},
|
},
|
||||||
|
|
||||||
"step": {
|
"step": {
|
||||||
"user": {
|
"user": {
|
||||||
"description": "Provide API ID and API KEY so the Weather Station can access HomeAssistant",
|
"description": "Provide API ID and API KEY so the Weather Station can access HomeAssistant",
|
||||||
|
|
@ -25,7 +24,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
"options": {
|
"options": {
|
||||||
"error": {
|
"error": {
|
||||||
"valid_credentials_api": "Provide valid API ID.",
|
"valid_credentials_api": "Provide valid API ID.",
|
||||||
|
|
@ -33,7 +31,6 @@
|
||||||
"valid_credentials_match": "API ID and API KEY should not be the same.",
|
"valid_credentials_match": "API ID and API KEY should not be the same.",
|
||||||
"windy_key_required": "Windy API key is required if you want to enable this function."
|
"windy_key_required": "Windy API key is required if you want to enable this function."
|
||||||
},
|
},
|
||||||
|
|
||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "Configure SWS12500 Integration",
|
"title": "Configure SWS12500 Integration",
|
||||||
|
|
@ -43,7 +40,6 @@
|
||||||
"windy": "Windy configuration"
|
"windy": "Windy configuration"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
"basic": {
|
"basic": {
|
||||||
"description": "Provide API ID and API KEY so the Weather Station can access HomeAssistant",
|
"description": "Provide API ID and API KEY so the Weather Station can access HomeAssistant",
|
||||||
"title": "Configure credentials",
|
"title": "Configure credentials",
|
||||||
|
|
@ -60,7 +56,6 @@
|
||||||
"WSLINK": "Enable WSLink API if the station is set to send data via WSLink."
|
"WSLINK": "Enable WSLink API if the station is set to send data via WSLink."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
"windy": {
|
"windy": {
|
||||||
"description": "Resend weather data to your Windy stations.",
|
"description": "Resend weather data to your Windy stations.",
|
||||||
"title": "Configure Windy",
|
"title": "Configure Windy",
|
||||||
|
|
@ -74,6 +69,24 @@
|
||||||
"windy_logger_checkbox": "Enable only if you want to send debuging data to the developer."
|
"windy_logger_checkbox": "Enable only if you want to send debuging data to the developer."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"pocasi": {
|
||||||
|
"description": "Resend data to Pocasi Meteo CZ",
|
||||||
|
"title": "Configure Pocasi Meteo CZ",
|
||||||
|
"data": {
|
||||||
|
"POCASI_API_ID": "ID from your Pocasi Meteo APP",
|
||||||
|
"POCASI_API_KEY": "Key from your Pocasi Meteo APP",
|
||||||
|
"POCASI_SEND_INTERVAL": "Resend interval in seconds",
|
||||||
|
"pocasi_enabled_checkbox": "Enable resending data to Pocasi Meteo",
|
||||||
|
"pocasi_logger_checkbox": "Log data and responses"
|
||||||
|
},
|
||||||
|
"data_description": {
|
||||||
|
"POCASI_API_ID": "You can obtain your ID in Pocasi Meteo App",
|
||||||
|
"POCASI_API_KEY": "You can obtain your KEY in Pocasi Meteo App",
|
||||||
|
"POCASI_SEND_INTERVAL": "Resend interval in seconds (minimum 12s, default 30s)",
|
||||||
|
"pocasi_enabled_checkbox": "Enables resending data to Pocasi Meteo",
|
||||||
|
"pocasi_logger_checkbox": "Enable only if you want to send debbug data to the developer"
|
||||||
|
}
|
||||||
|
},
|
||||||
"migration": {
|
"migration": {
|
||||||
"title": "Statistic migration.",
|
"title": "Statistic migration.",
|
||||||
"description": "For the correct functioning of long-term statistics, it is necessary to migrate the sensor unit in the long-term statistics. The original unit of long-term statistics for daily precipitation was in mm/d, however, the station only sends data in mm without time differentiation.\n\n The sensor to be migrated is for daily precipitation. If the correct value is already in the list for the daily precipitation sensor (mm), then the migration is already complete.\n\n Migration result for the sensor: {migration_status}, a total of {migration_count} rows converted.",
|
"description": "For the correct functioning of long-term statistics, it is necessary to migrate the sensor unit in the long-term statistics. The original unit of long-term statistics for daily precipitation was in mm/d, however, the station only sends data in mm without time differentiation.\n\n The sensor to be migrated is for daily precipitation. If the correct value is already in the list for the daily precipitation sensor (mm), then the migration is already complete.\n\n Migration result for the sensor: {migration_status}, a total of {migration_count} rows converted.",
|
||||||
|
|
@ -88,30 +101,71 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
"entity": {
|
"entity": {
|
||||||
"sensor": {
|
"sensor": {
|
||||||
"indoor_temp": { "name": "Indoor temperature" },
|
"indoor_temp": {
|
||||||
"indoor_humidity": { "name": "Indoor humidity" },
|
"name": "Indoor temperature"
|
||||||
"outside_temp": { "name": "Outside Temperature" },
|
},
|
||||||
"outside_humidity": { "name": "Outside humidity" },
|
"indoor_humidity": {
|
||||||
"uv": { "name": "UV index" },
|
"name": "Indoor humidity"
|
||||||
"baro_pressure": { "name": "Barometric pressure" },
|
},
|
||||||
"dew_point": { "name": "Dew point" },
|
"outside_temp": {
|
||||||
"wind_speed": { "name": "Wind speed" },
|
"name": "Outside Temperature"
|
||||||
"wind_dir": { "name": "Wind direction" },
|
},
|
||||||
"wind_gust": { "name": "Wind gust" },
|
"outside_humidity": {
|
||||||
"rain": { "name": "Rain" },
|
"name": "Outside humidity"
|
||||||
"daily_rain": { "name": "Daily precipitation" },
|
},
|
||||||
"solar_radiation": { "name": "Solar irradiance" },
|
"uv": {
|
||||||
"ch2_temp": { "name": "Channel 2 temperature" },
|
"name": "UV index"
|
||||||
"ch2_humidity": { "name": "Channel 2 humidity" },
|
},
|
||||||
"ch3_temp": { "name": "Channel 3 temperature" },
|
"baro_pressure": {
|
||||||
"ch3_humidity": { "name": "Channel 3 humidity" },
|
"name": "Barometric pressure"
|
||||||
"ch4_temp": { "name": "Channel 4 temperature" },
|
},
|
||||||
"ch4_humidity": { "name": "Channel 4 humidity" },
|
"dew_point": {
|
||||||
"heat_index": { "name": "Apparent temperature" },
|
"name": "Dew point"
|
||||||
"chill_index": { "name": "Wind chill" },
|
},
|
||||||
|
"wind_speed": {
|
||||||
|
"name": "Wind speed"
|
||||||
|
},
|
||||||
|
"wind_dir": {
|
||||||
|
"name": "Wind direction"
|
||||||
|
},
|
||||||
|
"wind_gust": {
|
||||||
|
"name": "Wind gust"
|
||||||
|
},
|
||||||
|
"rain": {
|
||||||
|
"name": "Rain"
|
||||||
|
},
|
||||||
|
"daily_rain": {
|
||||||
|
"name": "Daily precipitation"
|
||||||
|
},
|
||||||
|
"solar_radiation": {
|
||||||
|
"name": "Solar irradiance"
|
||||||
|
},
|
||||||
|
"ch2_temp": {
|
||||||
|
"name": "Channel 2 temperature"
|
||||||
|
},
|
||||||
|
"ch2_humidity": {
|
||||||
|
"name": "Channel 2 humidity"
|
||||||
|
},
|
||||||
|
"ch3_temp": {
|
||||||
|
"name": "Channel 3 temperature"
|
||||||
|
},
|
||||||
|
"ch3_humidity": {
|
||||||
|
"name": "Channel 3 humidity"
|
||||||
|
},
|
||||||
|
"ch4_temp": {
|
||||||
|
"name": "Channel 4 temperature"
|
||||||
|
},
|
||||||
|
"ch4_humidity": {
|
||||||
|
"name": "Channel 4 humidity"
|
||||||
|
},
|
||||||
|
"heat_index": {
|
||||||
|
"name": "Apparent temperature"
|
||||||
|
},
|
||||||
|
"chill_index": {
|
||||||
|
"name": "Wind chill"
|
||||||
|
},
|
||||||
"wind_azimut": {
|
"wind_azimut": {
|
||||||
"name": "Bearing",
|
"name": "Bearing",
|
||||||
"state": {
|
"state": {
|
||||||
|
|
|
||||||
|
|
@ -24,15 +24,16 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
"options": {
|
"options": {
|
||||||
"error": {
|
"error": {
|
||||||
"valid_credentials_api": "Vyplňte platné API ID",
|
"valid_credentials_api": "Vyplňte platné API ID",
|
||||||
"valid_credentials_key": "Vyplňte platný API KEY",
|
"valid_credentials_key": "Vyplňte platný API KEY",
|
||||||
"valid_credentials_match": "API ID a API KEY nesmějí být stejné!",
|
"valid_credentials_match": "API ID a API KEY nesmějí být stejné!",
|
||||||
"windy_key_required": "Je vyžadován Windy API key, pokud chcete aktivovat přeposílání dat na Windy"
|
"windy_key_required": "Je vyžadován Windy API key, pokud chcete aktivovat přeposílání dat na Windy",
|
||||||
|
"pocasi_id_required": "Je vyžadován Počasí ID, pokud chcete aktivovat přeposílání dat na Počasí Meteo CZ",
|
||||||
|
"pocasi_key_required": "Klíč k účtu Počasí Meteo je povinný.",
|
||||||
|
"pocasi_send_minimum": "Minimální interval pro přeposílání je 12 sekund."
|
||||||
},
|
},
|
||||||
|
|
||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "Nastavení integrace SWS12500",
|
"title": "Nastavení integrace SWS12500",
|
||||||
|
|
@ -40,10 +41,10 @@
|
||||||
"menu_options": {
|
"menu_options": {
|
||||||
"basic": "Základní - přístupové údaje (přihlášení)",
|
"basic": "Základní - přístupové údaje (přihlášení)",
|
||||||
"windy": "Nastavení pro přeposílání dat na Windy",
|
"windy": "Nastavení pro přeposílání dat na Windy",
|
||||||
|
"pocasi": "Nastavení pro přeposlání dat na Počasí Meteo CZ",
|
||||||
"migration": "Migrace statistiky senzoru"
|
"migration": "Migrace statistiky senzoru"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
"basic": {
|
"basic": {
|
||||||
"description": "Zadejte API ID a API KEY, aby meteostanice mohla komunikovat s HomeAssistantem",
|
"description": "Zadejte API ID a API KEY, aby meteostanice mohla komunikovat s HomeAssistantem",
|
||||||
"title": "Nastavení přihlášení",
|
"title": "Nastavení přihlášení",
|
||||||
|
|
@ -60,7 +61,6 @@
|
||||||
"wslink": "WSLink API zapněte, pokud je stanice nastavena na zasílání dat přes WSLink."
|
"wslink": "WSLink API zapněte, pokud je stanice nastavena na zasílání dat přes WSLink."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
"windy": {
|
"windy": {
|
||||||
"description": "Přeposílání dat z metostanice na Windy",
|
"description": "Přeposílání dat z metostanice na Windy",
|
||||||
"title": "Konfigurace Windy",
|
"title": "Konfigurace Windy",
|
||||||
|
|
@ -70,10 +70,28 @@
|
||||||
"windy_logger_checkbox": "Logovat data a odpovědi z Windy"
|
"windy_logger_checkbox": "Logovat data a odpovědi z Windy"
|
||||||
},
|
},
|
||||||
"data_description": {
|
"data_description": {
|
||||||
"WINDY_API_KEY": "Klíč API KEY získaný z https://https://api.windy.com/keys",
|
"WINDY_API_KEY": "Klíč API KEY získaný z https://api.windy.com/keys",
|
||||||
"windy_logger_checkbox": "Zapnout pouze v případě, že chcete poslat ladící informace vývojáři."
|
"windy_logger_checkbox": "Zapnout pouze v případě, že chcete poslat ladící informace vývojáři."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"pocasi": {
|
||||||
|
"description": "Přeposílání dat do aplikace Počasí Meteo",
|
||||||
|
"title": "Konfigurace Počasí Meteo",
|
||||||
|
"data": {
|
||||||
|
"POCASI_CZ_API_ID": "ID účtu na Počasí Meteo",
|
||||||
|
"POCASI_CZ_API_KEY": "Klíč (Key) k účtu Počasí Meteo",
|
||||||
|
"POCASI_CZ_SEND_INTERVAL": "Interval v sekundách",
|
||||||
|
"pocasi_enabled_chcekbox": "Povolit přeposílání dat na server Počasí Meteo",
|
||||||
|
"pocasi_logger_checkbox": "Logovat data a odpovědi z Počasí Meteo"
|
||||||
|
},
|
||||||
|
"data_description": {
|
||||||
|
"POCASI_API_ID": "ID získáte ve své aplikaci Počasí Meteo",
|
||||||
|
"POCASI_API_KEY": "Klíč (Key) získáte ve své aplikaci Počasí Meteo",
|
||||||
|
"POCASI_SEND_INTERVAL": "Interval v jakém se mají data na server přeposílat (minimum 12s, defaultně 30s)",
|
||||||
|
"pocasi_enabled_checkbox": "Zapne přeposílání data na server Počasí Meteo",
|
||||||
|
"pocasi_logger_checkbox": "Zapnout pouze v případě, že chcete zaslat ladící informace vývojáři."
|
||||||
|
}
|
||||||
|
},
|
||||||
"migration": {
|
"migration": {
|
||||||
"title": "Migrace statistiky senzoru.",
|
"title": "Migrace statistiky senzoru.",
|
||||||
"description": "Pro správnou funkci dlouhodobé statistiky je nutné provést migraci jednotky senzoru v dlouhodobé statistice. Původní jednotka dlouhodobé statistiky pro denní úhrn srážek byla v mm/d, nicméně stanice zasílá pouze data v mm bez časového rozlišení.\n\n Senzor, který má být migrován je pro denní úhrn srážek. Pokud je v seznamu již správná hodnota u senzoru pro denní úhrn (mm), pak je již migrace hotová.\n\n Výsledek migrace pro senzor: {migration_status}, přepvedeno celkem {migration_count} řádků.",
|
"description": "Pro správnou funkci dlouhodobé statistiky je nutné provést migraci jednotky senzoru v dlouhodobé statistice. Původní jednotka dlouhodobé statistiky pro denní úhrn srážek byla v mm/d, nicméně stanice zasílá pouze data v mm bez časového rozlišení.\n\n Senzor, který má být migrován je pro denní úhrn srážek. Pokud je v seznamu již správná hodnota u senzoru pro denní úhrn (mm), pak je již migrace hotová.\n\n Výsledek migrace pro senzor: {migration_status}, přepvedeno celkem {migration_count} řádků.",
|
||||||
|
|
@ -88,35 +106,86 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
"entity": {
|
"entity": {
|
||||||
"sensor": {
|
"sensor": {
|
||||||
"indoor_temp": { "name": "Vnitřní teplota" },
|
"indoor_temp": {
|
||||||
"indoor_humidity": { "name": "Vnitřní vlhkost vzduchu" },
|
"name": "Vnitřní teplota"
|
||||||
"outside_temp": { "name": "Venkovní teplota" },
|
},
|
||||||
"outside_humidity": { "name": "Venkovní vlhkost vzduchu" },
|
"indoor_humidity": {
|
||||||
"uv": { "name": "UV index" },
|
"name": "Vnitřní vlhkost vzduchu"
|
||||||
"baro_pressure": { "name": "Tlak vzduchu" },
|
},
|
||||||
"dew_point": { "name": "Rosný bod" },
|
"outside_temp": {
|
||||||
"wind_speed": { "name": "Rychlost větru" },
|
"name": "Venkovní teplota"
|
||||||
"wind_dir": { "name": "Směr větru" },
|
},
|
||||||
"wind_gust": { "name": "Poryvy větru" },
|
"outside_humidity": {
|
||||||
"rain": { "name": "Srážky" },
|
"name": "Venkovní vlhkost vzduchu"
|
||||||
"daily_rain": { "name": "Denní úhrn srážek" },
|
},
|
||||||
"solar_radiation": { "name": "Sluneční osvit" },
|
"uv": {
|
||||||
"ch2_temp": { "name": "Teplota senzoru 2" },
|
"name": "UV index"
|
||||||
"ch2_humidity": { "name": "Vlhkost sensoru 2" },
|
},
|
||||||
"ch3_temp": { "name": "Teplota senzoru 3" },
|
"baro_pressure": {
|
||||||
"ch3_humidity": { "name": "Vlhkost sensoru 3" },
|
"name": "Tlak vzduchu"
|
||||||
"ch4_temp": { "name": "Teplota senzoru 4" },
|
},
|
||||||
"ch4_humidity": { "name": "Vlhkost sensoru 4" },
|
"dew_point": {
|
||||||
"heat_index": { "name": "Tepelný index" },
|
"name": "Rosný bod"
|
||||||
"chill_index": { "name": "Pocitová teplota" },
|
},
|
||||||
"hourly_rain": { "name": "Hodinový úhrn srážek" },
|
"wind_speed": {
|
||||||
"weekly_rain": { "name": "Týdenní úhrn srážek" },
|
"name": "Rychlost větru"
|
||||||
"monthly_rain": { "name": "Měsíční úhrn srážek" },
|
},
|
||||||
"yearly_rain": { "name": "Roční úhrn srážek" },
|
"wind_dir": {
|
||||||
"wbgt_temp": { "name": "WBGT index" },
|
"name": "Směr větru"
|
||||||
|
},
|
||||||
|
"wind_gust": {
|
||||||
|
"name": "Poryvy větru"
|
||||||
|
},
|
||||||
|
"rain": {
|
||||||
|
"name": "Srážky"
|
||||||
|
},
|
||||||
|
"daily_rain": {
|
||||||
|
"name": "Denní úhrn srážek"
|
||||||
|
},
|
||||||
|
"solar_radiation": {
|
||||||
|
"name": "Sluneční osvit"
|
||||||
|
},
|
||||||
|
"ch2_temp": {
|
||||||
|
"name": "Teplota senzoru 2"
|
||||||
|
},
|
||||||
|
"ch2_humidity": {
|
||||||
|
"name": "Vlhkost sensoru 2"
|
||||||
|
},
|
||||||
|
"ch3_temp": {
|
||||||
|
"name": "Teplota senzoru 3"
|
||||||
|
},
|
||||||
|
"ch3_humidity": {
|
||||||
|
"name": "Vlhkost sensoru 3"
|
||||||
|
},
|
||||||
|
"ch4_temp": {
|
||||||
|
"name": "Teplota senzoru 4"
|
||||||
|
},
|
||||||
|
"ch4_humidity": {
|
||||||
|
"name": "Vlhkost sensoru 4"
|
||||||
|
},
|
||||||
|
"heat_index": {
|
||||||
|
"name": "Tepelný index"
|
||||||
|
},
|
||||||
|
"chill_index": {
|
||||||
|
"name": "Pocitová teplota"
|
||||||
|
},
|
||||||
|
"hourly_rain": {
|
||||||
|
"name": "Hodinový úhrn srážek"
|
||||||
|
},
|
||||||
|
"weekly_rain": {
|
||||||
|
"name": "Týdenní úhrn srážek"
|
||||||
|
},
|
||||||
|
"monthly_rain": {
|
||||||
|
"name": "Měsíční úhrn srážek"
|
||||||
|
},
|
||||||
|
"yearly_rain": {
|
||||||
|
"name": "Roční úhrn srážek"
|
||||||
|
},
|
||||||
|
"wbgt_temp": {
|
||||||
|
"name": "WBGT index"
|
||||||
|
},
|
||||||
"wind_azimut": {
|
"wind_azimut": {
|
||||||
"name": "Azimut",
|
"name": "Azimut",
|
||||||
"state": {
|
"state": {
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,6 @@
|
||||||
"valid_credentials_key": "Provide valid API KEY.",
|
"valid_credentials_key": "Provide valid API KEY.",
|
||||||
"valid_credentials_match": "API ID and API KEY should not be the same."
|
"valid_credentials_match": "API ID and API KEY should not be the same."
|
||||||
},
|
},
|
||||||
|
|
||||||
"step": {
|
"step": {
|
||||||
"user": {
|
"user": {
|
||||||
"description": "Provide API ID and API KEY so the Weather Station can access HomeAssistant",
|
"description": "Provide API ID and API KEY so the Weather Station can access HomeAssistant",
|
||||||
|
|
@ -25,7 +24,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
"options": {
|
"options": {
|
||||||
"error": {
|
"error": {
|
||||||
"valid_credentials_api": "Provide valid API ID.",
|
"valid_credentials_api": "Provide valid API ID.",
|
||||||
|
|
@ -33,7 +31,6 @@
|
||||||
"valid_credentials_match": "API ID and API KEY should not be the same.",
|
"valid_credentials_match": "API ID and API KEY should not be the same.",
|
||||||
"windy_key_required": "Windy API key is required if you want to enable this function."
|
"windy_key_required": "Windy API key is required if you want to enable this function."
|
||||||
},
|
},
|
||||||
|
|
||||||
"step": {
|
"step": {
|
||||||
"init": {
|
"init": {
|
||||||
"title": "Configure SWS12500 Integration",
|
"title": "Configure SWS12500 Integration",
|
||||||
|
|
@ -43,7 +40,6 @@
|
||||||
"windy": "Windy configuration"
|
"windy": "Windy configuration"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
"basic": {
|
"basic": {
|
||||||
"description": "Provide API ID and API KEY so the Weather Station can access HomeAssistant",
|
"description": "Provide API ID and API KEY so the Weather Station can access HomeAssistant",
|
||||||
"title": "Configure credentials",
|
"title": "Configure credentials",
|
||||||
|
|
@ -60,7 +56,6 @@
|
||||||
"WSLINK": "Enable WSLink API if the station is set to send data via WSLink."
|
"WSLINK": "Enable WSLink API if the station is set to send data via WSLink."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
"windy": {
|
"windy": {
|
||||||
"description": "Resend weather data to your Windy stations.",
|
"description": "Resend weather data to your Windy stations.",
|
||||||
"title": "Configure Windy",
|
"title": "Configure Windy",
|
||||||
|
|
@ -74,6 +69,24 @@
|
||||||
"windy_logger_checkbox": "Enable only if you want to send debuging data to the developer."
|
"windy_logger_checkbox": "Enable only if you want to send debuging data to the developer."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"pocasi": {
|
||||||
|
"description": "Resend data to Pocasi Meteo CZ",
|
||||||
|
"title": "Configure Pocasi Meteo CZ",
|
||||||
|
"data": {
|
||||||
|
"POCASI_API_ID": "ID from your Pocasi Meteo APP",
|
||||||
|
"POCASI_API_KEY": "Key from your Pocasi Meteo APP",
|
||||||
|
"POCASI_SEND_INTERVAL": "Resend interval in seconds",
|
||||||
|
"pocasi_enabled_checkbox": "Enable resending data to Pocasi Meteo",
|
||||||
|
"pocasi_logger_checkbox": "Log data and responses"
|
||||||
|
},
|
||||||
|
"data_description": {
|
||||||
|
"POCASI_API_ID": "You can obtain your ID in Pocasi Meteo App",
|
||||||
|
"POCASI_API_KEY": "You can obtain your KEY in Pocasi Meteo App",
|
||||||
|
"POCASI_SEND_INTERVAL": "Resend interval in seconds (minimum 12s, default 30s)",
|
||||||
|
"pocasi_enabled_checkbox": "Enables resending data to Pocasi Meteo",
|
||||||
|
"pocasi_logger_checkbox": "Enable only if you want to send debbug data to the developer"
|
||||||
|
}
|
||||||
|
},
|
||||||
"migration": {
|
"migration": {
|
||||||
"title": "Statistic migration.",
|
"title": "Statistic migration.",
|
||||||
"description": "For the correct functioning of long-term statistics, it is necessary to migrate the sensor unit in the long-term statistics. The original unit of long-term statistics for daily precipitation was in mm/d, however, the station only sends data in mm without time differentiation.\n\n The sensor to be migrated is for daily precipitation. If the correct value is already in the list for the daily precipitation sensor (mm), then the migration is already complete.\n\n Migration result for the sensor: {migration_status}, a total of {migration_count} rows converted.",
|
"description": "For the correct functioning of long-term statistics, it is necessary to migrate the sensor unit in the long-term statistics. The original unit of long-term statistics for daily precipitation was in mm/d, however, the station only sends data in mm without time differentiation.\n\n The sensor to be migrated is for daily precipitation. If the correct value is already in the list for the daily precipitation sensor (mm), then the migration is already complete.\n\n Migration result for the sensor: {migration_status}, a total of {migration_count} rows converted.",
|
||||||
|
|
@ -88,35 +101,86 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
"entity": {
|
"entity": {
|
||||||
"sensor": {
|
"sensor": {
|
||||||
"indoor_temp": { "name": "Indoor temperature" },
|
"indoor_temp": {
|
||||||
"indoor_humidity": { "name": "Indoor humidity" },
|
"name": "Indoor temperature"
|
||||||
"outside_temp": { "name": "Outside Temperature" },
|
},
|
||||||
"outside_humidity": { "name": "Outside humidity" },
|
"indoor_humidity": {
|
||||||
"uv": { "name": "UV index" },
|
"name": "Indoor humidity"
|
||||||
"baro_pressure": { "name": "Barometric pressure" },
|
},
|
||||||
"dew_point": { "name": "Dew point" },
|
"outside_temp": {
|
||||||
"wind_speed": { "name": "Wind speed" },
|
"name": "Outside Temperature"
|
||||||
"wind_dir": { "name": "Wind direction" },
|
},
|
||||||
"wind_gust": { "name": "Wind gust" },
|
"outside_humidity": {
|
||||||
"rain": { "name": "Rain" },
|
"name": "Outside humidity"
|
||||||
"daily_rain": { "name": "Daily precipitation" },
|
},
|
||||||
"solar_radiation": { "name": "Solar irradiance" },
|
"uv": {
|
||||||
"ch2_temp": { "name": "Channel 2 temperature" },
|
"name": "UV index"
|
||||||
"ch2_humidity": { "name": "Channel 2 humidity" },
|
},
|
||||||
"ch3_temp": { "name": "Channel 3 temperature" },
|
"baro_pressure": {
|
||||||
"ch3_humidity": { "name": "Channel 3 humidity" },
|
"name": "Barometric pressure"
|
||||||
"ch4_temp": { "name": "Channel 4 temperature" },
|
},
|
||||||
"ch4_humidity": { "name": "Channel 4 humidity" },
|
"dew_point": {
|
||||||
"heat_index": { "name": "Apparent temperature" },
|
"name": "Dew point"
|
||||||
"chill_index": { "name": "Wind chill" },
|
},
|
||||||
"hourly_rain": { "name": "Hourly precipitation" },
|
"wind_speed": {
|
||||||
"weekly_rain": { "name": "Weekly precipitation" },
|
"name": "Wind speed"
|
||||||
"monthly_rain": { "name": "Monthly precipitation" },
|
},
|
||||||
"yearly_rain": { "name": "Yearly precipitation" },
|
"wind_dir": {
|
||||||
"wbgt_index": { "name": "WBGT index" },
|
"name": "Wind direction"
|
||||||
|
},
|
||||||
|
"wind_gust": {
|
||||||
|
"name": "Wind gust"
|
||||||
|
},
|
||||||
|
"rain": {
|
||||||
|
"name": "Rain"
|
||||||
|
},
|
||||||
|
"daily_rain": {
|
||||||
|
"name": "Daily precipitation"
|
||||||
|
},
|
||||||
|
"solar_radiation": {
|
||||||
|
"name": "Solar irradiance"
|
||||||
|
},
|
||||||
|
"ch2_temp": {
|
||||||
|
"name": "Channel 2 temperature"
|
||||||
|
},
|
||||||
|
"ch2_humidity": {
|
||||||
|
"name": "Channel 2 humidity"
|
||||||
|
},
|
||||||
|
"ch3_temp": {
|
||||||
|
"name": "Channel 3 temperature"
|
||||||
|
},
|
||||||
|
"ch3_humidity": {
|
||||||
|
"name": "Channel 3 humidity"
|
||||||
|
},
|
||||||
|
"ch4_temp": {
|
||||||
|
"name": "Channel 4 temperature"
|
||||||
|
},
|
||||||
|
"ch4_humidity": {
|
||||||
|
"name": "Channel 4 humidity"
|
||||||
|
},
|
||||||
|
"heat_index": {
|
||||||
|
"name": "Apparent temperature"
|
||||||
|
},
|
||||||
|
"chill_index": {
|
||||||
|
"name": "Wind chill"
|
||||||
|
},
|
||||||
|
"hourly_rain": {
|
||||||
|
"name": "Hourly precipitation"
|
||||||
|
},
|
||||||
|
"weekly_rain": {
|
||||||
|
"name": "Weekly precipitation"
|
||||||
|
},
|
||||||
|
"monthly_rain": {
|
||||||
|
"name": "Monthly precipitation"
|
||||||
|
},
|
||||||
|
"yearly_rain": {
|
||||||
|
"name": "Yearly precipitation"
|
||||||
|
},
|
||||||
|
"wbgt_index": {
|
||||||
|
"name": "WBGT index"
|
||||||
|
},
|
||||||
"wind_azimut": {
|
"wind_azimut": {
|
||||||
"name": "Bearing",
|
"name": "Bearing",
|
||||||
"state": {
|
"state": {
|
||||||
|
|
|
||||||
|
|
@ -106,7 +106,7 @@ class WindyPush:
|
||||||
if self.next_update > datetime.now():
|
if self.next_update > datetime.now():
|
||||||
return False
|
return False
|
||||||
|
|
||||||
purged_data = dict(data)
|
purged_data = data.copy()
|
||||||
|
|
||||||
for purge in PURGE_DATA:
|
for purge in PURGE_DATA:
|
||||||
if purge in purged_data:
|
if purge in purged_data:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue