rebrand to sleepd, remove next alarm sensor

This commit is contained in:
sudoxnym 2025-12-07 08:04:02 -06:00
parent 0cbe7ba589
commit 7b62009e0d
28 changed files with 2996 additions and 3111 deletions

View file

@ -1,4 +1,4 @@
# Contributing to SAAS - Sleep As Android Status # Contributing to sleepd - Sleep As Android Status
Thanks for helping improve the project! Thanks for helping improve the project!

View file

@ -1,4 +1,4 @@
# 🧪 Deploying SAAS - Sleep As Android Status via HACS # 🧪 Deploying sleepd - Sleep As Android Status via HACS
## 🛠️ Pre-requisites ## 🛠️ Pre-requisites
@ -11,12 +11,12 @@
1. In HACS, go to "Integrations" 1. In HACS, go to "Integrations"
2. Click the 3-dot menu > Custom repositories 2. Click the 3-dot menu > Custom repositories
3. Paste: `https://github.com/sudoxnym/saas` 3. Paste: `https://github.com/sudoxnym/sleepd`
4. Set Category to "Integration" 4. Set Category to "Integration"
5. Click "Add" 5. Click "Add"
6. Refresh, search for `SAAS - Sleep As Android Status`, and install 6. Refresh, search for `sleepd - Sleep As Android Status`, and install
7. Restart Home Assistant 7. Restart Home Assistant
8. Go to Settings > Devices & Services > Add Integration > search "SAAS" 8. Go to Settings > Devices & Services > Add Integration > search "sleepd"
9. Configure the integration with your MQTT topic and states 9. Configure the integration with your MQTT topic and states
## 🧪 Testing ## 🧪 Testing

View file

@ -4,10 +4,10 @@
</a> </a>
</p> </p>
<h1>🌙 saas - Sleep As Android status</h1> <h1>🌙 sleepd - Sleep As Android status</h1>
<h2>🚨 0.2.0 breaking changes 🚨</h2> <h2>🚨 0.2.0 breaking changes 🚨</h2>
due to changes in **Home Assistant** 2025.12, you **must** remove your existing **SAAS** integration entries and re-add them after updating to this version. due to changes in **Home Assistant** 2025.12, you **must** remove your existing **sleepd** integration entries and re-add them after updating to this version.
--- ---
@ -21,7 +21,7 @@ sleep as android status is my solution for wake/sleep state within HA. it listen
<ul> <ul>
<li> <li>
<details> <details>
<summary><strong>📡 9 sensors</strong></summary> <summary><strong>📡 8 sensors</strong></summary>
| Sensor | Description | | Sensor | Description |
| ------ | ----------- | | ------ | ----------- |
@ -57,7 +57,7 @@ sleep as android status is my solution for wake/sleep state within HA. it listen
<details> <details>
<summary><strong>🛠️ 1 service</strong></summary> <summary><strong>🛠️ 1 service</strong></summary>
<pre> <pre>
service: saas.saas_example_alarm_set service: sleepd.sleepd_example_alarm_set
data: data:
message: Example Message! message: Example Message!
day: monday day: monday
@ -86,15 +86,15 @@ data:
<h2>🧪 installation:</h2> <h2>🧪 installation:</h2>
<ul> <ul>
<li>add <code>https://www.github.com/sudoxnym/saas</code> to your custom repositories in HACS</li> <li>add <code>https://www.github.com/sudoxnym/sleepd</code> to your custom repositories in HACS</li>
<li>search and download **SAAS - Sleep As Android status**</li> <li>search and download **sleepd - Sleep As Android status**</li>
<li>restart Home Assistant</li> <li>restart Home Assistant</li>
<li> <li>
<a href="https://my.home-assistant.io/redirect/config_flow_start/?domain=saas"> <a href="https://my.home-assistant.io/redirect/config_flow_start/?domain=sleepd">
<img src="https://my.home-assistant.io/badges/config_flow_start.svg" alt="add to ha"> <img src="https://my.home-assistant.io/badges/config_flow_start.svg" alt="add to ha">
</a> </a>
</li> </li>
<li>add integration: **SAAS - Sleep As Android status**</li> <li>add integration: **sleepd - Sleep As Android status**</li>
</ul> </ul>
<h2>⚙️ configuration:</h2> <h2>⚙️ configuration:</h2>

View file

@ -1,10 +0,0 @@
{
"domain": "saas",
"name": "SAAS - Sleep As Android Status",
"codeowners": ["@sudoxnym"],
"config_flow": true,
"dependencies": ["mqtt", "mobile_app"],
"documentation": "https://www.github.com/sudoxnym/saas",
"issue_tracker": "https://www.github.com/sudoxnym/saas/issues",
"version": "0.2.1"
}

View file

@ -1,57 +1,57 @@
import asyncio import asyncio
import logging import logging
from homeassistant.config_entries import ConfigEntry from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from .const import DOMAIN from .const import DOMAIN
from .services import async_setup_services # Import the service setup function from .services import async_setup_services # Import the service setup function
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
async def async_setup(hass: HomeAssistant, config: dict) -> bool: async def async_setup(hass: HomeAssistant, config: dict) -> bool:
"""Set up the SAAS - Sleep As Android Status component.""" """Set up the sleepd - Sleep As Android Status component."""
_LOGGER.info("Starting setup of the SAAS component") _LOGGER.info("Starting setup of the sleepd component")
return True return True
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Set up a config entry.""" """Set up a config entry."""
_LOGGER.info(f"Starting setup of config entry with ID: {entry.entry_id}") _LOGGER.info(f"Starting setup of config entry with ID: {entry.entry_id}")
# ensure we have a dict for this integration # ensure we have a dict for this integration
hass.data.setdefault(DOMAIN, {}) hass.data.setdefault(DOMAIN, {})
# merge original data + any saved options so runtime sees edits # merge original data + any saved options so runtime sees edits
merged = {**entry.data, **entry.options} merged = {**entry.data, **entry.options}
hass.data[DOMAIN][entry.entry_id] = merged hass.data[DOMAIN][entry.entry_id] = merged
_LOGGER.debug( _LOGGER.debug(
"Merged entry.data and entry.options for %s: %s", "Merged entry.data and entry.options for %s: %s",
entry.entry_id, entry.entry_id,
hass.data[DOMAIN][entry.entry_id], hass.data[DOMAIN][entry.entry_id],
) )
# forward setup to sensor and button platforms # forward setup to sensor and button platforms
await hass.config_entries.async_forward_entry_setups(entry, ["sensor", "button"]) await hass.config_entries.async_forward_entry_setups(entry, ["sensor", "button"])
# set up any custom services # set up any custom services
_LOGGER.info("Starting setup of services") _LOGGER.info("Starting setup of services")
await async_setup_services(hass) await async_setup_services(hass)
_LOGGER.info("Finished setup of services") _LOGGER.info("Finished setup of services")
_LOGGER.info("Finished setup of config entry") _LOGGER.info("Finished setup of config entry")
return True return True
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Unload a config entry.""" """Unload a config entry."""
_LOGGER.info(f"Starting unload of config entry with ID: {entry.entry_id}") _LOGGER.info(f"Starting unload of config entry with ID: {entry.entry_id}")
# unload sensor and button platforms # unload sensor and button platforms
unload_ok = await hass.config_entries.async_unload_platforms(entry, ["sensor", "button"]) unload_ok = await hass.config_entries.async_unload_platforms(entry, ["sensor", "button"])
if not unload_ok: if not unload_ok:
_LOGGER.error("Failed to unload platforms for saas") _LOGGER.error("Failed to unload platforms for sleepd")
return False return False
# clean up our stored data # clean up our stored data
hass.data[DOMAIN].pop(entry.entry_id, None) hass.data[DOMAIN].pop(entry.entry_id, None)
_LOGGER.info(f"hass.data[{DOMAIN}] after unload: {hass.data.get(DOMAIN)}") _LOGGER.info(f"hass.data[{DOMAIN}] after unload: {hass.data.get(DOMAIN)}")
_LOGGER.info("Finished unload of config entry") _LOGGER.info("Finished unload of config entry")
return True return True

View file

@ -1,184 +1,184 @@
import logging import logging
import voluptuous as vol import voluptuous as vol
from .const import ( from .const import (
DOMAIN, DOMAIN,
CONF_NAME, CONF_NAME,
CONF_TOPIC, CONF_TOPIC,
AVAILABLE_STATES, AVAILABLE_STATES,
CONF_AWAKE_DURATION, CONF_AWAKE_DURATION,
CONF_SLEEP_DURATION, CONF_SLEEP_DURATION,
CONF_AWAKE_STATES, CONF_AWAKE_STATES,
CONF_SLEEP_STATES, CONF_SLEEP_STATES,
DEFAULT_AWAKE_DURATION, DEFAULT_AWAKE_DURATION,
DEFAULT_SLEEP_DURATION, DEFAULT_SLEEP_DURATION,
DEFAULT_AWAKE_STATES, DEFAULT_AWAKE_STATES,
DEFAULT_SLEEP_STATES, DEFAULT_SLEEP_STATES,
CONF_NOTIFY_TARGET, CONF_NOTIFY_TARGET,
) )
from homeassistant import config_entries from homeassistant import config_entries
from voluptuous import Schema, Required, Optional, In from voluptuous import Schema, Required, Optional, In
from homeassistant.helpers import config_validation as cv from homeassistant.helpers import config_validation as cv
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
class MyConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): class MyConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
"""Handle the initial config flow for SAAS.""" """Handle the initial config flow for sleepd."""
VERSION = 2 VERSION = 2
CONNECTION_CLASS = config_entries.CONN_CLASS_LOCAL_PUSH CONNECTION_CLASS = config_entries.CONN_CLASS_LOCAL_PUSH
async def async_step_user(self, user_input=None): async def async_step_user(self, user_input=None):
"""Initial setup step.""" """Initial setup step."""
errors = {} errors = {}
# discover available mobile_app notify services # discover available mobile_app notify services
notify_services = self.hass.services.async_services().get("notify", {}) notify_services = self.hass.services.async_services().get("notify", {})
notify_targets = { notify_targets = {
svc.replace("mobile_app_", "") svc.replace("mobile_app_", "")
.replace("_", " ") .replace("_", " ")
.lower(): svc .lower(): svc
for svc in notify_services for svc in notify_services
if svc.startswith("mobile_app_") if svc.startswith("mobile_app_")
} }
if user_input is not None: if user_input is not None:
# map chosen label back to service name, or remove if invalid # map chosen label back to service name, or remove if invalid
nt_label = user_input.get(CONF_NOTIFY_TARGET) nt_label = user_input.get(CONF_NOTIFY_TARGET)
if nt_label in notify_targets: if nt_label in notify_targets:
user_input[CONF_NOTIFY_TARGET] = notify_targets[nt_label] user_input[CONF_NOTIFY_TARGET] = notify_targets[nt_label]
else: else:
user_input.pop(CONF_NOTIFY_TARGET, None) user_input.pop(CONF_NOTIFY_TARGET, None)
# basic validation # basic validation
if not user_input.get(CONF_NAME): if not user_input.get(CONF_NAME):
errors[CONF_NAME] = "required" errors[CONF_NAME] = "required"
if not errors: if not errors:
return self.async_create_entry( return self.async_create_entry(
title=user_input[CONF_NAME], title=user_input[CONF_NAME],
data=user_input data=user_input
) )
# build initial form schema # build initial form schema
schema = { schema = {
Required(CONF_NAME): str, Required(CONF_NAME): str,
Required(CONF_TOPIC): str, Required(CONF_TOPIC): str,
Required(CONF_AWAKE_DURATION, default=DEFAULT_AWAKE_DURATION): int, Required(CONF_AWAKE_DURATION, default=DEFAULT_AWAKE_DURATION): int,
Required(CONF_SLEEP_DURATION, default=DEFAULT_SLEEP_DURATION): int, Required(CONF_SLEEP_DURATION, default=DEFAULT_SLEEP_DURATION): int,
Required( Required(
CONF_AWAKE_STATES, default=DEFAULT_AWAKE_STATES CONF_AWAKE_STATES, default=DEFAULT_AWAKE_STATES
): cv.multi_select(AVAILABLE_STATES), ): cv.multi_select(AVAILABLE_STATES),
Required( Required(
CONF_SLEEP_STATES, default=DEFAULT_SLEEP_STATES CONF_SLEEP_STATES, default=DEFAULT_SLEEP_STATES
): cv.multi_select(AVAILABLE_STATES), ): cv.multi_select(AVAILABLE_STATES),
} }
if notify_targets: if notify_targets:
# truly optional, only real targets, no blank choice # truly optional, only real targets, no blank choice
schema[Optional(CONF_NOTIFY_TARGET)] = In(list(notify_targets.keys())) schema[Optional(CONF_NOTIFY_TARGET)] = In(list(notify_targets.keys()))
return self.async_show_form( return self.async_show_form(
step_id="user", step_id="user",
data_schema=Schema(schema), data_schema=Schema(schema),
errors=errors, errors=errors,
) )
@staticmethod @staticmethod
@config_entries.callback @config_entries.callback
def async_get_options_flow(entry): def async_get_options_flow(entry):
"""Return options flow handler.""" """Return options flow handler."""
return OptionsFlowHandler(entry) return OptionsFlowHandler(entry)
class OptionsFlowHandler(config_entries.OptionsFlow): class OptionsFlowHandler(config_entries.OptionsFlow):
"""Handle SAAS options editing.""" """Handle sleepd options editing."""
def __init__(self, entry): def __init__(self, entry):
super().__init__() super().__init__()
self._config_entry = entry self._config_entry = entry
async def async_step_init(self, user_input=None): async def async_step_init(self, user_input=None):
"""Manage the options form (edit).""" """Manage the options form (edit)."""
current = dict(self._config_entry.data) current = dict(self._config_entry.data)
# discover mobile_app notify services again # discover mobile_app notify services again
notify_services = self.hass.services.async_services().get("notify", {}) notify_services = self.hass.services.async_services().get("notify", {})
notify_targets = { notify_targets = {
svc.replace("mobile_app_", "") svc.replace("mobile_app_", "")
.replace("_", " ") .replace("_", " ")
.lower(): svc .lower(): svc
for svc in notify_services for svc in notify_services
if svc.startswith("mobile_app_") if svc.startswith("mobile_app_")
} }
# reverse map for defaults # reverse map for defaults
reverse_map = {v: k for k, v in notify_targets.items()} reverse_map = {v: k for k, v in notify_targets.items()}
if user_input is not None: if user_input is not None:
new_data = current.copy() new_data = current.copy()
# standard fields # standard fields
for key in ( for key in (
CONF_NAME, CONF_NAME,
CONF_TOPIC, CONF_TOPIC,
CONF_AWAKE_DURATION, CONF_AWAKE_DURATION,
CONF_SLEEP_DURATION, CONF_SLEEP_DURATION,
CONF_AWAKE_STATES, CONF_AWAKE_STATES,
CONF_SLEEP_STATES, CONF_SLEEP_STATES,
): ):
if key in user_input: if key in user_input:
new_data[key] = user_input[key] new_data[key] = user_input[key]
# handle notify_target with "no mobile" option # handle notify_target with "no mobile" option
sel = user_input.get(CONF_NOTIFY_TARGET) sel = user_input.get(CONF_NOTIFY_TARGET)
if sel == "no mobile": if sel == "no mobile":
new_data.pop(CONF_NOTIFY_TARGET, None) new_data.pop(CONF_NOTIFY_TARGET, None)
elif sel in notify_targets: elif sel in notify_targets:
new_data[CONF_NOTIFY_TARGET] = notify_targets[sel] new_data[CONF_NOTIFY_TARGET] = notify_targets[sel]
# persist back into entry.data and reload # persist back into entry.data and reload
self.hass.config_entries.async_update_entry( self.hass.config_entries.async_update_entry(
self._config_entry, self._config_entry,
data=new_data, data=new_data,
) )
await self.hass.config_entries.async_reload(self._config_entry.entry_id) await self.hass.config_entries.async_reload(self._config_entry.entry_id)
return self.async_create_entry(title="", data=None) return self.async_create_entry(title="", data=None)
# build edit form schema with defaults # build edit form schema with defaults
schema = { schema = {
Required( Required(
CONF_NAME, default=current.get(CONF_NAME, "") CONF_NAME, default=current.get(CONF_NAME, "")
): str, ): str,
Required( Required(
CONF_TOPIC, default=current.get(CONF_TOPIC, "") CONF_TOPIC, default=current.get(CONF_TOPIC, "")
): str, ): str,
Required( Required(
CONF_AWAKE_DURATION, CONF_AWAKE_DURATION,
default=current.get(CONF_AWAKE_DURATION, DEFAULT_AWAKE_DURATION), default=current.get(CONF_AWAKE_DURATION, DEFAULT_AWAKE_DURATION),
): int, ): int,
Required( Required(
CONF_SLEEP_DURATION, CONF_SLEEP_DURATION,
default=current.get(CONF_SLEEP_DURATION, DEFAULT_SLEEP_DURATION), default=current.get(CONF_SLEEP_DURATION, DEFAULT_SLEEP_DURATION),
): int, ): int,
Required( Required(
CONF_AWAKE_STATES, CONF_AWAKE_STATES,
default=current.get(CONF_AWAKE_STATES, DEFAULT_AWAKE_STATES), default=current.get(CONF_AWAKE_STATES, DEFAULT_AWAKE_STATES),
): cv.multi_select(AVAILABLE_STATES), ): cv.multi_select(AVAILABLE_STATES),
Required( Required(
CONF_SLEEP_STATES, CONF_SLEEP_STATES,
default=current.get(CONF_SLEEP_STATES, DEFAULT_SLEEP_STATES), default=current.get(CONF_SLEEP_STATES, DEFAULT_SLEEP_STATES),
): cv.multi_select(AVAILABLE_STATES), ): cv.multi_select(AVAILABLE_STATES),
} }
if notify_targets: if notify_targets:
# prepend "no mobile", then all real targets, all lowercase with spaces # prepend "no mobile", then all real targets, all lowercase with spaces
labels = ["no mobile"] + list(notify_targets.keys()) labels = ["no mobile"] + list(notify_targets.keys())
default_label = reverse_map.get( default_label = reverse_map.get(
current.get(CONF_NOTIFY_TARGET), "no mobile" current.get(CONF_NOTIFY_TARGET), "no mobile"
) )
schema[Optional(CONF_NOTIFY_TARGET, default=default_label)] = In(labels) schema[Optional(CONF_NOTIFY_TARGET, default=default_label)] = In(labels)
return self.async_show_form( return self.async_show_form(
step_id="init", step_id="init",
data_schema=Schema(schema), data_schema=Schema(schema),
errors={}, errors={},
) )

