Create /etc/venus/relays and add the relevant gpio ports etc/ venus/relays (file contents) Not will only create 1 gpio port, it won't do 4? echo /sys/class/gpio/gpio21 > /etc/venus/relays echo /sys/class/gpio/gpio17 > /etc/venus/relays echo /sys/class/gpio/gpio27 > /etc/venus/relays echo /sys/class/gpio/gpio22 > /etc/venus/relays /sys/class/gpio/gpio21 /sys/class/gpio/gpio17 (not entered) /sys/class/gpio/gpio27 (not entered) /sys/class/gpio/gpio22 (not entered) etc/venus/gpio_list (file contents) # This is a list of gpio pins, set by the script /etc/rcS.d/S90gpio_pins.sh # They are documented at: https://github.com/victronenergy/venus/wiki/bbb-gpio # Format: # # The part is used to create an symlink in /dev/gpio. # Relay 1 Pin 40 / GPIO 21 # Relay 2 Pin 11 / GPIO 17 # Relay 3 Pin 13 / GPIO 27 Not function at the moment if activated relay setting disappers? # Relay 4 Pin 15 / GPIO 22 Not function at the moment if activated relay setting disappers? 21 out relay_1 17 out relay_2 //27 out relay_3 //22 out relay_4 # Digital input 1 Pin 29 / GPIO 05 5 in digital_input_1 # Digital input 2 Pin 31 / GPIO 06 6 in digital_input_2 # Digital input 3 Pin 33 / GPIO 13 13 in digital_input_3 # Digital input 4 Pin 35 / GPIO 19 19 in digital_input_4 # Digital input 5 Pin 37 / GPIO 26 26 in digital_input_5 optvictronenrgy/gui/qml/Page SettingRelay.qml (file contents) import QtQuick 1.1 import com.victron.velib 1.0 import "utils.js" as Utils MbPage { id: pageRelaySettings title: qsTr("Relay") property string bindPrefix: "com.victronenergy.settings" property VBusItem relay1Item: VBusItem { bind: "com.victronenergy.system/Relay/1/State" } property bool hasRelay1: relay1Item.valid property VBusItem relay2Item: VBusItem { bind: "com.victronenergy.system/Relay/2/State" } property bool hasRelay2: relay1Item.valid property VBusItem relay3Item: VBusItem { bind: "com.victronenergy.system/Relay/3/State" } property bool hasRelay3: relay1Item.valid model: VisualItemModel { MbItemOptions { id: relayFunction description: hasRelay1 ? qsTr("Function (Relay 1)") : qsTr("Function") bind: Utils.path(bindPrefix, "/Settings/Relay/Function") possibleValues:[ MbOption { description: qsTr("Alarm relay"); value: 0 }, MbOption { description: qsTr("Generator start/stop"); value: 1 }, MbOption { description: qsTr("Tank pump"); value: 3 }, MbOption { description: qsTr("Manual"); value: 2 } ] } MbItemOptions { description: qsTr("Alarm relay polarity") bind: Utils.path(bindPrefix, "/Settings/Relay/Polarity") show: relayFunction.value === 0 possibleValues: [ MbOption { description: qsTr("Normally open"); value: 0 }, MbOption { description: qsTr("Normally closed"); value: 1 } ] } MbSwitch { id: relaySwitch // Use a one-way binding, because the usual binding: // checked: Relay.relayOn // will be broken when the switched toggled, and changes in the relayOn property made // elsewhere will not change the state of the switch any more. Binding { target: relaySwitch property: "checked" value: Relay.relayOn when: true } enabled: userHasWriteAccess name: qsTr("Alarm relay On") onCheckedChanged: Relay.relayOn = checked; show: relayFunction.value === 0 } MbSwitch { id: manualSwitch name: hasRelay1 ? qsTr("Relay 1 On") : qsTr("Relay On") bind: "com.victronenergy.system/Relay/0/State" show: relayFunction.value === 2 // manual mode } MbSwitch { id: manualSwitch1 name: qsTr("Relay 2 On") bind: "com.victronenergy.system/Relay/1/State" show: hasRelay1 } MbSwitch { id: manualSwitch2 name: qsTr("Relay 3 On") bind: "com.victronenergy.system/Relay/2/State" show: hasRelay2 } MbSwitch { id: manualSwitch3 name: qsTr("Relay 4 On") bind: "com.victronenergy.system/Relay/3/State" show: hasRelay3 } } }