127 lines
6.4 KiB
C++
Raw Normal View History

2022-01-07 21:02:27 +01:00
#include <Arduino.h>
#include <ESPUI.h>
2022-01-09 20:51:16 +01:00
#include "config.h"
2022-01-07 21:02:27 +01:00
2022-01-08 03:14:26 +01:00
uint16_t tab_lube;
uint16_t tab_wheel;
uint16_t tab_tank;
2022-01-09 20:51:16 +01:00
uint16_t tab_maintenance;
uint16_t tab_store;
2022-01-08 03:14:26 +01:00
uint16_t num_lubedist_normal;
uint16_t num_lubedist_rain;
2022-01-09 20:51:16 +01:00
uint16_t button_lubedist;
2022-01-07 21:02:27 +01:00
2022-01-08 03:14:26 +01:00
uint16_t num_wheel_width;
uint16_t num_wheel_ratio;
uint16_t num_wheel_rim;
uint16_t button_wheelcalc;
uint16_t num_wheel_ppr;
uint16_t num_wheel_dist;
2022-01-07 21:02:27 +01:00
2022-01-09 20:51:16 +01:00
uint16_t num_tank_capacity;
uint16_t num_tank_notify;
uint16_t label_tankRemain;
uint16_t button_reset_tank;
uint16_t num_purge_pulses;
uint16_t button_purge;
uint16_t button_store;
uint16_t button_reload;
uint16_t label_storeStatus;
void SettingChanged_Callback(Control *sender, int type)
2022-01-08 03:14:26 +01:00
{
2022-01-09 20:51:16 +01:00
if (sender->id == num_lubedist_normal)
LubeConfig.DistancePerLube_Default = ESPUI.getControl(num_lubedist_normal)->value.toInt();
else if (sender->id == num_lubedist_rain)
LubeConfig.DistancePerLube_Rain = ESPUI.getControl(num_lubedist_rain)->value.toInt();
else if (sender->id == num_wheel_width)
LubeConfig.TireWidth_mm = ESPUI.getControl(num_wheel_width)->value.toInt();
else if (sender->id == num_wheel_ratio)
LubeConfig.TireWidthHeight_Ratio = ESPUI.getControl(num_wheel_ratio)->value.toInt();
else if (sender->id == num_wheel_rim)
LubeConfig.RimDiameter_Inch = ESPUI.getControl(num_wheel_rim)->value.toInt();
else if (sender->id == num_wheel_ppr)
LubeConfig.PulsePerRevolution = ESPUI.getControl(num_wheel_ppr)->value.toInt();
else if (sender->id == num_wheel_dist)
LubeConfig.DistancePerRevolution_mm = ESPUI.getControl(num_wheel_dist)->value.toInt();
else if (sender->id == num_tank_capacity)
LubeConfig.tankCapacity_ml = ESPUI.getControl(num_tank_capacity)->value.toInt();
else if (sender->id == num_tank_notify)
LubeConfig.TankRemindAtPercentage = ESPUI.getControl(num_tank_notify)->value.toInt();
2022-01-08 03:14:26 +01:00
}
2022-01-09 20:51:16 +01:00
void buttons_Callback(Control *sender, int type)
2022-01-08 03:14:26 +01:00
{
2022-01-09 20:51:16 +01:00
if (type != B_UP) return;
2022-01-08 03:14:26 +01:00
2022-01-09 20:51:16 +01:00
if (sender->id == button_wheelcalc)
2022-01-08 03:14:26 +01:00
{
LubeConfig.TireWidth_mm = ESPUI.getControl(num_wheel_width)->value.toInt();
LubeConfig.RimDiameter_Inch = ESPUI.getControl(num_wheel_rim)->value.toInt();
LubeConfig.TireWidthHeight_Ratio = ESPUI.getControl(num_wheel_ratio)->value.toInt();
2022-01-09 20:51:16 +01:00
LubeConfig.DistancePerRevolution_mm = (uint32_t)((((((float)LubeConfig.TireWidthHeight_Ratio / 100.0) * (float)LubeConfig.TireWidth_mm) * 2.0) + ((float)LubeConfig.RimDiameter_Inch * 25.4)) * 3.1416);
ESPUI.updateControlValue(num_wheel_dist, String(LubeConfig.DistancePerRevolution_mm));
}
if(sender->id == button_reset_tank)
{
LubeConfig.tankRemain_µl = LubeConfig.tankCapacity_ml * 1000;
ESPUI.print(label_tankRemain, String(LubeConfig.tankRemain_µl / 1000));
2022-01-08 03:14:26 +01:00
}
2022-01-09 20:51:16 +01:00
if(sender->id == button_purge)
2022-01-08 03:14:26 +01:00
{
2022-01-09 20:51:16 +01:00
int pulses = ESPUI.getControl(num_purge_pulses)->value.toInt();
Serial.printf("Starting to Purge with %d pulses", pulses);
}
2022-01-07 21:02:27 +01:00
2022-01-09 20:51:16 +01:00
if (sender->id == button_store)
{
StoreConfig_EEPROM();
ESPUI.print(label_storeStatus, "Successfully Stored Settings");
}
if (sender->id == button_reload)
{
GetConfig_EEPROM();
ESPUI.print(label_storeStatus, "Successfully Reloaded Settings");
2022-01-08 03:14:26 +01:00
}
2022-01-07 21:02:27 +01:00
}
2022-01-09 20:51:16 +01:00
void initWebUI()
2022-01-08 03:14:26 +01:00
{
2022-01-09 20:51:16 +01:00
tab_lube = ESPUI.addControl(ControlType::Tab, "Dosierung", "Dosierung");
tab_wheel = ESPUI.addControl(ControlType::Tab, "Erfassung", "Erfassung");
2022-01-08 03:14:26 +01:00
tab_tank = ESPUI.addControl(ControlType::Tab, "Tank", "Tank");
2022-01-09 20:51:16 +01:00
tab_maintenance = ESPUI.addControl(ControlType::Tab, "Wartung", "Wartung");
tab_store = ESPUI.addControl(ControlType::Tab, "Speichern", "Speichern");
num_lubedist_normal = ESPUI.addControl(ControlType::Number, "Öl-Impuls alle x Meter (Normal)", String(LubeConfig.DistancePerLube_Default), ControlColor::Emerald, tab_lube, &SettingChanged_Callback);
num_lubedist_rain = ESPUI.addControl(ControlType::Number, "Öl-Impuls alle x Meter (Regen)", String(LubeConfig.DistancePerLube_Rain), ControlColor::Emerald, tab_lube, &SettingChanged_Callback);
num_wheel_width = ESPUI.addControl(ControlType::Number, "Reifenbreite (mm)", String(LubeConfig.TireWidth_mm), ControlColor::Peterriver, tab_wheel, &SettingChanged_Callback);
num_wheel_ratio = ESPUI.addControl(ControlType::Number, "Höhe/Breite-Verhältniss", String(LubeConfig.TireWidthHeight_Ratio), ControlColor::Peterriver, tab_wheel, &SettingChanged_Callback);
num_wheel_rim = ESPUI.addControl(ControlType::Number, "Felgendurchmesser (Zoll)", String(LubeConfig.RimDiameter_Inch), ControlColor::Peterriver, tab_wheel, &SettingChanged_Callback);
button_wheelcalc = ESPUI.addControl(ControlType::Button, "Abrollumfang aus Reifendaten berechnen", "Berechnen", ControlColor::Peterriver, tab_wheel, &buttons_Callback);
num_wheel_dist = ESPUI.addControl(ControlType::Number, "Wegstrecke pro Umdrehung (mm)", String(LubeConfig.DistancePerRevolution_mm), ControlColor::Wetasphalt, tab_wheel, &SettingChanged_Callback);
num_wheel_ppr = ESPUI.addControl(ControlType::Number, "Sensorimpulse pro Umdrehung", String(LubeConfig.PulsePerRevolution), ControlColor::Wetasphalt, tab_wheel, &SettingChanged_Callback);
2022-01-08 03:14:26 +01:00
2022-01-09 20:51:16 +01:00
num_tank_capacity = ESPUI.addControl(ControlType::Number, "Tankinhalt maximal (ml)", String(LubeConfig.tankCapacity_ml), ControlColor::Carrot, tab_tank, &SettingChanged_Callback);
num_tank_notify = ESPUI.addControl(ControlType::Number, "Tankinhalt Warnung (%)", String(LubeConfig.TankRemindAtPercentage), ControlColor::Carrot, tab_tank, &SettingChanged_Callback);
2022-01-07 23:36:02 +01:00
2022-01-09 20:51:16 +01:00
label_tankRemain = ESPUI.addControl(ControlType::Label, "Tankinhalt verbleibend (ml, geschätzt)",String(LubeConfig.tankRemain_µl / 1000), ControlColor::Alizarin, tab_maintenance);
button_reset_tank = ESPUI.addControl(ControlType::Button, "Tankinhalt zurücksetzen", "Reset", ControlColor::Alizarin, tab_maintenance, &buttons_Callback);
num_purge_pulses = ESPUI.addControl(ControlType::Number, "Entlüftung Impulse", "10", ControlColor::Alizarin, tab_maintenance);
button_purge = ESPUI.addControl(ControlType::Button, "Leitung Entlüften", "Start", ControlColor::Alizarin, tab_maintenance, &buttons_Callback);
2022-01-07 23:36:02 +01:00
2022-01-09 20:51:16 +01:00
button_store = ESPUI.addControl(ControlType::Button, "Einstellungen permanent speichern", "Speichern", ControlColor::Turquoise, tab_store, &buttons_Callback);
button_reload = ESPUI.addControl(ControlType::Button, "Einstellungen neu laden", "Laden", ControlColor::Turquoise, tab_store, &buttons_Callback);
label_storeStatus = ESPUI.addControl(ControlType::Label, "Status", "", ControlColor::Turquoise, tab_store);
2022-01-08 03:14:26 +01:00
ESPUI.begin("Souko's ChainLube Mk1");
}