RELEASE: AcuRite Weather Station

I've built this driver to pull Acurite Weather Station data without needing to go through Wunderground or another third-party integration. It does not pull data off the wire, but instead uses the JSON data that drives the My Acurite dashboard, so you'll need AcuRite Access to upload your data. All available data points (at least that my device is capable of) are exposed by the driver. In addition to your username and password, you will need your Device ID. You can find that using the instructions here:

https://community.smartthings.com/t/my-very-quick-and-dirty-integration-with-myacurite-smart-hub-st-webcore/97749

I recommend not adjusting the default 5 minute polling value as the dashboard itself only updates every 5 minutes.

https://raw.githubusercontent.com/dlaporte/Hubitat/main/AcuRite/device/acurite.groovy

7 Likes

I get this error:

What is the output of these commands (substituting the "xxx"s, of course):

token=$(curl -s -H "Content-Type: application/json" --data-binary '{"remember":true,"email":"xxx","password":"xxx"}' 'https://marapi.myacurite.com/users/login' | jq . | grep token_id | awk -F":" '{print $2}' | sed 's/"//g' | sed 's/ //g' | sed 's/,//g')
curl -i -v -H "x-one-vue-token: $token" 'https://marapi.myacurite.com/accounts/xxx/dashboard/hubs/xxx'

Oooooh, I was waiting for someone to develop this. I have an Acurite Atlas with Access. I current use Wunderground but rather do it this way.

Thanks for your quick answer. I look at your code and found the right info for the deviceId. The info given by developper tools was wrong. It was not situated at "hubs" but it was showing somewhere else.

I get all the info now but I get a new error:

2022-02-01 08:57:12.858 errorjava.lang.NullPointerException: Cannot get property 'abbreviation' on null object on line 171 (method poll)

Also, I have 6 sensors attach to this hubs. How can I get info for each sensors?

I'm guessing my code is making some assumptions based on the capabilities of my station. Can you DM me the output of the following (feel free to remove your account and hub IDs if you prefer):

token=$(curl -s -H "Content-Type: application/json" --data-binary '{"remember":true,"email":"xxx","password":"xxx"}' 'https://marapi.myacurite.com/users/login' | jq . | grep token_id | awk -F":" '{print $2}' | sed 's/"//g' | sed 's/ //g' | sed 's/,//g')
curl -i -v -H "x-one-vue-token: $token" 'https://marapi.myacurite.com/accounts/xxx/dashboard/hubs/xxx' | jq

Mine is pulling in data quite well! awesome! Thank you very much!
Some questions / suggestions.

  • Is the internet still required for this to work or will it poll off the local network?

  • Could we get an option to increase poll times?

  • Could we hide our password?

  • Also, options to hide the debug log?

I changed line 204 for this:

  runEvery30Minutes("poll")

But having a preference setting would be preferable

1 Like

The latest version is available here:

It should solve your sensor issue and adds a polling interval. If we have functionality working, I'll investigate options for password masking and add a debug parameter.

1 Like

Hey guys, not to hijack your thread but I recently replaced my Acurite system because the outside hardware failed and I went with the Weatherflow Tempest. I have the Access hub and the High Resolution Weather Station Display 06088. These are obviously both indoor items and are flawless if anyone has an interest. I'm not looking to give it away but would entertain a fair offer. PM me if interested.

1 Like

Trying it out now.

Little error, Space needs to be removed after the the second "?"

unexpected token: ? @ line 154, column 51.

def poll_interval_cmd = (settings?.pollInterval ? : "5 Minutes").replace(" ", "")
"runEvery${pollIntervalCmd}"(pollSchedule)
}

1 Like

Nice work so far. A couple of notes:

  • You'll need to add those Attributes for each sensor back or it'll keep 'forgetting' them each time you go into the device page. It'll only fill-in the ones it finds, so there is no harm in putting them all back even though some may not be needed.
  • To hide the password: input "acurite_password", "password", required: true, title: "AcuRite Password"

Thanks

2 Likes

Argh, yep. That'll teach me to run it through the pretty-printer after I test! Fixed.

Thanks for the pointers! Is there a way to dynamically generate the attribute list? Otherwise I'll need to figure out the superset of all possible sensors.

Does the pollSchedule need to be defined?

I made these couple changes with the pollSchedule, seems to be scheduling now. I was getting an error before. I'll try different times and report back. Oh...btw I have no idea what I am doing. lol.

Time still stuck on 5 mins....So I changed the pollInterval to poll_interval to match the attribute. Seems to work. Hope you don't mind :smiley:
image

you and me both :slight_smile:
I updated the code, can you run that and let me know if it's working?

I was getting some errors so I changed poll_schedule to pollSchedule in both instances. Maybe this is the correct text for Hubitat?

I'm running the latest version from Github for the past several hours without error.