#include const int DEFAULT_TEMPERATURE_INTERVAL = 300; const int DEFAULT_SLEEP_TIME = 600; const long DEFAULT_WEIGHT_OFFSET = 154231; // Load cell zero offset. const float DEFAULT_KILOGRAM_DIVIDER = 21.76; // Load cell value per kilogram. const float DEFAULT_VCC_ADJUST = 0.13; unsigned long lastTemperatureSent = 0; HomieNode temperatureNode("temperature", "temperature"); HomieSetting temperatureIntervalSetting("temperatureInterval", "The temperature interval in seconds"); HomieSetting sleepTimeSetting("sleepTime", "SleepTime in seconds (max. 3600s!), default is 60s"); HomieSetting weightOffsetSetting("weightOffset", "Offset value to zero. Use BeeScale-Calibration.ino to determine."); HomieSetting kilogramDividerSetting("kilogramDivider", "Scale value per kilogram. Use BeeScale-Calibration.ino to determine."); HomieSetting vccAdjustSetting("vccAdjust", "Calibration value for input voltage. See sketch for details."); void setupHandler() { temperatureNode.setProperty("unit").send("c"); } void loopHandler() { if (millis() - lastTemperatureSent >= temperatureIntervalSetting.get() * 1000UL || lastTemperatureSent == 0) { float temperature = 22; // Fake temperature here, for the example Homie.getLogger() << "Temperature: " << temperature << " °C" << endl; temperatureNode.setProperty("degrees").send(String(temperature)); lastTemperatureSent = millis(); Homie.getLogger() << "Adj: " << vccAdjustSetting.get() << endl; Homie.getLogger() << "Div: " << kilogramDividerSetting.get() << endl; Homie.getLogger() << "Off: " << weightOffsetSetting.get() << endl; Homie.getLogger() << "Sleep: " << sleepTimeSetting.get() << endl; } } void setup() { Serial.begin(115200); Serial << endl << endl; Homie_setFirmware("temperature-setting", "1.0.0"); Homie.setSetupFunction(setupHandler).setLoopFunction(loopHandler); temperatureNode.advertise("unit"); temperatureNode.advertise("degrees"); temperatureIntervalSetting.setDefaultValue(DEFAULT_TEMPERATURE_INTERVAL).setValidator([] (long candidate) { return candidate > 0; }); sleepTimeSetting.setDefaultValue(DEFAULT_SLEEP_TIME); weightOffsetSetting.setDefaultValue(DEFAULT_WEIGHT_OFFSET); kilogramDividerSetting.setDefaultValue(DEFAULT_KILOGRAM_DIVIDER); vccAdjustSetting.setDefaultValue(DEFAULT_VCC_ADJUST); Homie.disableLedFeedback(); // collides with Serial on ESP07 Homie.setup(); } void loop() { Homie.loop(); }