Firehose
Met Firehose publiceer je realtime telemetrie van installaties in je portfolio naar een destination die jij beheert — Kafka, AMQP 0.9, MQTT of HTTP. In Watt configureer je dit als een pipeline: kies installaties als databron, stel een destination in en kies een delivery mode.
Configuratie onder Developer → Firehose in Watt. Toegang via het Early Access Program; zonder feature-flag is het menu niet zichtbaar.
De message body is het Envi.Baseenvi.baseDe energiecontroller van Envitron die apparaten uitleest, aanstuurt en data opslaat achter de hoofdaansluiting. realtime-JSON-document (schema 1.0.0 hieronder). Binnen één pipeline gaan alle geselecteerde installaties naar de destination van die pipeline (één topic, exchange + routing key, MQTT-topic of URL). Andere pipelines kunnen andere destinations hebben — ook voor dezelfde installatie.
Installatie-identiteit
De JSON-body bevat geen installatie-id. De broninstallatie staat in transportmetadata:
| Destination | Installatie-identiteit |
|---|---|
| Kafka | Message-key = installatie-UUID |
| AMQP 0.9 | Header / property installation_uuid |
| MQTT | Property installation_uuid |
| HTTP | Request-header installation_uuid |
Concepten
| Term | Betekenis |
|---|---|
| Pipeline | Afleverconfiguratie: installaties + destination + delivery mode. |
| Destination | Waar events naartoe gaan: protocol + verbindingsparameters (broker, exchange/topic/URL, credentials). |
Eén destination per pipeline op dit moment.
Payload (realtime schema 1.0.0)
Berichten voldoen aan 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 - Alleen
timeis verplicht op rootniveau;main_meter,batteryensolarverschijnen als dat subsysteem op de installatie aanwezig is
We kunnen nieuwe properties toevoegen aan het huidige schema zonder version bump. Breaking of niet-backwards-compatible wijzigingen — zoals removals of renames — worden expliciet gecommuniceerd; alleen additieve velden niet.
Voorbeeld
{
"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
timenumberrequiredmain_meterobjectGrid connection information
statusstringrequiredavailabledegradedunavailableactive_power_wintegerActive power measured on the grid connect (POI), return delivery / export is negative
batteryobjectGlobal battery information, remaining charge/discharge available when trading is possible
statusstringrequiredavailabledegradedunavailableactive_power_wintegerActive power of all Batteries, charging is positive, discharging is negative
active_power_setpoint_wintegerActive power setpoint, charging is positive, discharging is negative
baseline_power_winteger | nullPower the battery would produce/consume without active steering. Schedule active: scheduled power. No schedule: 0 (natural idle).
socnumber≥ 0≤ 100Average SOC of all available batteries
charge_limit_winteger≥ 0remaining_charge_time_sinteger≥ 0discharge_limit_winteger≥ 0remaining_discharge_time_sinteger≥ 0solarobjectGlobal information of all PV
statusstringrequiredavailabledegradedunavailableactive_power_wintegerActive power of all PV, production is negative
active_power_setpoint_winteger≤ 0Active power setpoint
rated_power_winteger≥ 0min_power_winteger | nullMost negative signed power bound (= full production capacity). Production is negative.
max_power_winteger | nullLeast negative signed power bound (= production floor). Production is negative.
baseline_power_winteger | nullPower 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
| Mode | Hoe lang data bewaard kan blijven | Gedrag |
|---|---|---|
live (default) | ~60 s | Levert alleen recente events. Geen inhaal na downtime; mislukte aflevering wordt gedropt. |
durable | ~14 dagen | Bewaart events zodat aflevering na downtime kan inhalen; blijft retrien binnen dat venster. |
Overschakelen van live naar durable herstelt geen data die onder live al is verlopen.
Pauzeren stopt aflevering; events worden niet gebufferd zolang de pipeline gepauzeerd is (bij live mis je data). Verwijderen haalt de pipeline definitief weg, inclusief eventuele nog niet afgeleverde durable backlog.
Destinations
| Protocol | Publiceert naar |
|---|---|
| Kafka | Een topic op een of meer brokers. |
| AMQP 0.9 | Een bestaande exchange + verplichte routing key (exchange wordt niet voor je gedeclareerd). |
| MQTT | Een MQTT-topic. |
| HTTP | Een HTTP-URL (POST / PUT / PATCH). |
Verplichte velden hangen van het protocol af (brokers/host/URL, topic of routing key, credentials). Destinations moeten publiek bereikbaar zijn. Credentials en TLS verschillen per protocol — gebruik wat het formulier aanbiedt; niet-ondersteunde velden worden door de API geweigerd.
Delen
Pipelines horen bij de organisatie: alle gebruikers van dezelfde organisatie zien dezelfde pipelines en kunnen ze aanmaken, bewerken, pauzeren of verwijderen. Er is geen privé-lijst per gebruiker — behandel Firehose als een gedeelde integratie voor de organisatie.
Support
Early Access of integratievragen: 050 785 1000 of support@envitron.com.