A key part of the ResCoopVPP project is the “Community Flexibility Box” - CoFyBox. The CoFyBox prototype is a RaspberryPi 3B+ device that is placed in a home connected to a home network and other devices. It gathers data and performs functions related to energy flexibility, such as the control of smart devices.

It base image is BalenaOS, a linux-based operating system optimized for running Docker containers on embedded devices. CoFyBoxes are managed through the BalenaCloud platform, which allows for remote control of internet-of-things devices.

## ¶ Provisioning

Setting up the CoFyBox involves connecting it to a network, downloading a base image for the device, and linking it to the rest of the required systems.

## ¶ Services

Software on the CoFybox is organised into services. Each of these services performs a specific role and runs in its own Docker container. These services include:

- cofybox-config
- cofycloud-api-pull
- debug
- glue
- hass-configurator
- homeassistant
- huawei
- influxdb
- mosquitto
- nginx-reverse-proxy
- sunspec2mqtt
- telegraf

The development process is centered around these services. They can run any programming language or service in an isolated environment.

## ¶ Development

The CoFyBox can be developed upon locally using one or more services, each in in its own container. When development reaches a point where it needs to be deployed, the docker containers are uploaded to BalenaCloud using command line tools, and the Balena system deploys the containers to the devices. Devices can then be monitored and managed through the BalenaCloud dashboard and other tools.

## ¶ Configuration

CoFyBoxes can sometimes require configuration based on each device's specific use case. This could involve the setting up of certain devices.

If the device is configured via the CoFyCookie, see CoFyCookie. For other devices, see other-devices.