SvitloPulse

Data sources

Where our information comes from, which regions have none, and where we can be wrong.

What we use

There are three groups of data: operator schedules (the foundation), Ukrenergo’s grid regime posts (to recognise emergency outages) and independent signals (to notice divergence from a schedule). The primary data belongs to its authors: we do not alter it, only bring it into one shape.

Not every channel is verified equally. Some we checked on live data, some on saved samples. That is why we show data freshness for each region and mark it “stale” when an operator stays silent for long.

Operator schedules

  • An open collection of regional operator schedules. A public dataset that gathers the schedules of twelve regional operators into one format (Cherkasy, Chernihiv, Khmelnytskyi, Kharkiv, Lviv, Ivano-Frankivsk, Poltava, Rivne, Ternopil, Zakarpattia, Zaporizhzhia, Zhytomyr). It has no separate licence, so we credit its authors and do not pass the data off as ours.
  • DTEK (Kyiv, Kyiv Oblast, Dnipro, Odesa). DTEK’s sites are protected against automated access and we do not bypass that protection. Instead we take data from an open MIT-licensed mirror. For Kyiv and Dnipro there is also a Yasno source.
  • Yasno. A public schedule API for Kyiv and Dnipro (DTEK and CEK). It sometimes refuses requests from servers, so we have a fallback source.
  • Mykolaivoblenergo. The operator’s own JSON API.
  • Lvivoblenergo and Prykarpattiaoblenergo. The operators’ own APIs as a fallback. An empty response from them is normal when the day’s schedule is not yet published.

Grid regime

Ukrenergo posts in Telegram messages like “Information about outages”, “State of the power system” and “Attention” about emergency outages. We read the channel’s public web page, recognise the post type and the region, and keep the text minimal and linked to its source. This lets us show “Emergency outages” where hourly schedules do not apply.

We tested the classifier on real posts, but Ukrenergo’s wording changes. When a post cannot be recognised unambiguously, we do not invent a regime.

Signals

Independent signals are power sensors, resident reports and indirect indicators: EV charger availability and regional internet indicators. They only adjust the estimate, and their influence is capped. Reports and sensor data are published only in aggregate, with a delay of at least 30 minutes and when there are at least five. We never publish addresses or coordinates of sources. More in “How it works”.

To be honest: signals are unevenly available, and in many regions there are few or none. There the estimate rests on the schedule alone and confidence is lower.

Coverage by operator

The registry has 25 operators. For 19 of them a schedule source is configured; for the rest there is no usable source. For Crimea, Sevastopol and Luhansk Oblast the registry has no operator, and the map shows “No data”.

OperatorRegion (ISO)How we get the schedule
DTEK Kyiv Electric Networks (KEM)UA-30Yasno (public schedule API) (fallback: Open mirror of DTEK data)
DTEK Kyiv Regional Electric Networks (KREM)UA-32Open mirror of DTEK data
DTEK Dnipro Electric Networks (DnEM)UA-12Yasno (public schedule API) (fallback: Open mirror of DTEK data)
Central Energy Company (CEK), Dnipropetrovsk regionUA-12Yasno (public schedule API)
DTEK Odesa Electric Networks (OEM)UA-51Open mirror of DTEK data
DTEK Donetsk Electric Networks (DEM)UA-14The operator publishes no schedule
CherkasyoblenergoUA-71Open collection of regional operator schedules
ChernihivoblenergoUA-74Open collection of regional operator schedules
KhmelnytskoblenergoUA-68Open collection of regional operator schedules
KharkivoblenergoUA-63Open collection of regional operator schedules
LvivoblenergoUA-46Open collection of regional operator schedules (fallback: Lvivoblenergo’s own API)
PrykarpattiaoblenergoUA-26Open collection of regional operator schedules (fallback: Prykarpattiaoblenergo’s own API)
PoltavaoblenergoUA-53Open collection of regional operator schedules
RivneoblenergoUA-56Open collection of regional operator schedules
TernopiloblenergoUA-61Open collection of regional operator schedules
ZakarpattiaoblenergoUA-21Open collection of regional operator schedules
ZaporizhzhiaoblenergoUA-23Open collection of regional operator schedules
ZhytomyroblenergoUA-18Open collection of regional operator schedules
VinnytsiaoblenergoUA-05Open collection of regional operator schedules
MykolaivoblenergoUA-48Mykolaivoblenergo API
VolynoblenergoUA-07Schedule is published as an image
SumyoblenergoUA-59Schedule is published as an image
KirovohradoblenergoUA-35Schedule is published as Telegram text
ChernivtsioblenergoUA-77Schedule is on a page without structured data
KhersonoblenergoUA-65The operator publishes no schedule

Limits

  • A schedule is the operator’s plan. It can change without notice, and reality can diverge from it.
  • Delay. We poll sources periodically, so an operator’s change does not appear instantly. Data older than 45 minutes is marked “stale”.
  • The level of detail is queue and region. There is no house on the map. The one exception is the address lookup for Kyiv and Dnipro: it comes from Yasno’s address service, we take only the queue number from it and do not store the address.
  • Some regions have no schedule, see the table above. There we show “No data”.
  • We do not bypass technical protections on operators’ sites and do not publish content we have no right to.

Maps and attribution

Region and district boundaries: © OCHA / SSPE “Kartographia” (CC BY-IGO). Settlement names and coordinates: GeoNames (CC BY 4.0).

Signals: map and data — SvitloBot (aggregates by oblast and schedule group, at least 5 sensors); air-quality stations — SaveDnipro / SaveEcoBot (CC BY 4.0); public sensors — Sensor.Community; public probes — RIPE Atlas; charging stations — TOKA (weak supplementary signal only).