Here is a short preview of a new app I was working for the past two months (should have been two weeks :) ).
When I started working on the app I was thinking I will be using X11 only but as I progressed in to that I realized that it will be a bit to slow so decided to look in to using OpenGL in order to take advantage of the Intel integrated GPU in the Atom X5.
OpenGL was not as simple as I was thinking so even with the help of multiple LLM's it took quite some time before I build this app but now that is basically done I'm fairly happy with the decision as it has way better performance with the app using just around 1% of the CPU compute.
I will sell this DELL mini computers with preinstalled Linux (did not decided what Linux version likely Porteux or MiniOS) and of course the app and will be sold for 79CAD (it is a refurbished used item that is why the price is low).
I have about 100 of this (I will keep a few for my own use) but there are plenty so should be available the entire year or even more.
I will only provide the mini computer and a power cable 4x1.7mm (need to get this in a week or two). but you will need a 12V DC-DC converter at least 1.5A rated. Here is a photo of the one I'm using. And you also maybe need a DP (Display Port) to HDMI adapter cable unless your monitor has Display Port input. The mini computer has two DP connections so you can connect two monitors if you want. The adapter cable is less than $5 on Amazon and plenty of version (all will work as they are just a cable adapter just connectors and wires).
What is nice is that with a single USB cable (white one in the photo) I can power the monitor (just around 3W) and it has touch screen so you do not even need a keyboard and mouse most of the time as you can use the app buttons and cursors with the touchscreen.
The black USB cable is going to the SBMS0
The computer is very small it looks larger in the photo than it actually is
Just connected the computer yesterday to the SBMS0 so less than 24h will try to take a screenshot by the end of the day. It is cloudy today and snowing see the photo below that I took around the same time
And here are some screenshots and will try to explain the functionality.
The app working in a window mode but likely you will want to use it full screen by pushing the button just under the close button (assuming symbol is evident). Under that there is the signal button that selects between 3 types of graphs (you will see in the other screenshots) then the yellow button is to change the units in A/Ah or W/Wh and last button the purple one is to select if E_day (energy for the day) or E_usr (energy that is user resealable by holding down the button for 5 seconds).
The rest of the screenshots are with the app in full screen mode. This is taken around 10:30 this morning you can see date and time (from SBMS0) in the top left corner the rest of the data on that top bar are just debug and performance data and can be disabled so you will not need to see those. This screenshot shows live data. There is electron flow in wires represented by the small squares you see in below screenshot that changes depending on charge source and what supplies the Load.
The below screenshot shows the two cursors that you can control with a mouse or touchscreen. The graph on the left shows the last 24h with a 1 minute resolution so 1440minute in 24h thus 1440 pixels (the reason why 1920x1080p is a great resolution for the app) and the graph on the right is a zoom around that minute you selected with the yellow cursor a total of 8 minute (480seconds so 480pixels + 1440 = 1920).
The cyan cursor can select at a resolution of 1 second in the zoom window so you basically have access to all data for last 24h at 1 second resolution a total of 86400 data points times almost 40 different signals so a lot of data.
Here is the second type of signal you can display by pushing the green signal button and this shows all cell voltages graphed over time at 1 second resolution. You can observe the cell voltage variation due to cell balancing and the one minute cell voltage averages are displayed above the 24h graph.
Pushing the green signal button one more time shows the third type of graph that contains the SOC, total battery voltage, ADC2, ADC3 and internal and external temperature graph again all can be zoomed in to a 1 second resolution and one minute average at yellow cursor position is displayed above the 24h graph. The cyan cursor data is displayed in the top half where normally it will be live data thus the warning !Log Data.
Pushing green signal button one more time brings you back to energy graph.
Other functionality that is not seen in the screenshot is that the app logs all data to files one file per day about 5.2MB in size compressed data and I will have a separate terminal only app that can convert those files to .csv
Also there is a settings file called SBMS.cfg that you can open with a text editor and make a lot of settings including being able to change all the colors if you do not like the ones I selected.
Below I pasted the content of that file and what you can change. DVI resistance allows you to use the ADC2 and ADC3 to measure the power and current for diversion heating just need to provide the heating element resistance.
All you need to setup this is to set the SBMS UART to 1 to enable it set the baud rate to 115200 and log interval to 1 second and connect the USB cable from computer to SBMS0 (it should handle a 20ft 6m cable with no issues but I only tested with a 10ft 3m cable as that is all I have).
// User settings for the electrodacus application.
DIV1_RESISTANCE=1000000 //Heating element Div1 resistance in microOhms 50000uOhms to 10000000uOhms
DIV2_RESISTANCE=500000 //Heating element Div1 resistance in microOhms 50000uOhms to 10000000uOhms
DEBUG_ENABLE=2 //Debug 1=raw data printed on top bar 2=raw data but also frame timing in us 3=raw data and just the total framing time in ms 4=only total framing in ms 5=no debug data.
FONT_TYPE=5 //Font types 1=Regular RobotMono 2=Bold RobotMono 3=Bolder RobotMono 4=Thin RobotMono 5=UbuntuMono Regular(set FONT_SIZE at 90 for this one).
FONT_SIZE=90 // Font Size keep it at 100 except for Font Type 5 where 90 is recomended
// Set ttyUSB port maybe to /dev/ttyUSB1 if the ttyUSB0 is used by something else or maybe you want to monitor two SBMS at the same time in that case you can have one app monitor on USB0 and the other USB1
SERIAL_PORT=/dev/ttyUSB0
// Make sure you set the same baud rate on the SBMS in Device Settings / UART menu and also set UART Data Log to 1 and Log interval to 1s
BAUD_RATE=B115200
// R,G,B,Alpha 0.0 .. 1.0 this is valid for all color settings you can have two or even 3 digits for precision say 0.653
COLOR_BACKGROUND=0.0,0.0,0.0,1.0 // Background collor
COLOR_UNITS=0.0,0.0,0.0,0.9 // Units and Labels color
COLOR_BACKGROUND_REC=0.0,0.0,0.0,1.0 //If you need a diffrent background while plaing with graph recorded data but looks best if you leave it as COLOR_BACKROUND
COLOR_MENU1=1.0,1.0,0.7,0.9 //cursor 1 color
COLOR_MENU2=0.7,1.0,1.0,0.9 //cursor 2 color
COLOR_MENU3=0.0,0.0,0.0,1.0 //24h graph background
COLOR_MENU4=0.0,0.0,0.0,1.0 //8 minute graph background
COLOR_MENU5=0.60,0.60,0.60,0.5 //24h graph grid lines
COLOR_MENU6=0.60,0.60,0.60,0.5 //8 minute graph grid lines
COLOR_MENU7=0.30,0.30,0.30,1.0 //24h and 8 minute graph axis line
COLOR_MENU8=0.0,0.8,0.8,0.6 //8 minute graph x axis value
COLOR_MENU9=0.84,0.84,0.0,0.55 //24h graph x axis values
COLOR_MENU10=0.5,0.6,0.5,0.7 //8 minute graph y axis values
COLOR_MENU11=0.5,0.6,0.5,0.7 //24h graph y axis values
COLOR_MENU12=0.18,0.20,0.18,1.0 //cell bargraph background
COLOR_MENU13=0.95,0.95,0.95,1.0 //wires color
COLOR_MENU14=1.0,1.0,1.0,0.9 //values color
COLOR_MENU15=0.6,0.7,0.6,1.0 //Date color
COLOR_MENU16=0.85,0.9,0.85,1.0 //Time color
COLOR_MENU17=0.72,0.82,0.72,1.0 //raw data color
COLOR_MENU18=0.18,0.20,0.18,0.9 //Flag background color
COLOR_MENU19=0.64,0.92,0.42,0.8 //non error flags collor
COLOR_MENU20=0.9,0.4,0.1,0.8 //error flag collor
COLOR_MENU21=0.6,0.6,0.6,0.7 //flag text color inactive
COLOR_MENU22=0.1,0.1,0.1,0.9 //flag text color active
COLOR_MENU23=0.14,0.12,0.72,1.0 //Buttons background collor
COLOR_MENU24=0.4,0.525,0.212,1.0 //Electrodacus logo color dark
COLOR_MENU25=0.741,0.933,0.6,1.0 //Electrodacus logo color light
COLOR_MENU26=0.18,0.20,0.18,1.0 //Top header collor
SIGNAL_COLOR_DIV_LINE=0.9,0.0,0.0,0.7 //Signal colors from this point should be self evident for waht signal each line is.
SIGNAL_COLOR_BATT_LINE=0.4,0.75,0.0,0.7
SIGNAL_COLOR_LOAD_LINE=0.5,0.0,0.9,0.7
SIGNAL_COLOR_PV_LINE=0.9,0.75,0.0,0.7
SIGNAL_COLOR_DIV_FILL=0.9,0.0,0.0,0.3
SIGNAL_COLOR_BATT_FILL=0.4,0.75,0.0,0.3
SIGNAL_COLOR_LOAD_FILL=0.5,0.0,0.9,0.3
SIGNAL_COLOR_PV_FILL=0.9,0.75,0.0,0.3
SIGNAL_COLOR_C1=0.8,0.0,0.0,0.9
SIGNAL_COLOR_C2=1.0,0.5,0.5,0.9
SIGNAL_COLOR_C3=0.0,0.8,0.0,0.9
SIGNAL_COLOR_C4=0.5,1.0,0.5,0.9
SIGNAL_COLOR_C5=0.0,0.4,0.8,0.9
SIGNAL_COLOR_C6=0.4,0.6,1.0,0.9
SIGNAL_COLOR_C7=0.6,0.2,0.9,0.9
SIGNAL_COLOR_C8=1.0,0.5,1.0,0.9
SIGNAL_COLOR_SOC=0.7,0.7,0.7,0.8
SIGNAL_COLOR_VBATT=0.4,0.9,0.0,0.8
SIGNAL_COLOR_ADC3=1.0,0.0,0.5,0.8
SIGNAL_COLOR_ADC2=0.9,0.4,0.8,0.8
SIGNAL_COLOR_IT=1.0,0.9,0.5,0.8
SIGNAL_COLOR_ET=0.2,0.35,0.75,0.8