infrastructure capa

infrastructure-ecobee

ecobee adapter — parses the thermostat runtime report (5-minute intervals) and measures per-thermostat runtime plus the cross-feed between two zones

ecobee adapter — parses the thermostat runtime report (5-minute intervals) and measures per-thermostat runtime plus the cross-feed between two zones

Tierinfrastructure
Roleadapter
Pathcrates/infrastructure/ecobee
Edition2021
Targetsinfrastructure-ecobee, infrastructure_ecobee
Public items14 across 0 modules
Tests7

What it is for

ecobee runtime-report reader and zone measurements.

The runtime report is what the ecobee portal exports: one row per five-minute interval per thermostat, carrying the mode, the setpoints, the measured temperature, and per-stage equipment seconds. Everything in this crate is a pure function over that text — no I/O, no clock, no network — so a measurement can be re-derived from the same file forever.

Sprint 4.54. The question the measurements exist to answer: when one zone runs the equipment, is the other zone — which is not calling — being driven away from its own setpoint? That is cross_feed.

Capabilities

crate root

ecobee runtime-report reader and zone measurements.

Item
pub const INTERVAL_SECONDS: u32
fn split_csv_line(line : & str) -> Vec <String>
fn summarize(report : & Report) -> Summary
fn cross_feed(a : & Report, b : & Report) -> CrossFeed

CrossFeed

ecobee runtime-report reader and zone measurements.

Item
pub struct CrossFeed

Header

ecobee runtime-report reader and zone measurements.

Item
pub struct Header

ParseError

ecobee runtime-report reader and zone measurements.

Item
pub enum ParseError

Report

ecobee runtime-report reader and zone measurements.

Item
pub struct Report
fn parse_report(text : & str) -> Result <Report, ParseError>

Row

ecobee runtime-report reader and zone measurements.

Item
pub struct Row
Row :: fn key(& self) -> String
Row :: fn cooling(& self) -> bool
Row :: fn degrees_below_cool_setpoint(& self) -> Option <f64>

Summary

ecobee runtime-report reader and zone measurements.

Item
pub struct Summary

How to use it

No examples/ target and no doctest in this crate's rustdoc. The tests listed under Verification are the closest executable usage.

Module structure

No public modules: the crate root is its whole surface.

Public surface

`crate root`

ItemWhat it is
pub const INTERVAL_SECONDS: u32Seconds in one runtime-report interval
pub enum ParseError
pub struct HeaderThe #,Thermostat,... preamble above the column header row.
pub struct RowOne five-minute interval as reported for one thermostat.
Row :: fn key(& self) -> StringYYYY-MM-DD HH:MM:SS — the join key between two thermostats' reports
Row :: fn cooling(& self) -> boolWas the compressor cooling during this interval?
Row :: fn degrees_below_cool_setpoint(& self) -> Option <f64>Degrees below this thermostat's own cool setpoint, or None when the row lacks either number
pub struct ReportOne thermostat's export: its preamble and every interval in range.
pub struct SummaryPer-thermostat totals over the whole report.
pub struct CrossFeedWhat one thermostat's equipment runtime coincides with at the other.
fn split_csv_line(line : & str) -> Vec <String>Split one CSV line
fn parse_report(text : & str) -> Result <Report, ParseError>Parse a runtime-report export.
fn summarize(report : & Report) -> SummaryTotal one report's runtime and its distance below setpoint.
fn cross_feed(a : & Report, b : & Report) -> CrossFeedLine two thermostats up interval by interval and measure how often one runs the equipment while the other, calling nothing, is driven below its own setpoint.

No pub use re-exports: every item above is declared in this crate.

Boundary

Depends on no other workspace tier.

Shares tier infrastructure with 82 other crates: infrastructure-acquire, infrastructure-adapters-google-calendar, infrastructure-adapters-google-gmail, infrastructure-adapters-google-places, infrastructure-adapters-google-trends, infrastructure-adapters-shodan, infrastructure-adapters-yelp, infrastructure-agent, … (82 total).

_What this crate deliberately does NOT own is a judgment. No committed registry records one for it, so none is stated here._

Where it sits

Tier (ontology)infrastructure
Architectural role (taxonomy)adapter
Locationcrates/infrastructure/ecobee
Vocabulary in force (lexicon)current

Dependencies

Runtime, from outside the workspace.

CrateRequirementFeaturesOptionalOnly on
thiserror^2noalways

Development. None.

Build. None.

Depended on by. Nothing in this workspace.

Feature flags

No Cargo features are defined: every capability is unconditional, so no consumer can receive a half-wired crate.

Targets

KindNameSource
bininfrastructure-ecobee`src/main.rs`
libinfrastructure_ecobee`src/lib.rs`

Error model

Error typeNamed by
ParseErrorparse_report

Operational characteristics

PropertyEvidence
async public surfacenone detected
async runtimenone detected
database accessnone detected
network I/Onone detected
unsafe codenone detected
environment variablesnone detected

No unsafe block, unsafe fn, unsafe impl or unsafe trait was found by the parser anywhere in this crate's source.

Configuration

No environment variable is read with a literal name anywhere in this crate. A variable whose key is computed at run time cannot be listed here, and is not claimed to be absent.

No workspace crate depends on this one.

Verification

KindCount
Unit tests7
Integration tests0
Examples0
Doctests0

Evidence by module. How often each public module is named by something executable.

ModuleTestsExamplesConsumers
crate root1100

What the tests establish, by name:

Documentation coverage

MeasureDocumentedTotal
Public items with rustdoc1314
Public modules with a //! block00
pie showData
    title Public items with rustdoc
    "Documented" : 13
    "No rustdoc detected" : 1

Metrics

MetricValue
Rust source files2
Source lines548
Code lines435
Public API items14
Public modules0
Tests7
Examples0
Cargo features0
Direct runtime dependencies1
Workspace reverse dependencies0
pie showData
    title Public API by kind
    "constant" : 1
    "enum" : 1
    "function" : 4
    "method" : 3
    "struct" : 5
pie showData
    title Rust source composition
    "Code" : 435
    "Blank or comment" : 113

Generation

Rendered by tools-corpus corpus readme from repository evidence alone, renderer schema 2, lexicon current. No model, network service or database was consulted. Regenerate with tools-corpus corpus readme --write; verify with --check.

Todas las infrastructure · Manual