Skip to content

Forwarding to a Postgres database

We forward messages to a Postgres database by inserting rows into the table(s) we have been granted access to.

Below the schemas for the following messages can be found:

Solar power

Solar assets produce two types of messages: regular messages and environmental sensor messages.

Regular messages

The schema for messages forwarded from a Teleport device that is connected to a solar inverter:

  • The active_power_limit_percentage field is deprecated and replaced by setpoints_confirmed_active_power_limit_percentage.
CREATE TABLE "teleport_solar_power" (
"id" serial constraint teleport_solar_power_pkey primary key,
"teleport_hash_id" varchar(32) NOT NULL, -- uniquely identifies the teleport device
"asset_identifier" varchar(128) NOT NULL, -- globally unique identifier of the asset, when available the brand and serial number of the asset
"attempt" int NOT NULL, -- 0-indexed delivery attempt
"active_power" decimal(23,3), -- in W
"reactive_power" decimal(23,3), -- in var
"power_factor" decimal(5, 4), -- unitless. For capacitive loads (leading power factor, quadrant 4), the PF sign is positive. For inductive loads (lagging power factor, quadrants 1), the PF sign is negative.
"generated_energy" decimal(23,3), -- in Wh
"setpoints_confirmed_active_power_limit_percentage" decimal(4, 1), -- in %
"setpoints_confirmed_active_power_limit" decimal(23, 3), -- in W
"setpoints_confirmed_reactive_power_reactive_power" decimal(23, 3), -- setpoint for "fixedReactivePower" mode, in var.
"setpoints_confirmed_reactive_power_power_factor" decimal(5, 4), -- setpoint for "fixedPowerFactor" mode, unitless.
"setpoints_confirmed_reactive_power_mode" varchar(32), -- reactive power control mode, either "fixedReactivePower" or "fixedPowerFactor".
"setpoints_desired_active_power_limit_cloud" decimal(23, 3), -- in W
"setpoints_desired_active_power_limit_active_control" decimal(23, 3), -- in W
"setpoints_desired_active_power_limit_grid_operator" decimal(23, 3), -- in W
"setpoints_desired_active_power_limit_modbus_server" decimal(23, 3), -- in W
"setpoints_desired_active_power_limit_afrr_delta" decimal(23, 3), -- in W
"setpoints_desired_active_power_limit_afrr_reference" decimal(23, 3), -- in W
"setpoints_desired_reactive_power_cloud_reactive_power" decimal(23, 3), -- setpoint for "fixedReactivePower" mode, in var.
"setpoints_desired_reactive_power_cloud_power_factor" decimal(5, 4), -- setpoint for "fixedPowerFactor" mode, unitless.
"setpoints_desired_reactive_power_cloud_mode" varchar(32), -- reactive power control mode, either "fixedReactivePower" or "fixedPowerFactor".
"setpoints_desired_reactive_power_grid_operator_reactive_power" decimal(23, 3), -- setpoint for "fixedReactivePower" mode, in var.
"setpoints_desired_reactive_power_grid_operator_power_factor" decimal(5, 4), -- setpoint for "fixedPowerFactor" mode, unitless.
"setpoints_desired_reactive_power_grid_operator_mode" varchar(32), -- reactive power control mode, either "fixedReactivePower" or "fixedPowerFactor".
"setpoints_effective_active_power_limit" decimal(23, 3), -- in W
"setpoints_effective_reactive_power_reactive_power" decimal(23, 3), -- setpoint for "fixedReactivePower" mode, in var.
"setpoints_effective_reactive_power_power_factor" decimal(5, 4), -- setpoint for "fixedPowerFactor" mode, unitless.
"setpoints_effective_reactive_power_mode" varchar(32), -- reactive power control mode, either "fixedReactivePower" or "fixedPowerFactor".
"alarms" jsonb, -- if not null, will contain a JSON array of string elements. see alarms section
"scheduled" boolean, -- must be nullable, as it was added lateron. false for measurements that are not part of the regular reporting interval, eg. directly after command execution and at Teleport initialisation
"measured_at" timestamptz NOT NULL, -- when read-out started
"created_at" timestamptz NOT NULL -- when written to the table
);
CREATE INDEX teleport_solar_power_teleport_idx ON teleport_solar_power (teleport_hash_id, created_at);
CREATE UNIQUE INDEX teleport_solar_power_teleport_asset_idx ON teleport_solar_power (teleport_hash_id, asset_identifier, measured_at);
CREATE TABLE teleport_solar_power_inverters (
"id" serial constraint teleport_solar_power_inverters_pkey primary key,
"teleport_hash_id" varchar(32) NOT NULL,
"asset_identifier" varchar(128) NOT NULL,
"slave_id" int NOT NULL,
"attempt" int NOT NULL,
"active_power" decimal(23, 3), -- in W
"reactive_power" decimal(23,3), -- in var
"power_factor" decimal(5, 4), -- unitless. For capacitive loads (leading power factor, quadrant 4), the PF sign is positive. For inductive loads (lagging power factor, quadrants 1), the PF sign is negative.
"generated_energy" decimal(23, 3), -- in Wh
"setpoints_confirmed_active_power_limit_percentage" decimal(4, 1),
"setpoints_confirmed_active_power_limit" decimal(23, 3),
"setpoints_confirmed_reactive_power" decimal(23, 3),
"alarms" jsonb, -- if not null, will contain a JSON array of string elements. see alarms section
"scheduled" boolean NOT NULL, -- false for measurements that are not part of the regular reporting interval, eg. directly after command execution and at Teleport initialisation
"measured_at" timestamptz NOT NULL, -- when read-out started
"created_at" timestamptz NOT NULL -- when written to the table
);
CREATE INDEX teleport_solar_power_inverters_inverters_idx ON teleport_solar_power_inverters (slave_id, created_at);
CREATE INDEX teleport_solar_power_inverters_teleport_idx ON teleport_solar_power_inverters (teleport_hash_id, asset_identifier, created_at);
CREATE UNIQUE INDEX teleport_solar_power_inverters_teleport_asset_idx ON teleport_solar_power_inverters (teleport_hash_id, asset_identifier, slave_id, measured_at);
COMMENT ON TABLE teleport_solar_power IS '{"version":3}';
COMMENT ON TABLE teleport_solar_power_inverters IS '{"version":3}';

