asopi tech
asopi techIndie Developer

Asopitech With · Smart thermostat

ecobee thermostat and sensor history with Alopex Skulk & Alopex DB

ecobee is a smart thermostat that learns your schedule and adjusts heating and cooling automatically for comfort and savings. What if we rebuilt it with Alopex Skulk and Alopex DB?

Updated: Oct 13, 2026

What the service does

ecobee thermostats learn the household schedule and run heating and cooling to save energy without compromising comfort. Higher-end models have a built-in radar occupancy sensor and an indoor air quality monitor, and pair with room SmartSensors. This page rebuilds the temperature and sensor history, and the schedules and settings.

Where the data lives

  • Skulk time series: temperature, humidity, occupancy and air quality are appended to Skulk with room and sensor tags. Hourly trends come from time buckets.
  • Alopex DB SQL tables: homes, rooms, sensors, schedules and temperature settings live in SQL tables.

Reading the sensors and running heating and cooling is the job of the thermostat software.

Deployment

Skulk and Alopex DB are embedded in the thermostat software. Records and schedules stay on the device in the home, so heating and cooling follow the schedule even when the internet drops. Where many homes come together, the same engines run as servers or clusters.

Why Alopex Skulk and Alopex DB fit

Thermostat data combines sensor time series with schedules and settings. Skulk handles the time series and Alopex DB the schedules and settings, both embedded in the device.

See it in code

Schedules and settings live in Alopex DB (room, occupancy and air-quality time series in Skulk). Just the core of reading the target temperature in effect now.

import alopex

# 予定と設定は Alopex DB(室温などの時系列は Skulk が受け持つ)
db = alopex.Database.open("ecobee.alopex")

db.execute_sql("""
    CREATE TABLE IF NOT EXISTS schedules (
        room TEXT,
        part TEXT,
        start_hour INTEGER,
        target INTEGER
    )
""")

for room, part, start_hour, target in [("居間", "朝", 6, 22), ("居間", "昼", 10, 25), ("居間", "夜", 18, 23)]:
    db.execute_sql("INSERT INTO schedules (room, part, start_hour, target) VALUES (?, ?, ?, ?)", [room, part, start_hour, target])

# いまの時刻(例:20時)に効いている設定温度を引く
now_hour = 20
row = db.execute_sql("""
    SELECT part, target
    FROM schedules
    WHERE room = ? AND start_hour <= ?
    ORDER BY start_hour DESC
    LIMIT 1
""", ["居間", now_hour])[0]
print(f'{row["part"]}の設定: {row["target"]}℃')

A time-of-day condition pulls the one setting in effect. The temperature, occupancy and air-quality time series is appended and aggregated by Skulk, tagged by room and sensor.

Sensor time series in Skulk, schedules and settings in Alopex DB. We recommend Alopex Skulk and Alopex DB, both embeddable, for building home devices.