sunspec 0.9.0

SunSpec 1.1 compliant library with tokio support
Documentation
{
    "group": {
        "desc": "DER Volt-Watt model.",
        "groups": [
            {
                "comments": [
                    "Stored curve sets - Number of curve sets contained in NCrv - The first set is read-only and indicates the current settings."
                ],
                "count": "NCrv",
                "desc": "Stored curve sets.",
                "groups": [
                    {
                        "comments": [
                            "Stored curve sets - curve points for each stored curve - Number of curve points contained in NPt"
                        ],
                        "count": "NPt",
                        "desc": "Stored curve points.",
                        "label": "Stored Curve Points",
                        "name": "Pt",
                        "points": [
                            {
                                "access": "RW",
                                "desc": "Curve voltage point as percentage.",
                                "label": "Voltage Point",
                                "name": "V",
                                "sf": "V_SF",
                                "size": 1,
                                "type": "uint16",
                                "units": "VNomPct",
                                "standards": [
                                    "IEEE 1547-2018"
                                ],
                                "detail": "Internal curve conformance checks should be conducted when AdptCrvReq is set to 1, not on point writes."
                            },
                            {
                                "access": "RW",
                                "desc": "Active power in percent of rated active power.",
                                "label": "Dependent Reference",
                                "name": "W",
                                "sf": "DeptRef_SF",
                                "size": 1,
                                "type": "int16",
                                "units": "DeptRef",
                                "standards": [
                                    "IEEE 1547-2018"
                                ],
                                "detail": "Internal curve conformance checks should be conducted when AdptCrvReq is set to 1, not on point writes."
                            }
                        ],
                        "type": "group"
                    }
                ],
                "label": "Stored Curves",
                "name": "Crv",
                "points": [
                    {
                        "access": "RW",
                        "desc": "Number of active points.",
                        "label": "Active Points",
                        "mandatory": "M",
                        "name": "ActPt",
                        "size": 1,
                        "type": "uint16",
                        "standards": [
                            "IEEE 1547-2018"
                        ]
                    },
                    {
                        "access": "RW",
                        "desc": "Curve dependent reference.",
                        "label": "Dependent Reference",
                        "mandatory": "M",
                        "name": "DeptRef",
                        "size": 1,
                        "symbols": [
                            {
                                "name": "W_MAX_PCT",
                                "value": 0
                            },
                            {
                                "name": "W_AVAL_PCT",
                                "value": 1
                            }
                        ],
                        "type": "enum16",
                        "standards": [
                            "IEEE 1547-2018"
                        ]
                    },
                    {
                        "access": "RW",
                        "desc": "Open loop response time.",
                        "label": "Open Loop Response Time",
                        "name": "RspTms",
                        "sf": "RspTms_SF",
                        "size": 2,
                        "type": "uint32",
                        "units": "Secs",
                        "standards": [
                            "IEEE 1547-2018"
                        ]
                    },
                    {
                        "desc": "Curve read-write access.",
                        "label": "Curve Access",
                        "mandatory": "M",
                        "name": "ReadOnly",
                        "size": 1,
                        "static": "S",
                        "symbols": [
                            {
                                "desc": "Curve has read-write access.",
                                "label": "Read-Write Access",
                                "name": "RW",
                                "value": 0
                            },
                            {
                                "desc": "Curve has read-only access.",
                                "label": "Read-Only Access",
                                "name": "R",
                                "value": 1
                            }
                        ],
                        "type": "enum16",
                        "standards": [
                            "IEEE 1547-2018"
                        ]
                    }
                ],
                "type": "group"
            }
        ],
        "label": "DER Volt-Watt",
        "name": "DERVoltWatt",
        "points": [
            {
                "desc": "DER Volt-Watt model ID.",
                "label": "Model ID",
                "mandatory": "M",
                "name": "ID",
                "size": 1,
                "static": "S",
                "type": "uint16",
                "value": 706,
                "standards": [
                    "IEEE 1547-2018"
                ]
            },
            {
                "desc": "DER Volt-Watt model length.",
                "label": "Model Length",
                "mandatory": "M",
                "name": "L",
                "size": 1,
                "static": "S",
                "type": "uint16",
                "standards": [
                    "IEEE 1547-2018"
                ]
            },
            {
                "access": "RW",
                "desc": "Volt-Watt control enable.",
                "label": "DER Volt-Watt Module Enable",
                "mandatory": "M",
                "name": "Ena",
                "size": 1,
                "symbols": [
                    {
                        "desc": "Function is disabled.",
                        "label": "Disabled",
                        "name": "DISABLED",
                        "value": 0
                    },
                    {
                        "desc": "Function is enabled.",
                        "label": "Enabled",
                        "name": "ENABLED",
                        "value": 1
                    }
                ],
                "type": "enum16",
                "standards": [
                    "IEEE 1547-2018"
                ]
            },
            {
                "access": "RW",
                "desc": "Index of curve points to adopt. First curve index is 1.",
                "label": "Adopt Curve Request",
                "mandatory": "M",
                "name": "AdptCrvReq",
                "size": 1,
                "type": "uint16",
                "standards": [
                    "IEEE 1547-2018"
                ]
            },
            {
                "desc": "Result of last adopt curve operation.",
                "label": "Adopt Curve Result",
                "mandatory": "M",
                "name": "AdptCrvRslt",
                "size": 1,
                "symbols": [
                    {
                        "desc": "Curve update in progress.",
                        "label": "Update In Progress",
                        "name": "IN_PROGRESS",
                        "value": 0
                    },
                    {
                        "desc": "Curve update completed successfully.",
                        "label": "Update Complete",
                        "name": "COMPLETED",
                        "value": 1
                    },
                    {
                        "desc": "Curve update failed.",
                        "label": "Update Failed",
                        "name": "FAILED",
                        "value": 2
                    }
                ],
                "type": "enum16",
                "standards": [
                    "IEEE 1547-2018"
                ]
            },
            {
                "desc": "Number of curve points supported.",
                "label": "Number Of Points",
                "mandatory": "M",
                "name": "NPt",
                "size": 1,
                "static": "S",
                "type": "uint16",
                "standards": [
                    "IEEE 1547-2018"
                ]
            },
            {
                "desc": "Number of stored curves supported.",
                "label": "Stored Curve Count",
                "mandatory": "M",
                "name": "NCrv",
                "size": 1,
                "static": "S",
                "type": "uint16",
                "standards": [
                    "IEEE 1547-2018"
                ]
            },
            {
                "access": "RW",
                "desc": "Reversion time in seconds.  0 = No reversion time.",
                "label": "Reversion Timeout",
                "name": "RvrtTms",
                "size": 2,
                "type": "uint32",
                "units": "Secs",
                "standards": []
            },
            {
                "desc": "Reversion time remaining in seconds.",
                "label": "Reversion Time Remaining",
                "name": "RvrtRem",
                "size": 2,
                "type": "uint32",
                "units": "Secs",
                "standards": []
            },
            {
                "access": "RW",
                "desc": "Default curve after reversion timeout.",
                "label": "Reversion Curve",
                "name": "RvrtCrv",
                "size": 1,
                "type": "uint16",
                "standards": []
            },
            {
                "desc": "Scale factor for curve voltage points.",
                "label": "Voltage Scale Factor",
                "mandatory": "M",
                "name": "V_SF",
                "size": 1,
                "static": "S",
                "type": "sunssf",
                "standards": [
                    "IEEE 1547-2018"
                ]
            },
            {
                "desc": "Scale factor for curve watt points.",
                "label": "Watt Scale Factor",
                "mandatory": "M",
                "name": "DeptRef_SF",
                "size": 1,
                "static": "S",
                "type": "sunssf",
                "standards": [
                    "IEEE 1547-2018"
                ]
            },
            {
                "desc": "Open loop response time scale factor.",
                "label": "Open-Loop Scale Factor",
                "mandatory": "M",
                "name": "RspTms_SF",
                "size": 1,
                "static": "S",
                "type": "sunssf",
                "standards": [
                    "IEEE 1547-2018"
                ]
            }
        ],
        "type": "group"
    },
    "id": 706
}