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