Code: Select all
#define HC12_RX_PIN D1
#define HC12_TX_PIN D2
#include <SuplaDevice.h>
#include <supla/network/esp_wifi.h>
Supla::ESPWifi wifi;
#include <supla/device/status_led.h>
#include <supla/storage/littlefs_config.h>
Supla::LittleFsConfig configSupla;
#include <supla/network/esp_web_server.h>
Supla::EspWebServer suplaServer;
#include <supla/network/html/device_info.h>
#include <supla/network/html/protocol_parameters.h>
#include <supla/network/html/status_led_parameters.h>
#include <supla/network/html/wifi_parameters.h>
#include <supla/device/supla_ca_cert.h>
#include <supla/sensor/general_purpose_measurement.h>
Supla::Sensor::GeneralPurposeMeasurement *batt = nullptr;
Supla::Sensor::GeneralPurposeMeasurement *hygro = nullptr;
#include <supla/sensor/virtual_hygromometer.h>
#include <SoftwareSerial.h>
SoftwareSerial hc12(HC12_RX_PIN, HC12_TX_PIN);
#include <supla/control/button.h>
Supla::Control::Button *cfgButton = nullptr;
#include <supla/device/notifications.h>
struct Data {
int numer;
int bateria;
int pomiar;
} dane;
// --------------------------------------------------------------------------------------------------
class ShowBatteryLevel : public Supla::Element {
public: ShowBatteryLevel() {}
void onInit() override {
getBatteryLevel();
}
void getBatteryLevel() {
double batLevel = (dane.bateria * 0.01);
SUPLA_LOG_DEBUG("# OnBoard battery level: %.3f V", batLevel);
if (hygro != nullptr) {
hygro->getChannel()->setBatteryLevel(batLevel);
}
};
void iterateAlways() override {
if (millis() - lastReadTime > 10000) {
lastReadTime = millis();
getBatteryLevel();
}
};
protected:
uint32_t lastReadTime = 0;
};
// --------------------------------------------------------------------------------------------------------
// HTML www component (they appear in sections according to creation
// sequence)
Supla::Html::DeviceInfo htmlDeviceInfo(&SuplaDevice);
Supla::Html::WifiParameters htmlWifi;
Supla::Html::ProtocolParameters htmlProto;
Supla::Html::StatusLedParameters htmlStatusLed;
void setup() {
Serial.begin(115200);
hc12.begin(9600);
hygro = new Supla::Sensor::GeneralPurposeMeasurement();
hygro->getChannel()->setFlag(SUPLA_CHANNELSTATE_FIELD_BATTERYLEVEL);
// Set some initial value of measurement
hygro->setValue(NAN);
new ShowBatteryLevel();
// configure defualt Supla CA certificate
SuplaDevice.setSuplaCACert(suplaCACert);
SuplaDevice.setSupla3rdPartyCACert(supla3rdCACert);
SuplaDevice.begin();
}
void loop() {
SuplaDevice.iterate();
if (hc12.available()) {
String dane1 = hc12.readStringUntil('\n');
if (dane1.indexOf('|') == -1) {
Serial.println(dane1);
} else {
Data dane;
int parsedItems = sscanf(dane1.c_str(), "%d|%d|%d", &dane.numer, &dane.bateria, &dane.pomiar);
Serial.print("Sensor: ");
Serial.print(dane.numer);
Serial.print(" | ");
Serial.print("Bateria: ");
Serial.print(dane.bateria);
Serial.print(" | ");
Serial.print("Pomiar: ");
Serial.print(dane.pomiar);
}
}
}
