Skip to content

Version 2.1.0

Compare
Choose a tag to compare
@arjenhiemstra arjenhiemstra released this 16 Oct 08:29
· 4 commits to master since this release

Version 2.1.0:

Add support to receive and monitor itho RF-RFT and RF-RV remotes.
Add possibility to join devices (by join command or manually) to the lib and keep track of commands and values (co2, humidity, temp, battery)

New lib functions:

Manually add devices to the known devices list by ID:

bool addRFDevice(uint8_t byte0, uint8_t byte1, uint8_t byte2);
bool addRFDevice(uint32_t ID);

Manually remove devices to the known devices list by ID:

bool removeRFDevice(uint8_t byte0, uint8_t byte1, uint8_t byte2);
bool removeRFDevice(uint32_t ID);

Check if device is known by ID:

bool checkRFDevice(uint8_t byte0, uint8_t byte1, uint8_t byte2);
bool checkRFDevice(uint32_t ID);

Allow (true/false) if devices are able to register by sending a join command (standard value: true):

void setBindAllowed(bool input);

Get join allowed status:

bool getBindAllowed();

Allow (true/false) if all received itho remote commands are handled (standard value: true, for backwards compatibility)

void setAllowAll(bool input);

Get allowed all devices status:

bool getAllowAll();

Get reference to struct which contains all remotes and last known data (co2, temp etc.)

const struct ithoRFDevices &getRFdevices() const;

Sample code to walk to data and create a JSON:

  DynamicJsonDocument doc(2000);
  JsonObject root = doc.to<JsonObject>();

  const ithoRFDevices &rfDevices = rf.getRFdevices();

  for (auto& item : rfDevices.device) {
    if (item.deviceId != 0) {
      char buf[10];
      snprintf(buf, sizeof(buf), "%02X,%02X,%02X", item.deviceId >> 16 & 0xFF, item.deviceId >> 8 & 0xFF, item.deviceId & 0xFF);
      JsonObject nested = root.createNestedObject(buf);
      nested["lastcmd"] = item.lastCommand;
      if (item.co2 != 0xEFFF) {
        nested["co2"] = item.co2;
      }
      if (item.temp != 0xEFFF) {
        nested["temp"] = item.temp;
      }
      if (item.hum != 0xEFFF) {
        nested["hum"] = item.hum;
      }
      if (item.dewpoint != 0xEFFF) {
        nested["dewpoint"] = item.dewpoint;
      }
      if (item.battery != 0xEFFF) {
        nested["battery"] = item.battery;
      }
    }
  }

Example resulting JSON:

{"E0,58,45":{"lastcmd":4},"52,4E,9A":{"lastcmd":0},"97,95,A1":{"lastcmd":0,"temp":2079,"hum":52,"dewpoint":1062},"97,28,ED":{"lastcmd":0,"co2":1033}}