Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions .github/workflows/stale.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,16 @@ name: Mark stale issues and pull requests

on:
schedule:
- cron: "0 8 * * *"
- cron: "0 8 * * *"
workflow_dispatch:

jobs:
stale:

runs-on: ubuntu-latest

steps:
- uses: actions/stale@v1
- uses: actions/stale@v8
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
stale-issue-message: 'This issue has been marked stale automatically after no activity for the last 180 days.'
Expand All @@ -21,5 +22,6 @@ jobs:
close-pr-message: 'This PR has been closed automatically after 187 days of no activity.'
days-before-stale: 180
days-before-close: 7
close-issue-label: 'Stale Issue'
exempt-issue-labels: 'Never Stale'
close-issue-label: 'closed-due-to-age'
close-pr-label: 'closed-due-to-age'
exempt-issue-labels: 'Never Stale, Keep Open'
50 changes: 39 additions & 11 deletions CHANGELOG.html
Original file line number Diff line number Diff line change
Expand Up @@ -18,64 +18,92 @@
<![endif]-->
</head>
<body>
<h3 id="release-v4.2.2.0---december-22nd-2022"><em><strong>Release (v4.2.2.0) - [December 22nd, 2022]</strong></em></h3>
<h3 id="release-v4.3.0.1---september-10th-2025"><em><strong>Release (v4.3.0.1) - [September 10th, 2025]</strong></em></h3>
<h4 id="all-apps-and-devices"><em><strong><em>All Apps and Devices</em></strong></em></h4>
<ul>
<li>[FIX] Fixed 404 errors on devices with getPlaybackState command (Thanks <span class="citation" data-cites="khan-hubitat">@khan-hubitat</span>).</li>
<li>[FIX] Fixed issue with code version checking when devices or apps are disabled in hubitat.</li>
<li>[FIX] Merged in <span class="citation" data-cites="imnotbobs">@imnotbobs</span> pull request for cleanups post alexa guard removal.</li>
</ul>
<h3 id="release-v4.3.0.0---september-9th-2025"><em><strong>Release (v4.3.0.0) - [September 9th, 2025]</strong></em></h3>
<h4 id="all-apps-and-devices-1"><em><strong><em>All Apps and Devices</em></strong></em></h4>
<ul>
<li>[FIX] Added server host override Thanks <span class="citation" data-cites="jtp10181">@jtp10181</span>.</li>
<li>[FIX] Added support for 5th gen echo dot and other devices. Thanks <span class="citation" data-cites="jtp10181">@jtp10181</span>.</li>
<li>[REMOVED] Removed Alexa Guard features as they are no longer supported by Amazon.</li>
</ul>
<h3 id="release-v4.2.4.0---march-7th-2024"><em><strong>Release (v4.2.4.0) - [March 7th, 2024]</strong></em></h3>
<h4 id="all-apps-and-devices-2"><em><strong><em>All Apps and Devices</em></strong></em></h4>
<ul>
<li>[FIX] Removed getDeviceActivity errors <span class="citation" data-cites="nh_shotfam">@nh_shotfam</span>.</li>
<li>[NEW] Added support for newer devices.</li>
<li>[FIX] Added this placeholder for testing</li>
</ul>
<h3 id="release-v4.2.3.0---august-21st-2023"><em><strong>Release (v4.2.3.0) - [August 21st, 2023]</strong></em></h3>
<h4 id="all-apps-and-devices-3"><em><strong><em>All Apps and Devices</em></strong></em></h4>
<ul>
<li>[FIX] Fixes submitted by <span class="citation" data-cites="nh_shotfam">@nh_shotfam</span>.</li>
<li>[FIX] Fixed some ui issues with the Actions app.</li>
<li>[FIX] Disabled the GetPlaylists command for now as it’s not working.</li>
</ul>
<h3 id="release-v4.2.2.0---december-22nd-2022"><em><strong>Release (v4.2.2.0) - [December 22nd, 2022]</strong></em></h3>
<h4 id="all-apps-and-devices-4"><em><strong><em>All Apps and Devices</em></strong></em></h4>
<ul>
<li>[FIX] Fixes submitted by <span class="citation" data-cites="nh_shotfam">@nh_shotfam</span>.</li>
<li>[FIX] Fixed some ui issues with the Actions app.</li>
</ul>
<h3 id="release-v4.2.1.2---december-20th-2022"><em><strong>Release (v4.2.1.2) - [December 20th, 2022]</strong></em></h3>
<h4 id="all-apps-and-devices-1"><em><strong><em>All Apps and Devices</em></strong></em></h4>
<h4 id="all-apps-and-devices-5"><em><strong><em>All Apps and Devices</em></strong></em></h4>
<ul>
<li>[FIX] Fixes for cloneing zones and actions.</li>
<li>[NEW] Support for 5th gen echo dot and other devices.</li>
<li>[FIX] Cleanups and optimizations.</li>
</ul>
<h3 id="release-v4.2.0.8---november-28th-2022"><em><strong>Release (v4.2.0.8) - [November 28th, 2022]</strong></em></h3>
<h4 id="all-apps-and-devices-2"><em><strong><em>All Apps and Devices</em></strong></em></h4>
<h4 id="all-apps-and-devices-6"><em><strong><em>All Apps and Devices</em></strong></em></h4>
<ul>
<li>[FIX] Tweaks for Local Server Installs.</li>
</ul>
<h3 id="release-v4.2.0.7---may-5th-2022"><em><strong>Release (v4.2.0.7) - [May 5th, 2022]</strong></em></h3>
<h4 id="all-apps-and-devices-3"><em><strong><em>All Apps and Devices</em></strong></em></h4>
<h4 id="all-apps-and-devices-7"><em><strong><em>All Apps and Devices</em></strong></em></h4>
<ul>
<li>[FIX] Fix for new heroku deployments not working.</li>
</ul>
<h3 id="release-v4.2.0.6---may-5th-2022"><em><strong>Release (v4.2.0.6) - [May 5th, 2022]</strong></em></h3>
<h4 id="all-apps-and-devices-4"><em><strong><em>All Apps and Devices</em></strong></em></h4>
<h4 id="all-apps-and-devices-8"><em><strong><em>All Apps and Devices</em></strong></em></h4>
<ul>
<li>[FIX] Fix for latest version not showing it’s up to date.</li>
</ul>
<h3 id="release-v4.2.0.5---april-28th-2022"><em><strong>Release (v4.2.0.5) - [April 28th, 2022]</strong></em></h3>
<h4 id="all-apps-and-devices-5"><em><strong><em>All Apps and Devices</em></strong></em></h4>
<h4 id="all-apps-and-devices-9"><em><strong><em>All Apps and Devices</em></strong></em></h4>
<ul>
<li>[FIX] NoOp command description error</li>
</ul>
<h3 id="release-v4.2.0.4---april-21st-2022"><em><strong>Release (v4.2.0.4) - [April 21st, 2022]</strong></em></h3>
<h4 id="all-apps-and-devices-6"><em><strong><em>All Apps and Devices</em></strong></em></h4>
<h4 id="all-apps-and-devices-10"><em><strong><em>All Apps and Devices</em></strong></em></h4>
<ul>
<li>[FIX] Fixed version requirement from last update.</li>
</ul>
<h3 id="release-v4.2.0.3---april-21st-2022"><em><strong>Release (v4.2.0.3) - [April 21st, 2022]</strong></em></h3>
<h4 id="all-apps-and-devices-7"><em><strong><em>All Apps and Devices</em></strong></em></h4>
<h4 id="all-apps-and-devices-11"><em><strong><em>All Apps and Devices</em></strong></em></h4>
<ul>
<li>[FIX] Volume Restore issue resolved.</li>
<li>[FIX] Bug fixes and optimizations.</li>
</ul>
<h3 id="release-v4.2.0.2---april-18th-2022"><em><strong>Release (v4.2.0.2) - [April 18th, 2022]</strong></em></h3>
<h4 id="all-apps-and-devices-8"><em><strong><em>All Apps and Devices</em></strong></em></h4>
<h4 id="all-apps-and-devices-12"><em><strong><em>All Apps and Devices</em></strong></em></h4>
<ul>
<li>[FIX] Volume Restore issue resolved.</li>
<li>[FIX] Bug fixes and optimizations.</li>
</ul>
<h3 id="release-v4.2.0.1---april-14th-2022"><em><strong>Release (v4.2.0.1) - [April 14th, 2022]</strong></em></h3>
<h4 id="all-apps-and-devices-9"><em><strong><em>All Apps and Devices</em></strong></em></h4>
<h4 id="all-apps-and-devices-13"><em><strong><em>All Apps and Devices</em></strong></em></h4>
<ul>
<li>[FIX] Volume Restore issue resolved.</li>
<li>[FIX] Bug fixes and optimizations.</li>
</ul>
<h3 id="release-v4.2.0.0---april-1st-2022"><em><strong>Release (v4.2.0.0) - [April 1st, 2022]</strong></em></h3>
<h4 id="all-apps-and-devices-10"><em><strong><em>All Apps and Devices</em></strong></em></h4>
<h4 id="all-apps-and-devices-14"><em><strong><em>All Apps and Devices</em></strong></em></h4>
<ul>
<li>[NEW] Updated notification quiet time restrictions to match the same code structure as those in ES Actions.</li>
<li>[NEW] Added new commands for speech and announcements to bypass alexa do not disturb restrictions to speak for emergency scenarios.</li>
Expand Down
24 changes: 24 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,27 @@
### _**Release (v4.3.0.1) - [September 10th, 2025]**_

