mirror of
https://github.com/house-of-abbey/GarminHomeAssistant.git
synced 2025-06-16 11:28:40 +00:00
GPS and current activity in background service
This commit is contained in:
@ -25,7 +25,8 @@
|
||||
Use "Monkey C: Edit Application" from the Visual Studio Code command palette
|
||||
to update the application attributes.
|
||||
-->
|
||||
<iq:application id="4901cdfb-b4a2-4f33-96c7-f5be5992809e" type="widget" name="@Strings.AppName" entry="HomeAssistantApp" launcherIcon="@Drawables.LauncherIcon" minApiLevel="3.1.0">
|
||||
<iq:application id="4901cdfb-b4a2-4f33-96c7-f5be5992809e" type="widget" name="@Strings.AppName"
|
||||
entry="HomeAssistantApp" launcherIcon="@Drawables.LauncherIcon" minApiLevel="3.1.0">
|
||||
<!--
|
||||
Use the following from the Visual Studio Code comand palette to edit
|
||||
the build targets:
|
||||
@ -34,115 +35,116 @@
|
||||
"Monkey C: Edit Products" - Lets you add or remove any product
|
||||
-->
|
||||
<iq:products>
|
||||
<iq:product id="approachs7042mm"/>
|
||||
<iq:product id="approachs7047mm"/>
|
||||
<iq:product id="d2air"/>
|
||||
<iq:product id="d2airx10"/>
|
||||
<iq:product id="d2delta"/>
|
||||
<iq:product id="d2deltapx"/>
|
||||
<iq:product id="d2deltas"/>
|
||||
<iq:product id="d2mach1"/>
|
||||
<iq:product id="descentg1"/>
|
||||
<iq:product id="descentmk2"/>
|
||||
<iq:product id="descentmk2s"/>
|
||||
<iq:product id="edge1030"/>
|
||||
<iq:product id="edge1030bontrager"/>
|
||||
<iq:product id="edge1030plus"/>
|
||||
<iq:product id="edge1040"/>
|
||||
<iq:product id="edge520plus"/>
|
||||
<iq:product id="edge530"/>
|
||||
<iq:product id="edge820"/>
|
||||
<iq:product id="edge830"/>
|
||||
<iq:product id="edgeexplore"/>
|
||||
<iq:product id="edgeexplore2"/>
|
||||
<iq:product id="enduro"/>
|
||||
<iq:product id="epix2"/>
|
||||
<iq:product id="epix2pro42mm"/>
|
||||
<iq:product id="epix2pro47mm"/>
|
||||
<iq:product id="epix2pro51mm"/>
|
||||
<iq:product id="fenix5"/>
|
||||
<iq:product id="fenix5plus"/>
|
||||
<iq:product id="fenix5s"/>
|
||||
<iq:product id="fenix5splus"/>
|
||||
<iq:product id="fenix5x"/>
|
||||
<iq:product id="fenix5xplus"/>
|
||||
<iq:product id="fenix6"/>
|
||||
<iq:product id="fenix6pro"/>
|
||||
<iq:product id="fenix6s"/>
|
||||
<iq:product id="fenix6spro"/>
|
||||
<iq:product id="fenix6xpro"/>
|
||||
<iq:product id="fenix7"/>
|
||||
<iq:product id="fenix7pro"/>
|
||||
<iq:product id="fenix7pronowifi"/>
|
||||
<iq:product id="fenix7s"/>
|
||||
<iq:product id="fenix7spro"/>
|
||||
<iq:product id="fenix7x"/>
|
||||
<iq:product id="fenix7xpro"/>
|
||||
<iq:product id="fenix7xpronowifi"/>
|
||||
<iq:product id="fenixchronos"/>
|
||||
<iq:product id="fr245"/>
|
||||
<iq:product id="fr245m"/>
|
||||
<iq:product id="fr255"/>
|
||||
<iq:product id="fr255m"/>
|
||||
<iq:product id="fr255s"/>
|
||||
<iq:product id="fr255sm"/>
|
||||
<iq:product id="fr265"/>
|
||||
<iq:product id="fr265s"/>
|
||||
<iq:product id="fr55"/>
|
||||
<iq:product id="fr645"/>
|
||||
<iq:product id="fr645m"/>
|
||||
<iq:product id="fr745"/>
|
||||
<iq:product id="fr935"/>
|
||||
<iq:product id="fr945"/>
|
||||
<iq:product id="fr945lte"/>
|
||||
<iq:product id="fr955"/>
|
||||
<iq:product id="fr965"/>
|
||||
<iq:product id="gpsmap67"/>
|
||||
<iq:product id="instinct2"/>
|
||||
<iq:product id="instinct2s"/>
|
||||
<iq:product id="instinct2x"/>
|
||||
<iq:product id="instinctcrossover"/>
|
||||
<iq:product id="legacyherocaptainmarvel"/>
|
||||
<iq:product id="legacyherofirstavenger"/>
|
||||
<iq:product id="legacysagadarthvader"/>
|
||||
<iq:product id="legacysagarey"/>
|
||||
<iq:product id="marq2"/>
|
||||
<iq:product id="marq2aviator"/>
|
||||
<iq:product id="marqadventurer"/>
|
||||
<iq:product id="marqathlete"/>
|
||||
<iq:product id="marqaviator"/>
|
||||
<iq:product id="marqcaptain"/>
|
||||
<iq:product id="marqcommander"/>
|
||||
<iq:product id="marqdriver"/>
|
||||
<iq:product id="marqexpedition"/>
|
||||
<iq:product id="marqgolfer"/>
|
||||
<iq:product id="montana7xx"/>
|
||||
<iq:product id="venu"/>
|
||||
<iq:product id="venu2"/>
|
||||
<iq:product id="venu2plus"/>
|
||||
<iq:product id="venu2s"/>
|
||||
<iq:product id="venu3"/>
|
||||
<iq:product id="venu3s"/>
|
||||
<iq:product id="venud"/>
|
||||
<iq:product id="venusq"/>
|
||||
<iq:product id="venusq2"/>
|
||||
<iq:product id="venusq2m"/>
|
||||
<iq:product id="venusqm"/>
|
||||
<iq:product id="vivoactive3"/>
|
||||
<iq:product id="vivoactive3m"/>
|
||||
<iq:product id="vivoactive3mlte"/>
|
||||
<iq:product id="vivoactive4"/>
|
||||
<iq:product id="vivoactive4s"/>
|
||||
<iq:product id="vivoactive5"/>
|
||||
<iq:product id="approachs7042mm" />
|
||||
<iq:product id="approachs7047mm" />
|
||||
<iq:product id="d2air" />
|
||||
<iq:product id="d2airx10" />
|
||||
<iq:product id="d2delta" />
|
||||
<iq:product id="d2deltapx" />
|
||||
<iq:product id="d2deltas" />
|
||||
<iq:product id="d2mach1" />
|
||||
<iq:product id="descentg1" />
|
||||
<iq:product id="descentmk2" />
|
||||
<iq:product id="descentmk2s" />
|
||||
<iq:product id="edge1030" />
|
||||
<iq:product id="edge1030bontrager" />
|
||||
<iq:product id="edge1030plus" />
|
||||
<iq:product id="edge1040" />
|
||||
<iq:product id="edge520plus" />
|
||||
<iq:product id="edge530" />
|
||||
<iq:product id="edge820" />
|
||||
<iq:product id="edge830" />
|
||||
<iq:product id="edgeexplore" />
|
||||
<iq:product id="edgeexplore2" />
|
||||
<iq:product id="enduro" />
|
||||
<iq:product id="epix2" />
|
||||
<iq:product id="epix2pro42mm" />
|
||||
<iq:product id="epix2pro47mm" />
|
||||
<iq:product id="epix2pro51mm" />
|
||||
<iq:product id="fenix5" />
|
||||
<iq:product id="fenix5plus" />
|
||||
<iq:product id="fenix5s" />
|
||||
<iq:product id="fenix5splus" />
|
||||
<iq:product id="fenix5x" />
|
||||
<iq:product id="fenix5xplus" />
|
||||
<iq:product id="fenix6" />
|
||||
<iq:product id="fenix6pro" />
|
||||
<iq:product id="fenix6s" />
|
||||
<iq:product id="fenix6spro" />
|
||||
<iq:product id="fenix6xpro" />
|
||||
<iq:product id="fenix7" />
|
||||
<iq:product id="fenix7pro" />
|
||||
<iq:product id="fenix7pronowifi" />
|
||||
<iq:product id="fenix7s" />
|
||||
<iq:product id="fenix7spro" />
|
||||
<iq:product id="fenix7x" />
|
||||
<iq:product id="fenix7xpro" />
|
||||
<iq:product id="fenix7xpronowifi" />
|
||||
<iq:product id="fenixchronos" />
|
||||
<iq:product id="fr245" />
|
||||
<iq:product id="fr245m" />
|
||||
<iq:product id="fr255" />
|
||||
<iq:product id="fr255m" />
|
||||
<iq:product id="fr255s" />
|
||||
<iq:product id="fr255sm" />
|
||||
<iq:product id="fr265" />
|
||||
<iq:product id="fr265s" />
|
||||
<iq:product id="fr55" />
|
||||
<iq:product id="fr645" />
|
||||
<iq:product id="fr645m" />
|
||||
<iq:product id="fr745" />
|
||||
<iq:product id="fr935" />
|
||||
<iq:product id="fr945" />
|
||||
<iq:product id="fr945lte" />
|
||||
<iq:product id="fr955" />
|
||||
<iq:product id="fr965" />
|
||||
<iq:product id="gpsmap67" />
|
||||
<iq:product id="instinct2" />
|
||||
<iq:product id="instinct2s" />
|
||||
<iq:product id="instinct2x" />
|
||||
<iq:product id="instinctcrossover" />
|
||||
<iq:product id="legacyherocaptainmarvel" />
|
||||
<iq:product id="legacyherofirstavenger" />
|
||||
<iq:product id="legacysagadarthvader" />
|
||||
<iq:product id="legacysagarey" />
|
||||
<iq:product id="marq2" />
|
||||
<iq:product id="marq2aviator" />
|
||||
<iq:product id="marqadventurer" />
|
||||
<iq:product id="marqathlete" />
|
||||
<iq:product id="marqaviator" />
|
||||
<iq:product id="marqcaptain" />
|
||||
<iq:product id="marqcommander" />
|
||||
<iq:product id="marqdriver" />
|
||||
<iq:product id="marqexpedition" />
|
||||
<iq:product id="marqgolfer" />
|
||||
<iq:product id="montana7xx" />
|
||||
<iq:product id="venu" />
|
||||
<iq:product id="venu2" />
|
||||
<iq:product id="venu2plus" />
|
||||
<iq:product id="venu2s" />
|
||||
<iq:product id="venu3" />
|
||||
<iq:product id="venu3s" />
|
||||
<iq:product id="venud" />
|
||||
<iq:product id="venusq" />
|
||||
<iq:product id="venusq2" />
|
||||
<iq:product id="venusq2m" />
|
||||
<iq:product id="venusqm" />
|
||||
<iq:product id="vivoactive3" />
|
||||
<iq:product id="vivoactive3m" />
|
||||
<iq:product id="vivoactive3mlte" />
|
||||
<iq:product id="vivoactive4" />
|
||||
<iq:product id="vivoactive4s" />
|
||||
<iq:product id="vivoactive5" />
|
||||
</iq:products>
|
||||
<!--
|
||||
Use "Monkey C: Edit Permissions" from the Visual Studio Code command
|
||||
palette to update permissions.
|
||||
-->
|
||||
<iq:permissions>
|
||||
<iq:uses-permission id="Background"/>
|
||||
<iq:uses-permission id="BluetoothLowEnergy"/>
|
||||
<iq:uses-permission id="Communications"/>
|
||||
<iq:uses-permission id="Background" />
|
||||
<iq:uses-permission id="BluetoothLowEnergy" />
|
||||
<iq:uses-permission id="Communications" />
|
||||
<iq:uses-permission id="Positioning" />
|
||||
</iq:permissions>
|
||||
<!--
|
||||
Use "Monkey C: Edit Languages" from the Visual Studio Code command
|
||||
@ -190,6 +192,6 @@
|
||||
Use "Monkey C: Configure Monkey Barrel" from the Visual Studio Code
|
||||
command palette to edit the included barrels.
|
||||
-->
|
||||
<iq:barrels/>
|
||||
<iq:barrels />
|
||||
</iq:application>
|
||||
</iq:manifest>
|
217
manifest.xml
217
manifest.xml
@ -28,9 +28,11 @@
|
||||
Testing in VSCode requires monkey.jungle, so for convenience, swap between
|
||||
watch-app and widget by changing which of the next two lines are commented out
|
||||
-->
|
||||
<iq:application id="98c36259-498a-4458-9cef-74a273ad2bc3" type="watch-app" name="@Strings.AppName" entry="HomeAssistantApp" launcherIcon="@Drawables.LauncherIcon" minApiLevel="3.1.0">
|
||||
<!--
|
||||
<iq:application id="4901cdfb-b4a2-4f33-96c7-f5be5992809e" type="widget" name="@Strings.AppName" entry="HomeAssistantApp" launcherIcon="@Drawables.LauncherIcon" minApiLevel="3.1.0">
|
||||
<iq:application id="98c36259-498a-4458-9cef-74a273ad2bc3" type="watch-app" name="@Strings.AppName"
|
||||
entry="HomeAssistantApp" launcherIcon="@Drawables.LauncherIcon" minApiLevel="3.1.0">
|
||||
<!--
|
||||
<iq:application id="4901cdfb-b4a2-4f33-96c7-f5be5992809e" type="widget" name="@Strings.AppName"
|
||||
entry="HomeAssistantApp" launcherIcon="@Drawables.LauncherIcon" minApiLevel="3.1.0">
|
||||
-->
|
||||
<!--
|
||||
Use the following from the Visual Studio Code comand palette to edit
|
||||
@ -40,115 +42,116 @@
|
||||
"Monkey C: Edit Products" - Lets you add or remove any product
|
||||
-->
|
||||
<iq:products>
|
||||
<iq:product id="approachs7042mm"/>
|
||||
<iq:product id="approachs7047mm"/>
|
||||
<iq:product id="d2air"/>
|
||||
<iq:product id="d2airx10"/>
|
||||
<iq:product id="d2delta"/>
|
||||
<iq:product id="d2deltapx"/>
|
||||
<iq:product id="d2deltas"/>
|
||||
<iq:product id="d2mach1"/>
|
||||
<iq:product id="descentg1"/>
|
||||
<iq:product id="descentmk2"/>
|
||||
<iq:product id="descentmk2s"/>
|
||||
<iq:product id="edge1030"/>
|
||||
<iq:product id="edge1030bontrager"/>
|
||||
<iq:product id="edge1030plus"/>
|
||||
<iq:product id="edge1040"/>
|
||||
<iq:product id="edge520plus"/>
|
||||
<iq:product id="edge530"/>
|
||||
<iq:product id="edge820"/>
|
||||
<iq:product id="edge830"/>
|
||||
<iq:product id="edgeexplore"/>
|
||||
<iq:product id="edgeexplore2"/>
|
||||
<iq:product id="enduro"/>
|
||||
<iq:product id="epix2"/>
|
||||
<iq:product id="epix2pro42mm"/>
|
||||
<iq:product id="epix2pro47mm"/>
|
||||
<iq:product id="epix2pro51mm"/>
|
||||
<iq:product id="fenix5"/>
|
||||
<iq:product id="fenix5plus"/>
|
||||
<iq:product id="fenix5s"/>
|
||||
<iq:product id="fenix5splus"/>
|
||||
<iq:product id="fenix5x"/>
|
||||
<iq:product id="fenix5xplus"/>
|
||||
<iq:product id="fenix6"/>
|
||||
<iq:product id="fenix6pro"/>
|
||||
<iq:product id="fenix6s"/>
|
||||
<iq:product id="fenix6spro"/>
|
||||
<iq:product id="fenix6xpro"/>
|
||||
<iq:product id="fenix7"/>
|
||||
<iq:product id="fenix7pro"/>
|
||||
<iq:product id="fenix7pronowifi"/>
|
||||
<iq:product id="fenix7s"/>
|
||||
<iq:product id="fenix7spro"/>
|
||||
<iq:product id="fenix7x"/>
|
||||
<iq:product id="fenix7xpro"/>
|
||||
<iq:product id="fenix7xpronowifi"/>
|
||||
<iq:product id="fenixchronos"/>
|
||||
<iq:product id="fr245"/>
|
||||
<iq:product id="fr245m"/>
|
||||
<iq:product id="fr255"/>
|
||||
<iq:product id="fr255m"/>
|
||||
<iq:product id="fr255s"/>
|
||||
<iq:product id="fr255sm"/>
|
||||
<iq:product id="fr265"/>
|
||||
<iq:product id="fr265s"/>
|
||||
<iq:product id="fr55"/>
|
||||
<iq:product id="fr645"/>
|
||||
<iq:product id="fr645m"/>
|
||||
<iq:product id="fr745"/>
|
||||
<iq:product id="fr935"/>
|
||||
<iq:product id="fr945"/>
|
||||
<iq:product id="fr945lte"/>
|
||||
<iq:product id="fr955"/>
|
||||
<iq:product id="fr965"/>
|
||||
<iq:product id="gpsmap67"/>
|
||||
<iq:product id="instinct2"/>
|
||||
<iq:product id="instinct2s"/>
|
||||
<iq:product id="instinct2x"/>
|
||||
<iq:product id="instinctcrossover"/>
|
||||
<iq:product id="legacyherocaptainmarvel"/>
|
||||
<iq:product id="legacyherofirstavenger"/>
|
||||
<iq:product id="legacysagadarthvader"/>
|
||||
<iq:product id="legacysagarey"/>
|
||||
<iq:product id="marq2"/>
|
||||
<iq:product id="marq2aviator"/>
|
||||
<iq:product id="marqadventurer"/>
|
||||
<iq:product id="marqathlete"/>
|
||||
<iq:product id="marqaviator"/>
|
||||
<iq:product id="marqcaptain"/>
|
||||
<iq:product id="marqcommander"/>
|
||||
<iq:product id="marqdriver"/>
|
||||
<iq:product id="marqexpedition"/>
|
||||
<iq:product id="marqgolfer"/>
|
||||
<iq:product id="montana7xx"/>
|
||||
<iq:product id="venu"/>
|
||||
<iq:product id="venu2"/>
|
||||
<iq:product id="venu2plus"/>
|
||||
<iq:product id="venu2s"/>
|
||||
<iq:product id="venu3"/>
|
||||
<iq:product id="venu3s"/>
|
||||
<iq:product id="venud"/>
|
||||
<iq:product id="venusq"/>
|
||||
<iq:product id="venusq2"/>
|
||||
<iq:product id="venusq2m"/>
|
||||
<iq:product id="venusqm"/>
|
||||
<iq:product id="vivoactive3"/>
|
||||
<iq:product id="vivoactive3m"/>
|
||||
<iq:product id="vivoactive3mlte"/>
|
||||
<iq:product id="vivoactive4"/>
|
||||
<iq:product id="vivoactive4s"/>
|
||||
<iq:product id="vivoactive5"/>
|
||||
<iq:product id="approachs7042mm" />
|
||||
<iq:product id="approachs7047mm" />
|
||||
<iq:product id="d2air" />
|
||||
<iq:product id="d2airx10" />
|
||||
<iq:product id="d2delta" />
|
||||
<iq:product id="d2deltapx" />
|
||||
<iq:product id="d2deltas" />
|
||||
<iq:product id="d2mach1" />
|
||||
<iq:product id="descentg1" />
|
||||
<iq:product id="descentmk2" />
|
||||
<iq:product id="descentmk2s" />
|
||||
<iq:product id="edge1030" />
|
||||
<iq:product id="edge1030bontrager" />
|
||||
<iq:product id="edge1030plus" />
|
||||
<iq:product id="edge1040" />
|
||||
<iq:product id="edge520plus" />
|
||||
<iq:product id="edge530" />
|
||||
<iq:product id="edge820" />
|
||||
<iq:product id="edge830" />
|
||||
<iq:product id="edgeexplore" />
|
||||
<iq:product id="edgeexplore2" />
|
||||
<iq:product id="enduro" />
|
||||
<iq:product id="epix2" />
|
||||
<iq:product id="epix2pro42mm" />
|
||||
<iq:product id="epix2pro47mm" />
|
||||
<iq:product id="epix2pro51mm" />
|
||||
<iq:product id="fenix5" />
|
||||
<iq:product id="fenix5plus" />
|
||||
<iq:product id="fenix5s" />
|
||||
<iq:product id="fenix5splus" />
|
||||
<iq:product id="fenix5x" />
|
||||
<iq:product id="fenix5xplus" />
|
||||
<iq:product id="fenix6" />
|
||||
<iq:product id="fenix6pro" />
|
||||
<iq:product id="fenix6s" />
|
||||
<iq:product id="fenix6spro" />
|
||||
<iq:product id="fenix6xpro" />
|
||||
<iq:product id="fenix7" />
|
||||
<iq:product id="fenix7pro" />
|
||||
<iq:product id="fenix7pronowifi" />
|
||||
<iq:product id="fenix7s" />
|
||||
<iq:product id="fenix7spro" />
|
||||
<iq:product id="fenix7x" />
|
||||
<iq:product id="fenix7xpro" />
|
||||
<iq:product id="fenix7xpronowifi" />
|
||||
<iq:product id="fenixchronos" />
|
||||
<iq:product id="fr245" />
|
||||
<iq:product id="fr245m" />
|
||||
<iq:product id="fr255" />
|
||||
<iq:product id="fr255m" />
|
||||
<iq:product id="fr255s" />
|
||||
<iq:product id="fr255sm" />
|
||||
<iq:product id="fr265" />
|
||||
<iq:product id="fr265s" />
|
||||
<iq:product id="fr55" />
|
||||
<iq:product id="fr645" />
|
||||
<iq:product id="fr645m" />
|
||||
<iq:product id="fr745" />
|
||||
<iq:product id="fr935" />
|
||||
<iq:product id="fr945" />
|
||||
<iq:product id="fr945lte" />
|
||||
<iq:product id="fr955" />
|
||||
<iq:product id="fr965" />
|
||||
<iq:product id="gpsmap67" />
|
||||
<iq:product id="instinct2" />
|
||||
<iq:product id="instinct2s" />
|
||||
<iq:product id="instinct2x" />
|
||||
<iq:product id="instinctcrossover" />
|
||||
<iq:product id="legacyherocaptainmarvel" />
|
||||
<iq:product id="legacyherofirstavenger" />
|
||||
<iq:product id="legacysagadarthvader" />
|
||||
<iq:product id="legacysagarey" />
|
||||
<iq:product id="marq2" />
|
||||
<iq:product id="marq2aviator" />
|
||||
<iq:product id="marqadventurer" />
|
||||
<iq:product id="marqathlete" />
|
||||
<iq:product id="marqaviator" />
|
||||
<iq:product id="marqcaptain" />
|
||||
<iq:product id="marqcommander" />
|
||||
<iq:product id="marqdriver" />
|
||||
<iq:product id="marqexpedition" />
|
||||
<iq:product id="marqgolfer" />
|
||||
<iq:product id="montana7xx" />
|
||||
<iq:product id="venu" />
|
||||
<iq:product id="venu2" />
|
||||
<iq:product id="venu2plus" />
|
||||
<iq:product id="venu2s" />
|
||||
<iq:product id="venu3" />
|
||||
<iq:product id="venu3s" />
|
||||
<iq:product id="venud" />
|
||||
<iq:product id="venusq" />
|
||||
<iq:product id="venusq2" />
|
||||
<iq:product id="venusq2m" />
|
||||
<iq:product id="venusqm" />
|
||||
<iq:product id="vivoactive3" />
|
||||
<iq:product id="vivoactive3m" />
|
||||
<iq:product id="vivoactive3mlte" />
|
||||
<iq:product id="vivoactive4" />
|
||||
<iq:product id="vivoactive4s" />
|
||||
<iq:product id="vivoactive5" />
|
||||
</iq:products>
|
||||
<!--
|
||||
Use "Monkey C: Edit Permissions" from the Visual Studio Code command
|
||||
palette to update permissions.
|
||||
-->
|
||||
<iq:permissions>
|
||||
<iq:uses-permission id="Background"/>
|
||||
<iq:uses-permission id="BluetoothLowEnergy"/>
|
||||
<iq:uses-permission id="Communications"/>
|
||||
<iq:uses-permission id="Background" />
|
||||
<iq:uses-permission id="BluetoothLowEnergy" />
|
||||
<iq:uses-permission id="Communications" />
|
||||
<iq:uses-permission id="Positioning" />
|
||||
</iq:permissions>
|
||||
<!--
|
||||
Use "Monkey C: Edit Languages" from the Visual Studio Code command
|
||||
@ -196,6 +199,6 @@
|
||||
Use "Monkey C: Configure Monkey Barrel" from the Visual Studio Code
|
||||
command palette to edit the included barrels.
|
||||
-->
|
||||
<iq:barrels/>
|
||||
<iq:barrels />
|
||||
</iq:application>
|
||||
</iq:manifest>
|
@ -38,12 +38,43 @@ class BackgroundServiceDelegate extends System.ServiceDelegate {
|
||||
}
|
||||
|
||||
function onTemporalEvent() as Void {
|
||||
if (! System.getDeviceSettings().phoneConnected) {
|
||||
if (!System.getDeviceSettings().phoneConnected) {
|
||||
// System.println("BackgroundServiceDelegate onTemporalEvent(): No Phone connection, skipping API call.");
|
||||
} else if (! System.getDeviceSettings().connectionAvailable) {
|
||||
} else if (!System.getDeviceSettings().connectionAvailable) {
|
||||
// System.println("BackgroundServiceDelegate onTemporalEvent(): No Internet connection, skipping API call.");
|
||||
} else {
|
||||
// System.println("BackgroundServiceDelegate onTemporalEvent(): Making API call.");
|
||||
var position = Position.getInfo();
|
||||
// System.println("BackgroundServiceDelegate onTemporalEvent(): gps: " + position.position.toDegrees());
|
||||
// System.println("BackgroundServiceDelegate onTemporalEvent(): speed: " + position.speed);
|
||||
// System.println("BackgroundServiceDelegate onTemporalEvent(): course: " + position.heading + "rad (" + (position.heading * 180 / Math.PI) + "°)");
|
||||
// System.println("BackgroundServiceDelegate onTemporalEvent(): altitude: " + position.altitude);
|
||||
// System.println("BackgroundServiceDelegate onTemporalEvent(): battery: " + System.getSystemStats().battery);
|
||||
// System.println("BackgroundServiceDelegate onTemporalEvent(): charging: " + System.getSystemStats().charging);
|
||||
// System.println("BackgroundServiceDelegate onTemporalEvent(): activity: " + Activity.getProfileInfo().name);
|
||||
|
||||
// Don't use Settings.* here as the object lasts < 30 secs and is recreated each time the background service is run
|
||||
Communications.makeWebRequest(
|
||||
(Properties.getValue("api_url") as Lang.String) + "/webhook/" + (Properties.getValue("webhook_id") as Lang.String),
|
||||
{
|
||||
"type" => "update_location",
|
||||
"data" => {
|
||||
"gps" => position.position.toDegrees(),
|
||||
"gps_accuracy" => 10,
|
||||
"speed" => Math.round(position.speed),
|
||||
"course" => Math.round(position.heading * 180 / Math.PI),
|
||||
"altitude" => Math.round(position.altitude),
|
||||
}
|
||||
},
|
||||
{
|
||||
:method => Communications.HTTP_REQUEST_METHOD_POST,
|
||||
:headers => {
|
||||
"Content-Type" => Communications.REQUEST_CONTENT_TYPE_JSON
|
||||
},
|
||||
:responseType => Communications.HTTP_RESPONSE_CONTENT_TYPE_JSON
|
||||
},
|
||||
method(:onReturnBatteryUpdate)
|
||||
);
|
||||
Communications.makeWebRequest(
|
||||
(Properties.getValue("api_url") as Lang.String) + "/webhook/" + (Properties.getValue("webhook_id") as Lang.String),
|
||||
{
|
||||
@ -58,6 +89,11 @@ class BackgroundServiceDelegate extends System.ServiceDelegate {
|
||||
"state" => System.getSystemStats().charging,
|
||||
"type" => "binary_sensor",
|
||||
"unique_id" => "battery_is_charging"
|
||||
},
|
||||
{
|
||||
"state" => Activity.getProfileInfo().name,
|
||||
"type" => "sensor",
|
||||
"unique_id" => "activity"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -62,10 +62,12 @@ class WebhookManager {
|
||||
ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) as Lang.String + "\n" + WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound) as Lang.String);
|
||||
break;
|
||||
|
||||
case 200:
|
||||
case 201:
|
||||
var id = data.get("webhook_id") as Lang.String or Null;
|
||||
if (id != null) {
|
||||
Settings.setWebhookId(id);
|
||||
// System.println("WebhookManager onReturnRegisterWebhookSensor(): Registering first sensor: Battery Level");
|
||||
registerWebhookSensor({
|
||||
"device_class" => "battery",
|
||||
"name" => "Battery Level",
|
||||
@ -76,16 +78,7 @@ class WebhookManager {
|
||||
"state_class" => "measurement",
|
||||
"entity_category" => "diagnostic",
|
||||
"disabled" => false
|
||||
});
|
||||
registerWebhookSensor({
|
||||
"device_class" => "battery_charging",
|
||||
"name" => "Battery is Charging",
|
||||
"state" => System.getSystemStats().charging,
|
||||
"type" => "binary_sensor",
|
||||
"unique_id" => "battery_is_charging",
|
||||
"entity_category" => "diagnostic",
|
||||
"disabled" => false
|
||||
});
|
||||
}, 0);
|
||||
} else {
|
||||
// System.println("WebhookManager onReturnRequestWebhookId(): No webhook id in response data.");
|
||||
Settings.unsetIsBatteryLevelEnabled();
|
||||
@ -129,7 +122,7 @@ class WebhookManager {
|
||||
);
|
||||
}
|
||||
|
||||
function onReturnRegisterWebhookSensor(responseCode as Lang.Number, data as Null or Lang.Dictionary or Lang.String) as Void {
|
||||
function onReturnRegisterWebhookSensor(responseCode as Lang.Number, data as Null or Lang.Dictionary or Lang.String, step as Lang.Number) as Void {
|
||||
switch (responseCode) {
|
||||
case Communications.BLE_HOST_TIMEOUT:
|
||||
case Communications.BLE_CONNECTION_UNAVAILABLE:
|
||||
@ -155,6 +148,7 @@ class WebhookManager {
|
||||
Settings.unsetWebhookId();
|
||||
// Ignore and see if we can carry on
|
||||
break;
|
||||
|
||||
case Communications.INVALID_HTTP_BODY_IN_NETWORK_RESPONSE:
|
||||
// System.println("WebhookManager onReturnRegisterWebhookSensor() Response Code: INVALID_HTTP_BODY_IN_NETWORK_RESPONSE, check JSON is returned.");
|
||||
Settings.unsetWebhookId();
|
||||
@ -169,12 +163,37 @@ class WebhookManager {
|
||||
ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) as Lang.String + "\n" + WatchUi.loadResource($.Rez.Strings.ApiUrlNotFound) as Lang.String);
|
||||
break;
|
||||
|
||||
case 200:
|
||||
case 201:
|
||||
if ((data.get("success") as Lang.Boolean or Null) != true) {
|
||||
// When uncommenting, invert the condition above.
|
||||
// System.println("WebhookManager onReturnRegisterWebhookSensor(): Success");
|
||||
// } else {
|
||||
// System.println("WebhookManager onReturnRegisterWebhookSensor(): Failure");
|
||||
if ((data.get("success") as Lang.Boolean or Null) != false) {
|
||||
// System.println("WebhookManager onReturnRegisterWebhookSensor(): Success");
|
||||
switch (step) {
|
||||
case 0:
|
||||
// System.println("WebhookManager onReturnRegisterWebhookSensor(): Registering next sensor: Battery is Charging");
|
||||
registerWebhookSensor({
|
||||
"device_class" => "battery_charging",
|
||||
"name" => "Battery is Charging",
|
||||
"state" => System.getSystemStats().charging,
|
||||
"type" => "binary_sensor",
|
||||
"unique_id" => "battery_is_charging",
|
||||
"entity_category" => "diagnostic",
|
||||
"disabled" => false
|
||||
}, 1);
|
||||
break;
|
||||
case 1:
|
||||
// System.println("WebhookManager onReturnRegisterWebhookSensor(): Registering next sensor: Activity");
|
||||
registerWebhookSensor({
|
||||
"name" => "Activity",
|
||||
"state" => Activity.getProfileInfo().name,
|
||||
"type" => "sensor",
|
||||
"unique_id" => "activity",
|
||||
"disabled" => false
|
||||
}, 2);
|
||||
break;
|
||||
default:
|
||||
}
|
||||
} else {
|
||||
// System.println("WebhookManager onReturnRegisterWebhookSensor(): Failure");
|
||||
Settings.unsetWebhookId();
|
||||
Settings.unsetIsBatteryLevelEnabled();
|
||||
ErrorView.show(WatchUi.loadResource($.Rez.Strings.WebhookFailed) as Lang.String);
|
||||
@ -189,7 +208,7 @@ class WebhookManager {
|
||||
}
|
||||
}
|
||||
|
||||
function registerWebhookSensor(sensor as Lang.Object) {
|
||||
function registerWebhookSensor(sensor as Lang.Object, step as Lang.Number) {
|
||||
// System.println("WebhookManager registerWebhookSensor(): Registering webhook sensor: " + sensor.toString());
|
||||
Communications.makeWebRequest(
|
||||
Settings.getApiUrl() + "/webhook/" + Settings.getWebhookId(),
|
||||
@ -202,7 +221,8 @@ class WebhookManager {
|
||||
:headers => {
|
||||
"Content-Type" => Communications.REQUEST_CONTENT_TYPE_JSON
|
||||
},
|
||||
:responseType => Communications.HTTP_RESPONSE_CONTENT_TYPE_JSON
|
||||
:responseType => Communications.HTTP_RESPONSE_CONTENT_TYPE_JSON,
|
||||
:context => step
|
||||
},
|
||||
method(:onReturnRegisterWebhookSensor)
|
||||
);
|
||||
|
Reference in New Issue
Block a user