Environmental sensor messages

The schema for messages forwarded from a Teleport device that is connected to a solar inverter with an envrionmental sensor:

CREATE TABLE teleport_environmental_sensors (
"id" serial constraint teleport_environmental_sensors_pkey primary key,
"teleport_hash_id" varchar(32) NOT NULL,
"asset_identifier" varchar(128) NOT NULL,
"sensor_identifier" varchar(128) NOT NULL, -- globally unique identifier of the asset, when available the brand and serial number of the asset
"attempt" INT NOT NULL,
"irradiance" decimal(23, 3), -- in W/m²
"irradiance_factor" decimal(23, 3), -- a static property defined as product of area and efficiency, used to calculate availableActivePower (area is the total surface area of the solar panels in square meters, efficiency is the efficiency of the solar panels + inverters)
"wind_speed" decimal(8, 3), -- in m/s
"scheduled" boolean NOT NULL, -- false for measurements that are not part of the regular reporting interval, eg. directly after command execution and at Teleport initialisation
"measured_at" timestamptz NOT NULL, -- when read-out started
"created_at" timestamptz NOT NULL -- when written to the table
);
CREATE INDEX teleport_environmental_sensors_sensors_idx ON teleport_environmental_sensors (sensor_identifier, created_at);
CREATE INDEX teleport_environmental_sensors_teleport_idx ON teleport_environmental_sensors (teleport_hash_id, asset_identifier, created_at);
CREATE UNIQUE INDEX teleport_environmental_sensors_teleport_asset_idx ON teleport_environmental_sensors (teleport_hash_id, asset_identifier, sensor_identifier, measured_at);
CREATE TABLE teleport_environmental_sensors_temperature (
"id" serial constraint teleport_environmental_sensors_temperature_pkey primary key,
"teleport_hash_id" varchar(32) NOT NULL,
"asset_identifier" varchar(128) NOT NULL,
"sensor_identifier" varchar(128) NOT NULL, -- globally unique identifier of the asset, when available the brand and serial number of the asset
"attempt" INT NOT NULL,
"name" varchar(128) NOT NULL, -- representing temperature measurement
"temperature" decimal(6,2), -- in °C
"scheduled" boolean NOT NULL, -- false for measurements that are not part of the regular reporting interval, eg. directly after command execution and at Teleport initialisation
"measured_at" timestamptz NOT NULL, -- when read-out started
"created_at" timestamptz NOT NULL -- when written to the table
);
CREATE INDEX teleport_environmental_sensors_temperature_idx ON teleport_environmental_sensors_temperature (name, created_at);
CREATE INDEX teleport_environmental_sensors_temperature_environmental_sensors_idx ON teleport_environmental_sensors_temperature (sensor_identifier, created_at);
CREATE INDEX teleport_environmental_sensors_temperature_teleport_idx ON teleport_environmental_sensors_temperature (teleport_hash_id, asset_identifier, created_at);
CREATE UNIQUE INDEX teleport_environmental_sensors_temperature_teleport_asset_idx ON teleport_environmental_sensors_temperature (teleport_hash_id, asset_identifier, sensor_identifier, name, measured_at);
COMMENT ON TABLE teleport_environmental_sensors IS '{"version":1}';
COMMENT ON TABLE teleport_environmental_sensors_temperature IS '{"version":1}';

