[RELEASE] OwnTracks for Hubitat Presence Detection

Can you check what the driver version is showing for a member? It should be 1.8.14. If you do a "repair" it would fix it, but I'd like to confirm the version first.

Looking more at that issue, are seeing and 'address' attribute for that member? That seems to be what is wrong there. They departed from home, but the address isn't reflecting that on the tile.

Sorry, I already did the "repair" before seeing your request. Looks like that fixed whatever was causing the error.

1 Like

Well there seems to be an some kind of issue or issues.
We got 4 members and at the moment when everyone is at home it looks like this.

Coloured those thing that differ from other.

  • one has battery saver on (that is ok, no need to worry. I can fix that :slight_smile: )
  • everyone's at home but only one has address data (blue circle)
  • different android app versions.. (I'll fix that)
    - only two has wifi information..SSID is correct though.
  • EDIT: everyone has wifi information. It just didn't fit to the screenshot I took!

Not sure if anything explains the behavior from yesterday. Probably not.

Also noticed that when using vpn client on android phone owntracks can't figure out home SSID eventhough I'm connected.

EDIT2: There is no transition region for the device which is on battery saver mode. That would explain why it reports leaving from home but not much after that right? I have noticed that battery saver minimize polling to the server but it still somehow updates information time to time. Do we know the limits of use when using battery saver on android client?

Hey everyone I have no idea when this started as I haven't really messed with this since setting it up last year it is up to date, I noticed yesterday that my Owntracks recorder hasn't been receiving(or saving) updated in months apparently. I have verified my docker container is online and able to receive, and has the correct permissions on my Synology NAS (chatgpt helped with a command to test). Below are the logs it looks like it successfully posts to the URL (which I have verified is correct) but nothing shows up on my Owntracks frontend (or the recorder docker logs)

Any help is greatly appreciated

Hubitat logs

[app:6431] 2026-03-03 11:18:40.410 AM debug OwnTracks: Updating status: Michael

[app:6431] 2026-03-03 11:18:40.408 AM debug OwnTracks: Received update' from user: 'Michael', deviceID: 'Pixel8Pro', data: [android:[hib:0, loc:0, wifi:1, ps:0, flavour:gms, bo:0, version:420509000], _type:status, topic:owntracks/Michael/Pixel8Pro/status, _id:4aefd6be]

[app:6431] 2026-03-03 11:18:40.188 AM debug OwnTracks: Posted successfully to OwnTracks URL.

[app:6431] 2026-03-03 11:18:40.144 AM debug OwnTracks: Updating user: Michael with data:

Docker Logs

2026-03-03T16:25:29.591956623Z + http: GET /api/0/locations

2026-03-03T16:25:39.863990256Z + http: GET /static/apikey.js

2026-03-03T16:25:44.286779704Z + http: GET /api/0/last

2026-03-03T16:29:12.277239512Z + http: POST /pub

2026-03-03T16:29:12.927637162Z + http: POST /pub

I am seeing weirdness with the front-end...

I just updated the images on my Docker (on Synology), and they updated and restarted properly. I can see that the recorder is working (able to download the latest files, and it shows the latest entries as expected). This is working normally.

However, when I open the front-end, I don't see anything newer than 28 Feb 2026. I have no clue how to debug this...

That's better than I'm getting right now, I can change the HTTP address in the owntracks app to the recorder and it works correctly (this doesn't work for me as I don't want to open up my NAS to the internet) but when the Hubitat app sends to the Recorder I see it send and receive but nothing gets read/saved it's either not sending in the correct format that the recorder is expecting, or it's sending blank) I am going to fall back to a previous version and retest

I think I have something, I went back to an older app (to this one from November 25th) and I am able to get updates from the app to my recorder, when I get a moment I am going to update to the 11-26-25 than to the latest one and see If I can still receive updates

raw git url 11-25-25

https://raw.githubusercontent.com/wir3z/hubitat/e74fc4040aa7c323a620fa0dfbc7fadabbb380a6/owntracks-hubitat/OwnTracks%20App.groovy

I can confirm the 11-26-25 also works I will update to the latest one and see if It breaks

Raw Git URL 11-26-25

https://raw.githubusercontent.com/wir3z/hubitat/8b0f67b3b6a597497fa63ce240954dfd2aa826d7/owntracks-hubitat/OwnTracks%20App.groovy

You are on to something. Let me check into this more -- I can confirm that I'm not getting any recorder points on the latest build.

3 Likes

