Cookbook
This page covers SSH-based provisioning operations. It follows the recommended provisioning approach: configure manually, validate, then scale.
1 Audience and assumptions
We assume the following:
- you are a mid- or senior-level software engineer with linux command line knowledge
- you are working on Windows 11
- you are using PowerShell
- SSH access to the controller is already available
The SSH-based provisioning method will work on other host operating systems and with other terminal applications as well, but the instructions in this documentation are tailored to the above assumptions for simplicity. Minor adjustments may be needed.
2 General recipes
- Run on Computer (PowerShell)
ssh charge@192.168.123.123 - Run on Controller
cd /home/charge/persistency For filenames and parameter mapping, see here.
Run on Controllerls *_*For filenames and parameter mapping, see here.
Run on Controllerhead -n 1 *_*For filenames and parameter mapping, see here.
Run on Controllerhead -1- Run on Controller
synctipThe
synccommand ensures that all pending changes are written to disk. Make sure to always run it before rebooting the Charge Controller. - Run on Controller
reboottipMake sure to always run
syncbefore rebooting the Charge Controller.
3 Configuration recipes
Sets the active value of a configuration parameter. The controller uses the
_customfile as the current runtime value.Filename:
<parameterKey>_customRun on Computer (PowerShell)$Value = ''
Set-Content -Path .\_custom -Value $Value -NoNewline
scp -O .\_custom charge@192.168.123.123:/home/charge/persistency/_customOn the controller: verify:
Run on Controllerhead -1 /home/charge/persistency/_customSets the custom default value of a configuration parameter. This is the value restored after a factory reset.
Filename:
<parameterKey>_custom_defaultRun on Computer (PowerShell)$Value = ''
Set-Content -Path .\_custom_default -Value $Value -NoNewline
scp -O .\_custom_default charge@192.168.123.123:/home/charge/persistency/_custom_defaultOn the controller: verify:
Run on Controllerhead -1 /home/charge/persistency/_custom_defaultFilename:
ChargeBoxIdentity_customRun on Computer (PowerShell)$Value = 'DE*ABC*E1234567*1'
Set-Content -Path .\ChargeBoxIdentity_custom -Value $Value -NoNewline
scp -O .\ChargeBoxIdentity_custom charge@192.168.123.123:/home/charge/persistency/ChargeBoxIdentity_customFilename:
OCPPBackendJSONURL_customRun on Computer (PowerShell)$Value = 'ws://backend.example.com/OCPPJProxy/v16/'
Set-Content -Path .\OCPPBackendJSONURL_custom -Value $Value -NoNewline
scp -O .\OCPPBackendJSONURL_custom charge@192.168.123.123:/home/charge/persistency/OCPPBackendJSONURL_customFilename:
SerialNumberManufacturer_customRun on Computer (PowerShell)$Value = '1234567890'
Set-Content -Path .\SerialNumberManufacturer_custom -Value $Value -NoNewline
scp -O .\SerialNumberManufacturer_custom charge@192.168.123.123:/home/charge/persistency/SerialNumberManufacturer_customRun on Controllerls -l /home/charge/persistency/SerialNumberManufacturer_custom
sync
rebootPasswords must be saved as Base64 with padding (standard RFC 4648 encoding, including trailing
=characters). Do not strip padding. Ensure your password itself does not contain characters that produce ambiguous Base64 output — see the tip below.tipFor simplicity, you can restrict your password generation to alphanumeric characters (A-Z, a-z, 0-9). This ensures that the generated password can always be safely Base64-encoded.
dangerDo not run the command below as-is. Use your own strong password generator and replace the
passwordvariable with your generated password. Make sure to keep the password secure and out of reach of unauthorized parties.Run on Computer (PowerShell)$FileName = 'ManufacturerPwd_custom'
$Password = ''
$Bytes = [System.Text.Encoding]::UTF8.GetBytes($Password)
$Base64 = [Convert]::ToBase64String($Bytes)
Set-Content -Path ".\$FileName" -Value $Base64 -NoNewlineFilename:
ManufacturerPwd_customdangerDo not run the command below as-is. Use your own strong password generator and replace the
passwordvariable with your generated password. Make sure to keep the password secure and out of reach of unauthorized parties.Run on Computer (PowerShell)scp -O .\ManufacturerPwd_custom charge@192.168.123.123:/home/charge/persistency/ManufacturerPwd_customRun on Controllerls -l /home/charge/persistency/ManufacturerPwd_custom
sync
rebootFilename:
OperatorPwd_custom_defaultThe operator password is set as a custom default (
_custom_default). By setting only the default, the operator is prompted to set their own password on first login, as intended by RED 3.3.dangerDo not run the command below as-is. Use your own strong password generator and replace the
passwordvariable with your generated password. Make sure to keep the password secure and out of reach of unauthorized parties.Run on Computer (PowerShell)scp -O .\OperatorPwd_custom_default charge@192.168.123.123:/home/charge/persistency/OperatorPwd_custom_defaultRun on Controllerls -l /home/charge/persistency/OperatorPwd_custom_default
sync
rebootFilename:
InstallerPwd_custom_defaultThe installer password is set as a custom default (
_custom_default). By setting only the default, the installer is prompted to set their own password on first login, as intended by RED 3.3.dangerDo not run the command below as-is. Use your own strong password generator and replace the
passwordvariable with your generated password. Make sure to keep the password secure and out of reach of unauthorized parties.Run on Computer (PowerShell)scp -O .\InstallerPwd_custom_default charge@192.168.123.123:/home/charge/persistency/InstallerPwd_custom_defaultRun on Controllerls -l /home/charge/persistency/InstallerPwd_custom_default
sync
rebootFilename:
OCPPMeterType_customFor valid numeric values, see here.
Run on Computer (PowerShell)$Value = ''
Set-Content -Path .\OCPPMeterType_custom -Value $Value -NoNewline
scp -O .\OCPPMeterType_custom charge@192.168.123.123:/home/charge/persistency/OCPPMeterType_customFilename:
SecondMeterType_customFor valid numeric values, see here.
Run on Computer (PowerShell)$Value = ''
Set-Content -Path .\SecondMeterType_custom -Value $Value -NoNewline
scp -O .\SecondMeterType_custom charge@192.168.123.123:/home/charge/persistency/SecondMeterType_custom
4 Device identity recipes
Based on your needs, the firmware version can be read in several ways:
- OPKG filtered
- OPKG simple
Run on Controlleropkg list-installed | cut -d' ' -f3Example output:
5.34.4-21648tipcut -d' ' -f3keeps only the third word from the line. Here, that is the firmware version.Run on Controlleropkg list-installedExample output:
ebee-firmware - 5.34.4-21648- Run on Controller
head -n 1 /sys/class/net/eth0/addressThis is the MAC address of the controller's Ethernet interface (eth0).
- Run on Controller
head -n 1 /dev/ebee_variant - Manufacturer Serial Number:
Run on Controllerhead -n 1 /home/charge/persistency/SerialNumberManufacturer_custom- Controller Serial Number:
Run on Controllerhead -n 1 /home/charge/persistency/SerialNumber_custom- Run on Controller
head -n 1 /tmp/.ebee_version.txt
head -n 1 /dev/ebee_variant
head -n 1 /sys/class/net/eth0/address
head -n 1 /home/charge/persistency/SerialNumber_custom
5 Firmware update recipes
- Run on Computer (PowerShell)
scp -O .\ charge@192.168.123.123:/home/charge/ - Run on Controller
opkg install /home/charge/Updates triggered through OPKG will automatically schedule a reboot. You do not need to manually reboot the controller after running this command.
The second and third timers are failsafes that will reboot the controller if the first timer fails to do so.
- Option 1:
Run on Controllerhead -n 1 /tmp/.ebee_version_info.txtExample output:
5.33.0-21510-57641b50ef- Option 2:
Run on Controllerhead -n 1 /tmp/.ebee_version.txtExample output:
5.33.0-21510