Base Software System
This commit is contained in:
		
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -220,6 +220,7 @@ F 0 "D2" V 8296 4320 50  0000 R CNN | |||||||
| F 1 "BAT42" V 8205 4320 50  0000 R CNN | F 1 "BAT42" V 8205 4320 50  0000 R CNN | ||||||
| F 2 "Diode_THT:D_DO-35_SOD27_P7.62mm_Horizontal" H 8250 4225 50  0001 C CNN | F 2 "Diode_THT:D_DO-35_SOD27_P7.62mm_Horizontal" H 8250 4225 50  0001 C CNN | ||||||
| F 3 "http://www.vishay.com/docs/85660/bat42.pdf" H 8250 4400 50  0001 C CNN | F 3 "http://www.vishay.com/docs/85660/bat42.pdf" H 8250 4400 50  0001 C CNN | ||||||
|  | F 4 "BAT 42" H 8250 4400 50  0001 C CNN "Reichelt Order No." | ||||||
| 	1    8250 4400 | 	1    8250 4400 | ||||||
| 	0    -1   -1   0    | 	0    -1   -1   0    | ||||||
| $EndComp | $EndComp | ||||||
| @@ -310,6 +311,7 @@ F 0 "D1" V 7796 4320 50  0000 R CNN | |||||||
| F 1 "BAT42" V 7705 4320 50  0000 R CNN | F 1 "BAT42" V 7705 4320 50  0000 R CNN | ||||||
| F 2 "Diode_THT:D_DO-35_SOD27_P7.62mm_Horizontal" H 7750 4225 50  0001 C CNN | F 2 "Diode_THT:D_DO-35_SOD27_P7.62mm_Horizontal" H 7750 4225 50  0001 C CNN | ||||||
| F 3 "http://www.vishay.com/docs/85660/bat42.pdf" H 7750 4400 50  0001 C CNN | F 3 "http://www.vishay.com/docs/85660/bat42.pdf" H 7750 4400 50  0001 C CNN | ||||||
|  | F 4 "BAT 42" H 7750 4400 50  0001 C CNN "Reichelt Order No." | ||||||
| 	1    7750 4400 | 	1    7750 4400 | ||||||
| 	0    -1   -1   0    | 	0    -1   -1   0    | ||||||
| $EndComp | $EndComp | ||||||
| @@ -338,6 +340,7 @@ F 0 "C3" H 9568 2246 50  0000 L CNN | |||||||
| F 1 "470µF" H 9568 2155 50  0000 L CNN | F 1 "470µF" H 9568 2155 50  0000 L CNN | ||||||
| F 2 "Capacitor_SMD:CP_Elec_8x10" H 9488 2050 50  0001 C CNN | F 2 "Capacitor_SMD:CP_Elec_8x10" H 9488 2050 50  0001 C CNN | ||||||
| F 3 "~" H 9450 2200 50  0001 C CNN | F 3 "~" H 9450 2200 50  0001 C CNN | ||||||
|  | F 4 "ECC MZS350ARA471" H 9450 2200 50  0001 C CNN "Reichelt Order No." | ||||||
| 	1    9450 2200 | 	1    9450 2200 | ||||||
| 	1    0    0    -1   | 	1    0    0    -1   | ||||||
| $EndComp | $EndComp | ||||||
| @@ -363,6 +366,7 @@ F 0 "C4" H 10668 2246 50  0000 L CNN | |||||||
| F 1 "100µ" H 10668 2155 50  0000 L CNN | F 1 "100µ" H 10668 2155 50  0000 L CNN | ||||||
| F 2 "Capacitor_SMD:CP_Elec_6.3x7.7" H 10588 2050 50  0001 C CNN | F 2 "Capacitor_SMD:CP_Elec_6.3x7.7" H 10588 2050 50  0001 C CNN | ||||||
| F 3 "~" H 10550 2200 50  0001 C CNN | F 3 "~" H 10550 2200 50  0001 C CNN | ||||||
|  | F 4 "ECC HXE250ARA101" H 10550 2200 50  0001 C CNN "Reichelt Order No." | ||||||
| 	1    10550 2200 | 	1    10550 2200 | ||||||
| 	1    0    0    -1   | 	1    0    0    -1   | ||||||
| $EndComp | $EndComp | ||||||
|   | |||||||
							
								
								
									
										6
									
								
								Software/ChainLube/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								Software/ChainLube/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | |||||||