Hey @lpakula I Tried looking at the old and new app codes but got bogged down so I used chatGPT (I have no coding experience and going line by line on a small app/driver is one thing but this is massive) to analyze the working and not working app and it came up with this

The recorder expects a json string not just the data

First change

I replaced any occurrence of:

body : (new JsonBuilder(data))

With:

body : new JsonBuilder(data).toString()

Than I was getting some weird errors

weird error logs

2026-03-04 09:49:06.689 AMerrororg.codehaus.groovy.runtime.metaclass.MissingMethodExceptionNoStack: No signature of method: user_app_lpakula_OwnTracks_2307.smallUnits() is applicable for argument types: () values: Possible solutions: getSmallUnits(), largeUnits() (smallUnits) app:64312026-03-04 09:49:06.650 AMerrororg.codehaus.groovy.runtime.metaclass.MissingMethodExceptionNoStack: No signature of method: user_app_lpakula_OwnTracks_2307.velocityUnits() is applicable for argument types: () values: Possible solutions: getvelocityUnits() (velocityUnits) app:64312026-03-04 09:49:02.606 AMerrororg.codehaus.groovy.runtime.metaclass.MissingMethodExceptionNoStack: No signature of method: user_app_lpakula_OwnTracks_2307.smallUnits() is applicable for argument types: () values: Possible solutions: getSmallUnits(), largeUnits() (smallUnits) app:64312026-03-04 09:49:02.568 AMerrororg.codehaus.groovy.runtime.metaclass.MissingMethodExceptionNoStack: No signature of method: user_app_lpakula_OwnTracks_2307.velocityUnits() is applicable for argument types: () values: Possible solutions: getvelocityUnits() (velocityUnits) app:64312026-03-04 09:49:02.154 AMinfoOwnTracks: Request status for user Michael app:64312026-03-04 09:49:02.079 AMerrororg.codehaus.groovy.runtime.metaclass.MissingMethodExceptionNoStack: No signature of method: user_app_lpakula_OwnTracks_2307.smallUnits() is applicable for argument types: () values: Possible solutions: getSmallUnits(), largeUnits() (smallUnits) app:64312026-03-04 09:49:02.039 AMerrororg.codehaus.groovy.runtime.metaclass.MissingMethodExceptionNoStack: No signature of method: user_app_lpakula_OwnTracks_2307.velocityUnits() is applicable for argument types: () values: Possible solutions: getvelocityUnits() (velocityUnits)

to fix the errors I made the below changes

changes

def SmallUnits() {
return (imperialUnits ? 'ft' : 'm')
}

def VelocityUnits() {
return (imperialUnits ? 'mph' : 'kph')
}

to

def getSmallUnits() {
return (imperialUnits ? 'ft' : 'm')
}

def getVelocityUnits() {
return (imperialUnits ? 'mph' : 'kph')
}
and added

def smallUnits() {
return getSmallUnits()
}

def velocityUnits() {
return getVelocityUnits()

I have no Idea why this works but the errors have gone away and everything I've checked seems to work still. I hope this info helps.

Thank you for all your great work

1 Like

Part of the pain of checking that is you need the latest drivers with the latest app since I scrubbed the names to make the linter happy.

The issue is around "(new JsonBuilder(data))" just for the recorder section. It used to have a .toPrettyFit() appended which bloats the transmission since it adds line feeds and indents to make it human readable, but it appears the line feed is needed by recorder to allow it to parse.

Just confirming and will have a fix up later today.

@jpcurcio @scubamikejax904

I pushed 1.9.0 to address that recorder issue, and up-rev'd to properly show that there are breaking changes between these last versions and older versions.

3 Likes

Thanks for the update... I can now see points updated as of today.

Is there a reason why I cannot see the points from the days when it wasn't working, even though they had apparently been recorded?

1 Like

I don't think the recorder actually processed them, so they are "missing" according to it.

You ask and you shall receive! :slight_smile:

2 Likes

Awesome. Thank you.
And no spork comments from the peanut gallery.

2 Likes

I'd accept them in stride regardless. :joy:

Looking at the delta between the fork and the main 2.5.6 branch:

  • Address lookups are sent to the hub (just waiting on them to merge this one in the next release)
  • I disable that play button on the map that allows you to toggle through the move/significant/manual/etc. modes
  • Pre-loads the hub optimized defaults (those will pull from the hub if you sync the device)

If they put in the first one, the PlayStore release will finally match what I was desiring. :heart_eyes:

1 Like

Thank you for the fixes and updated app

2 Likes