# OVMS3 Fork

I forked OVMS3 Original project to work on a vehicle integration for my Renault Zoe Phase 2.

Orignal project: https://github.com/openvehicles/Open-Vehicle-Monitoring-System-3

## Firmware-Version

The fork is fixed at Version 3.3.003 with their provided modified ESP-IDF
## To-Do List

- [X] Integrate my server to assistant and server recommendation and add CA as well
- [X] Integrate PIDs for reading values like odometer, battery cell voltage and so on, via OBD connector (because of gateway read-only)
- [X] Stable working firmware with reliable readings
- [ ] Create a custom dashboard, for more car status informations
- [ ] Accessing CAN bus after gateway to get full access to controllers use all available CAN bus interfaces OVMS hardware has
- [ ] Get more useful PIDs with direct access of CAN busses
- [ ] Try to control things like wake-up and charge control
- [ ] Implement own control routines like control cabine ptc heaters to heat while charging (use UDS test commands to enable them)

## Releases

Successful build will be uploaded to my own OTA ovms-server at https://ovms-ota.bit-cloud.de or under Releases tab so self host them. You can just enter my OTA server URL under Config -> Firmware -> Update Server and click Flash from web-tab with empty URL to flash my firmware.

I will maintain main and edge version tag, please only flash main versions if you want to use it.

### Version numbers

Firmware versions will be named like openvehicles ones. I will add a dash with a counting number so I can signal if an update is available. If I push my fork to newest version from openvehicles, I increase original Firmware number. I will integrate changes from openvehicles if there is a code change in the main firmware only.

Example 
> Version string: 3.3.003-cs131 <br>
> 3.3.003 = Original firmware my fork based on. <br>
> -cs131 = counting number of my version.

## Build prerequisites

If you have a freshly installed Debian or Ubuntu based operating system, you can install prerequisites with following commands. On other distributions you need to install these with your package manager

```
apt install git build-essential pyhton3 python3-pip python ncurses-dev flex bison gperf dos2unix
wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
sudo python2.7 get-pip.py
```

## Build

Clone my repository and init submodules

```
git clone https://git.bit-cloud.de/carsten.schmiemann/OVMS3.git
cd OVMS3/
git submodule init
git submodule update
```

Install provided ESP IoT Development Framework

```
cd OVMS.V3-idf/
./install.sh
```

If you have trouble to install because another version of the IDF installed, delete the entire folder and try step above again

```
rm -rf ~/.espressif
```

Enable IDF (everytime you open a shell and want to compile project)

```
cd OVMS.V3-idf/
source export.sh
```

Go to OVMS Folder copy sdkconfig for your hardware and build firmware
In this example for hardware 3.1 and above. You can customize it via make menuconfig.

```
cd OVMS.V3/
cp support/sdkconfig.default.hw31 sdkconfig
make -jX
```

X = number of cpu cores to speed up build process

Then upload built firmware to your webserver and flash it via OTA function in OVMS webinterface.

> Hint: If you build your first time, you need to execute make multiple times, because of downloading dependencies.

## Security concerns

The OVMS3 project use an outdated and modified IDF, there are many security problems with them. Major problem is missing firewall so your webinterface and services like SSH is open to public ip of 3G/LTE interface. Most providers use an CG-NAT, but this is not a reliable protection at all.

Many of used libraries are outdated too. For example mongoose webserver has a lot of security problems fixed with newer versions.

I cannot fix these issues because I am not an experienced C programmer, I will focus on my vehicle integration.

I hope original project maintainers will fix them in the future, I know it is not an easy task because there a lot of changes in the IDF and dependencies.

## OVMS Server

I use my own OVMS server, because I love privacy. So there are no push messages available, only E-Mail for notifications.

You can use it too if you want, just register a account and vehicle at https://ovms.bit-cloud.de and point your OVMS module at https://ovms-server.bit-cloud.de Port 6870 (default) with TLS enabled or choose it at initial config wizard.
~~You need to insert my CA into your OVMS3, because I cannot proxy it with nginx and letsencrypt certificates so I used self signed certs.~~

My server ca is now included in this firmware.

~~Create a file called ovms-ca at /store/trustedca with bult in editor in the webinterface. (Create folder if not exist)~~
~~Paste content of ovms-ca.crt file to it and save it.~~
~~Then go to the web shell or ssh and type in~~

```
tls trust reload
```