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 " ) ;
}