2022-01-10 00:55:04 +01:00
# include "webui.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-19 22:23:36 +01:00
uint16_t option_speedsource ;
uint16_t button_changeSource ;
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-19 22:23:36 +01:00
uint16_t option_gps_baudrate ;
uint16_t option_can_source ;
2022-01-09 20:51:16 +01:00
uint16_t num_tank_capacity ;
uint16_t num_tank_notify ;
2022-01-10 00:55:04 +01:00
uint16_t num_dose_per_pulse ;
2022-01-09 20:51:16 +01:00
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-10 00:55:04 +01:00
else if ( sender - > id = = num_dose_per_pulse )
LubeConfig . amountPerDose_µl = ESPUI . getControl ( num_dose_per_pulse ) - > value . toInt ( ) ;
2022-01-12 00:53:22 +01:00
else if ( sender - > id = = num_purge_pulses )
LubeConfig . BleedingPulses = ESPUI . getControl ( num_purge_pulses ) - > value . toInt ( ) ;
2022-01-19 22:23:36 +01:00
else if ( sender - > id = = option_gps_baudrate )
LubeConfig . GPSBaudRate = ( GPSBaudRate_t ) ESPUI . getControl ( option_gps_baudrate ) - > 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-10 00:55:04 +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 ) ) ;
}
2022-01-10 00:55:04 +01:00
if ( sender - > id = = button_reset_tank )
2022-01-09 20:51:16 +01:00
{
2022-01-19 22:23:36 +01:00
PersistenceData . tankRemain_µl = LubeConfig . tankCapacity_ml * 1000 ;
ESPUI . print ( label_tankRemain , String ( PersistenceData . tankRemain_µl / 1000 ) ) ;
2022-01-08 03:14:26 +01:00
}
2022-01-09 20:51:16 +01:00
2022-01-10 00:55:04 +01:00
if ( sender - > id = = button_purge )
2022-01-08 03:14:26 +01:00
{
2022-01-12 00:53:22 +01:00
Serial . printf ( " Starting to Purge with %d pulses " , LubeConfig . BleedingPulses ) ;
globals . purgePulses = LubeConfig . BleedingPulses ;
2022-01-10 00:55:04 +01:00
globals . resumeStatus = globals . systemStatus ;
globals . systemStatus = sysStat_Purge ;
2022-01-09 20:51:16 +01:00
}
2022-01-07 21:02:27 +01:00
2022-01-09 20:51:16 +01:00
if ( sender - > id = = button_store )
{
2022-02-04 21:24:15 +01:00
globals . requestEEAction = EE_CFG_SAVE ;
2022-01-09 20:51:16 +01:00
ESPUI . print ( label_storeStatus , " Successfully Stored Settings " ) ;
}
if ( sender - > id = = button_reload )
{
2022-02-04 21:24:15 +01:00
globals . requestEEAction = EE_CFG_LOAD ;
2022-01-09 20:51:16 +01:00
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-19 22:23:36 +01:00
void speedSourceSelect_callback ( Control * sender , int type )
{
if ( sender - > id = = option_speedsource )
{
LubeConfig . SpeedSource = ( SpeedSource_t ) ESPUI . getControl ( option_speedsource ) - > value . toInt ( ) ;
Serial . printf ( " LubeConfig.SpeedSource: %d " , LubeConfig . SpeedSource ) ;
}
if ( sender - > id = = button_changeSource )
{
globals . systemStatus = sysStat_Shutdown ;
}
}
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 ) ;
2022-01-19 22:23:36 +01:00
option_speedsource = ESPUI . addControl ( ControlType : : Select , " Geschwindigkeit Quelle " , " " , ControlColor : : Wetasphalt , tab_wheel , & speedSourceSelect_callback ) ;
button_changeSource = ESPUI . addControl ( ControlType : : Button , " neue Quelle übernehmen. ACHTUNG: Gerät startet neu! " , " Übernehmen " , ControlColor : : Wetasphalt , tab_wheel , & speedSourceSelect_callback ) ;
2022-01-31 09:26:10 +01:00
for ( int i = 0 ; i < ( int ) SpeedSourceString_Elements ; i + + )
2022-01-19 22:23:36 +01:00
{
ESPUI . addControl ( ControlType : : Option , SpeedSourceString [ i ] , String ( i ) , ControlColor : : Wetasphalt , option_speedsource ) ;
}
switch ( LubeConfig . SpeedSource )
{
case SOURCE_IMPULSE :
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 Radumdrehung (mm) " , String ( LubeConfig . DistancePerRevolution_mm ) , ControlColor : : Peterriver , tab_wheel , & SettingChanged_Callback ) ;
num_wheel_ppr = ESPUI . addControl ( ControlType : : Number , " Sensorimpulse pro Umdrehung " , String ( LubeConfig . PulsePerRevolution ) , ControlColor : : Peterriver , tab_wheel , & SettingChanged_Callback ) ;
break ;
case SOURCE_GPS :
option_gps_baudrate = ESPUI . addControl ( ControlType : : Select , " Baudrate GPS-Modul " , " " , ControlColor : : Peterriver , tab_wheel , & SettingChanged_Callback ) ;
for ( int i = 0 ; i < GPSBaudRateString_Elements ; i + + )
{
ESPUI . addControl ( ControlType : : Option , GPSBaudRateString [ i ] , String ( i ) , ControlColor : : Peterriver , option_gps_baudrate ) ;
}
break ;
2022-01-31 09:26:10 +01:00
# if PCB_REVISION >= 13
2022-01-19 22:23:36 +01:00
case SOURCE_CAN :
option_can_source = ESPUI . addControl ( ControlType : : Select , " CAN-Bus Quelle " , " " , ControlColor : : Peterriver , tab_wheel , & SettingChanged_Callback ) ;
for ( int i = 0 ; i < CANSourceString_Elements ; i + + )
{
ESPUI . addControl ( ControlType : : Option , CANSourceString [ i ] , String ( i ) , ControlColor : : Peterriver , option_can_source ) ;
}
break ;
2022-01-31 09:26:10 +01:00
# endif
2022-01-19 22:23:36 +01:00
case SOURCE_TIME :
break ;
}
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-10 00:55:04 +01:00
num_dose_per_pulse = ESPUI . addControl ( ControlType : : Number , " Menge pro Pumpenimpuls (µl) " , String ( LubeConfig . amountPerDose_µl ) , ControlColor : : Carrot , tab_tank , & SettingChanged_Callback ) ;
2022-01-07 23:36:02 +01:00
2022-01-19 22:23:36 +01:00
label_tankRemain = ESPUI . addControl ( ControlType : : Label , " Tankinhalt verbleibend (ml, geschätzt) " , String ( PersistenceData . tankRemain_µl / 1000 ) , ControlColor : : Alizarin , tab_maintenance ) ;
2022-01-09 20:51:16 +01:00
button_reset_tank = ESPUI . addControl ( ControlType : : Button , " Tankinhalt zurücksetzen " , " Reset " , ControlColor : : Alizarin , tab_maintenance , & buttons_Callback ) ;
2022-01-12 00:53:22 +01:00
num_purge_pulses = ESPUI . addControl ( ControlType : : Number , " Entlüftung Impulse " , String ( LubeConfig . BleedingPulses ) , ControlColor : : Alizarin , tab_maintenance , & SettingChanged_Callback ) ;
2022-01-09 20:51:16 +01:00
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 " ) ;
}
2022-01-12 01:10:21 +01:00
void UpdateWebUI ( )
{
2022-01-19 22:23:36 +01:00
ESPUI . print ( label_tankRemain , String ( PersistenceData . tankRemain_µl / 1000 ) + " ml " ) ;
2022-01-12 01:10:21 +01:00
}