diff --git a/README.md b/README.md
index 52b31296..d1aac392 100644
--- a/README.md
+++ b/README.md
@@ -56,7 +56,7 @@ Also using Grafana/Influx for graphing, both running in Docker containers on NUC
Description | value
-- | --
Lines of ESPHome YAML | 2774
-Lines of Home Assistant YAML | 8350
+Lines of Home Assistant YAML | 8339
[Integrations](https://www.home-assistant.io/integrations/) in use | 51
Zigbee devices in [`zha`](https://www.home-assistant.io/integrations/zha/) | 26
Z-Wave devices in [`zwave_js`](https://www.home-assistant.io/integrations/zwave_js/) | 37
@@ -66,7 +66,7 @@ Description | value
Entities in the [`alarm_control_panel`](https://www.home-assistant.io/components/alarm_control_panel) domain | 1
Entities in the [`automation`](https://www.home-assistant.io/components/automation) domain | 114
Entities in the [`binary_sensor`](https://www.home-assistant.io/components/binary_sensor) domain | 135
-Entities in the [`button`](https://www.home-assistant.io/components/button) domain | 12
+Entities in the [`button`](https://www.home-assistant.io/components/button) domain | 13
Entities in the [`camera`](https://www.home-assistant.io/components/camera) domain | 18
Entities in the [`climate`](https://www.home-assistant.io/components/climate) domain | 1
Entities in the [`counter`](https://www.home-assistant.io/components/counter) domain | 1
@@ -90,17 +90,17 @@ Entities in the [`remote`](https://www.home-assistant.io/components/remote) doma
Entities in the [`scene`](https://www.home-assistant.io/components/scene) domain | 2
Entities in the [`script`](https://www.home-assistant.io/components/script) domain | 42
Entities in the [`select`](https://www.home-assistant.io/components/select) domain | 2
-Entities in the [`sensor`](https://www.home-assistant.io/components/sensor) domain | 386
+Entities in the [`sensor`](https://www.home-assistant.io/components/sensor) domain | 392
Entities in the [`siren`](https://www.home-assistant.io/components/siren) domain | 1
Entities in the [`sun`](https://www.home-assistant.io/components/sun) domain | 1
-Entities in the [`switch`](https://www.home-assistant.io/components/switch) domain | 163
+Entities in the [`switch`](https://www.home-assistant.io/components/switch) domain | 164
Entities in the [`timer`](https://www.home-assistant.io/components/timer) domain | 2
Entities in the [`tts`](https://www.home-assistant.io/components/tts) domain | 1
Entities in the [`update`](https://www.home-assistant.io/components/update) domain | 3
Entities in the [`vacuum`](https://www.home-assistant.io/components/vacuum) domain | 1
Entities in the [`weather`](https://www.home-assistant.io/components/weather) domain | 2
Entities in the [`zone`](https://www.home-assistant.io/components/zone) domain | 6
-**Total state objects** | **1143**
+**Total state objects** | **1151**
## The HACS integrations/plugins that I use:
**Appdaemon**:
[aneisch/follow_me_appdaemon](https://github.com/aneisch/follow_me_appdaemon)
diff --git a/automations.yaml b/automations.yaml
index e0a5d7db..e7921e03 100644
--- a/automations.yaml
+++ b/automations.yaml
@@ -1032,8 +1032,8 @@
trigger:
- platform: state
entity_id: light.plant_light_corner
- from: "off"
to: "on"
+ for: "00:00:10"
action:
- repeat:
count: 3
diff --git a/custom_components/alexa_media/.translations/de.json b/custom_components/alexa_media/.translations/de.json
index bef4e25c..1c50b00b 100644
--- a/custom_components/alexa_media/.translations/de.json
+++ b/custom_components/alexa_media/.translations/de.json
@@ -91,7 +91,7 @@
"name": "E-Mail Adresse"
}
},
- "name": "Aktualisiere letzten aufgerufenen Sensor"
+ "name": "Aktualisiere den zuletzt aufgerufenen Sensor"
}
}
}
diff --git a/custom_components/alexa_media/__init__.py b/custom_components/alexa_media/__init__.py
index 293faf7e..a41040a0 100644
--- a/custom_components/alexa_media/__init__.py
+++ b/custom_components/alexa_media/__init__.py
@@ -693,7 +693,7 @@ async def process_notifications(login_obj, raw_notifications=None):
n_dev_id = notification.get("deviceSerialNumber")
if n_dev_id is None:
# skip notifications untied to a device for now
- # https://github.com/custom-components/alexa_media_player/issues/633#issuecomment-610705651
+ # https://github.com/alandtse/alexa_media_player/issues/633#issuecomment-610705651
continue
n_type = notification.get("type")
if n_type is None:
@@ -1038,11 +1038,11 @@ async def http2_handler(message_obj):
)
elif command in [
"PUSH_DELETE_DOPPLER_ACTIVITIES", # delete Alexa history
- "PUSH_LIST_CHANGE", # clear a shopping list https://github.com/custom-components/alexa_media_player/issues/1190
+ "PUSH_LIST_CHANGE", # clear a shopping list https://github.com/alandtse/alexa_media_player/issues/1190
"PUSH_LIST_ITEM_CHANGE", # update shopping list
"PUSH_CONTENT_FOCUS_CHANGE", # likely prime related refocus
"PUSH_DEVICE_SETUP_STATE_CHANGE", # likely device changes mid setup
- "PUSH_MEDIA_PREFERENCE_CHANGE", # disliking or liking songs, https://github.com/custom-components/alexa_media_player/issues/1599
+ "PUSH_MEDIA_PREFERENCE_CHANGE", # disliking or liking songs, https://github.com/alandtse/alexa_media_player/issues/1599
]:
pass
else:
diff --git a/custom_components/alexa_media/alexa_entity.py b/custom_components/alexa_media/alexa_entity.py
index 00fc70ab..2379157c 100644
--- a/custom_components/alexa_media/alexa_entity.py
+++ b/custom_components/alexa_media/alexa_entity.py
@@ -73,9 +73,9 @@ def is_local(appliance: dict[str, Any]) -> bool:
if "ALEXA_VOICE_ENABLED" in appliance.get("applianceTypes", []):
return not is_skill(appliance)
- # Ledvance bulbs connected via bluetooth are hard to detect as locally connected
+ # Ledvance/Sengled bulbs connected via bluetooth are hard to detect as locally connected
# There is probably a better way, but this works for now.
- if appliance.get("manufacturerName") == "Ledvance":
+ if appliance.get("manufacturerName") == "Ledvance" or appliance.get("manufacturerName") == "Sengled":
return not is_skill(appliance)
# Zigbee devices are guaranteed to be local and have a particular pattern of id
diff --git a/custom_components/alexa_media/const.py b/custom_components/alexa_media/const.py
index 61282a8f..929a57b0 100644
--- a/custom_components/alexa_media/const.py
+++ b/custom_components/alexa_media/const.py
@@ -14,8 +14,8 @@
PERCENTAGE,
)
-__version__ = "4.7.9"
-PROJECT_URL = "https://github.com/custom-components/alexa_media_player/"
+__version__ = "4.8.0"
+PROJECT_URL = "https://github.com/alandtse/alexa_media_player/"
ISSUE_URL = f"{PROJECT_URL}issues"
NOTIFY_URL = f"{PROJECT_URL}wiki/Configuration%3A-Notification-Component#use-the-notifyalexa_media-service"
diff --git a/custom_components/alexa_media/manifest.json b/custom_components/alexa_media/manifest.json
index 9f67af45..833df0d7 100644
--- a/custom_components/alexa_media/manifest.json
+++ b/custom_components/alexa_media/manifest.json
@@ -4,10 +4,10 @@
"codeowners": ["@alandtse", "@keatontaylor"],
"config_flow": true,
"dependencies": ["persistent_notification", "http"],
- "documentation": "https://github.com/custom-components/alexa_media_player/wiki",
+ "documentation": "https://github.com/alandtse/alexa_media_player/wiki",
"iot_class": "cloud_polling",
- "issue_tracker": "https://github.com/custom-components/alexa_media_player/issues",
+ "issue_tracker": "https://github.com/alandtse/alexa_media_player/issues",
"loggers": ["alexapy", "authcaptureproxy"],
- "requirements": ["alexapy==1.27.8", "packaging>=20.3", "wrapt>=1.14.0"],
- "version": "4.7.9"
+ "requirements": ["alexapy==1.27.10", "packaging>=20.3", "wrapt>=1.14.0"],
+ "version": "4.8.0"
}
diff --git a/custom_components/alexa_media/media_player.py b/custom_components/alexa_media/media_player.py
index 68f047aa..24b0761e 100644
--- a/custom_components/alexa_media/media_player.py
+++ b/custom_components/alexa_media/media_player.py
@@ -1430,7 +1430,7 @@ async def async_play_media(self, media_type, media_id, enqueue=None, **kwargs):
_LOGGER.warning(
"To send TTS, set public url in integration configuration"
" Please see the alexa_media wiki for details."
- "https://github.com/custom-components/alexa_media_player/wiki/Configuration%3A-Notification-Component#use-the-notifyalexa_media-service"
+ "https://github.com/alandtse/alexa_media_player/wiki/Configuration%3A-Notification-Component#use-the-notifyalexa_media-service"
)
elif media_type == "sequence":
_LOGGER.debug(
diff --git a/custom_components/alexa_media/sensor.py b/custom_components/alexa_media/sensor.py
index 4f128ba0..0bb552c7 100644
--- a/custom_components/alexa_media/sensor.py
+++ b/custom_components/alexa_media/sensor.py
@@ -494,7 +494,7 @@ def _update_recurring_alarm(self, value):
r_rule_data = next_item.get("rRuleData")
if (
r_rule_data
- ): # the new recurrence pattern; https://github.com/custom-components/alexa_media_player/issues/1608
+ ): # the new recurrence pattern; https://github.com/alandtse/alexa_media_player/issues/1608
next_trigger_times = r_rule_data.get("nextTriggerTimes")
weekdays = r_rule_data.get("byWeekDays")
if next_trigger_times:
diff --git a/custom_components/alexa_media/translations/de.json b/custom_components/alexa_media/translations/de.json
index bef4e25c..1c50b00b 100644
--- a/custom_components/alexa_media/translations/de.json
+++ b/custom_components/alexa_media/translations/de.json
@@ -91,7 +91,7 @@
"name": "E-Mail Adresse"
}
},
- "name": "Aktualisiere letzten aufgerufenen Sensor"
+ "name": "Aktualisiere den zuletzt aufgerufenen Sensor"
}
}
}
diff --git a/custom_components/alexa_media/translations/pt_BR.json b/custom_components/alexa_media/translations/pt_BR.json
index 2e8d00b0..1d41149c 100644
--- a/custom_components/alexa_media/translations/pt_BR.json
+++ b/custom_components/alexa_media/translations/pt_BR.json
@@ -96,7 +96,7 @@
"securitycode": "Código 2FA (recomendado para evitar problemas de login)",
"url": "Domínio regional da amazon (ex: amazon.co.uk)"
},
- "description": "Por favor insira sua [informação](https://github.com/custom-components/alexa_media_player/wiki/Configuration#integrations-page). **[Cookie import](https://github.com/custom-components/alexa_media_player/wiki/Configuration#cookie-import) pode ser mais fácil!** \n**AVISO! A amazon reporta incorretamente 'Insira um email ou número de telefone válido' quando [Código de 2FA é requirido](https://github.com/custom-components/alexa_media_player/wiki/Configuration#enable-two-factor-authentication-for-your-amazon-account).** \n>{message}",
+ "description": "Por favor insira sua [informação](https://github.com/alandtse/alexa_media_player/wiki/Configuration#integrations-page). **[Cookie import](https://github.com/alandtse/alexa_media_player/wiki/Configuration#cookie-import) pode ser mais fácil!** \n**AVISO! A amazon reporta incorretamente 'Insira um email ou número de telefone válido' quando [Código de 2FA é requirido](https://github.com/alandtse/alexa_media_player/wiki/Configuration#enable-two-factor-authentication-for-your-amazon-account).** \n>{message}",
"title": "Alexa Media Player - Configurações legado"
}
}
diff --git a/custom_components/alexa_media/translations/pt_PT.json b/custom_components/alexa_media/translations/pt_PT.json
index 2d7b4382..656ba5c8 100644
--- a/custom_components/alexa_media/translations/pt_PT.json
+++ b/custom_components/alexa_media/translations/pt_PT.json
@@ -96,7 +96,7 @@
"securitycode": "Código 2FA (recomendado para evitar problemas de login)",
"url": "Região do domínio Amazon (ex. amazon.com.br)"
},
- "description": "Por favor, introduza a sua [informação](https://github.com/custom-components/alexa_media_player/wiki/Configuration#integrations-page). **[Cookie import](https://github.com/custom-components/alexa_media_player/wiki/Configuration#cookie-import) pode ser mais fácil!** \n**Aviso: a Amazon informa incorretamente 'Insira um e-mail ou número de celular válido' quando [2FA Code é necessário](https://github.com/custom-components/alexa_media_player/wiki/Configuration#enable-two-factor-authentication-for-your-amazon-account).** \n>{message}",
+ "description": "Por favor, introduza a sua [informação](https://github.com/alandtse/alexa_media_player/wiki/Configuration#integrations-page). **[Cookie import](https://github.com/alandtse/alexa_media_player/wiki/Configuration#cookie-import) pode ser mais fácil!** \n**Aviso: a Amazon informa incorretamente 'Insira um e-mail ou número de celular válido' quando [2FA Code é necessário](https://github.com/alandtse/alexa_media_player/wiki/Configuration#enable-two-factor-authentication-for-your-amazon-account).** \n>{message}",
"title": "Alexa Media Player - Configuração de Compatibilidade"
}
}
diff --git a/extras/appdaemon/apps/apps.yaml b/extras/appdaemon/apps/apps.yaml
index d46b02ad..672a28b8 100644
--- a/extras/appdaemon/apps/apps.yaml
+++ b/extras/appdaemon/apps/apps.yaml
@@ -413,8 +413,8 @@ Front Porch Lights Sunset:
Plant Light:
module: entity_timer
class: Timer
- time_on: "09:30:00"
- time_off: "21:00:00"
+ time_on: sunrise
+ time_off: sunset
entities: switch.plant_light
Plant Light Corner:
diff --git a/extras/docker-compose/other/docker-compose.yml b/extras/docker-compose/other/docker-compose.yml
index 5a9dabbd..697f0f4d 100644
--- a/extras/docker-compose/other/docker-compose.yml
+++ b/extras/docker-compose/other/docker-compose.yml
@@ -344,7 +344,7 @@ services:
privileged: true
restart: always
#image: ghcr.io/blakeblackshear/frigate:stable
- image: ghcr.io/blakeblackshear/frigate:0.13.0-beta5
+ image: ghcr.io/blakeblackshear/frigate:0.13.0-beta6
shm_size: "128mb"
devices:
- /dev/bus/usb:/dev/bus/usb
diff --git a/extras/docker-compose/unified/docker-compose.yml b/extras/docker-compose/unified/docker-compose.yml
index 9a20bffd..ea66d98d 100644
--- a/extras/docker-compose/unified/docker-compose.yml
+++ b/extras/docker-compose/unified/docker-compose.yml
@@ -521,7 +521,7 @@ services:
privileged: true
restart: always
#image: ghcr.io/blakeblackshear/frigate:stable
- image: ghcr.io/blakeblackshear/frigate:0.13.0-beta5
+ image: ghcr.io/blakeblackshear/frigate:0.13.0-beta6
shm_size: "128mb"
devices:
- /dev/bus/usb:/dev/bus/usb
diff --git a/packages/blinds.yaml b/packages/blinds.yaml
index 0eb7a753..58a90de6 100644
--- a/packages/blinds.yaml
+++ b/packages/blinds.yaml
@@ -158,21 +158,6 @@ script:
{% elif group == "office" %}
{{ expand('group.office_blinds') | map(attribute='entity_id') | list}}
{% endif %}
- # Prevent stuck "opening" or "closing"
- # - repeat:
- # count: "13"
- # sequence:
- # - delay: 5
- # - service: homeassistant.update_entity
- # target:
- # entity_id: >
- # {% if group == "guest_bedroom" %}
- # {{ expand('group.guest_bedroom_blinds') | map(attribute='entity_id') | list}}
- # {% elif group == "dining_room" %}
- # {{ expand('group.dining_room_blinds') | map(attribute='entity_id') | list}}
- # {% elif group == "office" %}
- # {{ expand('group.office_blinds') | map(attribute='entity_id') | list}}
- # {% endif %}
automation:
- alias: "Lower and Raise Blinds"
@@ -254,6 +239,10 @@ automation:
- service: homeassistant.update_entity
target:
entity_id: "{{ trigger.entity_id }}"
+ - delay: "00:00:30"
+ - service: homeassistant.update_entity
+ target:
+ entity_id: "{{ trigger.entity_id }}"
- alias: "Guest Bedroom Blinds with Remote"
id: guest_bedroom_blinds_remote
diff --git a/www/community/numberbox-card/numberbox-card.js b/www/community/numberbox-card/numberbox-card.js
index d6041f61..56b383db 100644
--- a/www/community/numberbox-card/numberbox-card.js
+++ b/www/community/numberbox-card/numberbox-card.js
@@ -1,6 +1,6 @@
((LitElement) => {
-console.info('NUMBERBOX_CARD 4.15');
+console.info('NUMBERBOX_CARD 4.17');
const html = LitElement.prototype.html;
const css = LitElement.prototype.css;
class NumberBox extends LitElement {
@@ -11,7 +11,7 @@ constructor() {
this.pending = false;
this.rolling = false;
this.state = 0;
- this.old = {state: undefined, t:{}, h:''};
+ this.old = {state: NaN, t:{}, h:''};
}
render() {
@@ -116,7 +116,7 @@ secondaryInfo(){
}
}
}
- ret += (typeof b !== 'object')? (isNaN(f)?b:b.toFixed(f)) : t;
+ ret += (typeof b !== 'object')? (isNaN(f)?b:b.toFixed(f)) : '?';
}else{
ret += t;
}
@@ -252,7 +252,7 @@ niceNum(){
let t = this.numTime(fix,0,u);
return html`${t}`;
}
- if(isNaN(Number(fix))){return fix;}
+ if(isNaN(Number(fix))){return '?';}
if(typeof u == 'string' && u.startsWith('(')){
let value = fix; value = eval(u);
return html`${value}`;
diff --git a/www/community/numberbox-card/numberbox-card.js.gz b/www/community/numberbox-card/numberbox-card.js.gz
index f0c6a60d..d4b87a02 100644
Binary files a/www/community/numberbox-card/numberbox-card.js.gz and b/www/community/numberbox-card/numberbox-card.js.gz differ