|  | .pio | ||||||
|  | .vscode/.browse.c_cpp.db* | ||||||
|  | .vscode/c_cpp_properties.json | ||||||
|  | .vscode/launch.json | ||||||
|  | .vscode/ipch | ||||||
|  | wifi_credentials.ini | ||||||
							
								
								
									
										7
									
								
								Software/ChainLube/.vscode/extensions.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								Software/ChainLube/.vscode/extensions.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | { | ||||||
|  |     // See http://go.microsoft.com/fwlink/?LinkId=827846 | ||||||
|  |     // for the documentation about the extensions.json format | ||||||
|  |     "recommendations": [ | ||||||
|  |         "platformio.platformio-ide" | ||||||
|  |     ] | ||||||
|  | } | ||||||
							
								
								
									
										39
									
								
								Software/ChainLube/include/README
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								Software/ChainLube/include/README
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,39 @@ | |||||||
|  |  | ||||||
|  | This directory is intended for project header files. | ||||||
|  |  | ||||||
|  | A header file is a file containing C declarations and macro definitions | ||||||
|  | to be shared between several project source files. You request the use of a | ||||||
|  | header file in your project source file (C, C++, etc) located in `src` folder | ||||||
|  | by including it, with the C preprocessing directive `#include'. | ||||||
|  |  | ||||||
|  | ```src/main.c | ||||||
|  |  | ||||||
|  | #include "header.h" | ||||||
|  |  | ||||||
|  | int main (void) | ||||||
|  | { | ||||||
|  |  ... | ||||||
|  | } | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | Including a header file produces the same results as copying the header file | ||||||
|  | into each source file that needs it. Such copying would be time-consuming | ||||||
|  | and error-prone. With a header file, the related declarations appear | ||||||
|  | in only one place. If they need to be changed, they can be changed in one | ||||||
|  | place, and programs that include the header file will automatically use the | ||||||
|  | new version when next recompiled. The header file eliminates the labor of | ||||||
|  | finding and changing all the copies as well as the risk that a failure to | ||||||
|  | find one copy will result in inconsistencies within a program. | ||||||
|  |  | ||||||
|  | In C, the usual convention is to give header files names that end with `.h'. | ||||||
|  | It is most portable to use only letters, digits, dashes, and underscores in | ||||||
|  | header file names, and at most one dot. | ||||||
|  |  | ||||||
|  | Read more about using header files in official GCC documentation: | ||||||
|  |  | ||||||
|  | * Include Syntax | ||||||
|  | * Include Operation | ||||||
|  | * Once-Only Headers | ||||||
|  | * Computed Includes | ||||||
|  |  | ||||||
|  | https://gcc.gnu.org/onlinedocs/cpp/Header-Files.html | ||||||
							
								
								
									
										46
									
								
								Software/ChainLube/lib/README
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								Software/ChainLube/lib/README
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,46 @@ | |||||||
|  |  | ||||||
|  | This directory is intended for project specific (private) libraries. | ||||||
|  | PlatformIO will compile them to static libraries and link into executable file. | ||||||
|  |  | ||||||
|  | The source code of each library should be placed in a an own separate directory | ||||||
|  | ("lib/your_library_name/[here are source files]"). | ||||||
|  |  | ||||||
|  | For example, see a structure of the following two libraries `Foo` and `Bar`: | ||||||
|  |  | ||||||
|  | |--lib | ||||||
|  | |  | | ||||||
|  | |  |--Bar | ||||||
|  | |  |  |--docs | ||||||
|  | |  |  |--examples | ||||||
|  | |  |  |--src | ||||||
|  | |  |     |- Bar.c | ||||||
|  | |  |     |- Bar.h | ||||||
|  | |  |  |- library.json (optional, custom build options, etc) https://docs.platformio.org/page/librarymanager/config.html | ||||||
|  | |  | | ||||||
|  | |  |--Foo | ||||||
|  | |  |  |- Foo.c | ||||||
|  | |  |  |- Foo.h | ||||||
|  | |  | | ||||||
|  | |  |- README --> THIS FILE | ||||||
|  | | | ||||||
|  | |- platformio.ini | ||||||
|  | |--src | ||||||
|  |    |- main.c | ||||||
|  |  | ||||||
|  | and a contents of `src/main.c`: | ||||||
|  | ``` | ||||||
|  | #include <Foo.h> | ||||||
|  | #include <Bar.h> | ||||||
|  |  | ||||||
|  | int main (void) | ||||||
|  | { | ||||||
|  |   ... | ||||||
|  | } | ||||||
|  |  | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | PlatformIO Library Dependency Finder will find automatically dependent | ||||||
|  | libraries scanning project source files. | ||||||
|  |  | ||||||
|  | More information about PlatformIO Library Dependency Finder | ||||||
|  | - https://docs.platformio.org/page/librarymanager/ldf.html | ||||||
							
								
								
									
										43
									
								
								Software/ChainLube/platformio.ini
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								Software/ChainLube/platformio.ini
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,43 @@ | |||||||
|  | ; PlatformIO Project Configuration File | ||||||
|  | ; | ||||||
|  | ;   Build options: build flags, source filter | ||||||
|  | ;   Upload options: custom upload port, speed and extra flags | ||||||
|  | ;   Library options: dependencies, extra library storages | ||||||
|  | ;   Advanced options: extra scripting | ||||||
|  | ; | ||||||
|  | ; Please visit documentation for the other options and examples | ||||||
|  | ; https://docs.platformio.org/page/projectconf.html | ||||||
|  |  | ||||||
|  | [platformio] | ||||||
|  | extra_configs = | ||||||
|  |   wifi_credentials.ini | ||||||
|  |  | ||||||
|  | [env:d1_mini] | ||||||
|  | platform = espressif8266 | ||||||
|  | board = d1_mini | ||||||
|  | framework = arduino | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ;upload_port = 192.168.0.20 | ||||||
|  | ;upload_protocol = espota | ||||||
|  | ;upload_flags =   | ||||||
|  | ;    --auth="chainlube" | ||||||
|  | upload_protocol=esptool | ||||||
|  |  | ||||||
|  | build_flags = | ||||||
|  |   ;-DDEBUG | ||||||
|  |   -fexceptions | ||||||
|  |  | ||||||
|  | build_unflags = -fno-exceptions | ||||||
|  | build_type = debug | ||||||
|  | board_build.filesystem = littlefs | ||||||
|  |  | ||||||
|  | monitor_filters = esp8266_exception_decoder | ||||||
|  | monitor_speed = 115200 | ||||||
|  |  | ||||||
|  | board_build.ldscript = eagle.flash.4m3m.ld | ||||||
|  | lib_ldf_mode = deep | ||||||
|  | lib_deps =  | ||||||
|  |     olikraus/U8g2 @ ^2.28.8 | ||||||
|  |     joaolopesf/RemoteDebug @ ^2.1.2 | ||||||
|  |     fastled/FastLED @ ^3.5.0 | ||||||
							
								
								
									
										27
									
								
								Software/ChainLube/src/common.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								Software/ChainLube/src/common.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | |||||||