#### _***All Apps and Devices***_

- [FIX] Fixed 404 errors on devices with getPlaybackState command (Thanks @khan-hubitat).
- [FIX] Fixed issue with code version checking when devices or apps are disabled in hubitat.
- [FIX] Merged in @imnotbobs pull request for cleanups post alexa guard removal.

### _**Release (v4.3.0.0) - [September 9th, 2025]**_

#### _***All Apps and Devices***_

- [FIX] Added server host override Thanks @jtp10181.
- [FIX] Added support for 5th gen echo dot and other devices. Thanks @jtp10181.
- [REMOVED] Removed Alexa Guard features as they are no longer supported by Amazon.

### _**Release (v4.2.4.0) - [March 7th, 2024]**_

#### _***All Apps and Devices***_

- [FIX] Removed getDeviceActivity errors @nh_shotfam.
- [NEW] Added support for newer devices.
- [FIX] Added this placeholder for testing

### _**Release (v4.2.3.0) - [August 21st, 2023]**_

#### _***All Apps and Devices***_
Expand Down
30 changes: 16 additions & 14 deletions apps/echo-speaks-actions.groovy
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
/* groovylint-disable CompileStatic, MethodCount, MethodSize, UnnecessaryGetter */
/**
* Echo Speaks Actions (Hubitat)
*
* Copyright 2018, 2019, 2020, 2021, 2022, 2023 Anthony Santilli
* Copyright 2018-2025 Anthony Santilli
* Code Contributions by @nh.schottfam
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
Expand Down Expand Up @@ -32,8 +33,8 @@ import java.util.concurrent.Semaphore
//************************************************
//* STATIC VARIABLES *
//************************************************
@Field static final String appVersionFLD = '4.2.3.0'
@Field static final String appModifiedFLD = '2022-08-21'
@Field static final String appVersionFLD = '4.3.0.1'
@Field static final String appModifiedFLD = '2025-09-10'
@Field static final Boolean devModeFLD = false
@Field static final String sNULL = (String)null
@Field static final String sBLANK = ''
Expand Down Expand Up @@ -2842,13 +2843,14 @@ def alarmEvtHandler(evt) {
if(!ok2Run) logDebug("alarmEvtHandler | Skipping event ${eN} value: ${eV}, did not match ${lT} ${lE}")
}

public guardEventHandler(String guardState) {
Map evt = [name: "guard", displayName: "Alexa Guard", value: guardState, date: new Date(), device: [id: null]]
if(isTrc())logTrace("${evt.name} Event | Device: ${evt.displayName} | Value: (${strCapitalize(evt.value)})")
Boolean ok= ((Boolean)state.handleGuardEvents && settings.trig_guard && (sANY in (List)settings.trig_guard || guardState in (List)settings.trig_guard))
eventCompletion(evt, ok, false, null, "guardEventHandler", guardState, (String)evt.displayName)
if(!ok) logDebug("guardEventHandler | Skipping event guard value: ${guardState}, did not match ${state.handleGuardEvents} ${settings.trig_guard}")
}
// DISABLED: Alexa Guard features disabled
// public guardEventHandler(String guardState) {
// Map evt = [name: "guard", displayName: "Alexa Guard", value: guardState, date: new Date(), device: [id: null]]
// if(isTrc())logTrace("${evt.name} Event | Device: ${evt.displayName} | Value: (${strCapitalize(evt.value)})")
// Boolean ok= ((Boolean)state.handleGuardEvents && settings.trig_guard && (sANY in (List)settings.trig_guard || guardState in (List)settings.trig_guard))
// eventCompletion(evt, ok, false, null, "guardEventHandler", guardState, (String)evt.displayName)
// if(!ok) logDebug("guardEventHandler | Skipping event guard value: ${guardState}, did not match ${state.handleGuardEvents} ${settings.trig_guard}")
// }

void eventCompletion(evt, Boolean ok2Run, Boolean dco, Integer dcw, String meth, evtVal,
String evtDis, Boolean aftRepEvt=false, Boolean allDevsResp=false) {
Expand Down Expand Up @@ -4670,12 +4672,12 @@ private void webCoRE_execute(String pistonIdOrName,Map data=[:]) {
}

private static List webCoRE_list(){
List ret = ((List)webCoREFLD?.pistons)?.sort {it?.name}?.collect { [(it?.id): it?.aname?.replaceAll("<[^>]*>", sBLANK)] }
List ret = ((List)webCoREFLD?.pistons)?.sort {it?.n}?.collect { [(it?.id): it?.a?.replaceAll("<[^>]*>", sBLANK)] }
return ret
}
/*
private static String getPistonByName(String pistonIdOrName) {
String i=((List)webCoREFLD?.pistons ?: []).find{((String)it.name==pistonIdOrName)||((String)it.id==pistonIdOrName)}?.id
String i=((List)webCoREFLD?.pistons ?: []).find{((String)it.n==pistonIdOrName)||((String)it.id==pistonIdOrName)}?.id
} */