Battery power

Batteries produce two types of messages: regular messages and flash messages. Regular messages can be exported in full, or to contain only information relevant for operators. For the strings that can occur in the errors and warnings properties, see Battery power error and warning codes.

Regular messages in full

An example of a request containing one message forwarded from a Teleport device that is connected to a battery:

  • The configuration object is deprecated and replaced by setpoints.
  • Mappings are applied as follows:
    • configuration_dispatch_power_active_power = setpoints_confirmed_active_power.
    • configuration_deliver_fcr_max_rate = setpoints_confirmed_deliver_fcr.
    • configuration_charge_to_state_percentage = setpoints_confirmed_charge_to_percentage.
  • Following properties are renamed and new columns are created
    • active_power_setpoint_dispatch_power to active_power_setpoint_active_power
    • active_power_setpoint_charge_to_state to active_power_setpoint_charge_to_percentage
CREATE TABLE teleport_battery_power (
"id" serial constraint teleport_battery_power_pkey primary key,
"teleport_hash_id" varchar(32) NOT NULL, -- uniquely identifies the teleport device
"asset_identifier" varchar(128) NOT NULL, -- globally unique identifier of the asset, when available the brand and serial number of the asset
"attempt" int NOT NULL, -- 0-indexed delivery attempt
"battery_status" varchar(32),
"energy_charged" decimal(23,3), -- in Wh, nonnegative
"energy_discharged" decimal(23,3), -- in Wh, nonnegative
"frequency" decimal(7,2), -- in Hz, nonnegative
"active_power" decimal(23,3), -- in W, positive means discharging, negative charging
"reactive_power" decimal(23,3), -- in var, positive is injecting reactive power to the grid and negative is absorbing reactive power
"power_factor" decimal(5, 4), -- unitless. For capacitive loads (leading power factor, quadrant 4), the PF sign is positive. For inductive loads (lagging power factor, quadrants 1), the PF sign is negative.
"state_of_charge" decimal(7,4), -- in %, nonnegative
"state_of_health" decimal(7,4), -- in %, nonnegative
"available_energy" decimal(23,3), -- in Wh, nonnegative
"rated_energy" decimal(23,3), -- in Wh, nonnegative
"available_active_power_charge" decimal(23,3), -- in W, nonnegative
"available_active_power_discharge" decimal(23,3), -- in W, nonnegative
"available_reactive_power_inject" decimal(23,3), -- in var, nonnegative
"available_reactive_power_absorb" decimal(23,3), -- in var, nonnegative
"active_power_setpoint_active_power" decimal(23,3), -- in W, positive means discharging, negative charging
"active_power_setpoint_deliver_fcr" decimal(23,3), -- in W, positive means discharging, negative charging
"active_power_setpoint_charge_to_percentage" decimal(23,3), -- in W, positive means discharging, negative charging
"active_power_setpoint_aggregate" decimal(23,3), -- in W, positive means discharging, negative charging
"three_phase_connection_type_high_voltage" varchar(32), -- can be "wye" or "delta"
"ac_voltage_medium_voltage_phase_l1" decimal(23,3), -- in V, nonnegative
"ac_voltage_medium_voltage_phase_l2" decimal(23,3), -- in V, nonnegative
"ac_voltage_medium_voltage_phase_l3" decimal(23,3), -- in V, nonnegative
"ac_voltage_medium_voltage_line_l1" decimal(23,3), -- in V, nonnegative
"ac_voltage_medium_voltage_line_l2" decimal(23,3), -- in V, nonnegative
"ac_voltage_medium_voltage_line_l3" decimal(23,3), -- in V, nonnegative
"ac_current_medium_voltage_phase_l1" decimal(23,3), -- in A, delivering to the grid is a positive value
"ac_current_medium_voltage_phase_l2" decimal(23,3), -- in A, delivering to the grid is a positive value
"ac_current_medium_voltage_phase_l3" decimal(23,3), -- in A, delivering to the grid is a positive value
"ac_current_medium_voltage_line_l1" decimal(23,3), -- in A, delivering to the grid is a positive value
"ac_current_medium_voltage_line_l2" decimal(23,3), -- in A, delivering to the grid is a positive value
"ac_current_medium_voltage_line_l3" decimal(23,3), -- in A, delivering to the grid is a positive value
"auxiliary_power_active" decimal(23,3), -- in W, can be null. Negative means consuming, positive generating, will be negative or 0
"auxiliary_power_reactive" decimal(23,3), -- in Var, can be null. Negative means consuming, positive generating, will be negative or 0
"setpoints_confirmed_active_power" decimal(23,3), -- in W, positive means discharging, negative charging.
"setpoints_confirmed_reactive_power_reactive_power" decimal(23, 3), -- setpoint for "fixedReactivePower" mode, in var.
"setpoints_confirmed_reactive_power_power_factor" decimal(5, 4), -- setpoint for "fixedPowerFactor" mode, unitless.
"setpoints_confirmed_reactive_power_mode" varchar(32), -- reactive power control mode, either "fixedReactivePower" or "fixedPowerFactor".
"setpoints_confirmed_deliver_fcr" decimal(23,3), -- in W, nonnegative
"setpoints_confirmed_charge_to_percentage" decimal(7,4), -- in %, nonnegative
"setpoints_desired_active_power_cloud" decimal(23,3), -- in W
"setpoints_desired_active_power_active_control" decimal(23,3), -- in W
"setpoints_desired_active_power_grid_operator" decimal(23,3), -- in W
"setpoints_desired_active_power_modbus_server" decimal(23,3), -- in W
"setpoints_desired_reactive_power_cloud_reactive_power" decimal(23, 3), -- setpoint for "fixedReactivePower" mode, in var.
"setpoints_desired_reactive_power_cloud_power_factor" decimal(5, 4), -- setpoint for "fixedPowerFactor" mode, unitless.
"setpoints_desired_reactive_power_cloud_mode" varchar(32), -- reactive power control mode, either "fixedReactivePower" or "fixedPowerFactor".
"setpoints_desired_reactive_power_grid_operator_reactive_power" decimal(23, 3), -- setpoint for "fixedReactivePower" mode, in var.
"setpoints_desired_reactive_power_grid_operator_power_factor" decimal(5, 4), -- setpoint for "fixedPowerFactor" mode, unitless.
"setpoints_desired_reactive_power_grid_operator_mode" varchar(32), -- reactive power control mode, either "fixedReactivePower" or "fixedPowerFactor".
"setpoints_desired_charge_to_percentage_cloud" decimal(7,4), -- in %
"setpoints_desired_deliver_fcr_cloud" decimal(23,3), -- in W
"setpoints_effective_active_power" decimal(23,3), -- in W
"setpoints_effective_reactive_power_reactive_power" decimal(23, 3), -- setpoint for "fixedReactivePower" mode, in var.
"setpoints_effective_reactive_power_power_factor" decimal(5, 4), -- setpoint for "fixedPowerFactor" mode, unitless.
"setpoints_effective_reactive_power_mode" varchar(32), -- reactive power control mode, either "fixedReactivePower" or "fixedPowerFactor".
"warnings" jsonb, -- if not null, will contain a JSON aray of string elements. see error codes section
"errors" jsonb, -- if not null, will contain a JSON array of string elements. see error codes section
"schedule_complete_until" timestamptz, -- first gap in the schedule for this asset_identifier
"scheduled" boolean NOT NULL, -- false for measurements that are not part of the regular reporting interval, eg. directly after command execution and at Teleport initialisation
"measured_at" timestamptz NOT NULL, -- when read-out started
"created_at" timestamptz NOT NULL -- when written to the table
);
CREATE INDEX teleport_battery_power_teleport_idx ON teleport_battery_power (teleport_hash_id, created_at);
CREATE UNIQUE INDEX teleport_battery_power_teleport_asset_idx ON teleport_battery_power (teleport_hash_id, asset_identifier, measured_at);
comment on table teleport_battery_power is '{"version":4}';
CREATE TABLE teleport_battery_power_bess (
"id" serial constraint teleport_battery_power_bess_pkey primary key,
"teleport_hash_id" varchar(32) NOT NULL, -- uniquely identifies the teleport device
"asset_identifier" varchar(128) NOT NULL, -- globally unique identifier of the asset, when available the brand and serial number of the asset
"bess_identifier" varchar(128) NOT NULL,
"attempt" int NOT NULL, -- 0-indexed delivery attempt
"cell_temperature_min" decimal(6,2), -- in ºC, min value of all cells
"cell_temperature_max" decimal(6,2), -- in ºC, max value of all cells
"room_temperature" decimal(6,2), -- in ºC, max value of all cells
"state_of_charge" decimal(7,4), -- in %, nonnegative
"available_energy" decimal(23,3), -- in Wh, nonnegative
"available_active_power_charge" decimal(23,3), -- in W, nonnegative
"available_active_power_discharge" decimal(23,3), -- in W, nonnegative
"three_phase_connection_type_low_voltage" varchar(32), -- can be "wye" or "delta"
"ac_voltage_low_voltage_phase_l1" decimal(23,3), -- in V, nonnegative
"ac_voltage_low_voltage_phase_l2" decimal(23,3), -- in V, nonnegative
"ac_voltage_low_voltage_phase_l3" decimal(23,3), -- in V, nonnegative
"ac_voltage_low_voltage_line_l1" decimal(23,3), -- in V, nonnegative
"ac_voltage_low_voltage_line_l2" decimal(23,3), -- in V, nonnegative
"ac_voltage_low_voltage_line_l3" decimal(23,3), -- in V, nonnegative
"ac_current_low_voltage_phase_l1" decimal(23,3), -- in A, delivering to the grid is a positive value
"ac_current_low_voltage_phase_l2" decimal(23,3), -- in A, delivering to the grid is a positive value
"ac_current_low_voltage_phase_l3" decimal(23,3), -- in A, delivering to the grid is a positive value
"ac_current_low_voltage_line_l1" decimal(23,3), -- in A, delivering to the grid is a positive value
"ac_current_low_voltage_line_l2" decimal(23,3), -- in A, delivering to the grid is a positive value
"ac_current_low_voltage_line_l3" decimal(23,3), -- in A, delivering to the grid is a positive value
"warnings" jsonb, -- if not null, will contain a JSON aray of string elements. see error codes section
"errors" jsonb, -- if not null, will contain a JSON array of string elements. see error codes section
"scheduled" boolean NOT NULL, -- false for measurements that are not part of the regular reporting interval, eg. directly after command execution and at Teleport initialisation
"measured_at" timestamptz NOT NULL, -- when read-out started
"created_at" timestamptz NOT NULL -- when written to the table
);
CREATE INDEX teleport_battery_power_bess_bess_idx ON teleport_battery_power_bess (bess_identifier, created_at);
CREATE INDEX teleport_battery_power_bess_teleport_idx ON teleport_battery_power_bess (teleport_hash_id, asset_identifier, created_at);
CREATE UNIQUE INDEX teleport_battery_power_bess_teleport_asset_idx ON teleport_battery_power_bess (teleport_hash_id, asset_identifier, bess_identifier, measured_at);
CREATE TABLE teleport_battery_power_bess_rack (
"id" serial constraint teleport_battery_power_bess_rack_pkey primary key,
"teleport_hash_id" varchar(32) NOT NULL, -- uniquely identifies the teleport device
"asset_identifier" varchar(128) NOT NULL, -- globally unique identifier of the asset, when available the brand and serial number of the asset
"bess_identifier" varchar(128) NOT NULL,
"rack_identifier" varchar(128) NOT NULL,
"attempt" int NOT NULL, -- 0-indexed delivery attempt
"dc_voltage" decimal(23,3), -- in V, nonnegative
"dc_current" decimal(23,3), -- in A, delivering to the grid is a positive value
"scheduled" boolean NOT NULL, -- false for measurements that are not part of the regular reporting interval, eg. directly after command execution and at Teleport initialisation
"measured_at" timestamptz NOT NULL, -- when read-out started
"created_at" timestamptz NOT NULL -- when written to the table
);
CREATE INDEX teleport_battery_power_bess_rack_rack_idx ON teleport_battery_power_bess_rack (rack_identifier, created_at);
CREATE INDEX teleport_battery_power_bess_rack_bess_idx ON teleport_battery_power_bess_rack (bess_identifier, created_at);
CREATE INDEX teleport_battery_power_bess_rack_teleport_idx ON teleport_battery_power_bess_rack (teleport_hash_id, asset_identifier, created_at);
CREATE UNIQUE INDEX teleport_battery_power_bess_rack_teleport_asset_idx ON teleport_battery_power_bess_rack (teleport_hash_id, asset_identifier, bess_identifier, rack_identifier, measured_at);

