Manage all Raspberry Pi's, components, datarefs and circuits with the CockpitConnect Dashboard.
You can, for example, add a Raspberry Pi to your project, connect a GPIO port to a pin of a specific component (like toggle switches, rotary switched ed), and link this to a dataref. The GPIO will be triggered by the component, which will in turn listen or execute the dataref.
The microservice architecture is a way to develop small pieces of code, which will work independently (also called "loosy coupled"). All microservices has it's own set of instructions and responsibility.
All microservices listens to the RabbitMQ queue constantly (long running scripts). If there is a new incoming message that belongs to the specific microservice, it will execute the set of instructions. Microservices are communicating with the database to Create, Read, Update, Delete (CRUD) data. This architecture is also called "Event Driven Architecture".
The microservices are written in NodeJS, but has the ability to be written in different programming languages.
The RESTful API acts as a gateway for all communication between frontend and backend. When, for example, the dashboard needs to create a new Raspberry Pi, the dashboard will execute an API request to a specific endpoint (in this case /raspberry). The API gateway will insert a new RabbitMQ queue item.
Based on the HTTP method (GET, POST, PATCH, DELETE), the corresponding Raspberry microservice will be triggered.
Because of this gateway, we can write our frontend and backend services in any programming language.
The RESTful API Gateway is written in NodeJS.
This script is running on all (unlimited) Raspberry Pi's and is a command line (CLI) script that act as a layer between the API gateway and X-Plane. It receives the set of instructions made with the Management Dashboard.
When the script receives an in- or output instruction from the API gateway, it will also receives the corresponding dataref. Based on in- or output it will listen or execute the necessary piece of code for that dataref.
For example, the script is listening to a dataref. When X-Plane changes the value of that dataref, the script will notice that and set the power of a GPIO port (output) to 3.3V, so the connected LED will light up.
Another (input) example: the script is listening for physical switch input (like a button or rotary encoder). When the value of the input changes (we push the button), we will send a specified (via the Management Dashboard) value as command to X-Plane (via ExtPlane).
The Raspberry Pi CLI script are written in NodeJS and it's communication with X-Plane is done by the ExtPlane plugin.
The public is the website you're reading now. It is primarily an informative website with explanations and updates about the whole CockpitConnect project.
The public website is written in PHP, based on Zend Framework 3.
All software components above are linked to each other as described on the image left.