{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://schemas.envitron.com/device/realtime-1.0.0.schema.json",
  "title": "Realtime telemetry",
  "description": "High frequency, minimal data telemetry data",
  "type": "object",
  "required": [
    "time"
  ],
  "additionalProperties": false,
  "properties": {
    "time": {
      "type": "number"
    },
    "main_meter": {
      "type": "object",
      "description": "Grid connection information",
      "properties": {
        "status": {
          "type": "string",
          "enum": [
            "available",
            "degraded",
            "unavailable"
          ]
        },
        "active_power_w": {
          "type": "integer",
          "description": "Active power measured on the grid connect (POI), return delivery / export is negative"
        }
      },
      "required": [
        "status"
      ]
    },
    "battery": {
      "type": "object",
      "description": "Global battery information, remaining charge/discharge available when trading is possible",
      "properties": {
        "status": {
          "type": "string",
          "enum": [
            "available",
            "degraded",
            "unavailable"
          ]
        },
        "active_power_w": {
          "type": "integer",
          "description": "Active power of all Batteries, charging is positive, discharging is negative"
        },
        "active_power_setpoint_w": {
          "type": "integer",
          "description": "Active power setpoint, charging is positive, discharging is negative"
        },
        "baseline_power_w": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Power the battery would produce/consume without active steering. Schedule active: scheduled power. No schedule: 0 (natural idle)."
        },
        "soc": {
          "type": "number",
          "description": "Average SOC of all available batteries",
          "minimum": 0,
          "maximum": 100
        },
        "charge_limit_w": {
          "type": "integer",
          "minimum": 0
        },
        "remaining_charge_time_s": {
          "type": "integer",
          "minimum": 0
        },
        "discharge_limit_w": {
          "type": "integer",
          "minimum": 0
        },
        "remaining_discharge_time_s": {
          "type": "integer",
          "minimum": 0
        }
      },
      "required": [
        "status"
      ]
    },
    "solar": {
      "type": "object",
      "description": "Global information of all PV",
      "properties": {
        "status": {
          "type": "string",
          "enum": [
            "available",
            "degraded",
            "unavailable"
          ]
        },
        "active_power_w": {
          "type": "integer",
          "description": "Active power of all PV, production is negative"
        },
        "active_power_setpoint_w": {
          "type": "integer",
          "maximum": 0,
          "description": "Active power setpoint"
        },
        "rated_power_w": {
          "type": "integer",
          "minimum": 0
        },
        "min_power_w": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Most negative signed power bound (= full production capacity). Production is negative."
        },
        "max_power_w": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Least negative signed power bound (= production floor). Production is negative."
        },
        "baseline_power_w": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Power the PV system would produce without active steering. Schedule active: scheduled limit. Real-time steering: last pre-steering power. No steering: current actual production."
        }
      },
      "required": [
        "status"
      ]
    }
  }
}
