Skip to main content
All calls are made on a HyperwisorIOT instance:
#include <hyperwisor-iot.h>
HyperwisorIOT device;

Core

void begin();   // initialize: Wi-Fi, provisioning, realtime, handlers
void loop();    // keep the connection alive; call every loop()
void setApiKeys(const String &apiKey, const String &secretKey);

Identity

String getDeviceId();
String getUserId();

Provisioning

void setWiFiCredentials(const String &ssid, const String &password);
void setDeviceId(const String &deviceId);
void setUserId(const String &userId);
void setCredentials(const String &ssid, const String &password,
                    const String &deviceId, const String &userId = "");
void clearCredentials();
bool hasCredentials();
See Provisioning for the full flow.

Receiving commands

Register a handler to receive commands sent from a dashboard:
void setUserCommandHandler(UserCommandCallback cb);
// typedef std::function<void(JsonObject &msg)> UserCommandCallback;
Send a message to another target, building the payload inline:
void sendTo(const String &targetId,
            std::function<void(JsonObject &)> payloadBuilder);

JSON helpers

Navigate an incoming command payload:
JsonObject findCommand(JsonObject& payload, const char* commandName);
JsonObject findAction(JsonObject& payload, const char* commandName,
                      const char* actionName);
JsonObject findParams(JsonObject& payload, const char* commandName,
                      const char* actionName);

Updating widgets

Push a value to a dashboard widget by its widget ID. Overloads cover the common value types:
void updateWidget(const String &targetId, const String &widgetId, const String &value);
void updateWidget(const String &targetId, const String &widgetId, float value);
void updateWidget(const String &targetId, const String &widgetId, const std::vector<float> &values);
void updateWidget(const String &targetId, const String &widgetId, const std::vector<int> &values);
void updateWidget(const String &targetId, const String &widgetId, const std::vector<String> &values);

Specialized widget helpers

void updateFlightAttitude(const String &targetId, const String &widgetId, float roll, float pitch);
void updateWidgetPosition(const String &targetId, const String &widgetId, int x, int y, int w, int h, int r = 0);
void updateCountdown(const String &targetId, const String &widgetId,
                     const String &hours, const String &minutes, const String &seconds);
void updateHeatMap(const String &targetId, const String &widgetId, const std::vector<HeatMapPoint> &dataPoints);
void update3DModel(const String &targetId, const String &widgetId, const String &modelUrl);
void update3DWidget(const String &targetId, const String &widgetId, const std::vector<ThreeDModelUpdate> &models);

Dialogs

Show a dialog on the user’s dashboard. showDialog takes an icon (info, warning, success, error, risk); the named helpers are shortcuts:
void showDialog(const String &targetId, const String &title,
                const String &description, const String &icon = "info");
void info   (const String &targetId, const String &title, const String &description);
void warning(const String &targetId, const String &title, const String &description);
void success(const String &targetId, const String &title, const String &description);
void error  (const String &targetId, const String &title, const String &description);
void risk   (const String &targetId, const String &title, const String &description);

Database

Insert, read, update, and delete records in a product’s database. Each has a fire-and-forget form and a …WithResponse form that returns the result:
void insertDatainDatabase(const String &productId, const String &deviceId,
                          const String &tableName,
                          std::function<void(JsonObject &)> dataBuilder);
DynamicJsonDocument insertDatainDatabaseWithResponse(...);

void getDatabaseData(const String &productId, const String &tableName, int limit = 50);
DynamicJsonDocument getDatabaseDataWithResponse(...);

void updateDatabaseData(const String &dataId, std::function<void(JsonObject &)> dataBuilder);
DynamicJsonDocument updateDatabaseDataWithResponse(...);

void deleteDatabaseData(const String &dataId);
DynamicJsonDocument deleteDatabaseDataWithResponse(...);

Sensor data logger

void send_Sensor_Data_logger(const String &targetId, const String &configId,
  std::initializer_list<std::pair<const char *, float>> dataList);

Onboarding

void onboardDevice(const String &productId, const String &userId,
                   const String &deviceName, const String &deviceIdentifier);
DynamicJsonDocument onboardDeviceWithResponse(...);

SMS

void sendSMS(const String &productId, const String &to, const String &message);
DynamicJsonDocument sendSMSWithResponse(...);

Authentication

void authenticateUser(const String &email, const String &password);
DynamicJsonDocument authenticateUserWithResponse(...);

Time & date (NTP)

void initNTP();
void setTimezone(const char* timezone);
String getNetworkTime();
String getNetworkDate();
String getNetworkDateTime();

GPIO state persistence

void saveGPIOState(int pin, int state);
int  loadGPIOState(int pin);
void restoreAllGPIOStates();

Device status

void sendDeviceStatus(const String &targetId);

See it in examples

Worked sketches that use these methods.