Skip to content

Protocol Ambient cloud

Manuel edited this page Aug 31, 2026 · 1 revision

Ambient Weather (ambientweather.net)

Setting up Ambient Weather (ambientweather.net) hardware by hand, in weewx.conf.

Generated by tools/build_protocols.py. What each protocol needs is written in that tool; what it is called and what goes into the console comes from the code. Do not edit by hand.

There is a web interface for all of this. It is on by default, and the driver prints its address when WeeWX starts:

INFO user.ultimatepush.driver: The web interface is at
http://1.2.3.4:8080/?token=abcdefg12345

Everything on this page can be done there instead, and one thing is much easier: deciding which reading goes into which database column. See Web interface.

What it is

Any Ambient console on an ambientweather.net account, including the ones with no 'Custom' upload to point at a driver

In protocols = auto no, and it does not need to be: naming it under [[polling]] is what switches it on
Named by the name you give the block
Recording from its first answer

The smallest configuration that works

[Station]
    station_type = UltimatePush

[UltimatePush]
    driver = user.ultimatepush.driver
    port = 8000

    [[polling]]
        [[[garden]]]
            protocol = ambient_cloud
            application_key = the-application-key-from-your-account-page
            api_key = the-api-key-from-your-account-page
            interval = 60

There is nothing to identify, nothing to wait for and no address to look up. This service is at one name for the whole world and the driver has it, so the block above is the whole of the station: it is recording from the first answer, with nothing to adopt and nothing to let in.

What else it takes

Nothing is set on the console, and there is no address to look up. What this needs is two keys, both from the account page at ambientweather.net: an application key, which names the program, and an API key, which names the account.

An account with more than one station on it needs a 'mac' line as well, saying which of them this block is for.

Options of its own

None. Everything that applies to this protocol applies to all of them, and is in Configuration.

Worth knowing

This is your own Ambient station, read back from Ambient's servers instead of received from the console. The readings are the same ones and they land in the same columns, because the API answers with the names the console posts.

Worth doing when the console cannot be pointed at this driver. The awnet app offers one Customized server and older models offer none, so a station whose one slot is already taken has no way to reach a driver on its own network. It is also the only way to read a station that is not on that network at all: a second home, a relative's garden, a club's field.

Make two keys first. Sign in at ambientweather.net, open your account page, and create an application key and an API key. The application key names the program and the API key names the account. Neither is typed into the console and neither is your password.

Together they can read everything on the account. Keep them the way you would keep the password. They go in weewx.conf, which is readable by whoever can read that file, or in the settings file the web interface writes, which is the same. This driver never puts them in the URL it keeps, so they are not in a log line, not on the page that shows what arrived, and not in an error message.

One station on the account needs nothing else. Several needs a mac line saying which, and a block without one is refused with a message listing every station it found and what each is called, so the right address can be copied straight out of it.

Sixty seconds is a sensible interval. Ambient's servers have something new about once a minute, and their documentation caps a key at one request a second, which nothing here comes near.

Leave it as the main station. This is your weather station, so its temperature is the outdoor temperature. That is the difference between it and a PurpleAir or an AirLink, which are set up as extra stations because their thermometers are inside their own housings.

This and the console's Customized upload can both be on. They are two ways of reading one station and neither knows about the other, so nothing has to be switched off to try this and nothing stops working if you go back to the other.

Everything arrives in Fahrenheit, inches and miles an hour, whatever the console's display is set to. There is no unit setting in this API. WeeWX converts to whatever your reports are in, so this changes nothing about what you see.

feelsLike and dewPoint are left alone. Ambient work both out and so does WeeWX, and a column filled from two different sums is worse than one filled from either.

No account yet? python -m user.ultimatepush --fake-ambient-cloud answers like one, with two stations on it so that picking one can be tried too.

When nothing arrives

Nothing is recorded and the log says the keys were refused: one of the two is wrong, or was deleted from the account page. Both are refused the same way, so the message cannot say which. It is said once and then the driver stays quiet, so look at the start of the log rather than the end.

The log says the account has several stations and the block has to say which. It lists them with their MAC addresses; copy the one you want into a mac line.

The log says no station on the account has that MAC address. The station was removed and added again, which gives it a new one, or the line has a typo. The same message lists what is there.

The readings stop changing and nothing is refused. The console has stopped reaching Ambient's servers, and their API keeps answering with the last thing it had. The station's page at ambientweather.net says when it was last heard from.

The temperature is right and the rain is nonsense. Every Ambient console reports the total so far, and WeeWX has to be told to difference it. That is [StdWXCalculate] and the driver says so at startup if it is not set.

More than one station

This is one station among however many others. Which of them fills outTemp, and where the rest of their readings go, is in Several stations.

Clone this wiki locally