|  | #ifndef _COMMON_H_ | ||||||
|  | #define _COMMON_H_ | ||||||
|  |  | ||||||
|  | #define GPIO_BUTTON 14 | ||||||
|  | #define GPIO_LED D6 | ||||||
|  | #define GPIO_TRIGGER 2 | ||||||
|  | #define GPIO_PUMP 0 | ||||||
|  |  | ||||||
|  | #ifndef HOST_NAME | ||||||
|  | #define HOST_NAME "ChainLube_%06X"      // Use printf-Formatting - Chip-ID (uin32_t) will be added | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #ifndef OTA_DELAY | ||||||
|  | #define OTA_DELAY 50  // ticks -> 10ms / tick | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #ifndef ADMIN_PASS | ||||||
|  | #error "You need to define ADMIN_PASS for OTA-Update" | ||||||
|  | #endif | ||||||
|  | #ifndef WIFI_PASSWORD | ||||||
|  | #error "You must define an WIFI_PASSWORD for OTA-Update" | ||||||
|  | #endif | ||||||
|  | #ifndef WIFI_SSID  | ||||||
|  | #error "You must define an WIFI_SSID for OTA-Update" | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #endif | ||||||
							
								
								
									
										164
									
								
								Software/ChainLube/src/main.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										164
									
								
								Software/ChainLube/src/main.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,164 @@ | |||||||
