dcc-ex / ex-t3-wifi Goto Github PK
View Code? Open in Web Editor NEWESP32 based WiFi throttle for DCC++
License: GNU General Public License v3.0
ESP32 based WiFi throttle for DCC++
License: GNU General Public License v3.0
Describe the bug
Running Visual Studio Code app in Linux
Note BMP.cpp and BMP.h are dated 2022/12/08; Img.cpp and Img.h are dated 2022/11/29
snippet of the code complie log pasted below:
"In file included from lib/UI/Img/Img.cpp:2:
lib/UI/Img/BMP.h:9:31: error: expected class-name before '{' token
class BMP : public ImgHandler {
^
lib/UI/Img/Img.cpp: In static member function 'static Img* Img::load(fs::File)':
lib/UI/Img/Img.cpp:9:25: error: cannot convert 'BMP*' to 'Img*' in return
return new BMP(img);
^
*** [.pio/build/firebeetle2/lib843/UI/Img/Img.cpp.o] Error 1"
To Reproduce
Steps to reproduce the behavior:
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Compiles to end w/o error code
Screenshots or debug output
If applicable, add screenshots or debug output to help explain your problem.
Debug output can be obtained from the serial monitor
Additional info
Executing task in folder EX-T3-WiFi-master: platformio run --environment firebeetle2
Processing firebeetle2 (platform: espressif32@^5.2.0; board: firebeetle2; framework: arduino)
Would it be possible to add a method for sorting the loco list?
Either automatic by DCC address, or alphabetical by name, or manually using draging on the web interface would be fine by me.
Hi,
I've recently built one of the T3 throttles. After a couple of early mistakes(not uploading the Filesystem Image and the code), I was able to get my screen displaying the throttle. I wasn't able to connect to the throttle settings by using DCCEX but could when I used the IP address of the throttle on my network. I then setup a couple of locos and a custom function screen. All of this seemed to work correctly. However, when I then tried to enter a loco, by number or name, I get the next screen with no function buttons and no speed or direction information. I have checked a LocoNet viewer and there is no information coming from the T3 throttle. I get information from iPhone and Android throttles but not the T3. My CS sees the T3 and the screen indicates both WiFi and CS connection,
I think it must just be a communication link that I overlooked but I am at a loss. I have checked my wiring and programming several times and not found any errors or mistakes.
Could anyone please offer some suggestions as to what to do next. I can provide more info if you give me some idea of what.
Fails during compilation with the following output:
lots of good stuff then
Compiling .pio\build\firebeetle2\FrameworkArduino\stdlib_noniso.c.o
Compiling .pio\build\firebeetle2\FrameworkArduino\wiring_pulse.c.o
Compiling .pio\build\firebeetle2\FrameworkArduino\wiring_shift.c.o
In file included from lib/UI/Img/Img.cpp:2:
lib/UI/Img/BMP.h:9:31: error: expected class-name before '{' token
class BMP : public ImgHandler {
^
lib/UI/Img/Img.cpp: In static member function 'static Img* Img::load(fs::File)':
lib/UI/Img/Img.cpp:9:25: error: cannot convert 'BMP*' to 'Img*' in return
return new BMP(img);
^
*** [.pio\build\firebeetle2\lib258\UI\Img\Img.cpp.o] Error 1
Describe the bug
Exploration of JMRI WiThrottle server support with DCC EX Throttle.
To Reproduce
Steps to reproduce the behavior:
N/A
Expected behavior
Functionality to use throttle with JMRI WiThrottle server.
Screenshots or debug output
If applicable, add screenshots or debug output to help explain your problem.
N/A
Additional info
Option to set a pin code that will be required to change WiFi or throttle settings.
Not a problem but an observation:
NEXT
In my case I have ordered my parts and started 3D printing the case.
While awaiting delivery I have been reading and re-reading what I can.
I like what I have seen but some polish here could really raise the profile
Extra button on LocoUI
to emergency stop current loco.
Describe the bug
When in the loco screen all I have is fwd & rev and speed. Seems like there should be more "stuff" Is this normal? The fwd ,rev and speed functions work as they should as far as I can tell. Followed the code upload directions to the letter. (pretty sure anyway)
See attached picture.
Screenshots or debug output
If applicable, add screenshots or debug output to help explain your problem.
In the setup.md instructions at the bottom it indicates
If your CS is connected to your local WiFi
The server and port are dccex and 2560 by default, you'll only need to change these if you changed them on your Command Station
This was not my experience. I needed to replace the server name with the ip address of my CS on my local network.
lots of compile errors in platformio as listed below. I know its just a few simple problems or just me being thick..but..Help!:
Compiling .pio\build\firebeetle2\src\WiFiUI.cpp.o
Compiling .pio\build\firebeetle2\src\main.cpp.o
src/Locos.cpp: In member function 'void Locos::add(uint16_t)':
src/Locos.cpp:21:13: error: 'find' is not a member of 'std'
auto it = std::find(_locos.begin(), _locos.end(), address);
^
src/Locos.cpp: In member function 'uint16_t Locos::remove()':
src/Locos.cpp:36:13: error: 'find' is not a member of 'std'
auto it = std::find(_locos.begin(), _locos.end(), address);
^
Compiling .pio\build\firebeetle2\lib7d3\WiFi\WiFiGeneric.cpp.o
Compiling .pio\build\firebeetle2\lib7d3\WiFi\WiFiMulti.cpp.o
Compiling .pio\build\firebeetle2\lib7d3\WiFi\WiFiSTA.cpp.o
Compiling .pio\build\firebeetle2\lib7d3\WiFi\WiFiScan.cpp.o
Compiling .pio\build\firebeetle2\lib7d3\WiFi\WiFiServer.cpp.o
Compiling .pio\build\firebeetle2\lib7d3\WiFi\WiFiUdp.cpp.o
In file included from lib/UI/UI.h:8:0,
from src/SettingsUI.h:4,
from src/SettingsUI.cpp:1:
lib/UI/Elements/Button.h: In constructor 'Button::Appearance::Appearance(const String&, uint16_t, uint16_t, uint16_t, const String&)':lib/UI/Elements/Button.h:17:18: error: 'Button::Appearance::border' will be initialized after [-Werror=reorder]
uint16_t border;
^
lib/UI/Elements/Button.h:14:16: error: 'String Button::Appearance::icon' [-Werror=reorder]
String icon;
^
lib/UI/Elements/Button.h:19:9: error: when initialized here [-Werror=reorder]
Appearance(const String &label, uint16_t color, uint16_t fill, uint16_t border, const String &icon = "")
^
In file included from lib/UI/UI.h:8:0,
from src/LocoByNameUI.h:4,
from src/LocoByNameUI.cpp:1:
lib/UI/Elements/Button.h: In constructor 'Button::Appearance::Appearance(const String&, uint16_t, uint16_t, uint16_t, const String&)':lib/UI/Elements/Button.h:17:18: error: 'Button::Appearance::border' will be initialized after [-Werror=reorder]
uint16_t border;
^
lib/UI/Elements/Button.h:14:16: error: 'String Button::Appearance::icon' [-Werror=reorder]
String icon;
^
lib/UI/Elements/Button.h:19:9: error: when initialized here [-Werror=reorder]
Appearance(const String &label, uint16_t color, uint16_t fill, uint16_t border, const String &icon = "")
^
In file included from lib/UI/UI.h:8:0,
from src/MenuUI.h:4,
from src/MenuUI.cpp:1:
lib/UI/Elements/Button.h: In constructor 'Button::Appearance::Appearance(const String&, uint16_t, uint16_t, uint16_t, const String&)':lib/UI/Elements/Button.h:17:18: error: 'Button::Appearance::border' will be initialized after [-Werror=reorder]
uint16_t border;
^
lib/UI/Elements/Button.h:14:16: error: 'String Button::Appearance::icon' [-Werror=reorder]
String icon;
^
lib/UI/Elements/Button.h:19:9: error: when initialized here [-Werror=reorder]
Appearance(const String &label, uint16_t color, uint16_t fill, uint16_t border, const String &icon = "")
^
In file included from lib/UI/UI.h:8:0,
from src/ProgramUI.h:4,
from src/ProgramUI.cpp:1:
lib/UI/Elements/Button.h: In constructor 'Button::Appearance::Appearance(const String&, uint16_t, uint16_t, uint16_t, const String&)':lib/UI/Elements/Button.h:17:18: error: 'Button::Appearance::border' will be initialized after [-Werror=reorder]
uint16_t border;
^
lib/UI/Elements/Button.h:14:16: error: 'String Button::Appearance::icon' [-Werror=reorder]
String icon;
^
lib/UI/Elements/Button.h:19:9: error: when initialized here [-Werror=reorder]
Appearance(const String &label, uint16_t color, uint16_t fill, uint16_t border, const String &icon = "")
^
Compiling .pio\build\firebeetle2\lib55a\ESP Async WebServer\AsyncEventSource.cpp.o
*** [.pio\build\firebeetle2\src\Locos.cpp.o] Error 1
In file included from lib/UI/UI.h:8:0,
from src/LocoUI.h:5,
from src/LocoUI.cpp:1:
lib/UI/Elements/Button.h: In constructor 'Button::Appearance::Appearance(const String&, uint16_t, uint16_t, uint16_t, const String&)':lib/UI/Elements/Button.h:17:18: error: 'Button::Appearance::border' will be initialized after [-Werror=reorder]
uint16_t border;
^
lib/UI/Elements/Button.h:14:16: error: 'String Button::Appearance::icon' [-Werror=reorder]
String icon;
^
lib/UI/Elements/Button.h:19:9: error: when initialized here [-Werror=reorder]
Appearance(const String &label, uint16_t color, uint16_t fill, uint16_t border, const String &icon = "")
^
In file included from src/SettingsUI.h:4:0,
from src/SettingsUI.cpp:1:
lib/UI/UI.h: In instantiation of 'T* UI::addElement(Args&& ...) [with T = Header; Args = {int, int, int, int, const char (&)[16]}]':
src/SettingsUI.cpp:10:55: required from here
lib/UI/UI.h:23:114: error: invalid use of 'void'
return static_cast<T*>(_elements.emplace_back(std::make_unique(_tft, std::forward(args)...)).get());
^
lib/UI/UI.h: In instantiation of 'T* UI::addElement(Args&& ...) [with T = Label; Args = {int, int, int, int, const char (&)[12]}]':
src/SettingsUI.cpp:12:50: required from here
lib/UI/UI.h:23:114: error: invalid use of 'void'
In file included from src/LocoByNameUI.h:4:0,
from src/LocoByNameUI.cpp:1:
lib/UI/UI.h: In instantiation of 'T* UI::addElement(Args&& ...) [with T = Header; Args = {int, int, int, int, const char (&)[12]}]':
src/LocoByNameUI.cpp:9:51: required from here
lib/UI/UI.h:23:114: error: invalid use of 'void'
return static_cast<T*>(_elements.emplace_back(std::make_unique(_tft, std::forward(args)...)).get());
^
lib/UI/UI.h: In instantiation of 'T* UI::addElement(Args&& ...) [with T = Button; Args = {int, int, int, int, char (&)[2]}]':
src/SettingsUI.cpp:13:105: required from here
lib/UI/UI.h:23:114: error: invalid use of 'void'
lib/UI/UI.h: In instantiation of 'T* UI::addElement(Args&& ...) [with T = Button; Args = {int, short unsigned int&, int, int, const char*}]':
src/LocoByNameUI.cpp:80:70: required from here
lib/UI/UI.h:23:114: error: invalid use of 'void'
lib/UI/UI.h: In instantiation of 'T* UI::addElement(Args&& ...) [with T = Label; Args = {int, int, int, int, const char (&)[10]}]':
src/SettingsUI.cpp:16:49: required from here
lib/UI/UI.h:23:114: error: invalid use of 'void'
lib/UI/UI.h: In instantiation of 'T* UI::addElement(Args&& ...) [with T = Button; Args = {int, int, int, int, char (&)[12]}]':
src/SettingsUI.cpp:17:106: required from here
lib/UI/UI.h:23:114: error: invalid use of 'void'
lib/UI/UI.h: In instantiation of 'T* UI::addElement(Args&& ...) [with T = Label; Args = {int, int, int, int, const char (&)[13]}]':
src/SettingsUI.cpp:28:52: required from here
lib/UI/UI.h:23:114: error: invalid use of 'void'
lib/UI/UI.h: In instantiation of 'T* UI::addElement(Args&& ...) [with T = Label; Args = {int, int, int, int, const char (&)[21]}]':
src/SettingsUI.cpp:32:60: required from here
lib/UI/UI.h:23:114: error: invalid use of 'void'
lib/UI/UI.h: In instantiation of 'T* UI::addElement(Args&& ...) [with T = Button; Args = {int, int, int, int, char (&)[14]}]':
src/SettingsUI.cpp:38:95: required from here
lib/UI/UI.h:23:114: error: invalid use of 'void'
In file included from src/MenuUI.h:4:0,
from src/MenuUI.cpp:1:
lib/UI/UI.h: In instantiation of 'T* UI::addElement(Args&& ...) [with T = Header; Args = {int, int, int, int, const char (&)[5]}]':
src/MenuUI.cpp:8:44: required from here
lib/UI/UI.h:23:114: error: invalid use of 'void'
return static_cast<T*>(_elements.emplace_back(std::make_unique(_tft, std::forward(args)...)).get());
^
lib/UI/UI.h: In instantiation of 'T* UI::addElement(Args&& ...) [with T = Button; Args = {int, int, int, int, const char (&)[11]}]':
src/MenuUI.cpp:10:47: required from here
lib/UI/UI.h:23:114: error: invalid use of 'void'
lib/UI/UI.h: In instantiation of 'T* UI::addElement(Args&& ...) [with T = Button; Args = {int, int, int, int, const char (&)[8]}]':
src/MenuUI.cpp:13:46: required from here
lib/UI/UI.h:23:114: error: invalid use of 'void'
lib/UI/UI.h: In instantiation of 'T* UI::addElement(Args&& ...) [with T = Button; Args = {int, int, int, int, const char (&)[9]}]':
src/MenuUI.cpp:16:47: required from here
lib/UI/UI.h:23:114: error: invalid use of 'void'
lib/UI/UI.h: In instantiation of 'T* UI::addElement(Args&& ...) [with T = Header; Args = {int, int, int, int, const char (&)[12]}]':
src/MenuUI.cpp:25:52: required from here
lib/UI/UI.h:23:114: error: invalid use of 'void'
lib/UI/UI.h: In instantiation of 'T* UI::addElement(Args&& ...) [with T = Button; Args = {int, int, int, int, const char (&)[3]}]':
src/MenuUI.cpp:27:40: required from here
lib/UI/UI.h:23:114: error: invalid use of 'void'
lib/UI/UI.h: In instantiation of 'T* UI::addElement(Args&& ...) [with T = Button; Args = {int, int, int, int, const char (&)[4]}]':
src/MenuUI.cpp:30:43: required from here
lib/UI/UI.h:23:114: error: invalid use of 'void'
lib/UI/UI.h: In instantiation of 'T* UI::addElement(Args&& ...) [with T = Header; Args = {int, int, int, int, const char (&)[6]}]':
src/MenuUI.cpp:33:46: required from here
lib/UI/UI.h:23:114: error: invalid use of 'void'
lib/UI/UI.h: In instantiation of 'T* UI::addElement(Args&& ...) [with T = Button; Args = {int, int, int, int, const char (&)[7], const char (&)[8], bool, Button::State}]':
src/MenuUI.cpp:35:141: required from here
lib/UI/UI.h:23:114: error: invalid use of 'void'
lib/UI/UI.h: In instantiation of 'T* UI::addElement(Args&& ...) [with T = Button; Args = {int, int, int, int, const char (&)[8], const char (&)[9], bool, Button::State}]':
src/MenuUI.cpp:42:131: required from here
lib/UI/UI.h:23:114: error: invalid use of 'void'
lib/UI/UI.h: In instantiation of 'T* UI::addElement(Args&& ...) [with T = Button; Args = {int, int, int, int, const char (&)[12], bool, Button::State}]':
src/MenuUI.cpp:56:121: required from here
lib/UI/UI.h:23:114: error: invalid use of 'void'
lib/UI/UI.h: In instantiation of 'T* UI::addElement(Args&& ...) [with T = Header; Args = {int, int, int, int, const char (&)[9]}]':
src/MenuUI.cpp:59:49: required from here
lib/UI/UI.h:23:114: error: invalid use of 'void'
lib/UI/UI.h: In instantiation of 'T* UI::addElement(Args&& ...) [with T = Button; Args = {int, int, int, int, const char (&)[14]}]':
src/MenuUI.cpp:61:51: required from here
lib/UI/UI.h:23:114: error: invalid use of 'void'
In file included from src/ProgramUI.h:4:0,
from src/ProgramUI.cpp:1:
lib/UI/UI.h: In instantiation of 'T* UI::addElement(Args&& ...) [with T = Header; Args = {int, int, int, int, const char (&)[13]}]':
src/ProgramUI.cpp:61:52: required from here
lib/UI/UI.h:23:114: error: invalid use of 'void'
return static_cast<T*>(_elements.emplace_back(std::make_unique(_tft, std::forward(args)...)).get());
^
cc1plus.exe: some warnings being treated as errors
lib/UI/UI.h: In instantiation of 'T* UI::addElement(Args&& ...) [with T = Button; Args = {int, int, int, int, const char (&)[14]}]':
src/ProgramUI.cpp:63:53: required from here
lib/UI/UI.h:23:114: error: invalid use of 'void'
cc1plus.exe: some warnings being treated as errors
*** [.pio\build\firebeetle2\src\SettingsUI.cpp.o] Error 1
*** [.pio\build\firebeetle2\src\MenuUI.cpp.o] Error 1
lib/UI/UI.h: In instantiation of 'T* UI::addElement(Args&& ...) [with T = Button; Args = {int, int, int, int, const char (&)[11]}]':
src/ProgramUI.cpp:66:51: required from here
lib/UI/UI.h:23:114: error: invalid use of 'void'
lib/UI/UI.h: In instantiation of 'T* UI::addElement(Args&& ...) [with T = Button; Args = {int, int, int, int, const char (&)[10]}]':
src/ProgramUI.cpp:69:50: required from here
lib/UI/UI.h:23:114: error: invalid use of 'void'
lib/UI/UI.h: In instantiation of 'T* UI::addElement(Args&& ...) [with T = Button; Args = {int, int, int, int, const char (&)[13]}]':
src/ProgramUI.cpp:72:53: required from here
lib/UI/UI.h:23:114: error: invalid use of 'void'
lib/UI/UI.h: In instantiation of 'T* UI::addElement(Args&& ...) [with T = Button; Args = {int, int, int, int, const char (&)[8]}]':
src/ProgramUI.cpp:88:48: required from here
lib/UI/UI.h:23:114: error: invalid use of 'void'
cc1plus.exe: some warnings being treated as errors
lib/UI/UI.h: In instantiation of 'T* UI::addElement(Args&& ...) [with T = Label; Args = {int, int, int, int, const char (&)[11], bool, int}]':
src/ProgramUI.cpp:167:66: required from here
lib/UI/UI.h:23:114: error: invalid use of 'void'
lib/UI/UI.h: In instantiation of 'T* UI::addElement(Args&& ...) [with T = Label; Args = {int, int, int, int, const char*&, bool, short unsigned int&}]':
src/ProgramUI.cpp:172:56: required from here
lib/UI/UI.h:23:114: error: invalid use of 'void'
lib/UI/UI.h: In instantiation of 'T* UI::addElement(Args&& ...) [with T = Button; Args = {int, int, int, int, const char (&)[3]}]':
src/ProgramUI.cpp:173:43: required from here
lib/UI/UI.h:23:114: error: invalid use of 'void'
*** [.pio\build\firebeetle2\src\LocoByNameUI.cpp.o] Error 1
In file included from lib/UI/UI.h:8:0,
from src/WiFiUI.h:4,
from src/WiFiUI.cpp:1:
lib/UI/Elements/Button.h: In constructor 'Button::Appearance::Appearance(const String&, uint16_t, uint16_t, uint16_t, const String&)':lib/UI/Elements/Button.h:17:18: error: 'Button::Appearance::border' will be initialized after [-Werror=reorder]
uint16_t border;
^
lib/UI/Elements/Button.h:14:16: error: 'String Button::Appearance::icon' [-Werror=reorder]
String icon;
^
lib/UI/Elements/Button.h:19:9: error: when initialized here [-Werror=reorder]
Appearance(const String &label, uint16_t color, uint16_t fill, uint16_t border, const String &icon = "")
^
src/LocoUI.cpp: In member function 'virtual void LocoUI::swipe(UI::Swipe)':
src/LocoUI.cpp:229:10: warning: enumeration value 'NONE' not handled in switch [-Wswitch]
switch (swipe) {
^
cc1plus.exe: some warnings being treated as errors
*** [.pio\build\firebeetle2\src\ProgramUI.cpp.o] Error 1
In file included from src/LocoUI.h:5:0,
from src/LocoUI.cpp:1:
lib/UI/UI.h: In instantiation of 'T* UI::addElement(Args&& ...) [with T = Header; Args = {int, int, int, int, String&}]':
src/LocoUI.cpp:30:42: required from here
lib/UI/UI.h:23:114: error: invalid use of 'void'
return static_cast<T*>(_elements.emplace_back(std::make_unique(_tft, std::forward(args)...)).get());
^
lib/UI/UI.h: In instantiation of 'T* UI::addElement(Args&& ...) [with T = Label; Args = {int, int, int, int, const char (&)[7]}]':
src/LocoUI.cpp:32:44: required from here
lib/UI/UI.h:23:114: error: invalid use of 'void'
lib/UI/UI.h: In instantiation of 'T* UI::addElement(Args&& ...) [with T = Label; Args = {int, int, int, int}]':
src/LocoUI.cpp:33:49: required from here
lib/UI/UI.h:23:114: error: invalid use of 'void'
lib/UI/UI.h: In instantiation of 'T* UI::addElement(Args&& ...) [with T = Label; Args = {int, int, int, int, const char (&)[11]}]':
src/LocoUI.cpp:35:50: required from here
lib/UI/UI.h:23:114: error: invalid use of 'void'
lib/UI/UI.h: In instantiation of 'T* UI::addElement(Args&& ...) [with T = Button; Args = {short unsigned int&, short unsigned int&, int, int, Button::Appearance, Button::Appearance, bool&, Button::State}]':
src/LocoUI.cpp:132:9: required from here
lib/UI/UI.h:23:114: error: invalid use of 'void'
In file included from src/WiFiUI.cpp:1:0:
src/WiFiUI.h: At global scope:
src/WiFiUI.h:33:1: error: expected ';' after class definition
}
^
src/ThrottleServer.cpp: In lambda function:
src/ThrottleServer.cpp:61:36: error: 'class fs::File' has no member named 'path'
list.add(String(listFile.path()));
^
src/ThrottleServer.cpp:74:42: error: 'class fs::File' has no member named 'path'
item["file"] = String(listFile.path());
^
In file included from lib/UI/UI.h:8:0,
from src/main.cpp:15:
lib/UI/Elements/Button.h: In constructor 'Button::Appearance::Appearance(const String&, uint16_t, uint16_t, uint16_t, const String&)':lib/UI/Elements/Button.h:17:18: error: 'Button::Appearance::border' will be initialized after [-Werror=reorder]
uint16_t border;
^
lib/UI/Elements/Button.h:14:16: error: 'String Button::Appearance::icon' [-Werror=reorder]
String icon;
^
lib/UI/Elements/Button.h:19:9: error: when initialized here [-Werror=reorder]
Appearance(const String &label, uint16_t color, uint16_t fill, uint16_t border, const String &icon = "")
^
cc1plus.exe: some warnings being treated as errors
*** [.pio\build\firebeetle2\src\LocoUI.cpp.o] Error 1
In file included from src/main.cpp:19:0:
src/WiFiUI.h: At global scope:
src/WiFiUI.h:33:1: error: expected ';' after class definition
}
^
In file included from src/WiFiUI.h:4:0,
from src/WiFiUI.cpp:1:
lib/UI/UI.h: In instantiation of 'T* UI::addElement(Args&& ...) [with T = Header; Args = {int, int, int, int, const char (&)[12]}]':
src/WiFiUI.cpp:18:51: required from here
lib/UI/UI.h:23:114: error: invalid use of 'void'
return static_cast<T*>(_elements.emplace_back(std::make_unique(_tft, std::forward(args)...)).get());
^
lib/UI/UI.h: In instantiation of 'T* UI::addElement(Args&& ...) [with T = Label; Args = {int, int, int, int, const char (&)[1], bool}]':
src/WiFiUI.cpp:20:58: required from here
lib/UI/UI.h:23:114: error: invalid use of 'void'
lib/UI/UI.h: In instantiation of 'T* UI::addElement(Args&& ...) [with T = Header; Args = {int, int, int, int, const char (&)[21]}]':
src/WiFiUI.cpp:25:61: required from here
lib/UI/UI.h:23:114: error: invalid use of 'void'
lib/UI/UI.h: In instantiation of 'T* UI::addElement(Args&& ...) [with T = Label; Args = {int, int, int, int, const char (&)[20], bool}]':
src/WiFiUI.cpp:27:69: required from here
lib/UI/UI.h:23:114: error: invalid use of 'void'
lib/UI/UI.h: In instantiation of 'T* UI::addElement(Args&& ...) [with T = Label; Args = {int, int, int, int, const char (&)[19], bool}]':
src/WiFiUI.cpp:28:72: required from here
lib/UI/UI.h:23:114: error: invalid use of 'void'
lib/UI/UI.h: In instantiation of 'T* UI::addElement(Args&& ...) [with T = Label; Args = {int, int, int, int, const char (&)[21], bool}]':
src/WiFiUI.cpp:29:70: required from here
lib/UI/UI.h:23:114: error: invalid use of 'void'
lib/UI/UI.h: In instantiation of 'T* UI::addElement(Args&& ...) [with T = Label; Args = {int, int, int, int, const char (&)[40], bool}]':
src/WiFiUI.cpp:33:85: required from here
lib/UI/UI.h:23:114: error: invalid use of 'void'
src/main.cpp: In function 'void setup()':
src/main.cpp:357:6: error: 'ARDUINO_EVENT_WIFI_STA_CONNECTED' was not declared in this scope
}, ARDUINO_EVENT_WIFI_STA_CONNECTED);
^
src/main.cpp:363:6: error: 'ARDUINO_EVENT_WIFI_STA_DISCONNECTED' was not declared in this scope
}, ARDUINO_EVENT_WIFI_STA_DISCONNECTED);
^
*** [.pio\build\firebeetle2\src\ThrottleServer.cpp.o] Error 1
cc1plus.exe: some warnings being treated as errors
*** [.pio\build\firebeetle2\src\WiFiUI.cpp.o] Error 1
cc1plus.exe: some warnings being treated as errors
*** [.pio\build\firebeetle2\src\main.cpp.o] Error 1
==================================================== [FAILED] Took 12.22 seconds ====================================================
[For your review - This may clarify what the user should do to ensure the positive voltage is in the correct position.]
The JST-PHR-2P Li-Po battery connector has a red-colored lead representing the positive polarity and when plugged into the socket on the side of the FireBeetle2, should face the back (toward the ESP32 chip) There is a Plus (+) indicator on the underside of the board indicating the battery positive connection.
The user may use a Volt-Ohm-Meter (VOM) to measure the voltage (if charged) to ensure the positive voltage is at the red wire and in the right position (when looking at the connector head-on).
Sometimes I have noticed that I accidently swipe on the screen and it can get a little annoying.
Could you possibly make a button in the settings so you could disable swipe?
When the number of trains is a multiple of 8, not all locos are visible in the list.
For example when there are a total of 16 locos defined, only 2 pages of 7 locos are created. Adding a 17th logo adds a 3rd page with 3 locos, thus 17 are visible.
The same issue happens with 24 locos.
The same issue is also present in the groups list, when a multiple of 8 locos are added to a group.
Iam only really a begginer with using esp32's it would be nice if you could make a step by step instructions to even a video showing how to uploading the code to the esp!
Is your feature request related to a problem? Please describe.
The case encloses electronic components that generate heat and there are no holes/slots for the heat to escape.
Describe the feature you'd like
Perhaps a small slot on the side opposited the switch and USB-C socket would allow heat to escape.
FireBeelte2 - ESP32-E - Max Discharge Current: [email protected] LDO
FireBeetle2 - ESP32-E -Max Charge Current: 500mA
Is the LED on the FireBeetle 2 used to signal errors in uploading the code2.
If so, maybe there could be a way for a small hole to be drilled, so the user could see the light or maybe the screen could provide a warning that the reset button wouldd have to be pushed. Maybe the battery could be moved down so a rod couild be poked into a hole in the base to momentarily reset the switch.
Additional context
Add any other context or screenshots about the feature request here.
Is your feature request related to a problem? Please describe.
I have to read the file to understand what it does - I think the file name should describe what the file contents is describing.
Describe the feature you'd like
Original File Name - New file name
Assembly - WiFi_Throttle_Assembly
Code - Uploading_The_WiFi_Throttle_Code
Locos - Setting_Up_And_Managing_Locos
Menu - WiFI_Throttle_Menu
Decoder Programming - Programming_The_Loco_Decoder
Running - Running_Locos
Settings - WiFi_Throttle_Settings
Setup - WiFi_Throttle_Setup
If you are worried about spaces in the file names , use underscores for spaces (as I suggest).
I also strongly feel that you should use the word "WiFi" in your documentation to emphasize that this is an untethered wireless throttle.
I am in awe when I touch the throttle case components; you did an excellent job in planning and creating the case components - particularly the frame to hold the FireBeetle2, the accelerometer, the rotary encoder and the switch. Kudos to you!
It would be nice if, when users input the network name for the command station, the controller could display a list of available networks, simplifying and expediting the network selection process.
Investigate https://github.com/esphome/esp-web-tools for possible uploading of firmware using a browser.
Notes:
TODO:
accelerometer
and mask password
.Describe the bug
When throttle is connected to wireless network (not in AP mode for setup), throttle receives IP address, setup web page is reachable for 30-60 seconds, then becomes unreachable. Device still pings, but performing telnet to port 80 results in unreachable.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Throttle setup remains reachable for as long as throttle is powered on and connected to wireless network.
Screenshots or debug output
If applicable, add screenshots or debug output to help explain your problem.
Debug output can be obtained from the serial monitor
Additional info
Option to set the dial hold time required to trigger an emergency stop.
In setting up for sta mode IE using my home network the use of DNS didn't work so dccex couldn't be found.
So it changed to sta mode .however what is it's on home network IP address ..I couldn't find it using advanced op scanner?..
I edited the SD card to insert the real IP address of the C's and that worked.
However to manage locos I need to access the throttles web page...without it appearing on the scan I'm stuck.
Any advice?
Describe the bug
I don't know if this is a DCC-EX "thing" or a problem with the throttle itself. When I turn on the DCC-EX power supply and then turn one of my throttles on everything works as it should. I can turn the main and program tracks on and off and all other functions work fine. I then turn off the throttle and set it aside for a while leaving DCC-EX on. When I come back and turn the throttle back on it does not connect to the power supply. The icon showing connection to the PS shows connected but no functions work. After a short time the connection changes to showing disconnected.
BOTH of the throttles I currently have working show this behavior. Only way to get throttles to reconnect to the power supply is to power cycle it. As stated, this may actually be a DCC-EX bug. Not sure.....
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Throttle should connect and function.
This is repeatable and constant.
Additional info
Describe the bug
When entering wireless password for the local Wi-Fi network (not Wi-Fi broadcasted from DCC EX system) and it contains a "$" the wireless network does not connect.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Wireless connects to network.
Screenshots or debug output
If applicable, add screenshots or debug output to help explain your problem.
Debug output can be obtained from the serial monitor
Is your feature request related to a problem? Please describe.
When you have more than one of these they all have the same hostname. This can be a problem when trying to access the web config.
Describe the feature you'd like
The ability to define a custom hostname per throttle.
Additional context
I'm sure this is possible but unsure where to define this before uploading the code.
Hi, not sure if something is missing or just my lack of knowledge! I tried to upload the filesystem but I don’t have the option in platformio. I tried to read up on it and I see it needs the files in the data folder. I see that this exists and the subfolders but I don’t see any css or other file in the data root folder. Should there be one for platformio to detect?? Any help gratefully received! Thanks in advance
When I use the throttle, I randomly encounter speed adjustment issues.
When I want to slow down, the display of the notches behaves erratically and increases the speed instead of reducing it. For example, if I am on speed step 30 and want to reduce the speed to step 26 or 20, the display of the speed step indeed decreases but then, a fraction of a second later, it increases by the value I wanted to decrease and accelerates the locomotive. I have checked the quality of the encoder connections, and there is nothing to report on that front. When I use the JMRI throttle or WiThrottle on my phone (also via a wifi connection), I do not have this problem.
Could this be a software issue? If so, how can I assist in resolving it by producing logs?
Or could the encoder be defective (I do not have a spare part to test)?
Hardware used:
DFRobot EC11 Rotary Encoder SEN0235
DFRobot FireBeetle 2 ESP32-E DFR0654-F
Command station V5.0.7-Prod
Otherwise, a huge thank you for this amazing project of great quality, which deserves to be better known!
I am following your project and replicating the DCC WiFi Throttle. I will send you an email on my correspondence re: the 3D case. You may find it interesting.
sd
folder and not the folder itself, the files need to be copied to the root of the SD card."/icons/brake-off.bmp
/icons/brake-on.bmp
/icons/bulb-off.bmp
/icons/bulb-on.bmp
/icons/compressor-off.bmp
/icons/compressor-on.bmp
/icons/engine-off.bmp
/icons/engine-on.bmp
/icons/fan-off.bmp
/icons/fan-on.bmp
/icons/flange-squeal-off.bmp
/icons/flange-squeal-on.bmp
/icons/horn-off.bmp
/icons/horn-on.bmp
/icons/two-horn-off.bmp
/icons/two-horn-on.bmp
/icons/whistle-off.bmp
/icons/whistle-on.bmp
default.json
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.