Flash messages

Batteries report flash messages more often than regular messages (typically every second) and contain information that is needed for dispatching algorithms and to forward to the TSO when doing aFRR/FCR.

CREATE TABLE teleport_battery_power_flash (
"id" serial constraint teleport_battery_power_flash_pkey primary key,
"teleport_hash_id" varchar(32) NOT NULL, -- uniquely identifies the teleport device
"asset_identifier" varchar(128) NOT NULL, -- globally unique identifier of the asset, when available the brand and serial number of the asset
"attempt" int NOT NULL, -- 0-indexed delivery attempt
"frequency" decimal(7,2), -- in Hz, nonnegative
"active_power" decimal(23,3), -- in W, positive means discharging, negative charging
"state_of_charge" decimal(7,4), -- in %, nonnegative
"available_energy" decimal(23,3), -- in Wh, nonnegative
"available_active_power_charge" decimal(23,3), -- in W, nonnegative
"available_active_power_discharge" decimal(23,3), -- in W, nonnegative
"scheduled" boolean NOT NULL, -- false for measurements that are not part of the regular reporting interval, eg. directly after command execution and at Teleport initialisation
"measured_at" timestamptz NOT NULL, -- when read-out started
"created_at" timestamptz NOT NULL -- when written to the table
);
CREATE INDEX teleport_battery_power_flash_teleport_idx ON teleport_battery_power_flash (teleport_hash_id, created_at);
CREATE UNIQUE INDEX teleport_battery_power_flash_teleport_asset_idx ON teleport_battery_power_flash (teleport_hash_id, asset_identifier, measured_at);
comment on table teleport_battery_power_flash is '{"version":1}';

