Skip to main content

Firehose

Firehose publishes realtime installation telemetry from your portfolio to a destination you control — Kafka, AMQP 0.9, MQTT, or HTTP. In Watt you configure this as a pipeline: choose installations as data sources, set a destination, and pick a delivery mode.

Configure it under Developer → Firehose (Watt). Access is via the Early Access Program; without the feature flag the menu is hidden.

The message body is the Envi.Baseenvi.baseDe energiecontroller van Envitron die apparaten uitleest, aanstuurt en data opslaat achter de hoofdaansluiting. realtime JSON document (schema 1.0.0 below). Within one pipeline, every selected installation is published to that pipeline’s destination (one topic, exchange + routing key, MQTT topic, or URL). Other pipelines can target different destinations — even for the same installation.

Installation identity​

The JSON body does not carry an installation id. Source installation is on the transport:

DestinationInstallation identity
KafkaMessage key = installation UUID
AMQP 0.9Header / property installation_uuid
MQTTProperty installation_uuid
HTTPRequest header installation_uuid

Concepts​

TermMeaning
PipelineDelivery configuration: installations + destination + delivery mode.
DestinationWhere events are published: protocol + connection parameters (broker, exchange/topic/URL, credentials).

One destination per pipeline today.

Payload (realtime schema 1.0.0)​

Messages conform to Envi.Baseenvi.baseDe energiecontroller van Envitron die apparaten uitleest, aanstuurt en data opslaat achter de hoofdaansluiting. realtime schema 1.0.0:

  • JSON Schema draft 2020-12, additionalProperties: false
  • Only time is required at the root; main_meter, battery, and solar appear when that subsystem is present on the installation

We may add new properties to the current schema without a version bump. Breaking or non-backwards-compatible changes — such as removals or renames — are communicated explicitly; additive fields alone are not.

Example​

{
"time": 1763633359.6,
"main_meter": {
"status": "degraded",
"active_power_w": -391240
},
"battery": {
"status": "unavailable",
"active_power_w": -138412,
"active_power_setpoint_w": -300000,
"soc": 28.7,
"charge_limit_w": 400000,
"remaining_charge_time_s": 5963,
"discharge_limit_w": 400000,
"remaining_discharge_time_s": 2137
},
"solar": {
"status": "available",
"active_power_w": -319684,
"active_power_setpoint_w": -503665,
"rated_power_w": 600000
}
}

Schema​

Download: realtime-1.0.0.schema.json

Realtime telemetry

High frequency, minimal data telemetry data

objectadditionalProperties: false
timenumberrequired
main_meterobject

Grid connection information

statusstringrequired
availabledegradedunavailable
active_power_winteger

Active power measured on the grid connect (POI), return delivery / export is negative

batteryobject

Global battery information, remaining charge/discharge available when trading is possible

statusstringrequired
availabledegradedunavailable
active_power_winteger

Active power of all Batteries, charging is positive, discharging is negative

active_power_setpoint_winteger

Active power setpoint, charging is positive, discharging is negative

baseline_power_winteger | null

Power the battery would produce/consume without active steering. Schedule active: scheduled power. No schedule: 0 (natural idle).

socnumber≥ 0≤ 100

Average SOC of all available batteries

charge_limit_winteger≥ 0
remaining_charge_time_sinteger≥ 0
discharge_limit_winteger≥ 0
remaining_discharge_time_sinteger≥ 0
solarobject

Global information of all PV

statusstringrequired
availabledegradedunavailable
active_power_winteger

Active power of all PV, production is negative

active_power_setpoint_winteger≤ 0

Active power setpoint

rated_power_winteger≥ 0
min_power_winteger | null

Most negative signed power bound (= full production capacity). Production is negative.

max_power_winteger | null

Least negative signed power bound (= production floor). Production is negative.

baseline_power_winteger | null

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.

Delivery mode​

ModeHow long data can be retainedBehaviour
live (default)~60 sDelivers only recent events. No catch-up after downtime; failed delivery is dropped.
durable~14 daysRetains events so delivery can catch up after downtime; keeps retrying within that window.

Switching from live to durable does not restore data that already expired under live.

Pause stops delivery; events are not buffered while paused (live in particular will miss data). Delete permanently removes the pipeline and any undelivered durable backlog.

Destinations​

ProtocolPublishes to
KafkaA topic on one or more brokers.
AMQP 0.9An existing exchange + required routing key (exchange is not declared for you).
MQTTAn MQTT topic.
HTTPAn HTTP URL (POST / PUT / PATCH).

Required fields depend on protocol (brokers/host/URL, topic or routing key, credentials). Destinations must be publicly reachable. Credential and TLS options differ per protocol — use what the form exposes; unsupported fields are rejected by the API.

Sharing​

Pipelines are organization-scoped: every user on the same organization sees the same pipelines and can create, edit, pause, or delete them. There is no per-user private pipeline list — treat Firehose as a shared integration surface for the organization.

Support​

Early Access or integration questions: 050 785 1000 or support@envitron.com.