lamemakes / pilot-drive Goto Github PK
View Code? Open in Web Editor NEWAn open source vehicle headunit built in Python
Home Page: https://pilot-drive.readthedocs.io/
License: GNU General Public License v3.0
An open source vehicle headunit built in Python
Home Page: https://pilot-drive.readthedocs.io/
License: GNU General Public License v3.0
It would be great if functionality existed to log the data displayed by the OBD functionality to file on the local system.
This is an option that should exist within the UI rather than the config.json
, as a user should be able to very easily enable/disable it, create new logs, and even specify which OBD fields they want logged (see Add a new OBDII/ELM327 stat to query)
This would be a reasonably large feature, requiring sizable changes on both the UI & backend.
Putting this here to keep track and outline the issue in case anyone was feeling up the the task.
Basically Bluetooth will need a refactor. As it stands, the Bluetooth service does not run on it's own Process. It is leveraged by other services (ie. media & phone/ANCS) to easily get BluezMediaPlayer and BluezDevice objects. This approach currently requires the service using Bluetooth to keep track of devices and make appropriate bluetooth state pushes to the UI.
This is icky and adds a lot of complexity & room for error to the overall program, along with making it hard to leverage the Bluetooth service for any service down the line.
The ideal solution here would be to make the Bluetooth service more self-contained, less reliant on external services, and easier to access APIs. This was my initial approach as can be seen here, but this seemed to put a lot of strain on DBus as accessing Bluetooth properties for the latest info/states required accessing of the dasbus proxy every time. Can be it's own process, but I'm trying to avoid process creation unless absolutely needed.
Rage on ๐ซก
When PILOT Drive is installed on a host machine that doesn't have bluetooth capabilities, the Bluetooth service breaks with no indication to the user via the UI
A lack of Bluetooth hardware is gracefully handled, and in the UI the user is alerted that there will be limited functionality (Bluetooth media, ANCS, and rfcomm OBD communication are all disabled)
An error occurs with no indication to the user
While it may seem like this is nearly the full functionality of PILOT Drive now other media avenues such as local files and aux input are on the horizon, so it's important a lack of Bluetooth hardware is supported.
When a null/improperly specified serial port is specified within the settings.json, PILOT Drive keeps trying to connect resulting in a high resource consumption and a serious slowing down of systems like the Raspberry Pi 4.
Install PILOT Drive, and in /etc/pilot-drive/config/settings.json
copy the following lines to enable vehicle stats, but without a proper port:
"vehicle": {
"enabled": true,
"port": null,
...
}
After a few connection attempts, a timeout limit is hit and the user is notified in the vehicle tab that the connection to the car failed.
An attempt to connect to the specified serial port (even if null) is continuously made, spamming logs and severely slowing down the host machine.
The setup tool, located here needs a full overhaul in terms of refactoring. What was originally supposed to be a small script used to setup PILOT Drive has grown significantly and now needs to be broken down and refined into vaguely the following:
pilot-drive
parent folder and like other modules separated into exceptions, constants, and business logic.raspi-config
if that would make sense in this scenario.When playing a bluetooth track that contains duration and position (progress timestamp) data, the progress bar is frequently not accurate, finishing largely before a song is over, or not completing when a song does.
The progress bar matches the proper timestamp
The progress bar is inaccurate to the actually playback timestamp
The progress bar about to complete
The completed progress bar
The actual song progress, not even halfway (jump scare)
This behavior is seemingly random, and the progress bar seems to be hit or miss, but when it's off it's way off. My guess is that this is due to the setInterval implementation and the inaccuracies of async time keeping
When utilizing the sudo pilot-drive --setup
tool, if a feature is previously enabled (ie. Android/ADB), then setup is ran again to disable said tool (ie. upon being asked to enable Android, opting for no), no changes will be made to the /etc/pilot-drive/config/settings.json
and the mentioned feature will remain enabled.
/etc/pilot-drive/config/settings.json
to: "phone": {
"enabled": true,
"type": "android"
},
sudo pilot-drive --setup
N
when prompted to setup & install an android deviceThe phone field in /etc/pilot-drive/config/settings.json
is disabled or does not contain the disabled android
type
Nothing is updated in the settings.json
This issue relates to #20.
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.