Set battery operation commands

The SetBatteryOperation commands that you send in through our cloud API can also be forwarded.

CREATE TABLE teleport_command_set_battery_operation (
"id" serial constraint teleport_command_set_battery_operation_pkey primary key,
"teleport_hash_id" varchar(32) NOT NULL, -- uniquely identifies the teleport device
"asset_identifiers" jsonb,
"attempt" int NOT NULL, -- 0-indexed delivery attempt
"start_at" timestamptz NOT NULL,
"end_at" timestamptz NOT NULL,
"dispatch_power_active_power" decimal(23,3), -- in W, positive means discharging, negative charging
"deliver_fcr_max_rate" decimal(23,3), -- in W, nonnegative
"charge_to_state_percentage" decimal(7,4), -- in %, nonnegative
"received_at" timestamptz NOT NULL, -- when received through our public API
"created_at" timestamptz NOT NULL -- when written to the table
);
CREATE INDEX teleport_command_set_battery_operation_teleport_created_at_idx ON teleport_command_set_battery_operation (teleport_hash_id, created_at);
CREATE INDEX teleport_command_set_battery_operation_start_at_idx ON teleport_command_set_battery_operation (teleport_hash_id, start_at);
CREATE INDEX teleport_command_set_battery_operation_received_at_idx ON teleport_command_set_battery_operation (teleport_hash_id, received_at);
comment on table teleport_command_set_battery_operation is '{"version":1}';

