====== CCGX Hardware and software introduction ====== ===== Hardware ===== The CCGX is based on the Technexion board TAM-3517, which is using the Texas Instruments Sitara AM3517, containing a ARM Cortex-A8 microprocessor: {{ :opensource:ccgx:tam-3517.png?nolink |}} ===== Software ===== ==== Linux kernel & OS ==== The software platform of the CCGX is called Venus: Victron Energy Unix like distro with a linux kernel. It is based on and built with OpenEmbedded, a build framework for embedded Linux. It has all kinds of tools, mechanisms and recipes to build the Linux kernel and make a full embedded Linux rootfs. Maintained versions are listed here: https://wiki.yoctoproject.org/wiki/Releases. To build the Venus yourself, see: https://github.com/victronenergy/venus ==== Victron software ==== we are using a mixture of C, C++, QML (for the user interface) and Python. As a main data exchange, to share values such as voltages, as well as settings and other data, we use D-Bus. D-bus is for inter process communication, see google and the [[http://en.wikipedia.org/wiki/D-Bus|D-Bus page on wikipedia]] for more information. This diagram gives a good overview of the whole thing: {{ :opensource:ccgx:dbus_overview.png?nolink |}} === Product processes === Processes that interface to products, using the different protocols. These processes make the information available on the D-Bus. * VE.Can to dbus \\ written in C, reads and writes to the VE.Can comm. port. * mk2dbus \\ written in C, reads and write to VE.Bus (Victron inverter/charger protocol). * VE.Direct to D-Bus \\ written in C, reads/writes to serial connected devices, such as the BMV and MPPT solar chargers. * gps_dbus \\ also written in C. Open source: [[https://github.com/victronenergy/dbus_gps|https://github.com/victronenergy/dbus_gps]]. * dbus_qwacs \\ C++, using the QT library. Reads data from wireless AC sensors connected via an Ethernet-DECT gateway. Open source: [[https://github.com/victronenergy/dbus_qwacs|https://github.com/victronenergy/dbus_qwacs]] * dbus-fronius \\ written in C++, communications to Fronius PV inverters via LAN/Ethernet. Open source: [[https://github.com/victronenergy/dbus-fronius]] * dbus-motordrive \\ https://bitbucket.org/oceanvolt/dbus_motordrive === Other processes === * gui \\ Written in C++ and QML, uses QT. Takes care of the user interface: buttons and the display * vrmlogger \\ Written in Python, takes data from the dbus and submits it to the VRM Portal. [[https://vrm.victronenergy.com/|https://vrm.victronenergy.com/]] * localsettings \\ Written in Python, takes care of user settings. All other processes read and write their settings through this daemon via D-Bus. The daemon is an interface between D-Bus and the file /data/conf/settings.xml. Open source: [[https://github.com/victronenergy/localsettings|https://github.com/victronenergy/localsettings]]. * dbus_modbustcp \\ Written in C++, uses QT. Modbustcp server that can be used to access data of all products connected to the CCGX. See our [[https://www.victronenergy.com/upload/documents/Whitepaper-Data-communication-with-Victron-Energy-products_EN.pdf|Data communication whitepaper]] for more information. Open source: [[https://github.com/victronenergy/dbus_modbustcp|https://github.com/victronenergy/dbus_modbustcp]] * dbus-systemcalc-py \\ Written in Python, publish PV totals and other system readings on D-Bus. The overviews on the CCGX get their information from this service (com.victronenergy.system). Open source: [[https://github.com/victronenergy/dbus-systemcalc-py]] === Source code === As visible in above project list, part of the sources is already available. All that is open source is available on [[https://github.com/victronenergy/|https://github.com/victronenergy/]]. The rest is still on Victrons internal git servers, and where possible slowly being moved to github. ===== Other tips ===== * to make a screenshot, first press and hold the down button, and then press the up button. The screenshot will be saved with the name snapshot.png in /opt/color-control/gui/ or /service/gui. Making a new screenshot overwrites the previous one. ===== DISQUS ===== ~~DISQUS~~