How-To Guides

VisiblAir Cloud Portal User Manual

Learn how to set up your account, add and manage sensors, review readings, configure alerts, and export data.

Open the user manual (PDF, 13 MB)

Learn how Cloud Portal alerts are evaluated, when emails are sent, how cool-off periods limit repeated notifications, how muted weekdays work, and how offline sensor alerts differ from metric threshold alerts.

Read the Cloud Portal alerts guide

The VisiblAir Public Map shows sensors that owners have explicitly made public. Before publishing your sensor, choose a map location that protects private addresses when needed.

  1. Sign in to the VisiblAir Cloud Portal.
  2. Find the sensor you want to publish. If you have many sensors, use the filter field to search by the sensor name or UUID.
  3. Open the sensor controls and click the gear icon to open the sensor configuration.

VisiblAir portal sensor card with the configuration gear icon

  1. Open the Geo-positioning tab.
  2. Change Make this sensor public on the map to Yes.
  3. Set the map location. You can enter latitude and longitude manually, click the map to place the sensor, or use Find Me if the browser can access your current location.
  4. For home, classroom, or office sensors, consider placing the marker at an approximate location instead of an exact private address.

Geo-positioning tab with the public map visibility setting and latitude and longitude fields

  1. Click Save.
  2. Open map.visiblair.com. Your sensor will appear on the public map at the location you selected.

Only make a sensor public if you are comfortable sharing the selected readings and displayed location. The public map is designed for community air-quality visibility.

Did you know that any cloud-enabled VisiblAir sensor can be integrated with HomeAssistant? It's actually pretty simple and relies on the data the sensor sends to the cloud portal periodically.

To add your cloud-enabled VisiblAir sensor to your HomeAssistant server simply use the following YAML in the configuration.yaml configuration file:

rest:
  resource: https://api.visiblair.com:11000/api/v1/sensor?uuid=YOUR_SENSOR_UUID&viewToken=YOUR_SENSOR_TOKEN
  sensor:
  - name: "VisiblAir Sensor CO2"
    unique_id: a74e63a8-6312-4d72-aeef-152fd21af0c3
    value_template: "{{ value_json.lastSampleCo2 }}"
    unit_of_measurement: "ppm"
    device_class: carbon_dioxide
  - name: "VisiblAir Sensor Temperature"
    unique_id: 887856eb-04e0-4858-a268-8af74979a486
    value_template: "{{ value_json.lastSampleTemperature }}"
    unit_of_measurement: "°C"
    device_class: temperature
  - name: "VisiblAir Sensor Humidity"
    unique_id: b479e1a4-8c64-4a33-a3e6-e56e633320ee
    value_template: "{{ value_json.lastSampleHumidity }}"
    unit_of_measurement: "%R.H."
    device_class: humidity

Replace YOUR_SENSOR_UUID with your sensor UUID (Wi-Fi MAC address) and YOUR_SENSOR_TOKEN by the unique token. This token can be obtained from the portal by clicking the "Public view" icon:

Public view icon

Then in your HomeAssistant WebUI go to the "Developer Tools" and Click on "CHECK CONFIGURATION" to ensure that the configuration you added is valid:

Check configuration

If everything is ok, you can click on "RESTART" and select "Quick Reload"

Restart HomeAssistant

The next step is to allocate a zone/area to the sensor data. For this Click on "Settings" and then "Devices and services"

Devices and services

At the top click on "Entities" and you should see the sensor data available:

Entities

Click on each and then on the "gear" icon

Gear icon

Then select an area and click on "Update"

Select area

Your sensor values should now show in your dashboard for the area/zone you selected. You can also add graphs and gauges like shown below:

Dashboard example

Note that your sensor must be connected to a Wi-Fi network, have internet access and be properly configured in the portal for your HomeAssistant server to be able to fetch the data.

VisiblAir Model E, E-Lite, and Model-O V2 sensors provide a local API that you can use to get their instantaneous state and measurements over your local network.

Model E and E-Lite

This API can be activated on your sensor by going to the Configuration menu, tapping on the "Data handling options" and checking the "Local API" checkbox.

Following this, when your sensor is connected to your Wi-Fi network, you can query its state. Here is an example using curl:

curl -s -H "Accept: application/json" -H "Authorization: Bearer MY_SENSOR_UUID_ALL_CAPS" http://MY_SENSOR_DNS.local:8080/state

MY_SENSOR_UUID_ALL_CAPS is your sensor UUID where all letters are capitalized.

MY_SENSOR_DNS is available in the Info screen of your sensor and will look like co2click-AABBCC where AABBCC are the last 3 bytes of your sensor UUID.

The API will return a JSON object that will look like this on Model E-Lite:

{
    "uuid": "MY_SENSOR_UUID_ALL_CAPS",
    "co2": 680,
    "humidity": 58,
    "temperature": 20,
    "pm01": 0,
    "pm03": 0,
    "pm05": 0,
    "pm10": 2.219000101,
    "pm25": 2.328000069,
    "pm50": 0,
    "pm100": 2.328000069,
    "pressure": 1020.398614,
    "voc": 98,
    "firmwareVersion": "1.5.1",
    "model": "E-Lite",
    "pcbVersion": 0,
    "isCharging": true,
    "isACIN": true,
    "battVoltage": 3.913000107,
    "battPct": 71.26999664
}

Model-O V2

The Model-O V2 local server uses standard HTTP port 80. Send a GET /state request to the device IP address, or use its model-o-aabb.local mDNS name where mDNS is supported:

curl -s -H "Accept: application/json" -H "Authorization: Bearer AA:BB:CC:DD:EE:FF" http://192.168.1.50/state
curl -s -H "Accept: application/json" -H "Authorization: Bearer AA:BB:CC:DD:EE:FF" http://model-o-aabb.local/state

Replace AA:BB:CC:DD:EE:FF with the device's Wi-Fi MAC address, including the colons. Unlike Model E and E-Lite, do not add port 8080 to the Model-O V2 URL.

The response follows the Model E local API shape where the Model-O V2 has equivalent readings. A typical response looks like this:

{
  "uuid": "AA:BB:CC:DD:EE:FF",
  "co2": 415,
  "humidity": 42,
  "temperature": 21.8,
  "pm01": null,
  "pm03": null,
  "pm05": null,
  "pm10": 1.2,
  "pm25": 2.3,
  "pm50": 3.4,
  "pm100": 4.5,
  "pressure": 1012.6,
  "voc": 98.7,
  "nox": 1.2,
  "firmwareVersion": "1.1.1",
  "model": "Ov2",
  "pcbVersion": 0,
  "networkTransport": "wifi",
  "networkInterface": "Wi-Fi",
  "macAddress": "AA:BB:CC:DD:EE:FF",
  "ipAddress": "192.168.1.50",
  "uptime": 1234,
  "pmSamples": 12,
  "wifiRssi": -62,
  "wifiSignalLevel": "fair"
}

Sensor readings that are not currently available are returned as null. When Wi-Fi RSSI is unavailable, wifiRssi is omitted and wifiSignalLevel is "unknown".

You can use this to perform automation of more advanced functions.

Hope you enjoy our sensors, and make sure to subscribe to our mailing list to receive more news like this.