|  | #include <Arduino.h> | ||||||
|  | #include <Wire.h> | ||||||
|  | #include <U8g2lib.h> | ||||||
|  | #include <ESP8266WiFi.h> | ||||||
|  | #include <ESP8266WiFiMulti.h> | ||||||
|  | #include <ESP8266mDNS.h> | ||||||
|  | #include <ArduinoOTA.h> | ||||||
|  | #include <RemoteDebug.h> | ||||||
|  | #include <FastLED.h> | ||||||
|  |  | ||||||
|  | #include "common.h" | ||||||
|  | #include "rmtdbghelp.h" | ||||||
|  |  | ||||||
|  | const char *ssid = WIFI_SSID; | ||||||
|  | const char *password = WIFI_PASSWORD; | ||||||
|  |  | ||||||
|  | #ifdef DEBUG | ||||||
|  | const bool debug_flag = true; | ||||||
|  | #else | ||||||
|  | const bool debug_flag = false; | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | bool startSetupMode = false; | ||||||
|  | char DeviceName[33]; | ||||||
|  |  | ||||||
|  | U8X8_SSD1306_128X64_NONAME_HW_I2C u8x8(-1); | ||||||
|  | RemoteDebug Debug; | ||||||
|  | ESP8266WiFiMulti wifiMulti; | ||||||
|  |  | ||||||
|  | // Function-Prototypes | ||||||
|  | String IpAddress2String(const IPAddress &ipAddress); | ||||||
|  | void processCmdRemoteDebug(); | ||||||
|  | void RemotDebug_printSystemInfo(); | ||||||
|  | void RemoteDebug_printWifiInfo(); | ||||||
|  |  | ||||||
|  | CRGB leds[1]; | ||||||
|  |  | ||||||
|  | void setup() | ||||||
|  | { | ||||||
|  |   system_update_cpu_freq(SYS_CPU_80MHZ); | ||||||
|  |   snprintf(DeviceName, 32, HOST_NAME, ESP.getChipId()); | ||||||
|  |   WiFi.mode(WIFI_OFF); | ||||||
|  |   WiFi.persistent(false); | ||||||
|  |   Serial.begin(115200); | ||||||
|  |   Serial.setDebugOutput(true); | ||||||
|  |  | ||||||
|  |   Serial.println("Souko's ChainOiler Mk1"); | ||||||
|  |   Serial.println(DeviceName); | ||||||
|  |  | ||||||
|  |   u8x8.begin(); | ||||||
|  |   u8x8.setFont(u8x8_font_chroma48medium8_r); | ||||||
|  |  | ||||||
|  |   pinMode(GPIO_TRIGGER, INPUT_PULLUP); | ||||||
|  |   pinMode(GPIO_BUTTON, INPUT_PULLUP); | ||||||
|  |   pinMode(GPIO_PUMP, OUTPUT); | ||||||
|  |  | ||||||
|  |   WiFi.mode(WIFI_STA); | ||||||
|  |   WiFi.setHostname(DeviceName); | ||||||
|  |   wifiMulti.addAP(WIFI_SSID, WIFI_PASSWORD); | ||||||
|  |  | ||||||
|  |   Serial.println("Connecting Wifi..."); | ||||||
|  |   if (wifiMulti.run() == WL_CONNECTED) | ||||||
|  |   { | ||||||
|  |     Serial.println(""); | ||||||
|  |     Serial.println("WiFi connected"); | ||||||
|  |     Serial.println("IP address: "); | ||||||
|  |     Serial.print(WiFi.localIP()); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   if (MDNS.begin(DeviceName)) | ||||||
|  |     MDNS.addService("telnet", "tcp", 23); | ||||||
|  |  | ||||||
|  |   Debug.begin(DeviceName);        // Initialize the WiFi server | ||||||
|  |   Debug.setResetCmdEnabled(true); // Enable the reset command | ||||||
|  |   Debug.showProfiler(true);       // Profiler (Good to measure times, to optimize codes) | ||||||
|  |   Debug.showColors(true);         // Colors | ||||||
|  |  | ||||||
|  |   Debug.setHelpProjectsCmds(helpCmd); | ||||||
|  |   Debug.setCallBackProjectCmds(&processCmdRemoteDebug); | ||||||
|  |  | ||||||
|  |   ArduinoOTA.setPort(8266); | ||||||
|  |   ArduinoOTA.setHostname(DeviceName); | ||||||
|  |   ArduinoOTA.setPassword(ADMIN_PASS); | ||||||
|  |  | ||||||
|  |   ArduinoOTA.onStart([]() | ||||||
|  |                      { | ||||||
|  |                        u8x8.clearDisplay(); | ||||||
|  |                        u8x8.drawString(0, 0, "OTA-Update"); | ||||||
|  |                        u8x8.refreshDisplay(); }); | ||||||
|  |  | ||||||
|  |   ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) | ||||||
|  |                         { | ||||||
|  |                           static bool refreshed = false; | ||||||
|  |                           if (!refreshed) | ||||||
|  |                           { | ||||||
|  |                             u8x8.clearDisplay(); | ||||||
|  |                             refreshed = true; | ||||||
|  |                             u8x8.drawString(0, 0, "OTA Upload"); | ||||||
|  |                           } | ||||||
|  |                           uint32_t percent = progress / (total / 100); | ||||||
|  |                           u8x8.setCursor(0, 1); | ||||||
|  |                           u8x8.printf("%d %%", percent); | ||||||
|  |                           u8x8.refreshDisplay(); }); | ||||||
|  |  | ||||||
|  |   ArduinoOTA.onEnd([]() | ||||||
|  |                    { | ||||||
|  |                      u8x8.clearDisplay(); | ||||||
|  |                      u8x8.drawString(0, 0, "OTA-Restart"); | ||||||
|  |                      u8x8.refreshDisplay(); }); | ||||||
|  |  | ||||||
|  |   ArduinoOTA.begin(); | ||||||
|  |  | ||||||
|  |   u8x8.clearDisplay(); | ||||||
|  |   u8x8.drawString(4, 4, "Souko's"); | ||||||
|  |   u8x8.drawString(1, 5, "ChainLube Mk1"); | ||||||
|  |   u8x8.refreshDisplay(); | ||||||
|  |  | ||||||
|  |   FastLED.addLeds<WS2811, GPIO_LED, GRB>(leds, 1); // GRB ordering is assumed | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void loop() | ||||||
|  | { | ||||||
|  |   leds[0] = digitalRead(GPIO_BUTTON) ? CRGB::Green : CRGB::Red; | ||||||
|  |  | ||||||
|  |   FastLED.show(); | ||||||
|  |   ArduinoOTA.handle(); | ||||||
|  |   Debug.handle(); | ||||||
|  |   yield(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | String IpAddress2String(const IPAddress &ipAddress) | ||||||
|  | { | ||||||
|  |   return String(ipAddress[0]) + String(".") + | ||||||
|  |          String(ipAddress[1]) + String(".") + | ||||||
|  |          String(ipAddress[2]) + String(".") + | ||||||
|  |          String(ipAddress[3]); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void processCmdRemoteDebug() | ||||||
|  | { | ||||||
|  |   String lastCmd = Debug.getLastCommand(); | ||||||
|  |  | ||||||
|  |   if (lastCmd == "sysinfo") | ||||||
|  |     RemotDebug_printSystemInfo(); | ||||||
|  |   else if (lastCmd == "netinfo") | ||||||
|  |     RemoteDebug_printWifiInfo(); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void RemotDebug_printSystemInfo() | ||||||
|  | { | ||||||
|  |   debugA("Souko's ChainOiler Mk1"); | ||||||
|  |   debugA("Hostname: %s", DeviceName); | ||||||
|  |  | ||||||
|  |   debugA("Sdk version: %s", ESP.getSdkVersion()); | ||||||
|  |   debugA("Core Version: %s", ESP.getCoreVersion().c_str()); | ||||||
|  |   debugA("Boot Version: %u", ESP.getBootVersion()); | ||||||
|  |   debugA("Boot Mode: %u", ESP.getBootMode()); | ||||||
|  |   debugA("CPU Frequency: %u MHz", ESP.getCpuFreqMHz()); | ||||||
|  |   debugA("Reset reason: %s", ESP.getResetReason().c_str()); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void RemoteDebug_printWifiInfo() | ||||||
|  | { | ||||||
|  | } | ||||||
							
								
								
									
										2
									
								
								Software/ChainLube/src/rmtdbghelp.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								Software/ChainLube/src/rmtdbghelp.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | |||||||
|  | const char helpCmd[] = "sysinfo - System Info\r\n" | ||||||
|  |                        "netinfo - WiFi Info\r\n"; | ||||||
							
								
								
									
										172
									
								
								Software/ChainLube/src/webui.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										172
									
								
								Software/ChainLube/src/webui.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,172 @@ | |||||||
|  | #include <Arduino.h> | ||||||
|  | #include <ESPUI.h> | ||||||
|  |  | ||||||
|  | uint16_t button1; | ||||||
|  | uint16_t switchOne; | ||||||
|  | uint16_t status; | ||||||
|  |  | ||||||
|  | void initWebUI(); | ||||||
|  |  | ||||||
|  | void numberCall( Control* sender, int type ) { | ||||||
|  |   Serial.println( sender->value ); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void textCall( Control* sender, int type ) { | ||||||
|  |   Serial.print("Text: ID: "); | ||||||
|  |   Serial.print(sender->id); | ||||||
|  |   Serial.print(", Value: "); | ||||||
|  |   Serial.println( sender->value );} | ||||||
|  |  | ||||||
|  | void slider( Control* sender, int type ) { | ||||||
|  |   Serial.print("Slider: ID: "); | ||||||
|  |   Serial.print(sender->id); | ||||||
|  |   Serial.print(", Value: "); | ||||||
|  |   Serial.println( sender->value );} | ||||||
|  |  | ||||||
|  | void buttonCallback( Control* sender, int type ) { | ||||||
|  |   switch ( type ) { | ||||||
|  |     case B_DOWN: | ||||||
|  |       Serial.println( "Button DOWN" ); | ||||||
|  |       break; | ||||||
|  |  | ||||||
|  |     case B_UP: | ||||||
|  |       Serial.println( "Button UP" ); | ||||||
|  |       break; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void buttonExample( Control* sender, int type ) { | ||||||
|  |   switch ( type ) { | ||||||
|  |     case B_DOWN: | ||||||
|  |       Serial.println( "Status: Start" ); | ||||||
|  |       ESPUI.updateControlValue( status, "Start" ); | ||||||
|  |      | ||||||
|  |       ESPUI.getControl( button1 )->color = ControlColor::Carrot; | ||||||
|  |       ESPUI.updateControl( button1 ); | ||||||
|  |       break; | ||||||
|  |  | ||||||
|  |     case B_UP: | ||||||
|  |       Serial.println( "Status: Stop" ); | ||||||
|  |       ESPUI.updateControlValue( status, "Stop" ); | ||||||
|  |     | ||||||
|  |       ESPUI.getControl( button1 )->color = ControlColor::Peterriver; | ||||||
|  |       ESPUI.updateControl( button1 ); | ||||||
|  |       break; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void padExample( Control* sender, int value ) { | ||||||
|  |   switch ( value ) { | ||||||
|  |     case P_LEFT_DOWN: | ||||||
|  |       Serial.print( "left down" ); | ||||||
|  |       break; | ||||||
|  |  | ||||||
|  |     case P_LEFT_UP: | ||||||
|  |       Serial.print( "left up" ); | ||||||
|  |       break; | ||||||
|  |  | ||||||
|  |     case P_RIGHT_DOWN: | ||||||
|  |       Serial.print( "right down" ); | ||||||
|  |       break; | ||||||
|  |  | ||||||
|  |     case P_RIGHT_UP: | ||||||
|  |       Serial.print( "right up" ); | ||||||
|  |       break; | ||||||
|  |  | ||||||
|  |     case P_FOR_DOWN: | ||||||
|  |       Serial.print( "for down" ); | ||||||
|  |       break; | ||||||
|  |  | ||||||
|  |     case P_FOR_UP: | ||||||
|  |       Serial.print( "for up" ); | ||||||
|  |       break; | ||||||
|  |  | ||||||
|  |     case P_BACK_DOWN: | ||||||
|  |       Serial.print( "back down" ); | ||||||
|  |       break; | ||||||
|  |  | ||||||
|  |     case P_BACK_UP: | ||||||
|  |       Serial.print( "back up" ); | ||||||
|  |       break; | ||||||
|  |  | ||||||
|  |     case P_CENTER_DOWN: | ||||||
|  |       Serial.print( "center down" ); | ||||||
|  |       break; | ||||||
|  |  | ||||||
|  |     case P_CENTER_UP: | ||||||
|  |       Serial.print( "center up" ); | ||||||
|  |       break; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   Serial.print( " " ); | ||||||
|  |   Serial.println( sender->id ); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void switchExample( Control* sender, int value ) { | ||||||
|  |   switch ( value ) { | ||||||
|  |     case S_ACTIVE: | ||||||
|  |       Serial.print( "Active:" ); | ||||||
|  |       break; | ||||||
|  |  | ||||||
|  |     case S_INACTIVE: | ||||||
|  |       Serial.print( "Inactive" ); | ||||||
|  |       break; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   Serial.print( " " ); | ||||||
|  |   Serial.println( sender->id ); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void selectExample( Control* sender, int value ) { | ||||||
|  |   Serial.print("Select: ID: "); | ||||||
|  |   Serial.print(sender->id); | ||||||
|  |   Serial.print(", Value: "); | ||||||
|  |   Serial.println( sender->value ); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void otherSwitchExample( Control* sender, int value ) { | ||||||
|  |   switch ( value ) { | ||||||
|  |     case S_ACTIVE: | ||||||
|  |       Serial.print( "Active:" ); | ||||||
|  |       break; | ||||||
|  |  | ||||||
|  |     case S_INACTIVE: | ||||||
|  |       Serial.print( "Inactive" ); | ||||||
|  |       break; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   Serial.print( " " ); | ||||||
|  |   Serial.println( sender->id ); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void initWebUI (void){ | ||||||
|  |  | ||||||
|  |   uint16_t tab1 = ESPUI.addControl( ControlType::Tab, "Settings 1", "Settings 1" ); | ||||||
|  |   uint16_t tab2 = ESPUI.addControl( ControlType::Tab, "Settings 2", "Settings 2" ); | ||||||
|  |   uint16_t tab3 = ESPUI.addControl( ControlType::Tab, "Settings 3", "Settings 3" ); | ||||||
|  |  | ||||||
|  |   // shown above all tabs | ||||||
|  |   status = ESPUI.addControl( ControlType::Label, "Status:", "Stop", ControlColor::Turquoise ); | ||||||
|  |  | ||||||
|  |   uint16_t select1 = ESPUI.addControl( ControlType::Select, "Select:", "", ControlColor::Alizarin, tab1, &selectExample ); | ||||||
|  |   ESPUI.addControl( ControlType::Option, "Option1", "Opt1", ControlColor::Alizarin, select1 ); | ||||||
|  |   ESPUI.addControl( ControlType::Option, "Option2", "Opt2", ControlColor::Alizarin, select1 ); | ||||||
|  |   ESPUI.addControl( ControlType::Option, "Option3", "Opt3", ControlColor::Alizarin, select1 ); | ||||||
|  |    | ||||||
|  |   ESPUI.addControl( ControlType::Text, "Text Test:", "a Text Field", ControlColor::Alizarin, tab1, &textCall ); | ||||||
|  |  | ||||||
|  |   // tabbed controls | ||||||
|  |   ESPUI.addControl( ControlType::Label, "Millis:", "0", ControlColor::Emerald, tab1 ); | ||||||
|  |   button1 = ESPUI.addControl( ControlType::Button, "Push Button", "Press", ControlColor::Peterriver, tab1, &buttonCallback ); | ||||||
|  |   ESPUI.addControl( ControlType::Button, "Other Button", "Press", ControlColor::Wetasphalt, tab1, &buttonExample ); | ||||||
|  |   ESPUI.addControl( ControlType::PadWithCenter, "Pad with center", "", ControlColor::Sunflower, tab2, &padExample ); | ||||||
|  |   ESPUI.addControl( ControlType::Pad, "Pad without center", "", ControlColor::Carrot, tab3, &padExample ); | ||||||
|  |   switchOne = ESPUI.addControl( ControlType::Switcher, "Switch one", "", ControlColor::Alizarin, tab3, &switchExample ); | ||||||
|  |   ESPUI.addControl( ControlType::Switcher, "Switch two", "", ControlColor::None, tab3, &otherSwitchExample ); | ||||||
|  |   ESPUI.addControl( ControlType::Slider, "Slider one", "30", ControlColor::Alizarin, tab1, &slider ); | ||||||
|  |   ESPUI.addControl( ControlType::Slider, "Slider two", "100", ControlColor::Alizarin, tab3, &slider ); | ||||||
|  |   ESPUI.addControl( ControlType::Number, "Number:", "50", ControlColor::Alizarin, tab3, &numberCall ); | ||||||
|  |  | ||||||
|  |   ESPUI.begin("ESPUI Control"); | ||||||
|  | } | ||||||
|  |  | ||||||
							
								
								
									
										11
									
								
								Software/ChainLube/test/README
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								Software/ChainLube/test/README
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | |||||||
|  |  | ||||||
|  | This directory is intended for PlatformIO Unit Testing and project tests. | ||||||
|  |  | ||||||
|  | Unit Testing is a software testing method by which individual units of | ||||||
|  | source code, sets of one or more MCU program modules together with associated | ||||||
|  | control data, usage procedures, and operating procedures, are tested to | ||||||
|  | determine whether they are fit for use. Unit testing finds problems early | ||||||
|  | in the development cycle. | ||||||
|  |  | ||||||
|  | More information about PlatformIO Unit Testing: | ||||||
|  | - https://docs.platformio.org/page/plus/unit-testing.html | ||||||
							
								
								
									
										5
									
								
								Software/ChainLube/wifi_credentials.example.ini
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								Software/ChainLube/wifi_credentials.example.ini
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | |||||||
|  | [common] | ||||||
|  | build_flags = | ||||||
|  |   -DWIFI_SSID='"Wifi-SSID"' | ||||||
|  |   -DWIFI_PASSWORD='"Wifi-Password"' | ||||||
|  |   -DADMIN_PASS='"adminpass"' | ||||||
		Reference in New Issue
	
	Block a user