Meter power

The schema for messages forwarded from a Teleport device that is connected to a meter:

  • The phase voltage values are mapped to corresponding phase voltage fields:
  • voltage_phase_l1 = phase_voltage_l1, voltage_phase_l2 = phase_voltage_l2, voltage_phase_l3 = phase_voltage_l3.
  • The line voltage fields are set to NULL, based on the assumption that all connection types are wye-connected, where phase and line voltages are not equal.
  • Current values are mapped to both phase and line fields, as in wye-connected metering, phase and line currents are equal:
  • current_phase_l1 = current_l1, current_phase_l2 = current_l2, current_phase_l3 = current_l3.
  • current_line_l1 = current_l1, current_line_l2 = current_l2, current_line_l3 = current_l3.
CREATE TABLE "teleport_meter_power" (
"id" serial constraint teleport_meter_power_pkey primary key,
"teleport_hash_id" varchar(32) NOT NULL, -- uniquely identifies the teleport device
"asset_identifier" varchar(128) NOT NULL, -- globally unique identifier of the asset, when available the brand and serial number of the asset
"attempt" int NOT NULL, -- 0-indexed delivery attempt
"active_power_l1" decimal(23,3), -- in W, delivering to the grid is a positive value
"active_power_l2" decimal(23,3), -- in W, delivering to the grid is a positive value
"active_power_l3" decimal(23,3), -- in W, delivering to the grid is a positive value
"active_power_sum" decimal(23,3), -- in W, delivering to the grid is a positive value
"reactive_power_l1" decimal(23,3), -- in var, positive is injecting reactive power to the grid and negative is absorbing reactive power
"reactive_power_l2" decimal(23,3), -- in var, positive is injecting reactive power to the grid and negative is absorbing reactive power
"reactive_power_l3" decimal(23,3), -- in var, positive is injecting reactive power to the grid and negative is absorbing reactive power
"reactive_power_sum" decimal(23,3), -- in var, positive is injecting reactive power to the grid and negative is absorbing reactive power
"frequency" decimal(7,2), -- in Hz, nonnegative
"active_energy_consumed_l1" decimal(23,3), -- in Wh, nonnegative
"active_energy_consumed_l2" decimal(23,3), -- in Wh, nonnegative
"active_energy_consumed_l3" decimal(23,3), -- in Wh, nonnegative
"active_energy_consumed_sum" decimal(23,3), -- in Wh, nonnegative
"active_energy_delivered_l1" decimal(23,3), -- in Wh, nonnegative
"active_energy_delivered_l2" decimal(23,3), -- in Wh, nonnegative
"active_energy_delivered_l3" decimal(23,3), -- in Wh, nonnegative
"active_energy_delivered_sum" decimal(23,3), -- in Wh, nonnegative
"errors" jsonb, -- if not null, will contain a JSON array of string elements. see error codes section
"scheduled" boolean NOT NULL, -- false for measurements that are not part of the regular reporting interval, eg. directly after command execution and at Teleport initialisation
"measured_at" timestamptz NOT NULL, -- when read-out started
"created_at" timestamptz NOT NULL, -- when written to the table
"voltage_phase_l1" numeric(23, 3) NULL, -- in V, nonnegative
"voltage_phase_l2" numeric(23, 3) NULL, -- in V, nonnegative
"voltage_phase_l3" numeric(23, 3) NULL, -- in V, nonnegative
"voltage_line_l1" numeric(23, 3) NULL, -- in V, nonnegative
"voltage_line_l2" numeric(23, 3) NULL, -- in V, nonnegative
"voltage_line_l3" numeric(23, 3) NULL, -- in V, nonnegative
"current_phase_l1" numeric(23, 3) NULL, -- in A, delivering to the grid is a positive value
"current_phase_l2" numeric(23, 3) NULL, -- in A, delivering to the grid is a positive value
"current_phase_l3" numeric(23, 3) NULL, -- in A, delivering to the grid is a positive value
"current_line_l1" numeric(23, 3) NULL, -- in A, delivering to the grid is a positive value
"current_line_l2" numeric(23, 3) NULL, -- in A, delivering to the grid is a positive value
"current_line_l3" numeric(23, 3) NULL, -- in A, delivering to the grid is a positive value
"three_phase_connection_type" character varying(32) NULL, -- can be "wye" or "delta"
"apparent_power_l1" numeric(23, 3) NULL, -- in VA, nonnegative
"apparent_power_l2" numeric(23, 3) NULL, -- in VA, nonnegative
"apparent_power_l3" numeric(23, 3) NULL, -- in VA, nonnegative
"apparent_power_sum" numeric(23, 3) NULL, -- in VA, nonnegative
"power_factor_l1" numeric(5, 4) NULL, -- unitless. For capacitive loads (leading power factor, quadrants 2 and 4), the PF sign is positive. For inductive loads (lagging power factor, quadrants 1 and 3), the PF sign is negative.
"power_factor_l2" numeric(5, 4) NULL, -- unitless. For capacitive loads (leading power factor, quadrants 2 and 4), the PF sign is positive. For inductive loads (lagging power factor, quadrants 1 and 3), the PF sign is negative.
"power_factor_l3" numeric(5, 4) NULL -- unitless. For capacitive loads (leading power factor, quadrants 2 and 4), the PF sign is positive. For inductive loads (lagging power factor, quadrants 1 and 3), the PF sign is negative.
);
CREATE INDEX teleport_meter_power_teleport_idx ON teleport_meter_power (teleport_hash_id, created_at);
CREATE UNIQUE INDEX teleport_meter_power_teleport_asset_idx ON teleport_meter_power (teleport_hash_id, asset_identifier, measured_at);
comment on table teleport_meter_power is '{"version":2}';