Skip to content

Sensora library overview ​

Sensora library is based on Arduino framework. The functionality and characteristics of your devices are defined by properties. When you add a new device to your Sensora project, you will define its properties based on the device's capabilities and your project needs.

Property ​

Each device contains properties, which are individual pieces of data or control points that can be monitored or manipulated.

For instance, a smart light bulb might expose these properties:

Power ​

  • power - indicates whether the light is turned on/off
cpp
#include <Arduino.h>
#include <EspWifi.h>

// declare properties outside setup() method
Property lightSwitch("power");

void setup() {
  lightSwitch.setDataType(DataType::Boolean).setAccessMode(AccessMode::Write);
  Sensora.setup();
}

void loop() {
  // write your sensor logic here
  Sensora.loop();
}

Brightness ​

  • brightness - controls the light intensity, typically represented as a percentage (0-100)
cpp
#include <Arduino.h>
#include <EspWifi.h>

// declare properties outside setup() method
Property lightSwitch("power");
Property brightness("brightness");

void setup() {
  lightSwitch.setDataType(DataType::Boolean).setAccessMode(AccessMode::Write);
  brightness.setDataType(DataType::Integer).setAccessMode(AccessMode::ReadWrite);
  Sensora.setup();
}

void loop() {
  // write your sensor logic here
  Sensora.loop();
}

Subscribe for new data ​

By default, the properties can only send data to Sensora Cloud. You can listen for new data by using subscribe method

For example, you can subscribe to power property by creating a callback function outside setup().

cpp
#include <Arduino.h>
#include <EspWifi.h>

// declare properties outside setup() method
Property lightSwitch("power");
Property brightness("brightness");

void handlePowerChange(PropertyValue& val) {
  if (val.Bool()) {
    SENSORA_LOGI("Light is powered on");
  } else {
    SENSORA_LOGI("Light is powered off");
  }
}

void setup() {
  lightSwitch
    .setDataType(DataType::Boolean)
    .setAccessMode(AccessMode::Write)
    .subscribe(handlePowerChange);
  brightness.setDataType(DataType::Integer).setAccessMode(AccessMode::ReadWrite);
  Sensora.setup();
}

void loop() {
  // write your sensor logic here
  Sensora.loop();
}