Skip to content

Limiters

One or more limiters can be configured to set the operating envelope of the site.

All limiters are restrictive, that is a combination of multiple limiters will evaluate all limiters and enforce the most prohibitive value of each control type at any one time.

Control modes

The software supports 6 control modes mapped to the CSIP-AUS Dynamic Operating Envelope (DOE) modes.

ModeDescriptionOverlap resolutionDefault value
opModConnectConnection to the gridPrioritize disconnectConnect
opModEnergizeGenerate or consume energy (in practice for most inverters this is the same as opModConnect)Prioritize de-energizeEnergized
opModExportLimWMaximum site export limit (in watts)Lower limitUnlimited
opModGenLimWMaximum inverter generation limit (in watts)Lower limitUnlimited
opModImpLimWMaximum site import limit (in watts)Lower limitUnlimited
opModLoadLimWMaximum controllable load limit (in watts)Lower limitUnlimited

CSIP-AUS dynamic connection

Apply dynamic limits from an Australian energy utility CSIP-AUS/SEP2 server.

IMPORTANT

This CSIP-AUS client cannot run without device certificates (and manufacturer certificates). See the CSIP-AUS section for more information.

To use the CSIP-AUS limiter, add following property to config.json

js
{
    "limiters": {
        "sep2": {
            "host": "https://sep2-test.energyq.com.au", // (string) required: the SEP2 server host
            "dcapUri": "/api/v2/dcap" // (string) required: the device capability discovery URI
            "nmi": "1234567890" // (string) optional: for utilities that require in-band registration, the NMI of the site
        }
    }
    ...
}

Fixed limit

To set fixed limits (such as for fixed export limits), add the following property to config.json

js
{
    "limiters": {
        "fixed": {
            "connect": true, // (true/false) optional: whether the inverters should be connected to the grid
            "exportLimitWatts": 5000, // (number) optional: the maximum export limit in watts
            "generationLimitWatts": 10000 // (number) optional: the maximum generation limit in watts
            "importLimitWatts": 5000 // (number) optional: the maximum import limit in watts (not currently used)
            "loadLimitWatts": 10000 // (number) optional: the maximum load limit in watts (not currently used)
        }
    }
    ...
}

MQTT

To set limits based on a MQTT topic, add the following property to config.json

js
{
    "limiters": {
        "mqtt": {
            "host": "mqtt://192.168.1.123",
            "topic": "limits"
        }
    }
    ...
}

The MQTT topic must contain a JSON message that meets the following schema

js
z.object({
    opModConnect: z.boolean().optional(),
    opModEnergize: z.boolean().optional(),
    opModExpLimW: z.number().optional(),
    opModGenLimW: z.number().optional(),
    opModImpLimW: z.number().optional(),
    opModLoadLimW: z.number().optional(),
});

For example

js
{
    "opModEnergize": true,
    "opModExpLimW": 5000,
    "opModGenLimW": 10000
}

Negative feed-in

To set a zero export limit based on negative feed-in, add the following property to config.json

For Amber Electric:

js
{
    "limiters": {
        "negativeFeedIn": {
            "type": "amber", // (string) required: the source of the negative feed-in data
            "apiKey": "asdf", // (string) required: the Amber API key
            "siteId": "12345" // (string) optional: the Amber site ID. If not supplied, it will automatically select the first site in the account (will error if there are multiple sites)
        }
    }
    ...
}

Two-way tariffs

To set a zero export limit based on two-way tariffs, add the following property to config.json

For Ausgrid solar tariff EA029:

js
{
    "limiters": {
        "twoWayTariff": {
            "type": "ausgridEA029"
        }
    }
    ...
}

For SAPN RELE2W tariff:

js
{
    "limiters": {
        "twoWayTariff": {
            "type": "sapnRELE2W"
        }
    }
    ...
}