diff --git a/README.md b/README.md index 7d40711..e16acc3 100644 --- a/README.md +++ b/README.md @@ -183,7 +183,7 @@ If you experience any readings from your mower that the sensor does not read out ## Known issues * A special [Chrome plugin](#installing-the-chrome-extension) is required to complete the account linking in HomeAssistant. -* The Bosch Cloud (running on Azure) might block this integration from time to time. You might see HTTP 4XX errors like 'The connection to the Bosch Indego API failed!'. This might happen during component setup or during state updates. In that case you might be able to workaround the issue by changing the user agent (in Settings > Devices & services > Bosch Indego Mower > Configure). +* The Bosch Cloud (running on Azure) might block this integration from time to time. You might see HTTP 4XX errors like 'The connection to the Bosch Indego API failed!'. This might happen during component setup or during state updates. In that case you might be able to workaround the issue by changing the user agent (during initial component setup or for existing components under Settings > Devices & services > Bosch Indego Mower > Configure). * You might see HTTP 5XX errors from time to time (most of time once a day). In that case there is a problem on the Bosch Cloud side which is temporary unavailable. * HTTP 5XX errors can also occur right after you have sent an impossible command to the mower. Like docking the mower while it's already docked. diff --git a/custom_components/indego/__init__.py b/custom_components/indego/__init__.py index 2bb435d..273b359 100644 --- a/custom_components/indego/__init__.py +++ b/custom_components/indego/__init__.py @@ -108,6 +108,7 @@ def FUNC_ICON_MOWER_ALERT(state): CONF_DEVICE_CLASS: None, CONF_UNIT_OF_MEASUREMENT: None, CONF_ATTR: ["last_updated"], + CONF_TRANSLATION_KEY: "mower_state", }, ENTITY_MOWER_STATE_DETAIL: { CONF_TYPE: SENSOR_TYPE, @@ -120,6 +121,7 @@ def FUNC_ICON_MOWER_ALERT(state): "state_number", "state_description", ], + CONF_TRANSLATION_KEY: "mower_state_detail", }, ENTITY_BATTERY: { CONF_TYPE: SENSOR_TYPE, @@ -196,6 +198,16 @@ def FUNC_ICON_MOWER_ALERT(state): } +def format_indego_date(date: datetime) -> str: + return date.astimezone().strftime("%Y-%m-%d %H:%M:%S") + + +def last_updated_now() -> str: + return homeassistant.util.dt.as_local(utcnow()).strftime( + "%Y-%m-%d %H:%M:%S" + ) + + async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: """Load a config entry.""" hass.data.setdefault(DOMAIN, {}) @@ -640,9 +652,7 @@ async def _update_operating_data(self): self.entities[ENTITY_BATTERY].add_attributes( { - "last_updated": homeassistant.util.dt.as_local(utcnow()).strftime( - "%Y-%m-%d %H:%M" - ), + "last_updated": last_updated_now(), "voltage_V": self._indego_client.operating_data.battery.voltage, "discharge_Ah": self._indego_client.operating_data.battery.discharge, "cycles": self._indego_client.operating_data.battery.cycles, @@ -685,17 +695,13 @@ async def _update_state(self, longpoll: bool = True): self.entities[ENTITY_MOWER_STATE].add_attributes( { - "last_updated": homeassistant.util.dt.as_local(utcnow()).strftime( - "%Y-%m-%d %H:%M" - ) + "last_updated": last_updated_now() } ) self.entities[ENTITY_MOWER_STATE_DETAIL].add_attributes( { - "last_updated": homeassistant.util.dt.as_local(utcnow()).strftime( - "%Y-%m-%d %H:%M" - ), + "last_updated": last_updated_now(), "state_number": self._indego_client.state.state, "state_description": self._indego_client.state_description_detail, } @@ -703,9 +709,7 @@ async def _update_state(self, longpoll: bool = True): self.entities[ENTITY_LAWN_MOWED].add_attributes( { - "last_updated": homeassistant.util.dt.as_local(utcnow()).strftime( - "%Y-%m-%d %H:%M" - ), + "last_updated": last_updated_now(), "last_session_operation_min": self._indego_client.state.runtime.session.operate, "last_session_cut_min": self._indego_client.state.runtime.session.cut, "last_session_charge_min": self._indego_client.state.runtime.session.charge, @@ -749,7 +753,7 @@ async def _update_alerts(self): "alerts_count": self._indego_client.alerts_count, "last_alert_error_code": self._indego_client.alerts[0].error_code, "last_alert_message": self._indego_client.alerts[0].message, - "last_alert_date": self._indego_client.alerts[0].date.strftime("%Y-%m-%d %H:%M:%S"), + "last_alert_date": format_indego_date(self._indego_client.alerts[0].date), "last_alert_read": self._indego_client.alerts[0].read_status, }, False ) @@ -760,7 +764,7 @@ async def _update_alerts(self): alert_index = 0 for index, alert in enumerate(self._indego_client.alerts): self.entities[ENTITY_ALERT].add_attributes({ - ("alert_%i" % index): "%s: %s" % (alert.date.strftime("%Y-%m-%d %H:%M:%S"), alert.message) + ("alert_%i" % index): "%s: %s" % (format_indego_date(alert.date), alert.message) }, False) alert_index = index @@ -791,19 +795,9 @@ async def _update_last_completed_mow(self): ENTITY_LAST_COMPLETED ].state = self._indego_client.last_completed_mow.isoformat() - self.entities[ENTITY_LAST_COMPLETED].add_attributes( - { - "last_completed_mow": self._indego_client.last_completed_mow.strftime( - "%Y-%m-%d %H:%M" - ) - } - ) - self.entities[ENTITY_LAWN_MOWED].add_attributes( { - "last_completed_mow": self._indego_client.last_completed_mow.strftime( - "%Y-%m-%d %H:%M" - ) + "last_completed_mow": format_indego_date(self._indego_client.last_completed_mow) } ) @@ -813,12 +807,14 @@ async def _update_next_mow(self): if self._indego_client.next_mow: self.entities[ENTITY_NEXT_MOW].state = self._indego_client.next_mow.isoformat() + next_mow = format_indego_date(self._indego_client.next_mow) + self.entities[ENTITY_NEXT_MOW].add_attributes( - {"next_mow": self._indego_client.next_mow.strftime("%Y-%m-%d %H:%M")} + {"next_mow": next_mow} ) self.entities[ENTITY_LAWN_MOWED].add_attributes( - {"next_mow": self._indego_client.next_mow.strftime("%Y-%m-%d %H:%M")} + {"next_mow": next_mow} ) @property diff --git a/custom_components/indego/manifest.json b/custom_components/indego/manifest.json index 67953c9..6bc3974 100644 --- a/custom_components/indego/manifest.json +++ b/custom_components/indego/manifest.json @@ -5,8 +5,8 @@ "documentation": "https://github.com/sander1988/Indego", "dependencies": ["application_credentials"], "codeowners": ["@jm-73", "@eavanvalkenburg", "@sander1988"], - "requirements": ["pyIndego==3.2.1"], + "requirements": ["pyIndego==3.2.2"], "iot_class": "cloud_push", - "version": "5.7.3", + "version": "5.7.5", "loggers": ["custom_components.indego", "pyIndego"] } diff --git a/custom_components/indego/translations/de.json b/custom_components/indego/translations/de.json index 39cea18..d7ab6eb 100644 --- a/custom_components/indego/translations/de.json +++ b/custom_components/indego/translations/de.json @@ -2,7 +2,7 @@ "config": { "abort": { "already_configured": "Dieser Bosch Indego Mähroboter wurde bereits konfiguriert!", - "connection_error": "Die Verbindung zur Bosch Indego API ist fehlgeschlagen!", + "connection_error": "Die Verbindung zur Bosch Indego API ist fehlgeschlagen! Bitte die Known Issues Seite (https://github.com/sander1988/Indego?tab=readme-ov-file#known-issues) für möglche Lösungen nutzen.", "no_mowers_found": "In diesem Bosch Indego Account wurden keine Mähroboter gefunden!" }, "step": { @@ -12,7 +12,7 @@ "expose_mower": "Indego Mähroboter als Mower Entität in HomeAssistant anlegen", "expose_vacuum": "Indego Mähroboter als Vacuum Entität in HomeAssistant anlegen" }, - "description": "Erweiterte Einstellung des Bosch Indego Component. Kann für die meisten Benutzer unverändert gelassen werden." + "description": "Erweiterte Einstellung des Bosch Indego Component." }, "mower": { "data": { @@ -62,6 +62,53 @@ } } } + }, + "sensor": { + "mower_state": { + "state": { + "Mowing": "Mähen", + "Docked": "Angedockt", + "Sleeping": "Schläft", + "Paused": "Pausiert" + } + }, + "mower_state_detail": { + "state": { + "Sleeping": "Schläft", + "Reading status": "Status abrufen", + "Charging": "Laden", + "Docked": "Angedockt", + "Sleeping": "Schläft", + "Docked - Software update": "Angedockt - Software Update", + "Docked - Loading map": "Angedockt - Karte laden", + "Docked - Saving map": "Angedockt - Karte speichern", + "Docked - Leaving Dock": "Angedockt - Verlässt Ladestation", + "Mowing": "Mähen", + "Mowing - Relocalising": "Mähen - Position bestimmen", + "Mowing - Learning Lawn": "Mähen - Karte lernen", + "Mowing - Learning Lawn paused": "Mähen - Karte lernen pausiert", + "SpotMow": "SpotMow", + "Mowing randomly": "Zufälliges Mähen", + "Diagnostic mode": "Diagnose Modus", + "End of life": "Lebensende", + "Software update": "Software Update", + "Energy save mode": "Energiesparmodus", + "Relocalising": "Position bestimmen", + "Loading map": "Karte laden", + "Learning lawn": "Karte lernen", + "Paused": "Pausiert", + "Border cut": "Kantenmähen", + "Idle in lawn": "Leerlauf", + "Stuck on lawn, help needed": "Festgefahren, Hilfe nötig", + "Returning to Dock": "Zurück zur Ladestation", + "Returning to Dock - Battery low": "Zurück zur Ladestation - Batteriestand niedrig", + "Returning to dock - Calendar timeslot ended": "Zurück zur Ladestation - Kalender Zeitfenser zu Ende", + "Returning to dock - Battery temp range": "Zurück zur Ladestation - Batterie Temperaturfenster", + "Returning to dock - Lawn complete": "Zurück zur Ladestation - Rasen vollständig gemäht", + "Returning to dock - Relocalising": "Zurück zur Ladestation - Position bestimmen", + "Returning to dock - requested by user/app": "Zurück zur Ladestation - Angefordert vom Benutzer" + } + } } }, "services": { @@ -126,4 +173,4 @@ } } } -} \ No newline at end of file +} diff --git a/custom_components/indego/translations/en.json b/custom_components/indego/translations/en.json index 3d2092d..5af69b5 100644 --- a/custom_components/indego/translations/en.json +++ b/custom_components/indego/translations/en.json @@ -2,7 +2,7 @@ "config": { "abort": { "already_configured": "This Bosch Indego mower has already been configured!", - "connection_error": "The connection to the Bosch Indego API failed!", + "connection_error": "The connection to the Bosch Indego API failed! Please use the known issues page (https://github.com/sander1988/Indego?tab=readme-ov-file#known-issues) for possible solutions.", "no_mowers_found": "No mowers found in this Bosch Indego account!" }, "step": { @@ -12,7 +12,7 @@ "expose_mower": "Expose Indego mower as mower entity in HomeAssistant", "expose_vacuum": "Expose Indego mower as vacuum entity in HomeAssistant" }, - "description": "Advanced settings of the Bosch Indego component. Can be left unchanged for most users." + "description": "Advanced settings of the Bosch Indego component." }, "mower": { "data": { diff --git a/custom_components/indego/translations/fr.json b/custom_components/indego/translations/fr.json index cbae814..1a090e6 100644 --- a/custom_components/indego/translations/fr.json +++ b/custom_components/indego/translations/fr.json @@ -2,7 +2,7 @@ "config": { "abort": { "already_configured": "Cette tondeuse Bosch Indego a déjà été configurée !", - "connection_error": "La connexion à l'API Bosch Indego a échoué !", + "connection_error": "La connexion à l'API Bosch Indego a échoué ! Regardez la page des problèmes connus (https://github.com/sander1988/Indego?tab=readme-ov-file#known-issues) pour trouver une solution éventuelle.", "no_mowers_found": "Aucune tondeuse n'a été trouvée sur ce compte Bosch Indego !" }, "step": { @@ -62,6 +62,52 @@ } } } + }, + "sensor": { + "mower_state": { + "state": { + "Mowing": "Tonte en cours", + "Docked": "Dans station de charge", + "Sleeping": "En veille", + "Paused": "En pause" + } + }, + "mower_state_detail": { + "state": { + "Sleeping": "En veille", + "Reading status": "Obtention du statut en cours", + "Charging": "Charge en cours", + "Docked": "Dans station de charge", + "Docked - Software update": "Dans station de charge - Mise à jour du logiciel", + "Docked - Loading map": "Dans station de charge - Chargement carte", + "Docked - Saving map": "Dans station de charge - Enregistrement carte", + "Docked - Leaving Dock": "Dans station de charge - Quitte la station", + "Mowing": "Tonte en cours", + "Mowing - Relocalising": "Tonte en cours - Cherche position", + "Mowing - Learning Lawn": "Tonte en cours - Apprentissage de la pelouse", + "Mowing - Learning Lawn paused": "Tonte en cours - Apprentissage de la pelouse en pause", + "SpotMow": "SpotMow", + "Mowing randomly": "Tonte aléatoire", + "Diagnostic mode": "Mode diagnostic", + "End of life": "Fin de vie", + "Software update": "Mise à jour du logiciel", + "Energy save mode": "Mode économie d'énergie", + "Relocalising": "Cherche position", + "Loading map": "Chargement carte", + "Learning lawn": "Apprentissage de la pelouse", + "Paused": "En pause", + "Border cut": "Tonte des bords", + "Idle in lawn": "Immobilisée sur pelouse", + "Stuck on lawn, help needed": "Bloquée sur pelouse, intervention nécessaire", + "Returning to Dock": "Retour à la station", + "Returning to Dock - Battery low": "Retour à la station - Batterie faible", + "Returning to dock - Calendar timeslot ended": "Retour à la station - Fin de créneau agenda", + "Returning to dock - Battery temp range": "Retour à la station - Température batterie hors tolérances", + "Returning to dock - Lawn complete": "Retour à la station - Pelouse terminée", + "Returning to dock - Relocalising": "Retour à la station - Cherche position", + "Returning to dock - requested by user/app": "Retour à la station - Demandé par l'utilisateur" + } + } } }, "services": { @@ -126,4 +172,4 @@ } } } -} \ No newline at end of file +} diff --git a/custom_components/indego/translations/nl.json b/custom_components/indego/translations/nl.json index f38e837..c02ee89 100644 --- a/custom_components/indego/translations/nl.json +++ b/custom_components/indego/translations/nl.json @@ -2,7 +2,7 @@ "config": { "abort": { "already_configured": "Deze Bosch Indego robotmaaier is al geconfigureerd!", - "connection_error": "De verbinding met de Bosch Indego API is mislukt!", + "connection_error": "De verbinding met de Bosch Indego API is mislukt! Gebruik de bekende problemen pagina (https://github.com/sander1988/Indego?tab=readme-ov-file#known-issues) voor mogelijke oplossingen.", "no_mowers_found": "Geen robotmaaiers gevonden in deze Bosch Indego account!" }, "step": { @@ -12,7 +12,7 @@ "expose_mower": "Voeg de Indego robotmaaier toe als grasmaaier entiteit aan HomeAssistant", "expose_vacuum": "Voeg de Indego robotmaaier toe als stofzuiger entiteit aan HomeAssistant" }, - "description": "Advanced settings of the Bosch Indego component. Can be left unchanged for most users." + "description": "Geavanceerde instellingen van het Bosch Indego component." }, "mower": { "data": { @@ -62,6 +62,52 @@ } } } + }, + "sensor": { + "mower_state": { + "state": { + "Mowing": "Maaien", + "Docked": "Geparkeerd", + "Sleeping": "Inactief", + "Paused": "Gepauzeerd" + } + }, + "mower_state_detail": { + "state": { + "Sleeping": "Inactief", + "Reading status": "Status ophalen", + "Charging": "Opladen", + "Docked": "Geparkeerd", + "Docked - Software update": "Geparkeerd - Software update", + "Docked - Loading map": "Geparkeerd - Map laden", + "Docked - Saving map": "Geparkeerd - Map opslaan", + "Docked - Leaving Dock": "Station verlaten", + "Mowing": "Maaien", + "Mowing - Relocalising": "Maaien - Herlokaliseren", + "Mowing - Learning Lawn": "Maaien - Gazon leren", + "Mowing - Learning Lawn paused": "Maaien - Gazon leren gepauzeerd", + "SpotMow": "Plek maaien", + "Mowing randomly": "Willekeurig maaien", + "Diagnostic mode": "Onderhoudsmodus", + "End of life": "Geen ondersteuning (EOL)", + "Software update": "Software update", + "Energy save mode": "Energiespaarstand", + "Relocalising": "Herlokaliseren", + "Loading map": "Map laden map", + "Learning lawn": "Gazon leren", + "Paused": "Gepauzeerd", + "Border cut": "Rand maaien", + "Idle in lawn": "Inactief op gazon", + "Stuck on lawn, help needed": "Vastgelopen op gazon, hulp nodig", + "Returning to Dock": "Terugkeren naar basisstation", + "Returning to Dock - Battery low": "Terugkeren naar basisstation - Batterij bijna leeg", + "Returning to dock - Calendar timeslot ended": "Terugkeren naar basisstation - Kalender tijdslot eindigd", + "Returning to dock - Battery temp range": "Terugkeren naar basisstation - Batterij temperatuur", + "Returning to dock - Lawn complete": "Terugkeren naar basisstation - Maaien voltooid", + "Returning to dock - Relocalising": "Terugkeren naar basisstation - Herlokaliseren", + "Returning to dock - requested by user/app": "Terugkeren naar basisstation - verzocht door gebruiker" + } + } } }, "services": { @@ -126,4 +172,4 @@ } } } -} \ No newline at end of file +} diff --git a/custom_components/indego/translations/pl.json b/custom_components/indego/translations/pl.json index 52c4e8e..528657c 100644 --- a/custom_components/indego/translations/pl.json +++ b/custom_components/indego/translations/pl.json @@ -2,7 +2,7 @@ "config": { "abort": { "already_configured": "Ta kosiarka Bosch Indego została już wcześniej skonfigurowana!", - "connection_error": "Błąd połączenia z Bosch Indego API!", + "connection_error": "Błąd połączenia z Bosch Indego API! Please use the known issues page (https://github.com/sander1988/Indego?tab=readme-ov-file#known-issues) for possible solutions.", "no_mowers_found": "Na tym koncie Bosch Indego nie znaleziono żadnej kosiarki!" }, "step": { @@ -12,7 +12,7 @@ "expose_mower": "Wyświetl kosiarkę Indego jako encję kosiarki w HomeAssistant", "expose_vacuum": "Wyświetl kosiarkę Indego jako encję odkurzacza w HomeAssistant" }, - "description": "Ustawienia zaawansowane komponentu Bosch Indego. Większość użytkowników może pozostawić je bez zmian." + "description": "Ustawienia zaawansowane komponentu Bosch Indego." }, "mower": { "data": { @@ -62,6 +62,52 @@ } } } + }, + "sensor": { + "mower_state": { + "state": { + "Mowing": "Mowing", + "Docked": "Docked", + "Sleeping": "Sleeping", + "Paused": "Paused" + } + }, + "mower_state_detail": { + "state": { + "Sleeping": "Sleeping", + "Reading status": "Reading status", + "Charging": "Charging", + "Docked": "Docked", + "Docked - Software update": "Docked - Software update", + "Docked - Loading map": "Docked - Loading map", + "Docked - Saving map": "Docked - Saving map", + "Docked - Leaving Dock": "Docked - Leaving Dock", + "Mowing": "Mowing", + "Mowing - Relocalising": "Mowing - Relocalising", + "Mowing - Learning Lawn": "Mowing - Learning Lawn", + "Mowing - Learning Lawn paused": "Mowing - Learning Lawn paused", + "SpotMow": "SpotMow", + "Mowing randomly": "Mowing randomly", + "Diagnostic mode": "Diagnostic mode", + "End of life": "End of life", + "Software update": "Software update", + "Energy save mode": "Energy save mode", + "Relocalising": "Relocalising", + "Loading map": "Loading map", + "Learning lawn": "Learning lawn", + "Paused": "Paused", + "Border cut": "Border cut", + "Idle in lawn": "Idle in lawn", + "Stuck on lawn, help needed": "Stuck on lawn, help needed", + "Returning to Dock": "Returning to Dock", + "Returning to Dock - Battery low": "Returning to Dock - Battery low", + "Returning to dock - Calendar timeslot ended": "Returning to dock - Calendar timeslot ended", + "Returning to dock - Battery temp range": "Returning to dock - Battery temp range", + "Returning to dock - Lawn complete": "Returning to dock - Lawn complete", + "Returning to dock - Relocalising": "Returning to dock - Relocalising", + "Returning to dock - requested by user/app": "Returning to dock - requested by user/app" + } + } } }, "services": { @@ -126,4 +172,4 @@ } } } -} \ No newline at end of file +} diff --git a/custom_components/indego/translations/sk.json b/custom_components/indego/translations/sk.json new file mode 100644 index 0000000..d2a4e84 --- /dev/null +++ b/custom_components/indego/translations/sk.json @@ -0,0 +1,129 @@ +{ + "config": { + "abort": { + "already_configured": "Táto kosačka Bosch Indego je už nakonfigurovaná!", + "connection_error": "Pripojenie k Bosch Indego API zlyhalo! Použite stránku so známymi problémami (https://github.com/sander1988/Indego?tab=readme-ov-file#known-issues) pre možné riešenia.", + "no_mowers_found": "V tomto účte Bosch Indego sa nenašli žiadne kosačky!" + }, + "step": { + "advanced": { + "data": { + "user_agent": "User-Agent", + "expose_mower": "Odhaľte kosačku Indego ako entitu kosačky v aplikácii HomeAssistant", + "expose_vacuum": "Odhaľte kosačku Indego ako vákuovú entitu v aplikácii HomeAssistant" + }, + "description": "Rozšírené nastavenia komponentu Bosch Indego." + }, + "mower": { + "data": { + "mower_serial": "Séria kosačky", + "mower_name": "Názov kosačky" + }, + "description": "Vyberte prosím sériové číslo kosačky Bosch, ktorú chcete pridať." + } + } + }, + "options": { + "step": { + "init": { + "title": "Pokročilé nastavenia", + "description": "Rozšírené nastavenia komponentu Bosch Indego. Po zmene týchto nastavení možno budete musieť znova načítať komponent.", + "data": { + "user_agent": "User-Agent", + "expose_mower": "Odhaľte kosačku Indego ako entitu kosačky v aplikácii HomeAssistant", + "expose_vacuum": "Odhaľte kosačku Indego ako vákuovú entitu v aplikácii HomeAssistant", + "show_all_alerts": "Zobrazte celú históriu upozornení v aplikácii HomeAssistant. Toto sa neodporúča väčšine používateľov, môže to mať významný vplyv na veľkosť databázy HomeAssistant!" + } + } + } + }, + "entity": { + "binary_sensor": { + "indego_alert": { + "state_attributes": { + "alerts_count": { + "name": "Počet upozornení" + }, + "last_alert_error_code": { + "name": "Kód chyby (najnovší)" + }, + "last_alert_message": { + "name": "Výstražná správa (najnovšia)" + }, + "last_alert_date": { + "name": "Dátum upozornenia (najnovší)" + }, + "last_alert_read": { + "name": "Stav upozornenia (najnovší)", + "state": { + "read": "Prečítané", + "unread": "Neprečítané" + } + } + } + } + } + }, + "services": { + "command": { + "description": "Odošlite príkazy kosačke. Povolené príkazy sú teraz, vráťte sa do doku a pozastavte.", + "fields": { + "mower_serial": { + "description": "Sériová kosačka. Potrebné iba vtedy, keď máte nakonfigurovaných viacero kosačiek." + }, + "command": { + "description": "Príkaz pre kosačku." + } + } + }, + "smartmowing": { + "description": "Povoliť alebo zakázať funkciu SmartMowing. Povolené príkazy sú true alebo false.", + "fields": { + "mower_serial": { + "description": "Sériová kosačka. Potrebné iba vtedy, keď máte nakonfigurovaných viacero kosačiek." + }, + "enable": { + "description": "Povoliť SmartMowing." + } + } + }, + "delete_alert": { + "description": "Odstrániť vybraté upozornenie.", + "fields": { + "mower_serial": { + "description": "Sériová kosačka. Potrebné iba vtedy, keď máte nakonfigurovaných viacero kosačiek." + }, + "alert_index": { + "description": "Odstrániť vybraté upozornenia. 0 pre najnovšie upozornenie." + } + } + }, + "delete_alert_all": { + "description": "Odstráňte všetky upozornenia.", + "fields": { + "mower_serial": { + "description": "Sériová kosačka. Potrebné iba vtedy, keď máte nakonfigurovaných viacero kosačiek." + } + } + }, + "read_alert": { + "description": "Označte vybrané upozornenie ako prečítané.", + "fields": { + "mower_serial": { + "description": "Sériová kosačka. Potrebné iba vtedy, keď máte nakonfigurovaných viacero kosačiek." + }, + "alert_index": { + "description": "Označte vybrané upozornenie ako prečítané. 0 pre najnovšie upozornenie." + } + } + }, + "read_alert_all": { + "description": "Označte všetky upozornenia ako prečítané.", + "fields": { + "mower_serial": { + "description": "Sériová kosačka. Potrebné iba vtedy, keď máte nakonfigurovaných viacero kosačiek." + } + } + } + } +}