RelayOutput - PepperDash/Essentials GitHub Wiki

RelayOutput

Relays can be bridged directly to SIMPL from any device that is both inlcuded within essentials and has a relay.

Consider the following example.

{
    "template": {
        "roomInfo": [
            {}
        ],
        "devices": [
            {
                "key": "processor",
                "uid": 0,
                "type": "pro3",
                "name": "pro3",
                "group": "processor",
                "supportedConfigModes": [
                    "compliance",
                    "essentials"
                ],
                "supportedSystemTypes": [
                    "hudType",
                    "presType",
                    "vtcType",
                    "custom"
                ],
                "supportsCompliance": true,
                "properties": {}
            },
            {
                "key": "Relay-1",
                "uid": 3,
                "name": "Relay 1",
                "group": "api",
                "type": "relayOutput",
                "properties": {
                    "portDeviceKey" : "processor",
                    "portNumber" : 1
                }
            },
            {
                "key": "Relay-2",
                "uid": 3,
                "name": "Relay 2",
                "group": "api",
                "type": "relayOutput",
                "properties": {
                    "portDeviceKey" : "processor",
                    "portNumber" : 2
                }
            },
            {
                "key": "deviceBridge",
                "uid": 4,
                "name": "BridgeToDevices",
                "group": "api",
                "type": "eiscapiadv",
                "properties": {
                    "control": {
                        "tcpSshProperties": {
                            "address": "127.0.0.2",
                            "port": 0
                        },
                        "ipid": "03",
                        "method": "ipidTcp"
                    },
                    "devices": [
                        {
                            "deviceKey": "Relay-1",
                            "joinStart": 1
                        },
                        {
                            "deviceKey": "Relay-2",
                            "joinStart": 2
                        }
                    ]
                }
            }
        ]
    }
}

RelayOutput Configuration Explanation

This configuration is meant for a Pro3 device, and instantiates two relay ports and links them to an eisc bridge to another processor slot on ipid 3. Let's break down the Relay-1 device.

{
    "key": "Relay-1",
    "uid": 3,
    "name": "Relay 1",
    "group": "api",
    "type": "relayOutput",
    "properties": {
        "portDeviceKey" : "processor",
        "portNumber" : 1
    }
}

Key

The Key is a unique identifier for essentials. The key allows the device to be linked to other devices also defined by key. All Keys MUST be unique, as every device is added to a globally-accessible dictionary. If you have accidentally utilized the same key twice, Essentials will notify you during startup that there is an issue with the device.

Uid

The Uid is reserved for use with an PepperDash internal config generation tool, and is not useful to Essentials in any way.

Name

The Name a friendly name assigned to the device. Many devices pass this data to the bridge for utilization in SIMPL.

Group

Utilized in certain Essentials devices. In this case, the value is unimportant.

Type

The Type is the identifier for a specific type of device in Essentials. A list of all valid types can be reported by using the consolecommand gettypes in Essentials. In this case, the type is relayOutput. This type is valid for any instance of a Relay Output.

Properties

These are the properties essential to the instantiation of the identified type.

Properties

There are two properties relevant to the instantiation of a relay device.

portDeviceKey

This property maps to the key of the device upon which the relay resides.

portNumber

This property maps to the number of the relay on the device you have mapped the relay device to. Even if the device has only a single relay, portNumber must be defined.

The JoinMap

The joinmap for a relayOutput device is comprised of a single digital join.

namespace PepperDash.Essentials.Core.Bridges
{
    public class GenericRelayControllerJoinMap : JoinMapBaseAdvanced
    {

        [JoinName("Relay")]
        public JoinDataComplete Relay = new JoinDataComplete(new JoinData() { JoinNumber = 1, JoinSpan = 1 },
            new JoinMetadata() { Label = "Device Relay State Set / Get", JoinCapabilities = eJoinCapabilities.ToFromSIMPL, JoinType = eJoinType.Digital });


        public GenericRelayControllerJoinMap(uint joinStart)
            : base(joinStart, typeof(GenericRelayControllerJoinMap))
        {
        }
    }
}

Relay is a digital join that represents both the trigger and the feedback for the associated relay device. Its join is set to 1.