PressureMon#

Self Hosted Cloud Hosted

A PressureMon reports the pressure in a keg or fermenter, with temperature and battery. This page shows how to point the PressureMon’s HTTP push at BrewGraph. It works with PressureMon firmware 0.8.

What you need#

  • A PressureMon device added in BrewGraph under Devices. BrewGraph shows its device token on the device page.

  • A PressureMon with firmware 0.8.

Configure the PressureMon#

The PressureMon uses the same configuration interface as the GravityMon and the Gateway. In the PressureMon web interface, open the push settings and choose the HTTP target. Fill in:

Field

Value

Server URL

Cloud Hosted: http://ingest.brewgraph.com/ingest/pressuremon. Self Hosted: http://<your-ingest-host>/ingest/pressuremon. Plain HTTP on port 80 works; the field also accepts https://.

Token

The device token from the BrewGraph device page. Enter it in the token setting of the PressureMon. If your firmware has no token field, put the token in the address instead, as http://ingest.brewgraph.com/ingest/pressuremon?token=<token> or http://ingest.brewgraph.com/ingest/pressuremon/<token>. The device page shows all three ways with a copy button. See Device Tokens.

Data format

The PressureMon predefined format, see below

Push interval

Matches your plan, see below

For the data format, open Predefined formats in the PressureMon interface, choose the PressureMon format, and use Preview format to check it before saving.

BrewGraph reads these fields:

  • name, id, token, and interval

  • temperature and temperature-unit (C or F)

  • pressure and pressure-unit (kPa, bar or PSI, in any letter case)

  • battery, rssi, and run-time

  • optionally pressure2, a second pressure, which is stored but not shown

Pressure is optional. A reading without pressure is stored and shows a gap. A negative pressure is stored as received.

Set the push interval to match your plan. On Cloud Hosted the free beta needs 900 seconds; a reading that arrives faster is answered with 429 and is not stored. Self Hosted accepts any interval.

Payload#

An accepted minimal payload:

{
  "token": "<token>",
  "pressure": 1.24,
  "pressure-unit": "bar"
}

A typical payload:

{
  "name": "Pressuremon_01",
  "id": "87654321",
  "token": "<token>",
  "pressure": 1.24,
  "pressure-unit": "bar",
  "temperature": 18.4,
  "temperature-unit": "C",
  "battery": 4.08,
  "interval": 900,
  "rssi": -58,
  "run-time": 1.85
}

Pressure, temperature, battery, rssi, run-time, and the second sensor are optional individually; at least one measurement is required. The pressure unit can be kPa, bar, or PSI. pressure_units, pressure-unit, and pressure_unit are accepted; temperature units accept temp_units, temperature-unit, and temp_unit. pressure1 is used when pressure is absent; pressure2 uses the same unit.

Save the typical payload as payload.json and replace <token> in the file and both addresses with the device token. First capture the payload for inspection, then send the same payload to the device endpoint:

curl -X POST 'https://ingest.brewgraph.com/ingest/test/<token>' \
  -H 'Content-Type: application/json' --data-binary @payload.json
curl -X POST 'https://ingest.brewgraph.com/ingest/pressuremon?token=<token>' \
  -H 'Content-Type: application/json' --data-binary @payload.json

Check that it works#

  1. Save the configuration and wait for one push interval.

  2. Open the device in BrewGraph. The latest reading, with its pressure, temperature and battery, should appear on the device page.

  3. Assign the device to a batch to see the readings on the batch Pressure tab, or to a keg to see them in the keg’s pressure view.

Troubleshooting#

  • 401: the token is missing or mistyped. Copy it again from the device page and check it is set in the PressureMon, or in the address.

  • 429: raise the push interval to at least your plan’s reporting interval.

  • 422: the reading holds nothing to store. Check the data format against the PressureMon predefined format with Preview format.

  • 404: check that the Server URL ends exactly in /ingest/pressuremon.

For every status code and what to do about it, see Ingest error codes.