View file

@ -1,159 +1,159 @@
"""Constants for the SAAS - Sleep As Android Stats integration.""" """Constants for the sleepd - Sleep As Android Stats integration."""
DOMAIN = "saas" DOMAIN = "sleepd"
INTEGRATION_NAME = "SAAS - Sleep As Android Stats" INTEGRATION_NAME = "sleepd - Sleep As Android Stats"
MODEL = "SAAS - Version 0.0.1" MODEL = "sleepd - Version 0.0.1"
CONF_NAME = "name" # Name of the Integration CONF_NAME = "name" # Name of the Integration
CONF_TOPIC = "topic_template" # MQTT Topic for Sleep As Android Events CONF_TOPIC = "topic_template" # MQTT Topic for Sleep As Android Events
CONF_AWAKE_DURATION = "awake_duration" # Awake Duration CONF_AWAKE_DURATION = "awake_duration" # Awake Duration
CONF_SLEEP_DURATION = "sleep_duration" # Sleep Duration CONF_SLEEP_DURATION = "sleep_duration" # Sleep Duration
CONF_AWAKE_STATES = "awake_states" # Awake States CONF_AWAKE_STATES = "awake_states" # Awake States
CONF_SLEEP_STATES = "sleep_states" # Sleep States CONF_SLEEP_STATES = "sleep_states" # Sleep States
CONF_NOTIFY_TARGET = "notify_target" # Notify Target CONF_NOTIFY_TARGET = "notify_target" # Notify Target
DEFAULT_AWAKE_DURATION = 10 # Default Awake Duration DEFAULT_AWAKE_DURATION = 10 # Default Awake Duration
DEFAULT_SLEEP_DURATION = 10 # Default Sleep Duration DEFAULT_SLEEP_DURATION = 10 # Default Sleep Duration
DEFAULT_AWAKE_STATES = ["Awake", "Sleep Tracking Stopped"] # Default Awake States DEFAULT_AWAKE_STATES = ["Awake", "Sleep Tracking Stopped"] # Default Awake States
DEFAULT_SLEEP_STATES = [ DEFAULT_SLEEP_STATES = [
"Not Awake", "Not Awake",
"Rem", "Rem",
"Light Sleep", "Light Sleep",
"Deep Sleep", "Deep Sleep",
"Sleep Tracking Started", "Sleep Tracking Started",
] # Default Sleep States ] # Default Sleep States
SENSOR_TYPES = { SENSOR_TYPES = {
"state": {"name": "State", "device_class": None}, "state": {"name": "State", "device_class": None},
"awake": {"name": "Awake", "device_class": "motion"}, "awake": {"name": "Awake", "device_class": "motion"},
} }
DAY_MAPPING = { DAY_MAPPING = {
"sunday": 1, "sunday": 1,
"monday": 2, "monday": 2,
"tuesday": 3, "tuesday": 3,
"wednesday": 4, "wednesday": 4,
"thursday": 5, "thursday": 5,
"friday": 6, "friday": 6,
"saturday": 7, "saturday": 7,
} }
AVAILABLE_STATES = [ AVAILABLE_STATES = [
'Unknown', 'Unknown',
'Alarm Alert Dismiss', 'Alarm Alert Dismiss',
'Alarm Alert Start', 'Alarm Alert Start',
'Alarm Rescheduled', 'Alarm Rescheduled',
'Alarm Skip Next', 'Alarm Skip Next',
'Alarm Snooze Canceled', 'Alarm Snooze Canceled',
'Alarm Snooze Clicked', 'Alarm Snooze Clicked',
'Antisnoring', 'Antisnoring',
'Apnea Alarm', 'Apnea Alarm',
'Awake', 'Awake',
'Before Alarm', 'Before Alarm',
'Before Smart Period', 'Before Smart Period',
'Deep Sleep', 'Deep Sleep',
'Light Sleep', 'Light Sleep',
'Lullaby Start', 'Lullaby Start',
'Lullaby Stop', 'Lullaby Stop',
'Lullaby Volume Down', 'Lullaby Volume Down',
'Not Awake', 'Not Awake',
'Rem', 'Rem',
'Show Skip Next Alarm', 'Show Skip Next Alarm',
'Sleep Tracking Paused', 'Sleep Tracking Paused',
'Sleep Tracking Resumed', 'Sleep Tracking Resumed',
'Sleep Tracking Started', 'Sleep Tracking Started',
'Sleep Tracking Stopped', 'Sleep Tracking Stopped',
'Smart Period', 'Smart Period',
'Sound Event Baby', 'Sound Event Baby',
'Sound Event Cough', 'Sound Event Cough',
'Sound Event Laugh', 'Sound Event Laugh',
'Sound Event Snore', 'Sound Event Snore',
'Sound Event Talk', 'Sound Event Talk',
'Time for Bed', 'Time for Bed',
] ]
STATE_MAPPING = { STATE_MAPPING = {
"unknown": "Unknown", "unknown": "Unknown",
"sleep_tracking_started": "Sleep Tracking Started", "sleep_tracking_started": "Sleep Tracking Started",
"sleep_tracking_stopped": "Sleep Tracking Stopped", "sleep_tracking_stopped": "Sleep Tracking Stopped",
"sleep_tracking_paused": "Sleep Tracking Paused", "sleep_tracking_paused": "Sleep Tracking Paused",
"sleep_tracking_resumed": "Sleep Tracking Resumed", "sleep_tracking_resumed": "Sleep Tracking Resumed",
"alarm_snooze_clicked": "Alarm Snoozed", "alarm_snooze_clicked": "Alarm Snoozed",
"alarm_snooze_canceled": "Snooze Canceled", "alarm_snooze_canceled": "Snooze Canceled",
"time_to_bed_alarm_alert": "Time for Bed", "time_to_bed_alarm_alert": "Time for Bed",
"alarm_alert_start": "Alarm Alert Started", "alarm_alert_start": "Alarm Alert Started",
"alarm_alert_dismiss": "Alarm Dismissed", "alarm_alert_dismiss": "Alarm Dismissed",
"alarm_skip_next": "Skip Next Alarm", "alarm_skip_next": "Skip Next Alarm",
"show_skip_next_alarm": "Show Skip Next Alarm", "show_skip_next_alarm": "Show Skip Next Alarm",
"rem": "REM", "rem": "REM",
"smart_period": "Smart Period", "smart_period": "Smart Period",
"before_smart_period": "Before Smart Period", "before_smart_period": "Before Smart Period",
"lullaby_start": "Lullaby Start", "lullaby_start": "Lullaby Start",
"lullaby_stop": "Lullaby Stop", "lullaby_stop": "Lullaby Stop",
"lullaby_volume_down": "Lullaby Volume Down", "lullaby_volume_down": "Lullaby Volume Down",
"deep_sleep": "Deep Sleep", "deep_sleep": "Deep Sleep",
"light_sleep": "Light Sleep", "light_sleep": "Light Sleep",
"awake": "Awake", "awake": "Awake",
"not_awake": "Not Awake", "not_awake": "Not Awake",
"apnea_alarm": "Apnea Alarm", "apnea_alarm": "Apnea Alarm",
"antisnoring": "Antisnoring", "antisnoring": "Antisnoring",
"before_alarm": "Before Alarm", "before_alarm": "Before Alarm",
"sound_event_snore": "Snore Detected", "sound_event_snore": "Snore Detected",
"sound_event_talk": "Talk Detected", "sound_event_talk": "Talk Detected",
"sound_event_cough": "Cough Detected", "sound_event_cough": "Cough Detected",
"sound_event_baby": "Baby Cry Detected", "sound_event_baby": "Baby Cry Detected",
"sound_event_laugh": "Laugh Detected", "sound_event_laugh": "Laugh Detected",
"alarm_rescheduled": "Alarm Rescheduled", "alarm_rescheduled": "Alarm Rescheduled",
} }
REVERSE_STATE_MAPPING = {v: k for k, v in STATE_MAPPING.items()} REVERSE_STATE_MAPPING = {v: k for k, v in STATE_MAPPING.items()}
SLEEP_STAGE_MAPPING = { SLEEP_STAGE_MAPPING = {
"unknown": "Unknown", "unknown": "Unknown",
"rem": "REM", "rem": "REM",
"deep_sleep": "Deep Sleep", "deep_sleep": "Deep Sleep",
"light_sleep": "Light Sleep", "light_sleep": "Light Sleep",
"awake": "Awake", "awake": "Awake",
"not_awake": "Not Awake", "not_awake": "Not Awake",
} }
SOUND_MAPPING = { SOUND_MAPPING = {
'sound_event_snore': "Snore Detected", 'sound_event_snore': "Snore Detected",
'sound_event_talk': "Talk Detected", 'sound_event_talk': "Talk Detected",
'sound_event_cough': "Cough Detected", 'sound_event_cough': "Cough Detected",
'sound_event_baby': "Baby Cry Detected", 'sound_event_baby': "Baby Cry Detected",
'sound_event_laugh': "Laugh Detected", 'sound_event_laugh': "Laugh Detected",
} }
LULLABY_MAPPING = { LULLABY_MAPPING = {
"lullaby_start": "Lullaby Start", "lullaby_start": "Lullaby Start",
"lullaby_stop": "Lullaby Stop", "lullaby_stop": "Lullaby Stop",
"lullaby_volume_down": "Lullaby Volume Down", "lullaby_volume_down": "Lullaby Volume Down",
} }
DISTURBANCE_MAPPING = { DISTURBANCE_MAPPING = {
'apnea_alarm': "Apnea Alarm", 'apnea_alarm': "Apnea Alarm",
'antisnoring': "Antisnoring", 'antisnoring': "Antisnoring",
} }
ALARM_EVENT_MAPPING = { ALARM_EVENT_MAPPING = {
'before_alarm': "Before Alarm", 'before_alarm': "Before Alarm",
'alarm_snooze_clicked': "Alarm Snoozed", 'alarm_snooze_clicked': "Alarm Snoozed",
'alarm_snooze_canceled': "Snooze Canceled", 'alarm_snooze_canceled': "Snooze Canceled",
'time_to_bed_alarm_alert': "Time for Bed", 'time_to_bed_alarm_alert': "Time for Bed",
'alarm_alert_start': "Alarm Alert Started", 'alarm_alert_start': "Alarm Alert Started",
'alarm_alert_dismiss': "Alarm Dismissed", 'alarm_alert_dismiss': "Alarm Dismissed",
'alarm_skip_next': "Skip Next Alarm", 'alarm_skip_next': "Skip Next Alarm",
'show_skip_next_alarm': "Show Skip Next Alarm", 'show_skip_next_alarm': "Show Skip Next Alarm",
'smart_period': "Smart Period", 'smart_period': "Smart Period",
'before_smart_period': "Before Smart Period", 'before_smart_period': "Before Smart Period",
"alarm_rescheduled": "Alarm Rescheduled", "alarm_rescheduled": "Alarm Rescheduled",
} }
SLEEP_TRACKING_MAPPING = { SLEEP_TRACKING_MAPPING = {
'sleep_tracking_started': "Sleep Tracking Started", 'sleep_tracking_started': "Sleep Tracking Started",
'sleep_tracking_stopped': "Sleep Tracking Stopped", 'sleep_tracking_stopped': "Sleep Tracking Stopped",
'sleep_tracking_paused': "Sleep Tracking Paused", 'sleep_tracking_paused': "Sleep Tracking Paused",
'sleep_tracking_resumed': "Sleep Tracking Resumed", 'sleep_tracking_resumed': "Sleep Tracking Resumed",
} }

View file

@ -0,0 +1,10 @@
{
"domain": "sleepd",
"name": "sleepd - Sleep As Android Status",
"codeowners": ["@sudoxnym"],
"config_flow": true,
"dependencies": ["mqtt", "mobile_app"],
"documentation": "https://www.github.com/sudoxnym/sleepd",
"issue_tracker": "https://www.github.com/sudoxnym/sleepd/issues",
"version": "0.2.1"
}

View file

@ -1,73 +1,73 @@
import logging import logging
from homeassistant.core import ServiceCall, HomeAssistant from homeassistant.core import ServiceCall, HomeAssistant
from .const import DOMAIN, DAY_MAPPING from .const import DOMAIN, DAY_MAPPING
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
class SAASService: class sleepdService:
def __init__(self, hass, name, notify_target): def __init__(self, hass, name, notify_target):
self._hass = hass self._hass = hass
self._name = name self._name = name
self._notify_target = notify_target self._notify_target = notify_target
_LOGGER.debug(f"SAASService initialized with name: {name}, notify_target: {notify_target}") _LOGGER.debug(f"sleepdService initialized with name: {name}, notify_target: {notify_target}")
async def call_service(self, service_call: ServiceCall): async def call_service(self, service_call: ServiceCall):
"""Call the service.""" """Call the service."""
service_name = self._notify_target # Remove the "notify." prefix service_name = self._notify_target # Remove the "notify." prefix
# Extract parameters with default values # Extract parameters with default values
params = ['message', 'day', 'hour', 'minute'] params = ['message', 'day', 'hour', 'minute']
defaults = ['Default Message', 'monday', 0, 0] defaults = ['Default Message', 'monday', 0, 0]
message, day, hour, minute = (service_call.data.get(param, default) for param, default in zip(params, defaults)) message, day, hour, minute = (service_call.data.get(param, default) for param, default in zip(params, defaults))
_LOGGER.debug(f"Extracted parameters from service call: message: {message}, day: {day}, hour: {hour}, minute: {minute}") _LOGGER.debug(f"Extracted parameters from service call: message: {message}, day: {day}, hour: {hour}, minute: {minute}")
# Convert day name to number # Convert day name to number
day_number = DAY_MAPPING.get(day.lower(), day) day_number = DAY_MAPPING.get(day.lower(), day)
_LOGGER.debug(f"Converted day name to number: {day_number}") _LOGGER.debug(f"Converted day name to number: {day_number}")
_LOGGER.info(f"Service called with message: {message}, day: {day_number}, hours: {hour}, minutes: {minute}") _LOGGER.info(f"Service called with message: {message}, day: {day_number}, hours: {hour}, minutes: {minute}")
service_data = { service_data = {
"message": "command_activity", "message": "command_activity",
"data": { "data": {
"intent_action": "android.intent.action.SET_ALARM", "intent_action": "android.intent.action.SET_ALARM",
"intent_extras": f"android.intent.extra.alarm.SKIP_UI:true,android.intent.extra.alarm.MESSAGE:{message},android.intent.extra.alarm.DAYS:{day_number}:ArrayList<Integer>,android.intent.extra.alarm.HOUR:{hour},android.intent.extra.alarm.MINUTES:{minute}" "intent_extras": f"android.intent.extra.alarm.SKIP_UI:true,android.intent.extra.alarm.MESSAGE:{message},android.intent.extra.alarm.DAYS:{day_number}:ArrayList<Integer>,android.intent.extra.alarm.HOUR:{hour},android.intent.extra.alarm.MINUTES:{minute}"
}, },
} }
_LOGGER.debug(f"Prepared service data: {service_data}") _LOGGER.debug(f"Prepared service data: {service_data}")
try: try:
await self._hass.services.async_call( await self._hass.services.async_call(
"notify", "notify",
service_name, service_name,
service_data, service_data,
blocking=True, blocking=True,
) )
_LOGGER.info(f"Service call completed") _LOGGER.info(f"Service call completed")
except Exception as e: except Exception as e:
_LOGGER.error(f"Error occurred while calling service: {e}") _LOGGER.error(f"Error occurred while calling service: {e}")
async def async_setup_services(hass: HomeAssistant) -> None: async def async_setup_services(hass: HomeAssistant) -> None:
"""Set up services for the SAAS component.""" """Set up services for the sleepd component."""
_LOGGER.info(f"Setting up services for {DOMAIN}") _LOGGER.info(f"Setting up services for {DOMAIN}")
# Register the service for each entry # Register the service for each entry
for entry_id, entry_data in hass.data.get(DOMAIN, {}).items(): for entry_id, entry_data in hass.data.get(DOMAIN, {}).items():
if entry_data: if entry_data:
name = entry_data.get('name', 'default name') name = entry_data.get('name', 'default name')
notify_target = entry_data.get('notify_target', 'default notify target') notify_target = entry_data.get('notify_target', 'default notify target')
if notify_target: # Only register the service if notify_target was chosen if notify_target: # Only register the service if notify_target was chosen
_LOGGER.debug(f"Found notify_target: {notify_target} for name: {name}. Registering service.") _LOGGER.debug(f"Found notify_target: {notify_target} for name: {name}. Registering service.")
saas_service = SAASService(hass, name, notify_target) sleepd_service = sleepdService(hass, name, notify_target)
try: try:
hass.services.async_register(DOMAIN, f'saas_{name}_alarm_set', saas_service.call_service) hass.services.async_register(DOMAIN, f'sleepd_{name}_alarm_set', sleepd_service.call_service)
_LOGGER.info(f"Registered service: saas_{name}_alarm_set") _LOGGER.info(f"Registered service: sleepd_{name}_alarm_set")
except Exception as e: except Exception as e:
_LOGGER.error(f"Error occurred while registering service: {e}") _LOGGER.error(f"Error occurred while registering service: {e}")
else: else:
_LOGGER.warning(f"No notify_target found for name: {name}. Skipping service registration.") _LOGGER.warning(f"No notify_target found for name: {name}. Skipping service registration.")
else: else:
_LOGGER.warning(f"No entry data found for entry_id: {entry_id}") _LOGGER.warning(f"No entry data found for entry_id: {entry_id}")
_LOGGER.info(f"Finished setting up services for {DOMAIN}") _LOGGER.info(f"Finished setting up services for {DOMAIN}")

View file

@ -1,75 +1,75 @@
{ {
"title": "SAAS - حالة Sleep As Android", "title": "sleepd - حالة Sleep As Android",
"config": { "config": {
"step": { "step": {
"user": { "user": {
"title": "التكوين لـ SAAS - حالة Sleep As Android", "title": "التكوين لـ sleepd - حالة Sleep As Android",
"description": "تكوين الإعدادات الأساسية لتكامل SAAS.", "description": "تكوين الإعدادات الأساسية لتكامل sleepd.",
"data": { "data": {
"name": "الاسم للمستشعر", "name": "الاسم للمستشعر",
"topic_template": "موضوع MQTT لأحداث Sleep As Android", "topic_template": "موضوع MQTT لأحداث Sleep As Android",
"qos": "جودة الخدمة (QoS) لـ MQTT", "qos": "جودة الخدمة (QoS) لـ MQTT",
"awake_duration": "مدة اليقظة", "awake_duration": "مدة اليقظة",
"sleep_duration": "مدة النوم", "sleep_duration": "مدة النوم",
"awake_states": "حالات اليقظة*", "awake_states": "حالات اليقظة*",
"sleep_states": "حالات النوم*" "sleep_states": "حالات النوم*"
} }
} }
} }
}, },
"options": { "options": {
"step": { "step": {
"init": { "init": {
"title": "إعدادات تكامل SAAS", "title": "إعدادات تكامل sleepd",
"description": "تكوين الإعدادات الأساسية لتكامل SAAS.", "description": "تكوين الإعدادات الأساسية لتكامل sleepd.",
"data": { "data": {
"name": "الاسم للمستشعر", "name": "الاسم للمستشعر",
"topic_template": "موضوع MQTT (من Sleep As Android)", "topic_template": "موضوع MQTT (من Sleep As Android)",
"qos": "جودة الخدمة (QoS) لـ MQTT", "qos": "جودة الخدمة (QoS) لـ MQTT",
"awake_duration": "مدة اليقظة", "awake_duration": "مدة اليقظة",
"sleep_duration": "مدة النوم", "sleep_duration": "مدة النوم",
"awake_states": "حالات اليقظة*", "awake_states": "حالات اليقظة*",
"sleep_states": "حالات النوم*" "sleep_states": "حالات النوم*"
} }
} }
} }
}, },
"entity": { "entity": {
"sensor": { "sensor": {
"state": { "state": {
"Unknown": "غير معروف", "Unknown": "غير معروف",
"Sleep Tracking Started": "بدأ تتبع النوم", "Sleep Tracking Started": "بدأ تتبع النوم",
"Sleep Tracking Stopped": "توقف تتبع النوم", "Sleep Tracking Stopped": "توقف تتبع النوم",
"Sleep Tracking Paused": "تم إيقاف تتبع النوم مؤقتًا", "Sleep Tracking Paused": "تم إيقاف تتبع النوم مؤقتًا",
"Sleep Tracking Resumed": "استأنف تتبع النوم", "Sleep Tracking Resumed": "استأنف تتبع النوم",
"Alarm Snoozed": "تأجيل الإنذار", "Alarm Snoozed": "تأجيل الإنذار",
"Snooze Canceled": "تم إلغاء التأجيل", "Snooze Canceled": "تم إلغاء التأجيل",
"Time for Bed": "وقت النوم", "Time for Bed": "وقت النوم",
"Alarm Alert Started": "بدأ تنبيه الإنذار", "Alarm Alert Started": "بدأ تنبيه الإنذار",
"Alarm Dismissed": "تم تجاهل الإنذار", "Alarm Dismissed": "تم تجاهل الإنذار",
"Skip Next Alarm": "تخطي الإنذار التالي", "Skip Next Alarm": "تخطي الإنذار التالي",
"Show Skip Next Alarm": "إظهار تخطي الإنذار التالي", "Show Skip Next Alarm": "إظهار تخطي الإنذار التالي",
"REM": "REM", "REM": "REM",
"Smart Period": "الفترة الذكية", "Smart Period": "الفترة الذكية",
"Before Smart Period": "قبل الفترة الذكية", "Before Smart Period": "قبل الفترة الذكية",
"Lullaby Start": "بداية التهليل", "Lullaby Start": "بداية التهليل",
"Lullaby Stop": "توقف التهليل", "Lullaby Stop": "توقف التهليل",
"Lullaby Volume Down": "خفض صوت التهليل", "Lullaby Volume Down": "خفض صوت التهليل",
"Deep Sleep": "نوم عميق", "Deep Sleep": "نوم عميق",
"Light Sleep": "نوم خفيف", "Light Sleep": "نوم خفيف",
"Awake": "مستيقظ", "Awake": "مستيقظ",
"Not Awake": "غير مستيقظ", "Not Awake": "غير مستيقظ",
"Apnea Alarm": "إنذار الأنابيب", "Apnea Alarm": "إنذار الأنابيب",
"Antisnoring": "مضاد للشخير", "Antisnoring": "مضاد للشخير",
"Before Alarm": "قبل الإنذار", "Before Alarm": "قبل الإنذار",
"Snore Detected": "تم اكتشاف الشخير", "Snore Detected": "تم اكتشاف الشخير",
"Talk Detected": "تم اكتشاف الكلام", "Talk Detected": "تم اكتشاف الكلام",
"Cough Detected": "تم اكتشاف السعال", "Cough Detected": "تم اكتشاف السعال",
"Baby Cry Detected": "تم اكتشاف بكاء الطفل", "Baby Cry Detected": "تم اكتشاف بكاء الطفل",
"Laugh Detected": "تم اكتشاف الضحك", "Laugh Detected": "تم اكتشاف الضحك",
"Alarm Rescheduled": "تم إعادة جدولة الإنذار", "Alarm Rescheduled": "تم إعادة جدولة الإنذار",
"None": "لا شيء" "None": "لا شيء"
} }
} }
} }
} }

View file

@ -1,75 +1,75 @@
{ {
"title": "SAAS - Sleep As Android Status", "title": "sleepd - Sleep As Android Status",
"config": { "config": {
"step": { "step": {
"user": { "user": {
"title": "Konfiguration für SAAS - Sleep As Android Status", "title": "Konfiguration für sleepd - Sleep As Android Status",
"description": "Konfigurieren Sie die grundlegenden Einstellungen für die SAAS-Integration.", "description": "Konfigurieren Sie die grundlegenden Einstellungen für die sleepd-Integration.",
"data": { "data": {
"name": "Name für Sensor", "name": "Name für Sensor",
"topic_template": "MQTT-Thema für Sleep As Android Ereignisse", "topic_template": "MQTT-Thema für Sleep As Android Ereignisse",
"qos": "Quality of Service (QoS) für MQTT", "qos": "Quality of Service (QoS) für MQTT",
"awake_duration": "Wachdauer", "awake_duration": "Wachdauer",
"sleep_duration": "Schlafdauer", "sleep_duration": "Schlafdauer",
"awake_states": "Wachzustände*", "awake_states": "Wachzustände*",
"sleep_states": "Schlafzustände*" "sleep_states": "Schlafzustände*"
} }
} }
} }
}, },
"options": { "options": {
"step": { "step": {
"init": { "init": {
"title": "SAAS-Integrationseinstellungen", "title": "sleepd-Integrationseinstellungen",
"description": "Konfigurieren Sie die grundlegenden Einstellungen für die SAAS-Integration.", "description": "Konfigurieren Sie die grundlegenden Einstellungen für die sleepd-Integration.",
"data": { "data": {
"name": "Name für Sensor", "name": "Name für Sensor",
"topic_template": "MQTT-Thema (von Sleep As Android)", "topic_template": "MQTT-Thema (von Sleep As Android)",
"qos": "MQTT Quality of Service (QoS)", "qos": "MQTT Quality of Service (QoS)",
"awake_duration": "Wachdauer", "awake_duration": "Wachdauer",
"sleep_duration": "Schlafdauer", "sleep_duration": "Schlafdauer",
"awake_states": "Wachzustände*", "awake_states": "Wachzustände*",
"sleep_states": "Schlafzustände*" "sleep_states": "Schlafzustände*"
} }
} }
} }
}, },
"entity": { "entity": {
"sensor": { "sensor": {
"state": { "state": {
"Unknown": "Unbekannt", "Unknown": "Unbekannt",
"Sleep Tracking Started": "Schlafüberwachung Gestartet", "Sleep Tracking Started": "Schlafüberwachung Gestartet",
"Sleep Tracking Stopped": "Schlafüberwachung Gestoppt", "Sleep Tracking Stopped": "Schlafüberwachung Gestoppt",
"Sleep Tracking Paused": "Schlafüberwachung Pausiert", "Sleep Tracking Paused": "Schlafüberwachung Pausiert",
"Sleep Tracking Resumed": "Schlafüberwachung Fortgesetzt", "Sleep Tracking Resumed": "Schlafüberwachung Fortgesetzt",
"Alarm Snoozed": "Alarm Snoozed", "Alarm Snoozed": "Alarm Snoozed",
"Snooze Canceled": "Snooze Abgebrochen", "Snooze Canceled": "Snooze Abgebrochen",
"Time for Bed": "Zeit fürs Bett", "Time for Bed": "Zeit fürs Bett",
"Alarm Alert Started": "Alarmalarm Gestartet", "Alarm Alert Started": "Alarmalarm Gestartet",
"Alarm Dismissed": "Alarm Abgewiesen", "Alarm Dismissed": "Alarm Abgewiesen",
"Skip Next Alarm": "Nächsten Alarm Überspringen", "Skip Next Alarm": "Nächsten Alarm Überspringen",
"Show Skip Next Alarm": "Zeige 'Nächsten Alarm Überspringen'", "Show Skip Next Alarm": "Zeige 'Nächsten Alarm Überspringen'",
"REM": "REM", "REM": "REM",
"Smart Period": "Intelligenter Zeitraum", "Smart Period": "Intelligenter Zeitraum",
"Before Smart Period": "Vor Intelligenter Zeitraum", "Before Smart Period": "Vor Intelligenter Zeitraum",
"Lullaby Start": "Wiegenlied Start", "Lullaby Start": "Wiegenlied Start",
"Lullaby Stop": "Wiegenlied Stop", "Lullaby Stop": "Wiegenlied Stop",
"Lullaby Volume Down": "Wiegenlied Lautstärke Runter", "Lullaby Volume Down": "Wiegenlied Lautstärke Runter",
"Deep Sleep": "Tiefschlaf", "Deep Sleep": "Tiefschlaf",
"Light Sleep": "Leichter Schlaf", "Light Sleep": "Leichter Schlaf",
"Awake": "Wach", "Awake": "Wach",
"Not Awake": "Nicht Wach", "Not Awake": "Nicht Wach",
"Apnea Alarm": "Apnoe Alarm", "Apnea Alarm": "Apnoe Alarm",
"Antisnoring": "Antischnarchen", "Antisnoring": "Antischnarchen",
"Before Alarm": "Vor Alarm", "Before Alarm": "Vor Alarm",
"Snore Detected": "Schnarchen Erkannt", "Snore Detected": "Schnarchen Erkannt",
"Talk Detected": "Gespräch Erkannt", "Talk Detected": "Gespräch Erkannt",
"Cough Detected": "Husten Erkannt", "Cough Detected": "Husten Erkannt",
"Baby Cry Detected": "Babyweinen Erkannt", "Baby Cry Detected": "Babyweinen Erkannt",
"Laugh Detected": "Lachen Erkannt", "Laugh Detected": "Lachen Erkannt",
"Alarm Rescheduled": "Alarm Neu Geplant", "Alarm Rescheduled": "Alarm Neu Geplant",
"None": "Keine" "None": "Keine"
} }
} }
} }
} }

View file

@ -1,75 +1,75 @@
{ {
"title": "SAAS - Sleep As Android Status", "title": "sleepd - Sleep As Android Status",
"config": { "config": {
"step": { "step": {
"user": { "user": {
"title": "Configuration for SAAS - Sleep As Android Status", "title": "Configuration for sleepd - Sleep As Android Status",
"description": "Configure the basic settings for the SAAS integration.", "description": "Configure the basic settings for the sleepd integration.",
"data": { "data": {
"name": "Name for Sensor", "name": "Name for Sensor",
"topic_template": "MQTT Topic for Sleep As Android Events", "topic_template": "MQTT Topic for Sleep As Android Events",
"qos": "Quality of Service (QoS) for MQTT", "qos": "Quality of Service (QoS) for MQTT",
"awake_duration": "Awake Duration", "awake_duration": "Awake Duration",
"sleep_duration": "Asleep Duration", "sleep_duration": "Asleep Duration",
"awake_states": "Awake States*", "awake_states": "Awake States*",
"sleep_states": "Asleep States*" "sleep_states": "Asleep States*"
} }
} }
} }
}, },
"options": { "options": {
"step": { "step": {
"init": { "init": {
"title": "SAAS Integration Settings", "title": "sleepd Integration Settings",
"description": "Configure the basic settings for the SAAS integration.", "description": "Configure the basic settings for the sleepd integration.",
"data": { "data": {
"name": "Name for Sensor", "name": "Name for Sensor",
"topic_template": "MQTT Topic (from Sleep As Android)", "topic_template": "MQTT Topic (from Sleep As Android)",
"qos": "MQTT Quality of Service (QoS)", "qos": "MQTT Quality of Service (QoS)",
"awake_duration": "Awake Duration", "awake_duration": "Awake Duration",
"sleep_duration": "Asleep Duration", "sleep_duration": "Asleep Duration",
"awake_states": "Awake States*", "awake_states": "Awake States*",
"sleep_states": "Asleep States*" "sleep_states": "Asleep States*"
} }
} }
} }
}, },
"entity": { "entity": {
"sensor": { "sensor": {
"state": { "state": {
"Unknown": "Unknown", "Unknown": "Unknown",
"Sleep Tracking Started": "Sleep Tracking Started", "Sleep Tracking Started": "Sleep Tracking Started",
"Sleep Tracking Stopped": "Sleep Tracking Stopped", "Sleep Tracking Stopped": "Sleep Tracking Stopped",
"Sleep Tracking Paused": "Sleep Tracking Paused", "Sleep Tracking Paused": "Sleep Tracking Paused",
"Sleep Tracking Resumed": "Sleep Tracking Resumed", "Sleep Tracking Resumed": "Sleep Tracking Resumed",
"Alarm Snoozed": "Alarm Snoozed", "Alarm Snoozed": "Alarm Snoozed",
"Snooze Canceled": "Snooze Canceled", "Snooze Canceled": "Snooze Canceled",
"Time for Bed": "Time for Bed", "Time for Bed": "Time for Bed",
"Alarm Alert Started": "Alarm Alert Started", "Alarm Alert Started": "Alarm Alert Started",
"Alarm Dismissed": "Alarm Dismissed", "Alarm Dismissed": "Alarm Dismissed",
"Skip Next Alarm": "Skip Next Alarm", "Skip Next Alarm": "Skip Next Alarm",
"Show Skip Next Alarm": "Show Skip Next Alarm", "Show Skip Next Alarm": "Show Skip Next Alarm",
"REM": "REM", "REM": "REM",
"Smart Period": "Smart Period", "Smart Period": "Smart Period",
"Before Smart Period": "Before Smart Period", "Before Smart Period": "Before Smart Period",
"Lullaby Start": "Lullaby Start", "Lullaby Start": "Lullaby Start",
"Lullaby Stop": "Lullaby Stop", "Lullaby Stop": "Lullaby Stop",
"Lullaby Volume Down": "Lullaby Volume Down", "Lullaby Volume Down": "Lullaby Volume Down",
"Deep Sleep": "Deep Sleep", "Deep Sleep": "Deep Sleep",
"Light Sleep": "Light Sleep", "Light Sleep": "Light Sleep",
"Awake": "Awake", "Awake": "Awake",
"Not Awake": "Not Awake", "Not Awake": "Not Awake",
"Apnea Alarm": "Apnea Alarm", "Apnea Alarm": "Apnea Alarm",
"Antisnoring": "Antisnoring", "Antisnoring": "Antisnoring",
"Before Alarm": "Before Alarm", "Before Alarm": "Before Alarm",
"Snore Detected": "Snore Detected", "Snore Detected": "Snore Detected",
"Talk Detected": "Talk Detected", "Talk Detected": "Talk Detected",
"Cough Detected": "Cough Detected", "Cough Detected": "Cough Detected",
"Baby Cry Detected": "Baby Cry Detected", "Baby Cry Detected": "Baby Cry Detected",
"Laugh Detected": "Laugh Detected", "Laugh Detected": "Laugh Detected",
"Alarm Rescheduled": "Alarm Rescheduled", "Alarm Rescheduled": "Alarm Rescheduled",
"None": "None" "None": "None"
} }
} }
} }
} }

View file

@ -1,75 +1,75 @@
{ {
"title": "SAAS - Estado de Sleep As Android", "title": "sleepd - Estado de Sleep As Android",
"config": { "config": {
"step": { "step": {
"user": { "user": {
"title": "Configuración para SAAS - Estado de Sleep As Android", "title": "Configuración para sleepd - Estado de Sleep As Android",
"description": "Configura los ajustes básicos para la integración de SAAS.", "description": "Configura los ajustes básicos para la integración de sleepd.",
"data": { "data": {
"name": "Nombre para el Sensor", "name": "Nombre para el Sensor",
"topic_template": "Tema MQTT para Eventos de Sleep As Android", "topic_template": "Tema MQTT para Eventos de Sleep As Android",
"qos": "Calidad de Servicio (QoS) para MQTT", "qos": "Calidad de Servicio (QoS) para MQTT",
"awake_duration": "Duración Despierto", "awake_duration": "Duración Despierto",
"sleep_duration": "Duración Durmiendo", "sleep_duration": "Duración Durmiendo",
"awake_states": "Estados Despierto*", "awake_states": "Estados Despierto*",
"sleep_states": "Estados Durmiendo*" "sleep_states": "Estados Durmiendo*"
} }
} }
} }
}, },
"options": { "options": {
"step": { "step": {
"init": { "init": {
"title": "Configuración de Integración SAAS", "title": "Configuración de Integración sleepd",
"description": "Configura los ajustes básicos para la integración de SAAS.", "description": "Configura los ajustes básicos para la integración de sleepd.",
"data": { "data": {
"name": "Nombre para el Sensor", "name": "Nombre para el Sensor",
"topic_template": "Tema MQTT (de Sleep As Android)", "topic_template": "Tema MQTT (de Sleep As Android)",
"qos": "Calidad de Servicio (QoS) de MQTT", "qos": "Calidad de Servicio (QoS) de MQTT",
"awake_duration": "Duración Despierto", "awake_duration": "Duración Despierto",
"sleep_duration": "Duración Durmiendo", "sleep_duration": "Duración Durmiendo",
"awake_states": "Estados Despierto*", "awake_states": "Estados Despierto*",
"sleep_states": "Estados Durmiendo*" "sleep_states": "Estados Durmiendo*"
} }
} }
} }
}, },
"entity": { "entity": {
"sensor": { "sensor": {
"state": { "state": {
"Unknown": "Desconocido", "Unknown": "Desconocido",
"Sleep Tracking Started": "Seguimiento del Sueño Iniciado", "Sleep Tracking Started": "Seguimiento del Sueño Iniciado",
"Sleep Tracking Stopped": "Seguimiento del Sueño Detenido", "Sleep Tracking Stopped": "Seguimiento del Sueño Detenido",
"Sleep Tracking Paused": "Seguimiento del Sueño Pausado", "Sleep Tracking Paused": "Seguimiento del Sueño Pausado",
"Sleep Tracking Resumed": "Seguimiento del Sueño Reanudado", "Sleep Tracking Resumed": "Seguimiento del Sueño Reanudado",
"Alarm Snoozed": "Alarma en Snooze", "Alarm Snoozed": "Alarma en Snooze",
"Snooze Canceled": "Snooze Cancelado", "Snooze Canceled": "Snooze Cancelado",
"Time for Bed": "Hora de Dormir", "Time for Bed": "Hora de Dormir",
"Alarm Alert Started": "Alerta de Alarma Iniciada", "Alarm Alert Started": "Alerta de Alarma Iniciada",
"Alarm Dismissed": "Alarma Desactivada", "Alarm Dismissed": "Alarma Desactivada",
"Skip Next Alarm": "Saltar Próxima Alarma", "Skip Next Alarm": "Saltar Próxima Alarma",
"Show Skip Next Alarm": "Mostrar Saltar Próxima Alarma", "Show Skip Next Alarm": "Mostrar Saltar Próxima Alarma",
"REM": "REM", "REM": "REM",
"Smart Period": "Periodo Inteligente", "Smart Period": "Periodo Inteligente",
"Before Smart Period": "Antes del Periodo Inteligente", "Before Smart Period": "Antes del Periodo Inteligente",
"Lullaby Start": "Inicio de Canción de Cuna", "Lullaby Start": "Inicio de Canción de Cuna",
"Lullaby Stop": "Fin de Canción de Cuna", "Lullaby Stop": "Fin de Canción de Cuna",
"Lullaby Volume Down": "Bajar Volumen de Canción de Cuna", "Lullaby Volume Down": "Bajar Volumen de Canción de Cuna",
"Deep Sleep": "Sueño Profundo", "Deep Sleep": "Sueño Profundo",
"Light Sleep": "Sueño Ligero", "Light Sleep": "Sueño Ligero",
"Awake": "Despierto", "Awake": "Despierto",
"Not Awake": "No Despierto", "Not Awake": "No Despierto",
"Apnea Alarm": "Alarma de Apnea", "Apnea Alarm": "Alarma de Apnea",
"Antisnoring": "Antirronquidos", "Antisnoring": "Antirronquidos",
"Before Alarm": "Antes de la Alarma", "Before Alarm": "Antes de la Alarma",
"Snore Detected": "Ronquido Detectado", "Snore Detected": "Ronquido Detectado",
"Talk Detected": "Habla Detectada", "Talk Detected": "Habla Detectada",
"Cough Detected": "Tos Detectada", "Cough Detected": "Tos Detectada",
"Baby Cry Detected": "Llanto de Bebé Detectado", "Baby Cry Detected": "Llanto de Bebé Detectado",
"Laugh Detected": "Risa Detectada", "Laugh Detected": "Risa Detectada",
"Alarm Rescheduled": "Alarma Re-programada", "Alarm Rescheduled": "Alarma Re-programada",
"None": "Ninguno" "None": "Ninguno"
} }
} }
} }
} }

View file

@ -1,75 +1,75 @@
{ {
"title": "SAAS - Statut de Sleep As Android", "title": "sleepd - Statut de Sleep As Android",
"config": { "config": {
"step": { "step": {
"user": { "user": {
"title": "Configuration pour SAAS - Statut de Sleep As Android", "title": "Configuration pour sleepd - Statut de Sleep As Android",
"description": "Configurez les paramètres de base pour l'intégration de SAAS.", "description": "Configurez les paramètres de base pour l'intégration de sleepd.",
"data": { "data": {
"name": "Nom pour le Capteur", "name": "Nom pour le Capteur",
"topic_template": "Sujet MQTT pour les Événements de Sleep As Android", "topic_template": "Sujet MQTT pour les Événements de Sleep As Android",
"qos": "Qualité de Service (QoS) pour MQTT", "qos": "Qualité de Service (QoS) pour MQTT",
"awake_duration": "Durée Éveillé", "awake_duration": "Durée Éveillé",
"sleep_duration": "Durée Endormi", "sleep_duration": "Durée Endormi",
"awake_states": "États Éveillé*", "awake_states": "États Éveillé*",
"sleep_states": "États Endormi*" "sleep_states": "États Endormi*"
} }
} }
} }
}, },
"options": { "options": {
"step": { "step": {
"init": { "init": {
"title": "Paramètres d'Intégration SAAS", "title": "Paramètres d'Intégration sleepd",
"description": "Configurez les paramètres de base pour l'intégration de SAAS.", "description": "Configurez les paramètres de base pour l'intégration de sleepd.",
"data": { "data": {
"name": "Nom pour le Capteur", "name": "Nom pour le Capteur",
"topic_template": "Sujet MQTT (de Sleep As Android)", "topic_template": "Sujet MQTT (de Sleep As Android)",
"qos": "Qualité de Service (QoS) de MQTT", "qos": "Qualité de Service (QoS) de MQTT",
"awake_duration": "Durée Éveillé", "awake_duration": "Durée Éveillé",
"sleep_duration": "Durée Endormi", "sleep_duration": "Durée Endormi",
"awake_states": "États Éveillé*", "awake_states": "États Éveillé*",
"sleep_states": "États Endormi*" "sleep_states": "États Endormi*"
} }
} }
} }
}, },
"entity": { "entity": {
"sensor": { "sensor": {
"state": { "state": {
"Unknown": "Inconnu", "Unknown": "Inconnu",
"Sleep Tracking Started": "Suivi du Sommeil Commencé", "Sleep Tracking Started": "Suivi du Sommeil Commencé",
"Sleep Tracking Stopped": "Suivi du Sommeil Arrêté", "Sleep Tracking Stopped": "Suivi du Sommeil Arrêté",
"Sleep Tracking Paused": "Suivi du Sommeil en Pause", "Sleep Tracking Paused": "Suivi du Sommeil en Pause",
"Sleep Tracking Resumed": "Suivi du Sommeil Repris", "Sleep Tracking Resumed": "Suivi du Sommeil Repris",
"Alarm Snoozed": "Alarme en Snooze", "Alarm Snoozed": "Alarme en Snooze",
"Snooze Canceled": "Snooze Annulé", "Snooze Canceled": "Snooze Annulé",
"Time for Bed": "Heure du Coucher", "Time for Bed": "Heure du Coucher",
"Alarm Alert Started": "Alerte d'Alarme Commencée", "Alarm Alert Started": "Alerte d'Alarme Commencée",
"Alarm Dismissed": "Alarme Dismissed", "Alarm Dismissed": "Alarme Dismissed",
"Skip Next Alarm": "Passer la Prochaine Alarme", "Skip Next Alarm": "Passer la Prochaine Alarme",
"Show Skip Next Alarm": "Montrer Passer la Prochaine Alarme", "Show Skip Next Alarm": "Montrer Passer la Prochaine Alarme",
"REM": "REM", "REM": "REM",
"Smart Period": "Période Intelligente", "Smart Period": "Période Intelligente",
"Before Smart Period": "Avant la Période Intelligente", "Before Smart Period": "Avant la Période Intelligente",
"Lullaby Start": "Début de Berceuse", "Lullaby Start": "Début de Berceuse",
"Lullaby Stop": "Fin de Berceuse", "Lullaby Stop": "Fin de Berceuse",
"Lullaby Volume Down": "Diminuer le Volume de la Berceuse", "Lullaby Volume Down": "Diminuer le Volume de la Berceuse",
"Deep Sleep": "Sommeil Profond", "Deep Sleep": "Sommeil Profond",
"Light Sleep": "Sommeil Léger", "Light Sleep": "Sommeil Léger",
"Awake": "Éveillé", "Awake": "Éveillé",
"Not Awake": "Pas Éveillé", "Not Awake": "Pas Éveillé",
"Apnea Alarm": "Alarme d'Apnée", "Apnea Alarm": "Alarme d'Apnée",
"Antisnoring": "Anti-ronflement", "Antisnoring": "Anti-ronflement",
"Before Alarm": "Avant l'Alarme", "Before Alarm": "Avant l'Alarme",
"Snore Detected": "Ronflement Détecté", "Snore Detected": "Ronflement Détecté",
"Talk Detected": "Parole Détectée", "Talk Detected": "Parole Détectée",
"Cough Detected": "Toux Détectée", "Cough Detected": "Toux Détectée",
"Baby Cry Detected": "Pleurs de Bébé Détectés", "Baby Cry Detected": "Pleurs de Bébé Détectés",
"Laugh Detected": "Rire Détecté", "Laugh Detected": "Rire Détecté",
"Alarm Rescheduled": "Alarme Re-programmée", "Alarm Rescheduled": "Alarme Re-programmée",
"None": "Aucun" "None": "Aucun"
} }
} }
} }
} }

View file

@ -1,75 +1,75 @@
{ {
"title": "SAAS - Stato di Sleep As Android", "title": "sleepd - Stato di Sleep As Android",
"config": { "config": {
"step": { "step": {
"user": { "user": {
"title": "Configurazione per SAAS - Stato di Sleep As Android", "title": "Configurazione per sleepd - Stato di Sleep As Android",
"description": "Configura le impostazioni di base per l'integrazione SAAS.", "description": "Configura le impostazioni di base per l'integrazione sleepd.",
"data": { "data": {
"name": "Nome per Sensore", "name": "Nome per Sensore",
"topic_template": "Topic MQTT per Eventi Sleep As Android", "topic_template": "Topic MQTT per Eventi Sleep As Android",
"qos": "Quality of Service (QoS) per MQTT", "qos": "Quality of Service (QoS) per MQTT",
"awake_duration": "Durata Sveglio", "awake_duration": "Durata Sveglio",
"sleep_duration": "Durata Addormentato", "sleep_duration": "Durata Addormentato",
"awake_states": "Stati di Veglia*", "awake_states": "Stati di Veglia*",
"sleep_states": "Stati di Sonno*" "sleep_states": "Stati di Sonno*"
} }
} }
} }
}, },
"options": { "options": {
"step": { "step": {
"init": { "init": {
"title": "Impostazioni di Integrazione SAAS", "title": "Impostazioni di Integrazione sleepd",
"description": "Configura le impostazioni di base per l'integrazione SAAS.", "description": "Configura le impostazioni di base per l'integrazione sleepd.",
"data": { "data": {
"name": "Nome per Sensore", "name": "Nome per Sensore",
"topic_template": "Topic MQTT (da Sleep As Android)", "topic_template": "Topic MQTT (da Sleep As Android)",
"qos": "Quality of Service (QoS) MQTT", "qos": "Quality of Service (QoS) MQTT",
"awake_duration": "Durata Sveglio", "awake_duration": "Durata Sveglio",
"sleep_duration": "Durata Addormentato", "sleep_duration": "Durata Addormentato",
"awake_states": "Stati di Veglia*", "awake_states": "Stati di Veglia*",
"sleep_states": "Stati di Sonno*" "sleep_states": "Stati di Sonno*"
} }
} }
} }
}, },
"entity": { "entity": {
"sensor": { "sensor": {
"state": { "state": {
"Unknown": "Sconosciuto", "Unknown": "Sconosciuto",
"Sleep Tracking Started": "Inizio Monitoraggio del Sonno", "Sleep Tracking Started": "Inizio Monitoraggio del Sonno",
"Sleep Tracking Stopped": "Fine Monitoraggio del Sonno", "Sleep Tracking Stopped": "Fine Monitoraggio del Sonno",
"Sleep Tracking Paused": "Monitoraggio del Sonno in Pausa", "Sleep Tracking Paused": "Monitoraggio del Sonno in Pausa",
"Sleep Tracking Resumed": "Ripresa Monitoraggio del Sonno", "Sleep Tracking Resumed": "Ripresa Monitoraggio del Sonno",
"Alarm Snoozed": "Allarme Posticipato", "Alarm Snoozed": "Allarme Posticipato",
"Snooze Canceled": "Posticipo Annullato", "Snooze Canceled": "Posticipo Annullato",
"Time for Bed": "Ora di Andare a Letto", "Time for Bed": "Ora di Andare a Letto",
"Alarm Alert Started": "Inizio Allarme", "Alarm Alert Started": "Inizio Allarme",
"Alarm Dismissed": "Allarme Disattivato", "Alarm Dismissed": "Allarme Disattivato",
"Skip Next Alarm": "Salta il Prossimo Allarme", "Skip Next Alarm": "Salta il Prossimo Allarme",
"Show Skip Next Alarm": "Mostra 'Salta il Prossimo Allarme'", "Show Skip Next Alarm": "Mostra 'Salta il Prossimo Allarme'",
"REM": "REM", "REM": "REM",
"Smart Period": "Periodo Smart", "Smart Period": "Periodo Smart",
"Before Smart Period": "Prima del Periodo Smart", "Before Smart Period": "Prima del Periodo Smart",
"Lullaby Start": "Inizio Ninna Nanna", "Lullaby Start": "Inizio Ninna Nanna",
"Lullaby Stop": "Fine Ninna Nanna", "Lullaby Stop": "Fine Ninna Nanna",
"Lullaby Volume Down": "Diminuzione Volume Ninna Nanna", "Lullaby Volume Down": "Diminuzione Volume Ninna Nanna",
"Deep Sleep": "Sonno Profondo", "Deep Sleep": "Sonno Profondo",
"Light Sleep": "Sonno Leggero", "Light Sleep": "Sonno Leggero",
"Awake": "Sveglio", "Awake": "Sveglio",
"Not Awake": "Non Sveglio", "Not Awake": "Non Sveglio",
"Apnea Alarm": "Allarme Apnea", "Apnea Alarm": "Allarme Apnea",
"Antisnoring": "Antirussamento", "Antisnoring": "Antirussamento",
"Before Alarm": "Prima dell'Allarme", "Before Alarm": "Prima dell'Allarme",
"Snore Detected": "Russamento Rilevato", "Snore Detected": "Russamento Rilevato",
"Talk Detected": "Conversazione Rilevata", "Talk Detected": "Conversazione Rilevata",
"Cough Detected": "Tosse Rilevata", "Cough Detected": "Tosse Rilevata",
"Baby Cry Detected": "Pianto del Bambino Rilevato", "Baby Cry Detected": "Pianto del Bambino Rilevato",
"Laugh Detected": "Risata Rilevata", "Laugh Detected": "Risata Rilevata",
"Alarm Rescheduled": "Allarme Riprogrammato", "Alarm Rescheduled": "Allarme Riprogrammato",
"None": "Nessuno" "None": "Nessuno"
} }
} }
} }
} }

View file

@ -1,75 +1,75 @@
{ {
"title": "SAAS - 睡眠如 Android 狀態", "title": "sleepd - 睡眠如 Android 狀態",
"config": { "config": {
"step": { "step": {
"user": { "user": {
"title": "SAAS - 睡眠如 Android 狀態配置", "title": "sleepd - 睡眠如 Android 狀態配置",
"description": "配置 SAAS 整合的基本設置。", "description": "配置 sleepd 整合的基本設置。",
"data": { "data": {
"name": "感應器名稱", "name": "感應器名稱",
"topic_template": "睡眠如 Android 事件的 MQTT 主題", "topic_template": "睡眠如 Android 事件的 MQTT 主題",
"qos": "MQTT 的服務質量 (QoS)", "qos": "MQTT 的服務質量 (QoS)",
"awake_duration": "清醒持續時間", "awake_duration": "清醒持續時間",
"sleep_duration": "睡眠持續時間", "sleep_duration": "睡眠持續時間",
"awake_states": "清醒狀態*", "awake_states": "清醒狀態*",
"sleep_states": "睡眠狀態*" "sleep_states": "睡眠狀態*"
} }
} }
} }
}, },
"options": { "options": {
"step": { "step": {
"init": { "init": {
"title": "SAAS 整合設置", "title": "sleepd 整合設置",
"description": "配置 SAAS 整合的基本設置。", "description": "配置 sleepd 整合的基本設置。",
"data": { "data": {
"name": "感應器名稱", "name": "感應器名稱",
"topic_template": "MQTT 主題(來自睡眠如 Android", "topic_template": "MQTT 主題(來自睡眠如 Android",
"qos": "MQTT 服務質量 (QoS)", "qos": "MQTT 服務質量 (QoS)",
"awake_duration": "清醒持續時間", "awake_duration": "清醒持續時間",
"sleep_duration": "睡眠持續時間", "sleep_duration": "睡眠持續時間",
"awake_states": "清醒狀態*", "awake_states": "清醒狀態*",
"sleep_states": "睡眠狀態*" "sleep_states": "睡眠狀態*"
} }
} }
} }
}, },
"entity": { "entity": {
"sensor": { "sensor": {
"state": { "state": {
"Unknown": "未知", "Unknown": "未知",
"Sleep Tracking Started": "開始追蹤睡眠", "Sleep Tracking Started": "開始追蹤睡眠",
"Sleep Tracking Stopped": "停止追蹤睡眠", "Sleep Tracking Stopped": "停止追蹤睡眠",
"Sleep Tracking Paused": "暫停追蹤睡眠", "Sleep Tracking Paused": "暫停追蹤睡眠",
"Sleep Tracking Resumed": "恢復追蹤睡眠", "Sleep Tracking Resumed": "恢復追蹤睡眠",
"Alarm Snoozed": "鬧鐘貪睡", "Alarm Snoozed": "鬧鐘貪睡",
"Snooze Canceled": "取消貪睡", "Snooze Canceled": "取消貪睡",
"Time for Bed": "該睡覺了", "Time for Bed": "該睡覺了",
"Alarm Alert Started": "鬧鐘警報開始", "Alarm Alert Started": "鬧鐘警報開始",
"Alarm Dismissed": "鬧鐘解除", "Alarm Dismissed": "鬧鐘解除",
"Skip Next Alarm": "跳過下一個鬧鐘", "Skip Next Alarm": "跳過下一個鬧鐘",
"Show Skip Next Alarm": "顯示跳過下一個鬧鐘", "Show Skip Next Alarm": "顯示跳過下一個鬧鐘",
"REM": "REM", "REM": "REM",
"Smart Period": "智能期間", "Smart Period": "智能期間",
"Before Smart Period": "在智能期間之前", "Before Smart Period": "在智能期間之前",
"Lullaby Start": "搖籃曲開始", "Lullaby Start": "搖籃曲開始",
"Lullaby Stop": "搖籃曲停止", "Lullaby Stop": "搖籃曲停止",
"Lullaby Volume Down": "搖籃曲音量下降", "Lullaby Volume Down": "搖籃曲音量下降",
"Deep Sleep": "深度睡眠", "Deep Sleep": "深度睡眠",
"Light Sleep": "淺度睡眠", "Light Sleep": "淺度睡眠",
"Awake": "清醒", "Awake": "清醒",
"Not Awake": "未清醒", "Not Awake": "未清醒",
"Apnea Alarm": "呼吸暫停警報", "Apnea Alarm": "呼吸暫停警報",
"Antisnoring": "防打鼾", "Antisnoring": "防打鼾",
"Before Alarm": "在鬧鐘之前", "Before Alarm": "在鬧鐘之前",
"Snore Detected": "檢測到打鼾", "Snore Detected": "檢測到打鼾",
"Talk Detected": "檢測到說話", "Talk Detected": "檢測到說話",
"Cough Detected": "檢測到咳嗽", "Cough Detected": "檢測到咳嗽",
"Baby Cry Detected": "檢測到嬰兒哭聲", "Baby Cry Detected": "檢測到嬰兒哭聲",
"Laugh Detected": "檢測到笑聲", "Laugh Detected": "檢測到笑聲",
"Alarm Rescheduled": "鬧鐘重新安排", "Alarm Rescheduled": "鬧鐘重新安排",
"None": "無" "None": "無"
} }
} }
} }
} }

View file

@ -1,75 +1,75 @@
{ {
"title": "SAAS - Sleep As Android 상태", "title": "sleepd - Sleep As Android 상태",
"config": { "config": {
"step": { "step": {
"user": { "user": {
"title": "SAAS - Sleep As Android 상태 설정", "title": "sleepd - Sleep As Android 상태 설정",
"description": "SAAS 통합의 기본 설정을 구성합니다.", "description": "sleepd 통합의 기본 설정을 구성합니다.",
"data": { "data": {
"name": "센서 이름", "name": "센서 이름",
"topic_template": "Sleep As Android 이벤트의 MQTT 주제", "topic_template": "Sleep As Android 이벤트의 MQTT 주제",
"qos": "MQTT의 서비스 품질(QoS)", "qos": "MQTT의 서비스 품질(QoS)",
"awake_duration": "깨어 있는 시간", "awake_duration": "깨어 있는 시간",
"sleep_duration": "수면 시간", "sleep_duration": "수면 시간",
"awake_states": "깨어 있는 상태*", "awake_states": "깨어 있는 상태*",
"sleep_states": "수면 상태*" "sleep_states": "수면 상태*"
} }
} }
} }
}, },
"options": { "options": {
"step": { "step": {
"init": { "init": {
"title": "SAAS 통합 설정", "title": "sleepd 통합 설정",
"description": "SAAS 통합의 기본 설정을 구성합니다.", "description": "sleepd 통합의 기본 설정을 구성합니다.",
"data": { "data": {
"name": "센서 이름", "name": "센서 이름",
"topic_template": "Sleep As Android에서의 MQTT 주제", "topic_template": "Sleep As Android에서의 MQTT 주제",
"qos": "MQTT의 서비스 품질(QoS)", "qos": "MQTT의 서비스 품질(QoS)",
"awake_duration": "깨어 있는 시간", "awake_duration": "깨어 있는 시간",
"sleep_duration": "수면 시간", "sleep_duration": "수면 시간",
"awake_states": "깨어 있는 상태*", "awake_states": "깨어 있는 상태*",
"sleep_states": "수면 상태*" "sleep_states": "수면 상태*"
} }
} }
} }
}, },
"entity": { "entity": {
"sensor": { "sensor": {
"state": { "state": {
"Unknown": "알 수 없음", "Unknown": "알 수 없음",
"Sleep Tracking Started": "수면 추적 시작", "Sleep Tracking Started": "수면 추적 시작",
"Sleep Tracking Stopped": "수면 추적 중지", "Sleep Tracking Stopped": "수면 추적 중지",
"Sleep Tracking Paused": "수면 추적 일시 중지", "Sleep Tracking Paused": "수면 추적 일시 중지",
"Sleep Tracking Resumed": "수면 추적 재개", "Sleep Tracking Resumed": "수면 추적 재개",
"Alarm Snoozed": "알람 스누즈", "Alarm Snoozed": "알람 스누즈",
"Snooze Canceled": "스누즈 취소", "Snooze Canceled": "스누즈 취소",
"Time for Bed": "침대 시간", "Time for Bed": "침대 시간",
"Alarm Alert Started": "알람 경고 시작", "Alarm Alert Started": "알람 경고 시작",
"Alarm Dismissed": "알람 해제", "Alarm Dismissed": "알람 해제",
"Skip Next Alarm": "다음 알람 건너뛰기", "Skip Next Alarm": "다음 알람 건너뛰기",
"Show Skip Next Alarm": "다음 알람 건너뛰기 표시", "Show Skip Next Alarm": "다음 알람 건너뛰기 표시",
"REM": "REM", "REM": "REM",
"Smart Period": "스마트 기간", "Smart Period": "스마트 기간",
"Before Smart Period": "스마트 기간 이전", "Before Smart Period": "스마트 기간 이전",
"Lullaby Start": "자장가 시작", "Lullaby Start": "자장가 시작",
"Lullaby Stop": "자장가 중지", "Lullaby Stop": "자장가 중지",
"Lullaby Volume Down": "자장가 볼륨 다운", "Lullaby Volume Down": "자장가 볼륨 다운",
"Deep Sleep": "깊은 잠", "Deep Sleep": "깊은 잠",
"Light Sleep": "얕은 잠", "Light Sleep": "얕은 잠",
"Awake": "깨어 있음", "Awake": "깨어 있음",
"Not Awake": "깨어 있지 않음", "Not Awake": "깨어 있지 않음",
"Apnea Alarm": "무호흡 알람", "Apnea Alarm": "무호흡 알람",
"Antisnoring": "코골이 방지", "Antisnoring": "코골이 방지",
"Before Alarm": "알람 이전", "Before Alarm": "알람 이전",
"Snore Detected": "코골이 감지됨", "Snore Detected": "코골이 감지됨",
"Talk Detected": "대화 감지됨", "Talk Detected": "대화 감지됨",
"Cough Detected": "기침 감지됨", "Cough Detected": "기침 감지됨",
"Baby Cry Detected": "아기 울음소리 감지됨", "Baby Cry Detected": "아기 울음소리 감지됨",
"Laugh Detected": "웃음소리 감지됨", "Laugh Detected": "웃음소리 감지됨",
"Alarm Rescheduled": "알람 재스케줄", "Alarm Rescheduled": "알람 재스케줄",
"None": "없음" "None": "없음"
} }
} }
} }
} }

View file

@ -1,75 +1,75 @@
{ {
"title": "Configuratie voor SAAS - Sleep As Android Status", "title": "Configuratie voor sleepd - Sleep As Android Status",
"config": { "config": {
"step": { "step": {
"user": { "user": {
"title": "Configuratie voor SAAS - Sleep As Android Status", "title": "Configuratie voor sleepd - Sleep As Android Status",
"description": "Configureer de basisinstellingen voor de SAAS-integratie.", "description": "Configureer de basisinstellingen voor de sleepd-integratie.",
"data": { "data": {
"name": "Naam voor Sensor", "name": "Naam voor Sensor",
"topic_template": "MQTT-onderwerp voor Sleep As Android Gebeurtenissen", "topic_template": "MQTT-onderwerp voor Sleep As Android Gebeurtenissen",
"qos": "Quality of Service (QoS) voor MQTT", "qos": "Quality of Service (QoS) voor MQTT",
"awake_duration": "Wakker Duur", "awake_duration": "Wakker Duur",
"sleep_duration": "Slaapduur", "sleep_duration": "Slaapduur",
"awake_states": "Wakker Staten*", "awake_states": "Wakker Staten*",
"sleep_states": "Slaap Staten*" "sleep_states": "Slaap Staten*"
} }
} }
} }
}, },
"options": { "options": {
"step": { "step": {
"init": { "init": {
"title": "SAAS-Integratie-Instellingen", "title": "sleepd-Integratie-Instellingen",
"description": "Configureer de basisinstellingen voor de SAAS-integratie.", "description": "Configureer de basisinstellingen voor de sleepd-integratie.",
"data": { "data": {
"name": "Naam voor Sensor", "name": "Naam voor Sensor",
"topic_template": "MQTT-Onderwerp (van Sleep As Android)", "topic_template": "MQTT-Onderwerp (van Sleep As Android)",
"qos": "MQTT Quality of Service (QoS)", "qos": "MQTT Quality of Service (QoS)",
"awake_duration": "Wakker Duur", "awake_duration": "Wakker Duur",
"sleep_duration": "Slaapduur", "sleep_duration": "Slaapduur",
"awake_states": "Wakker Staten*", "awake_states": "Wakker Staten*",
"sleep_states": "Slaap Staten*" "sleep_states": "Slaap Staten*"
} }
} }
} }
}, },
"entity": { "entity": {
"sensor": { "sensor": {
"state": { "state": {
"Unknown": "Onbekend", "Unknown": "Onbekend",
"Sleep Tracking Started": "Slaaptracking Gestart", "Sleep Tracking Started": "Slaaptracking Gestart",
"Sleep Tracking Stopped": "Slaaptracking Gestopt", "Sleep Tracking Stopped": "Slaaptracking Gestopt",
"Sleep Tracking Paused": "Slaaptracking Gepauzeerd", "Sleep Tracking Paused": "Slaaptracking Gepauzeerd",
"Sleep Tracking Resumed": "Slaaptracking Hervat", "Sleep Tracking Resumed": "Slaaptracking Hervat",
"Alarm Snoozed": "Alarm Gesnoozed", "Alarm Snoozed": "Alarm Gesnoozed",
"Snooze Canceled": "Snooze Geannuleerd", "Snooze Canceled": "Snooze Geannuleerd",
"Time for Bed": "Tijd om te Gaan Slapen", "Time for Bed": "Tijd om te Gaan Slapen",
"Alarm Alert Started": "Alarm Alert Gestart", "Alarm Alert Started": "Alarm Alert Gestart",
"Alarm Dismissed": "Alarm Afgeslagen", "Alarm Dismissed": "Alarm Afgeslagen",
"Skip Next Alarm": "Volgende Alarm Overslaan", "Skip Next Alarm": "Volgende Alarm Overslaan",
"Show Skip Next Alarm": "Toon 'Volgende Alarm Overslaan'", "Show Skip Next Alarm": "Toon 'Volgende Alarm Overslaan'",
"REM": "REM", "REM": "REM",
"Smart Period": "Slimme Periode", "Smart Period": "Slimme Periode",
"Before Smart Period": "Voor Slimme Periode", "Before Smart Period": "Voor Slimme Periode",
"Lullaby Start": "Slaapliedje Start", "Lullaby Start": "Slaapliedje Start",
"Lullaby Stop": "Slaapliedje Stop", "Lullaby Stop": "Slaapliedje Stop",
"Lullaby Volume Down": "Slaapliedje Volume Omlaag", "Lullaby Volume Down": "Slaapliedje Volume Omlaag",
"Deep Sleep": "Diepe Slaap", "Deep Sleep": "Diepe Slaap",
"Light Sleep": "Lichte Slaap", "Light Sleep": "Lichte Slaap",
"Awake": "Wakker", "Awake": "Wakker",
"Not Awake": "Niet Wakker", "Not Awake": "Niet Wakker",
"Apnea Alarm": "Apneu Alarm", "Apnea Alarm": "Apneu Alarm",
"Antisnoring": "Antisnurken", "Antisnoring": "Antisnurken",
"Before Alarm": "Voor Alarm", "Before Alarm": "Voor Alarm",
"Snore Detected": "Snurken Gedetecteerd", "Snore Detected": "Snurken Gedetecteerd",
"Talk Detected": "Gesprek Gedetecteerd", "Talk Detected": "Gesprek Gedetecteerd",
"Cough Detected": "Hoesten Gedetecteerd", "Cough Detected": "Hoesten Gedetecteerd",
"Baby Cry Detected": "Baby Huilen Gedetecteerd", "Baby Cry Detected": "Baby Huilen Gedetecteerd",
"Laugh Detected": "Lachen Gedetecteerd", "Laugh Detected": "Lachen Gedetecteerd",
"Alarm Rescheduled": "Alarm Herpland", "Alarm Rescheduled": "Alarm Herpland",
"None": "Geen" "None": "Geen"
} }
} }
} }
} }

View file

@ -1,75 +1,75 @@
{ {
"title": "SAAS - Status Sleep As Android", "title": "sleepd - Status Sleep As Android",
"config": { "config": {
"step": { "step": {
"user": { "user": {
"title": "Konfiguracja dla SAAS - Status Sleep As Android", "title": "Konfiguracja dla sleepd - Status Sleep As Android",
"description": "Konfiguracja podstawowych ustawień dla integracji SAAS.", "description": "Konfiguracja podstawowych ustawień dla integracji sleepd.",
"data": { "data": {
"name": "Nazwa dla czujnika", "name": "Nazwa dla czujnika",
"topic_template": "Temat MQTT dla zdarzeń Sleep As Android", "topic_template": "Temat MQTT dla zdarzeń Sleep As Android",
"qos": "Jakość usługi (QoS) dla MQTT", "qos": "Jakość usługi (QoS) dla MQTT",
"awake_duration": "Czas czuwania", "awake_duration": "Czas czuwania",
"sleep_duration": "Czas snu", "sleep_duration": "Czas snu",
"awake_states": "Stany czuwania*", "awake_states": "Stany czuwania*",
"sleep_states": "Stany snu*" "sleep_states": "Stany snu*"
} }
} }
} }
}, },
"options": { "options": {
"step": { "step": {
"init": { "init": {
"title": "Ustawienia integracji SAAS", "title": "Ustawienia integracji sleepd",
"description": "Konfiguracja podstawowych ustawień dla integracji SAAS.", "description": "Konfiguracja podstawowych ustawień dla integracji sleepd.",
"data": { "data": {
"name": "Nazwa dla czujnika", "name": "Nazwa dla czujnika",
"topic_template": "Temat MQTT (od Sleep As Android)", "topic_template": "Temat MQTT (od Sleep As Android)",
"qos": "Jakość usługi (QoS) MQTT", "qos": "Jakość usługi (QoS) MQTT",
"awake_duration": "Czas czuwania", "awake_duration": "Czas czuwania",
"sleep_duration": "Czas snu", "sleep_duration": "Czas snu",
"awake_states": "Stany czuwania*", "awake_states": "Stany czuwania*",
"sleep_states": "Stany snu*" "sleep_states": "Stany snu*"
} }
} }
} }
}, },
"entity": { "entity": {
"sensor": { "sensor": {
"state": { "state": {
"Unknown": "Nieznane", "Unknown": "Nieznane",
"Sleep Tracking Started": "Rozpoczęto śledzenie snu", "Sleep Tracking Started": "Rozpoczęto śledzenie snu",
"Sleep Tracking Stopped": "Zatrzymano śledzenie snu", "Sleep Tracking Stopped": "Zatrzymano śledzenie snu",
"Sleep Tracking Paused": "Wstrzymano śledzenie snu", "Sleep Tracking Paused": "Wstrzymano śledzenie snu",
"Sleep Tracking Resumed": "Wznowiono śledzenie snu", "Sleep Tracking Resumed": "Wznowiono śledzenie snu",
"Alarm Snoozed": "Alarm w drzemce", "Alarm Snoozed": "Alarm w drzemce",
"Snooze Canceled": "Drzemka anulowana", "Snooze Canceled": "Drzemka anulowana",
"Time for Bed": "Czas na sen", "Time for Bed": "Czas na sen",
"Alarm Alert Started": "Rozpoczęto alarm", "Alarm Alert Started": "Rozpoczęto alarm",
"Alarm Dismissed": "Alarm wyłączony", "Alarm Dismissed": "Alarm wyłączony",
"Skip Next Alarm": "Pomiń następny alarm", "Skip Next Alarm": "Pomiń następny alarm",
"Show Skip Next Alarm": "Pokaż pomiń następny alarm", "Show Skip Next Alarm": "Pokaż pomiń następny alarm",
"REM": "REM", "REM": "REM",
"Smart Period": "Inteligentny okres", "Smart Period": "Inteligentny okres",
"Before Smart Period": "Przed inteligentnym okresem", "Before Smart Period": "Przed inteligentnym okresem",
"Lullaby Start": "Rozpoczęcie kołysanki", "Lullaby Start": "Rozpoczęcie kołysanki",
"Lullaby Stop": "Zakończenie kołysanki", "Lullaby Stop": "Zakończenie kołysanki",
"Lullaby Volume Down": "Zmniejsz głośność kołysanki", "Lullaby Volume Down": "Zmniejsz głośność kołysanki",
"Deep Sleep": "Głęboki sen", "Deep Sleep": "Głęboki sen",
"Light Sleep": "Lekki sen", "Light Sleep": "Lekki sen",
"Awake": "Czuwanie", "Awake": "Czuwanie",
"Not Awake": "Nie czuwa", "Not Awake": "Nie czuwa",
"Apnea Alarm": "Alarm apnei", "Apnea Alarm": "Alarm apnei",
"Antisnoring": "Przeciw chrapaniu", "Antisnoring": "Przeciw chrapaniu",
"Before Alarm": "Przed alarmem", "Before Alarm": "Przed alarmem",
"Snore Detected": "Wykryto chrapanie", "Snore Detected": "Wykryto chrapanie",
"Talk Detected": "Wykryto mówienie", "Talk Detected": "Wykryto mówienie",
"Cough Detected": "Wykryto kaszel", "Cough Detected": "Wykryto kaszel",
"Baby Cry Detected": "Wykryto płacz dziecka", "Baby Cry Detected": "Wykryto płacz dziecka",
"Laugh Detected": "Wykryto śmiech", "Laugh Detected": "Wykryto śmiech",
"Alarm Rescheduled": "Alarm został przesunięty", "Alarm Rescheduled": "Alarm został przesunięty",
"None": "Brak" "None": "Brak"
} }
} }
} }
} }

View file

@ -1,75 +1,75 @@
{ {
"title": "SAAS - Status do Sleep As Android", "title": "sleepd - Status do Sleep As Android",
"config": { "config": {
"step": { "step": {
"user": { "user": {
"title": "Configuração para SAAS - Status do Sleep As Android", "title": "Configuração para sleepd - Status do Sleep As Android",
"description": "Configure as configurações básicas para a integração SAAS.", "description": "Configure as configurações básicas para a integração sleepd.",
"data": { "data": {
"name": "Nome para Sensor", "name": "Nome para Sensor",
"topic_template": "Tópico MQTT para Eventos do Sleep As Android", "topic_template": "Tópico MQTT para Eventos do Sleep As Android",
"qos": "Qualidade de Serviço (QoS) para MQTT", "qos": "Qualidade de Serviço (QoS) para MQTT",
"awake_duration": "Duração Acordado", "awake_duration": "Duração Acordado",
"sleep_duration": "Duração Adormecido", "sleep_duration": "Duração Adormecido",
"awake_states": "Estados Acordado*", "awake_states": "Estados Acordado*",
"sleep_states": "Estados Adormecido*" "sleep_states": "Estados Adormecido*"
} }
} }
} }
}, },
"options": { "options": {
"step": { "step": {
"init": { "init": {
"title": "Configurações de Integração SAAS", "title": "Configurações de Integração sleepd",
"description": "Configure as configurações básicas para a integração SAAS.", "description": "Configure as configurações básicas para a integração sleepd.",
"data": { "data": {
"name": "Nome para Sensor", "name": "Nome para Sensor",
"topic_template": "Tópico MQTT (do Sleep As Android)", "topic_template": "Tópico MQTT (do Sleep As Android)",
"qos": "Qualidade de Serviço (QoS) MQTT", "qos": "Qualidade de Serviço (QoS) MQTT",
"awake_duration": "Duração Acordado", "awake_duration": "Duração Acordado",
"sleep_duration": "Duração Adormecido", "sleep_duration": "Duração Adormecido",
"awake_states": "Estados Acordado*", "awake_states": "Estados Acordado*",
"sleep_states": "Estados Adormecido*" "sleep_states": "Estados Adormecido*"
} }
} }
} }
}, },
"entity": { "entity": {
"sensor": { "sensor": {
"state": { "state": {
"Unknown": "Desconhecido", "Unknown": "Desconhecido",
"Sleep Tracking Started": "Monitoramento do Sono Iniciado", "Sleep Tracking Started": "Monitoramento do Sono Iniciado",
"Sleep Tracking Stopped": "Monitoramento do Sono Parado", "Sleep Tracking Stopped": "Monitoramento do Sono Parado",
"Sleep Tracking Paused": "Monitoramento do Sono Pausado", "Sleep Tracking Paused": "Monitoramento do Sono Pausado",
"Sleep Tracking Resumed": "Monitoramento do Sono Retomado", "Sleep Tracking Resumed": "Monitoramento do Sono Retomado",
"Alarm Snoozed": "Alarme Adiado", "Alarm Snoozed": "Alarme Adiado",
"Snooze Canceled": "Adiamento Cancelado", "Snooze Canceled": "Adiamento Cancelado",
"Time for Bed": "Hora de Dormir", "Time for Bed": "Hora de Dormir",
"Alarm Alert Started": "Alerta de Alarme Iniciado", "Alarm Alert Started": "Alerta de Alarme Iniciado",
"Alarm Dismissed": "Alarme Desligado", "Alarm Dismissed": "Alarme Desligado",
"Skip Next Alarm": "Pular Próximo Alarme", "Skip Next Alarm": "Pular Próximo Alarme",
"Show Skip Next Alarm": "Mostrar 'Pular Próximo Alarme'", "Show Skip Next Alarm": "Mostrar 'Pular Próximo Alarme'",
"REM": "REM", "REM": "REM",
"Smart Period": "Período Inteligente", "Smart Period": "Período Inteligente",
"Before Smart Period": "Antes do Período Inteligente", "Before Smart Period": "Antes do Período Inteligente",
"Lullaby Start": "Início de Canção de Ninar", "Lullaby Start": "Início de Canção de Ninar",
"Lullaby Stop": "Fim de Canção de Ninar", "Lullaby Stop": "Fim de Canção de Ninar",
"Lullaby Volume Down": "Diminuir Volume da Canção de Ninar", "Lullaby Volume Down": "Diminuir Volume da Canção de Ninar",
"Deep Sleep": "Sono Profundo", "Deep Sleep": "Sono Profundo",
"Light Sleep": "Sono Leve", "Light Sleep": "Sono Leve",
"Awake": "Acordado", "Awake": "Acordado",
"Not Awake": "Não Acordado", "Not Awake": "Não Acordado",
"Apnea Alarm": "Alarme de Apneia", "Apnea Alarm": "Alarme de Apneia",
"Antisnoring": "Antirronco", "Antisnoring": "Antirronco",
"Before Alarm": "Antes do Alarme", "Before Alarm": "Antes do Alarme",
"Snore Detected": "Ronco Detectado", "Snore Detected": "Ronco Detectado",
"Talk Detected": "Conversa Detectada", "Talk Detected": "Conversa Detectada",
"Cough Detected": "Tosse Detectada", "Cough Detected": "Tosse Detectada",
"Baby Cry Detected": "Choro de Bebê Detectado", "Baby Cry Detected": "Choro de Bebê Detectado",
"Laugh Detected": "Risada Detectada", "Laugh Detected": "Risada Detectada",
"Alarm Rescheduled": "Alarme Remarcado", "Alarm Rescheduled": "Alarme Remarcado",
"None": "Nenhum" "None": "Nenhum"
} }
} }
} }
} }

View file

@ -1,75 +1,75 @@
{ {
"title": "SAAS - 睡眠如 Android 狀態", "title": "sleepd - 睡眠如 Android 狀態",
"config": { "config": {
"step": { "step": {
"user": { "user": {
"title": "SAAS - 睡眠如 Android 狀態配置", "title": "sleepd - 睡眠如 Android 狀態配置",
"description": "配置 SAAS 整合的基本設置。", "description": "配置 sleepd 整合的基本設置。",
"data": { "data": {
"name": "感應器名稱", "name": "感應器名稱",
"topic_template": "睡眠如 Android 事件的 MQTT 主題", "topic_template": "睡眠如 Android 事件的 MQTT 主題",
"qos": "MQTT 的服務質量 (QoS)", "qos": "MQTT 的服務質量 (QoS)",
"awake_duration": "清醒持續時間", "awake_duration": "清醒持續時間",
"sleep_duration": "睡眠持續時間", "sleep_duration": "睡眠持續時間",
"awake_states": "清醒狀態*", "awake_states": "清醒狀態*",
"sleep_states": "睡眠狀態*" "sleep_states": "睡眠狀態*"
} }
} }
} }
}, },
"options": { "options": {
"step": { "step": {
"init": { "init": {
"title": "SAAS 整合設置", "title": "sleepd 整合設置",
"description": "配置 SAAS 整合的基本設置。", "description": "配置 sleepd 整合的基本設置。",
"data": { "data": {
"name": "感應器名稱", "name": "感應器名稱",
"topic_template": "MQTT 主題(來自睡眠如 Android", "topic_template": "MQTT 主題(來自睡眠如 Android",
"qos": "MQTT 服務質量 (QoS)", "qos": "MQTT 服務質量 (QoS)",
"awake_duration": "清醒持續時間", "awake_duration": "清醒持續時間",
"sleep_duration": "睡眠持續時間", "sleep_duration": "睡眠持續時間",
"awake_states": "清醒狀態*", "awake_states": "清醒狀態*",
"sleep_states": "睡眠狀態*" "sleep_states": "睡眠狀態*"
} }
} }
} }
}, },
"entity": { "entity": {
"sensor": { "sensor": {
"state": { "state": {
"Unknown": "未知", "Unknown": "未知",
"Sleep Tracking Started": "開始追蹤睡眠", "Sleep Tracking Started": "開始追蹤睡眠",
"Sleep Tracking Stopped": "停止追蹤睡眠", "Sleep Tracking Stopped": "停止追蹤睡眠",
"Sleep Tracking Paused": "暫停追蹤睡眠", "Sleep Tracking Paused": "暫停追蹤睡眠",
"Sleep Tracking Resumed": "恢復追蹤睡眠", "Sleep Tracking Resumed": "恢復追蹤睡眠",
"Alarm Snoozed": "鬧鐘貪睡", "Alarm Snoozed": "鬧鐘貪睡",
"Snooze Canceled": "取消貪睡", "Snooze Canceled": "取消貪睡",
"Time for Bed": "該睡覺了", "Time for Bed": "該睡覺了",
"Alarm Alert Started": "鬧鐘警報開始", "Alarm Alert Started": "鬧鐘警報開始",
"Alarm Dismissed": "鬧鐘解除", "Alarm Dismissed": "鬧鐘解除",
"Skip Next Alarm": "跳過下一個鬧鐘", "Skip Next Alarm": "跳過下一個鬧鐘",
"Show Skip Next Alarm": "顯示跳過下一個鬧鐘", "Show Skip Next Alarm": "顯示跳過下一個鬧鐘",
"REM": "REM", "REM": "REM",
"Smart Period": "智能期間", "Smart Period": "智能期間",
"Before Smart Period": "在智能期間之前", "Before Smart Period": "在智能期間之前",
"Lullaby Start": "搖籃曲開始", "Lullaby Start": "搖籃曲開始",
"Lullaby Stop": "搖籃曲停止", "Lullaby Stop": "搖籃曲停止",
"Lullaby Volume Down": "搖籃曲音量下降", "Lullaby Volume Down": "搖籃曲音量下降",
"Deep Sleep": "深度睡眠", "Deep Sleep": "深度睡眠",
"Light Sleep": "淺度睡眠", "Light Sleep": "淺度睡眠",
"Awake": "清醒", "Awake": "清醒",
"Not Awake": "未清醒", "Not Awake": "未清醒",
"Apnea Alarm": "呼吸暫停警報", "Apnea Alarm": "呼吸暫停警報",
"Antisnoring": "防打鼾", "Antisnoring": "防打鼾",
"Before Alarm": "在鬧鐘之前", "Before Alarm": "在鬧鐘之前",
"Snore Detected": "檢測到打鼾", "Snore Detected": "檢測到打鼾",
"Talk Detected": "檢測到說話", "Talk Detected": "檢測到說話",
"Cough Detected": "檢測到咳嗽", "Cough Detected": "檢測到咳嗽",
"Baby Cry Detected": "檢測到嬰兒哭聲", "Baby Cry Detected": "檢測到嬰兒哭聲",
"Laugh Detected": "檢測到笑聲", "Laugh Detected": "檢測到笑聲",
"Alarm Rescheduled": "鬧鐘重新安排", "Alarm Rescheduled": "鬧鐘重新安排",
"None": "無" "None": "無"
} }
} }
} }
} }

View file

@ -1,10 +1,10 @@
{ {
"title": "SAAS - Статус Sleep As Android", "title": "sleepd - Статус Sleep As Android",
"config": { "config": {
"step": { "step": {
"user": { "user": {
"title": "Конфигурация для SAAS - Статус Sleep As Android", "title": "Конфигурация для sleepd - Статус Sleep As Android",
"description": "Настройка основных параметров для интеграции SAAS.", "description": "Настройка основных параметров для интеграции sleepd.",
"data": { "data": {
"name": "Имя для датчика", "name": "Имя для датчика",
"topic_template": "Тема MQTT для событий Sleep As Android", "topic_template": "Тема MQTT для событий Sleep As Android",
@ -20,8 +20,8 @@
"options": { "options": {
"step": { "step": {
"init": { "init": {
"title": "Настройки интеграции SAAS", "title": "Настройки интеграции sleepd",
"description": "Настройка основных параметров для интеграции SAAS.", "description": "Настройка основных параметров для интеграции sleepd.",
"data": { "data": {
"name": "Имя для датчика", "name": "Имя для датчика",
"topic_template": "Тема MQTT (от Sleep As Android)", "topic_template": "Тема MQTT (от Sleep As Android)",

View file

@ -1,75 +1,75 @@
{ {
"title": "SAAS - Sleep As Android Status", "title": "sleepd - Sleep As Android Status",
"config": { "config": {
"step": { "step": {
"user": { "user": {
"title": "Konfiguration för SAAS - Sleep As Android Status", "title": "Konfiguration för sleepd - Sleep As Android Status",
"description": "Konfigurera de grundläggande inställningarna för SAAS-integrationen.", "description": "Konfigurera de grundläggande inställningarna för sleepd-integrationen.",
"data": { "data": {
"name": "Namn för Sensor", "name": "Namn för Sensor",
"topic_template": "MQTT Ämne för Sleep As Android Händelser", "topic_template": "MQTT Ämne för Sleep As Android Händelser",
"qos": "Kvalitet på Tjänst (QoS) för MQTT", "qos": "Kvalitet på Tjänst (QoS) för MQTT",
"awake_duration": "Vaken Varaktighet", "awake_duration": "Vaken Varaktighet",
"sleep_duration": "Sovande Varaktighet", "sleep_duration": "Sovande Varaktighet",
"awake_states": "Vakna Tillstånd*", "awake_states": "Vakna Tillstånd*",
"sleep_states": "Sovande Tillstånd*" "sleep_states": "Sovande Tillstånd*"
} }
} }
} }
}, },
"options": { "options": {
"step": { "step": {
"init": { "init": {
"title": "SAAS Integrationsinställningar", "title": "sleepd Integrationsinställningar",
"description": "Konfigurera de grundläggande inställningarna för SAAS-integrationen.", "description": "Konfigurera de grundläggande inställningarna för sleepd-integrationen.",
"data": { "data": {
"name": "Namn för Sensor", "name": "Namn för Sensor",
"topic_template": "MQTT Ämne (från Sleep As Android)", "topic_template": "MQTT Ämne (från Sleep As Android)",
"qos": "MQTT Kvalitet på Tjänst (QoS)", "qos": "MQTT Kvalitet på Tjänst (QoS)",
"awake_duration": "Vaken Varaktighet", "awake_duration": "Vaken Varaktighet",
"sleep_duration": "Sovande Varaktighet", "sleep_duration": "Sovande Varaktighet",
"awake_states": "Vakna Tillstånd*", "awake_states": "Vakna Tillstånd*",
"sleep_states": "Sovande Tillstånd*" "sleep_states": "Sovande Tillstånd*"
} }
} }
} }
}, },
"entity": { "entity": {
"sensor": { "sensor": {
"state": { "state": {
"Unknown": "Okänd", "Unknown": "Okänd",
"Sleep Tracking Started": "Sömnmätning Startad", "Sleep Tracking Started": "Sömnmätning Startad",
"Sleep Tracking Stopped": "Sömnmätning Stoppad", "Sleep Tracking Stopped": "Sömnmätning Stoppad",
"Sleep Tracking Paused": "Sömnmätning Pausad", "Sleep Tracking Paused": "Sömnmätning Pausad",
"Sleep Tracking Resumed": "Sömnmätning Återupptagen", "Sleep Tracking Resumed": "Sömnmätning Återupptagen",
"Alarm Snoozed": "Alarm Snoozed", "Alarm Snoozed": "Alarm Snoozed",
"Snooze Canceled": "Snooze Avbruten", "Snooze Canceled": "Snooze Avbruten",
"Time for Bed": "Dags att Gå och Lägga Sig", "Time for Bed": "Dags att Gå och Lägga Sig",
"Alarm Alert Started": "Alarmvarning Startad", "Alarm Alert Started": "Alarmvarning Startad",
"Alarm Dismissed": "Alarm Avvisat", "Alarm Dismissed": "Alarm Avvisat",
"Skip Next Alarm": "Hoppa över Nästa Alarm", "Skip Next Alarm": "Hoppa över Nästa Alarm",
"Show Skip Next Alarm": "Visa 'Hoppa över Nästa Alarm'", "Show Skip Next Alarm": "Visa 'Hoppa över Nästa Alarm'",
"REM": "REM", "REM": "REM",
"Smart Period": "Smart Period", "Smart Period": "Smart Period",
"Before Smart Period": "Före Smart Period", "Before Smart Period": "Före Smart Period",
"Lullaby Start": "Vaggvisa Start", "Lullaby Start": "Vaggvisa Start",
"Lullaby Stop": "Vaggvisa Stopp", "Lullaby Stop": "Vaggvisa Stopp",
"Lullaby Volume Down": "Vaggvisa Volym Ner", "Lullaby Volume Down": "Vaggvisa Volym Ner",
"Deep Sleep": "Djup Sömn", "Deep Sleep": "Djup Sömn",
"Light Sleep": "Lätt Sömn", "Light Sleep": "Lätt Sömn",
"Awake": "Vaken", "Awake": "Vaken",
"Not Awake": "Inte Vaken", "Not Awake": "Inte Vaken",
"Apnea Alarm": "Apné Alarm", "Apnea Alarm": "Apné Alarm",
"Antisnoring": "Antisnarkning", "Antisnoring": "Antisnarkning",
"Before Alarm": "Före Alarm", "Before Alarm": "Före Alarm",
"Snore Detected": "Snarkning Upptäckt", "Snore Detected": "Snarkning Upptäckt",
"Talk Detected": "Prat Upptäckt", "Talk Detected": "Prat Upptäckt",
"Cough Detected": "Hosta Upptäckt", "Cough Detected": "Hosta Upptäckt",
"Baby Cry Detected": "Bebisgråt Upptäckt", "Baby Cry Detected": "Bebisgråt Upptäckt",
"Laugh Detected": "Skratt Upptäckt", "Laugh Detected": "Skratt Upptäckt",
"Alarm Rescheduled": "Alarm Omplanerat", "Alarm Rescheduled": "Alarm Omplanerat",
"None": "Ingen" "None": "Ingen"
} }
} }
} }
} }

View file

@ -1,75 +1,75 @@
{ {
"title": "SAAS - Sleep As Android 状态", "title": "sleepd - Sleep As Android 状态",
"config": { "config": {
"step": { "step": {
"user": { "user": {
"title": "SAAS - Sleep As Android 状态配置", "title": "sleepd - Sleep As Android 状态配置",
"description": "配置 SAAS 集成的基本设置。", "description": "配置 sleepd 集成的基本设置。",
"data": { "data": {
"name": "传感器名称", "name": "传感器名称",
"topic_template": "Sleep As Android 事件的 MQTT 主题", "topic_template": "Sleep As Android 事件的 MQTT 主题",
"qos": "MQTT 的服务质量 (QoS)", "qos": "MQTT 的服务质量 (QoS)",
"awake_duration": "清醒持续时间", "awake_duration": "清醒持续时间",
"sleep_duration": "睡眠持续时间", "sleep_duration": "睡眠持续时间",
"awake_states": "清醒状态*", "awake_states": "清醒状态*",
"sleep_states": "睡眠状态*" "sleep_states": "睡眠状态*"
} }
} }
} }
}, },
"options": { "options": {
"step": { "step": {
"init": { "init": {
"title": "SAAS 集成设置", "title": "sleepd 集成设置",
"description": "配置 SAAS 集成的基本设置。", "description": "配置 sleepd 集成的基本设置。",
"data": { "data": {
"name": "传感器名称", "name": "传感器名称",
"topic_template": "Sleep As Android 的 MQTT 主题", "topic_template": "Sleep As Android 的 MQTT 主题",
"qos": "MQTT 的服务质量 (QoS)", "qos": "MQTT 的服务质量 (QoS)",
"awake_duration": "清醒持续时间", "awake_duration": "清醒持续时间",
"sleep_duration": "睡眠持续时间", "sleep_duration": "睡眠持续时间",
"awake_states": "清醒状态*", "awake_states": "清醒状态*",
"sleep_states": "睡眠状态*" "sleep_states": "睡眠状态*"
} }
} }
} }
}, },
"entity": { "entity": {
"sensor": { "sensor": {
"state": { "state": {
"Unknown": "未知", "Unknown": "未知",
"Sleep Tracking Started": "开始睡眠跟踪", "Sleep Tracking Started": "开始睡眠跟踪",
"Sleep Tracking Stopped": "停止睡眠跟踪", "Sleep Tracking Stopped": "停止睡眠跟踪",
"Sleep Tracking Paused": "暂停睡眠跟踪", "Sleep Tracking Paused": "暂停睡眠跟踪",
"Sleep Tracking Resumed": "恢复睡眠跟踪", "Sleep Tracking Resumed": "恢复睡眠跟踪",
"Alarm Snoozed": "闹钟贪睡", "Alarm Snoozed": "闹钟贪睡",
"Snooze Canceled": "取消贪睡", "Snooze Canceled": "取消贪睡",
"Time for Bed": "该睡觉了", "Time for Bed": "该睡觉了",
"Alarm Alert Started": "闹钟警报开始", "Alarm Alert Started": "闹钟警报开始",
"Alarm Dismissed": "闹钟解除", "Alarm Dismissed": "闹钟解除",
"Skip Next Alarm": "跳过下一个闹钟", "Skip Next Alarm": "跳过下一个闹钟",
"Show Skip Next Alarm": "显示跳过下一个闹钟", "Show Skip Next Alarm": "显示跳过下一个闹钟",
"REM": "REM", "REM": "REM",
"Smart Period": "智能周期", "Smart Period": "智能周期",
"Before Smart Period": "在智能周期之前", "Before Smart Period": "在智能周期之前",
"Lullaby Start": "开始摇篮曲", "Lullaby Start": "开始摇篮曲",
"Lullaby Stop": "停止摇篮曲", "Lullaby Stop": "停止摇篮曲",
"Lullaby Volume Down": "降低摇篮曲音量", "Lullaby Volume Down": "降低摇篮曲音量",
"Deep Sleep": "深度睡眠", "Deep Sleep": "深度睡眠",
"Light Sleep": "浅睡", "Light Sleep": "浅睡",
"Awake": "清醒", "Awake": "清醒",
"Not Awake": "未清醒", "Not Awake": "未清醒",
"Apnea Alarm": "呼吸暂停警报", "Apnea Alarm": "呼吸暂停警报",
"Antisnoring": "防打鼾", "Antisnoring": "防打鼾",
"Before Alarm": "在闹钟之前", "Before Alarm": "在闹钟之前",
"Snore Detected": "检测到打鼾", "Snore Detected": "检测到打鼾",
"Talk Detected": "检测到说话", "Talk Detected": "检测到说话",
"Cough Detected": "检测到咳嗽", "Cough Detected": "检测到咳嗽",
"Baby Cry Detected": "检测到婴儿哭声", "Baby Cry Detected": "检测到婴儿哭声",
"Laugh Detected": "检测到笑声", "Laugh Detected": "检测到笑声",
"Alarm Rescheduled": "闹钟重新安排", "Alarm Rescheduled": "闹钟重新安排",
"None": "无" "None": "无"
} }
} }
} }
} }

View file

@ -1,4 +1,4 @@
{ {
"name": "SAAS - Sleep As Android Status", "name": "sleepd - Sleep As Android Status",
"render_readme": true "render_readme": true
} }