ESP32 · ESP8266 · Без железа
Собери весь дашборд до того, как приедет первый сенсор
RisalFake — header-only библиотека фейк-сенсоров для ESP32 и Arduino. Она подаёт в виджеты реалистичные «дрейфующие» показания — медленный тренд плюс колебание плюс немного шума, по суточному циклу, а не плоская синусоида — так что можно проектировать, отлаживать и показывать целый UI, ничего не подключая. Приедет настоящий сенсор — меняешь одну строку.
Посмотри вживую — на фейках
Без железа и ожидания
Начинай UI сегодня — без макетки, пайки и доставки. Дашборд выглядит и ведёт себя вживую, пока ты правишь вёрстку и логику.
Реалистично, не random
Значения дрейфуют по виртуальному суточному циклу с мягким шумом — теплица прогревается к полудню, батарея проседает под нагрузкой — графики и шкалы выглядят как реальная сборка, а не дёрганая линия.
Zero-Waste и портируемо
Opt-in и header-only: ничего не компилируется, пока не подключишь; зависит только от Arduino.h + math.h. Один код собирается на ESP8266 и ESP32.
Целая среда в три строки
Фейк управляет теми же переменными, что и будущий реальный драйвер. Приедет BME280 — заменишь три env.*() чтения, остальной скетч не меняется.
#include <RisalUI.h>
#include <RisalFake.h> // opt-in: nothing is compiled unless you include it
RisalUI dash("Greenhouse");
RisalFakeEnv env; // a whole environment — no wires, no sensors
float temp, hum, pres;
void setup() {
dash.gauge("Temp", &temp, 0, 50, "C");
dash.metric("Humidity", &hum, "%");
dash.chart("Pressure", &pres);
dash.beginAP("RisalDash", "12345678");
env.begin();
}
void loop() {
dash.update();
env.update();
temp = env.temperature(); // when the BME280 arrives: bme.readTemperature();
hum = env.humidity();
pres = env.pressure();
} Готовые бандлы
Каждый класс заполняет тематический набор значений, которые вяжутся прямо к виджетам. Комбинируй их или бери обычный RisalFake под любую одну величину.
RisalFake one drifting value → any widget RisalFakeEnv temp · humidity · pressure · soil · light RisalFakeWeather wind · gust · direction · rain · UV RisalFakePower V · A · W · kWh (household load) RisalFakeAir PM1/2.5/10 · CO₂ · VOC · NOx RisalFakeIMU pitch · roll · yaw · compass RisalFakeWeight HX711 load cell, settles on items RisalFakeBattery SoC · pack V · current · temp RisalFakeFlow flow rate · total litres RisalFakeHealth heart rate · SpO₂ RisalFakeGas smoke / CO alarm with trips RisalFakeGPS a waypoint route → the map widget RisalFakeBLE a fake nearby-device scan RisalRecorder record a real trace, replay forever Почему выглядит по-настоящему
Суточные профили
Показания идут по виртуальным часам (сутки ≈ 3 минуты): свет нарастает и спадает, температура отстаёт от солнца, воздух дрейфует. Не random — правдоподобный тренд.
GPX-плейбек GPS
RisalFakeGPS проходит маршрут по точкам с переменной скоростью, интерполируя между ними, и двигает живой map-виджет — метка едет без GPS-модуля.
Record & replay
Запиши реальный сигнал один раз через RisalRecorder и крути его вечно — воспроизведи точный след сенсора в демо или регресс-тесте.
У каждого пресета сенсора есть свой фейк.