private static String getPistonById(String rId) {
Expand All @@ -4698,7 +4700,7 @@ void webCoRE_handler(evt){
Map d=(Map)evt.jsonData?:[:]
if(d.id && d.pistons && (d.pistons instanceof List)){
p.removeAll{it.iid==d.id}
p+=d.pistons.collect{[iid:d.id]+it}.sort{it.name}
p+=d.pistons.collect{[iid:d.id]+it}.sort{it.n}
Boolean a = (Boolean)webCoREFLD?.cbk

webCoREFLD = [cbk: a, updated: wnow(), pistons: p]
Expand Down Expand Up @@ -5879,7 +5881,7 @@ public Map getSettingsAndStateMap() {
// actions
"tierSchedActive",
// zones
"zoneConditionsOk", "configStatusMap", "tsDtMap", "dateInstalled", "handleGuardEvents", "startTime", "stopTime", "alexaGuardState", "appFlagsMap",
"zoneConditionsOk", "configStatusMap", "tsDtMap", "dateInstalled", /* "handleGuardEvents", */ "startTime", "stopTime", /* "alexaGuardState", */ "appFlagsMap", // DISABLED: Alexa Guard features disabled
"dupPendingSetup", "dupOpenedByUser"

]
Expand Down
16 changes: 9 additions & 7 deletions apps/echo-speaks-zones.groovy
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
/* groovylint-disable CompileStatic, MethodCount, MethodSize, UnnecessaryGetter */
/**
* Echo Speaks - Zones (Hubitat)
*
* Copyright 2018, 2019, 2020, 2021, 2022, 2023 Anthony Santilli
* Copyright 2018-2025 Anthony Santilli
* Code Contributions by @nh.schottfam
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
Expand All @@ -28,8 +29,8 @@ import java.util.concurrent.Semaphore
//************************************************
//* STATIC VARIABLES *
//************************************************
@Field static final String appVersionFLD = '4.2.3.0'
@Field static final String appModifiedFLD = '2023-08-21'
@Field static final String appVersionFLD = '4.3.0.1'
@Field static final String appModifiedFLD = '2025-09-10'
@Field static final String sNULL = (String)null
@Field static final String sBLANK = ''
@Field static final String sSPACE = ' '
Expand Down Expand Up @@ -711,9 +712,10 @@ void relayChildInitiatedRefresh() {
parent.childInitiatedRefresh()
}

String relayGetAlexaGuardStatus() {
parent.getAlexaGuardStatus()
}
// DISABLED: Alexa Guard features disabled
// String relayGetAlexaGuardStatus() {
// parent.getAlexaGuardStatus()
// }
/*
Boolean RelayGetDndEnabled(String serial) {
parent.getDndEnabled(serial)
Expand Down Expand Up @@ -2363,7 +2365,7 @@ public Map getSettingsAndStateMap() {
// actions
"tierSchedActive",
// zones
"zoneConditionsOk", "configStatusMap", "tsDtMap", "dateInstalled", "handleGuardEvents", "startTime", "stopTime", "alexaGuardState", "appFlagsMap",
"zoneConditionsOk", "configStatusMap", "tsDtMap", "dateInstalled", /* "handleGuardEvents", */ "startTime", "stopTime", /* "alexaGuardState", */ "appFlagsMap", // DISABLED: Alexa Guard features disabled
"dupPendingSetup", "dupOpenedByUser"
]
data.state = state?.findAll { !((String)it?.key in stskip) }
Expand Down
Loading