-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathindex.html
More file actions
336 lines (320 loc) · 18.3 KB
/
Copy pathindex.html
File metadata and controls
336 lines (320 loc) · 18.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>FTW | Open-source home energy management</title>
<meta name="description" content="FTW is an Apache-2.0, self-hosted home energy management system. Coordinate solar, batteries, grid and EV charging locally with a Go runtime and community-built Lua drivers.">
<meta name="keywords" content="FTW, home energy management, HEMS, open source, self-hosted, solar, battery, EV charging, Raspberry Pi, Go, Lua, Home Assistant">
<meta name="robots" content="index,follow">
<meta name="author" content="Sourceful Energy and FTW contributors">
<meta name="theme-color" content="#0a0a0a">
<link rel="canonical" href="https://ftw.sourceful.energy/">
<meta property="og:title" content="FTW | Home energy, coordinated in the open">
<meta property="og:description" content="Apache-2.0 home energy management. Self-hosted, local-first and built to be extended.">
<meta property="og:type" content="website">
<meta property="og:url" content="https://ftw.sourceful.energy/">
<meta property="og:image" content="https://ftw.sourceful.energy/favicon.svg">
<meta property="og:site_name" content="FTW">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="FTW | Open-source home energy management">
<meta name="twitter:description" content="A local-first control system for solar, batteries, grid and EV charging.">
<meta name="twitter:image" content="https://ftw.sourceful.energy/favicon.svg">
<link rel="icon" href="/favicon.svg" type="image/svg+xml">
<link rel="stylesheet" href="/sourceful.css?v=2">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"name": "FTW",
"applicationCategory": "DeveloperApplication",
"applicationSubCategory": "Home energy management system",
"operatingSystem": "Linux, Raspberry Pi OS",
"url": "https://ftw.sourceful.energy/",
"downloadUrl": "https://github.com/srcfl/ftw/releases",
"softwareHelp": "https://github.com/srcfl/ftw/blob/master/SUPPORT.md",
"license": "https://www.apache.org/licenses/LICENSE-2.0",
"description": "Apache-2.0, self-hosted home energy management for solar, batteries, grid and EV charging.",
"offers": { "@type": "Offer", "price": "0", "priceCurrency": "EUR" },
"maintainer": {
"@type": "Organization",
"name": "Sourceful Energy",
"url": "https://www.sourceful.energy/"
}
}
</script>
</head>
<body>
<a class="skip-link" href="#content">Skip to content</a>
<header class="site-header">
<div class="wrap nav">
<a class="brand" href="#top" aria-label="ftw home">
<img src="/favicon.svg" alt="ftw logo" width="34" height="34">
<span class="brand-name">ftw</span>
</a>
<nav class="nav-links" aria-label="Primary navigation">
<a href="#architecture">Architecture</a>
<a href="#extend">Build</a>
<a href="#community">Community</a>
<a href="https://github.com/srcfl/ftw#documentation">Docs</a>
<a class="nav-cta" href="https://github.com/srcfl/ftw">GitHub <span aria-hidden="true">↗</span></a>
</nav>
</div>
</header>
<main id="content">
<section class="hero" id="top">
<div class="wrap hero-layout">
<div class="hero-copy">
<p class="project-state"><span class="status-dot" aria-hidden="true"></span>Apache-2.0 · Self-hosted · Community maintained</p>
<h1>Your home energy, coordinated <em>in the open.</em></h1>
<p class="hero-lede">FTW is a local-first home energy management system for solar, batteries, grid and EV charging. Run it on your own hardware, inspect every decision and teach it new devices in Lua.</p>
<div class="hero-actions">
<a class="btn btn-primary" href="#start">Install FTW <span aria-hidden="true">→</span></a>
<a class="btn btn-ghost" href="https://github.com/srcfl/ftw">View source <span aria-hidden="true">↗</span></a>
</div>
<dl class="project-facts">
<div><dt>Runtime</dt><dd>Go + Lua</dd></div>
<div><dt>Runs on</dt><dd>Pi + Linux</dd></div>
<div><dt>Control</dt><dd>Local-first</dd></div>
<div><dt>Support</dt><dd>Community</dd></div>
</dl>
</div>
<aside class="runtime-card" aria-label="Example FTW runtime status">
<div class="runtime-topbar">
<span>ftw / local-runtime</span>
<span class="runtime-live"><i aria-hidden="true"></i>live</span>
</div>
<div class="energy-state">
<div class="state-reading">
<span class="reading-label">SITE METER</span>
<strong>+ 042 W</strong>
<span>near target</span>
</div>
<div class="flow-line" aria-hidden="true"><span></span></div>
<div class="flow-grid">
<div><span>PV</span><strong>−4.8 kW</strong></div>
<div><span>HOME</span><strong>+1.6 kW</strong></div>
<div><span>BATTERY</span><strong>+3.1 kW</strong></div>
<div><span>EV</span><strong>idle</strong></div>
</div>
</div>
<div class="runtime-stack">
<div><span>01</span><b>Lua drivers</b><small>Modbus · MQTT · HTTP</small></div>
<div><span>02</span><b>Control loop</b><small>PI · fuse guard · watchdog</small></div>
<div><span>03</span><b>48 h planner</b><small>price · PV · load · SoC</small></div>
</div>
<div class="runtime-footer"><span>Control stays in the home</span><span>no cloud required</span></div>
</aside>
</div>
</section>
<section class="quickstart" id="start">
<div class="wrap quickstart-layout">
<div>
<p class="section-kicker">Get running</p>
<h2>Start with the software, not a sales call.</h2>
</div>
<div class="install-command" role="group" aria-label="Docker installation command">
<span class="prompt">$</span>
<code>curl -fsSL https://raw.githubusercontent.com/srcfl/ftw/master/scripts/install.sh | bash</code>
</div>
<div class="start-links">
<a href="https://github.com/srcfl/ftw/blob/master/docs/rpi-image.md"><span>01</span>Raspberry Pi image <b>Recommended</b></a>
<a href="https://github.com/srcfl/ftw#install-on-linux"><span>02</span>Docker installer <b>Debian / Ubuntu</b></a>
<a href="https://github.com/srcfl/ftw#install-on-home-assistant"><span>03</span>Home Assistant <b>Add-on</b></a>
<a href="https://github.com/srcfl/ftw#local-development"><span>04</span>Build from source <b>Contributors</b></a>
</div>
</div>
</section>
<section class="section architecture" id="architecture">
<div class="wrap section-head">
<p class="section-kicker">Architecture</p>
<h2>One local system across mixed hardware.</h2>
<p class="section-intro">Vendor apps optimize one device at a time. FTW treats the whole site as one energy system and keeps the fast control path on your Raspberry Pi or Linux host.</p>
</div>
<div class="wrap system-map" role="img" aria-label="Signals from the grid meter, prices, weather and devices flow into the local FTW runtime, which coordinates batteries, inverters, EV charging, APIs and Home Assistant.">
<div class="system-column inputs">
<p class="map-label">Signals in</p>
<div class="map-node"><span>Grid meter</span><small>site boundary</small></div>
<div class="map-node"><span>Prices + weather</span><small>optional inputs</small></div>
<div class="map-node"><span>Device telemetry</span><small>local network</small></div>
</div>
<div class="map-connector" aria-hidden="true"><span>→</span></div>
<div class="system-core">
<div class="core-heading"><img src="/favicon.svg" alt="" width="38" height="38"><div><strong>FTW</strong><small>your host</small></div></div>
<ol>
<li><span>01</span>Normalize device data</li>
<li><span>02</span>Learn PV, load and storage</li>
<li><span>03</span>Plan across the next 48 h</li>
<li><span>04</span>Dispatch with safety fallbacks</li>
</ol>
</div>
<div class="map-connector" aria-hidden="true"><span>→</span></div>
<div class="system-column outputs">
<p class="map-label">Coordinated out</p>
<div class="map-node"><span>Battery + inverter</span><small>charge / discharge</small></div>
<div class="map-node"><span>EV charging</span><small>load / V2X</small></div>
<div class="map-node"><span>API + Home Assistant</span><small>observe / automate</small></div>
</div>
</div>
<div class="wrap architecture-note">
<p><span>Site convention</span> Above the driver boundary, positive power means energy flowing into the site. Every device speaks the same language.</p>
<a href="https://github.com/srcfl/ftw/blob/master/docs/architecture.md">Read the architecture <span aria-hidden="true">↗</span></a>
</div>
</section>
<section class="section capabilities" id="capabilities">
<div class="wrap section-head">
<p class="section-kicker">Inside FTW</p>
<h2>A serious energy runtime, in a repository you can inspect.</h2>
</div>
<div class="wrap capability-grid">
<article>
<span class="cap-number">01 / CONTROL</span>
<h3>Real-time site coordination</h3>
<p>Keep the grid meter near target while solar, storage and charging respond as one system.</p>
<code>PI · slew · dispatch</code>
</article>
<article>
<span class="cap-number">02 / PLAN</span>
<h3>Price-aware planning</h3>
<p>Plan around spot prices, weather, household load, PV production and battery state.</p>
<code>MPC · 48 h horizon</code>
</article>
<article>
<span class="cap-number">03 / LEARN</span>
<h3>Models that learn your site</h3>
<p>Local PV, load, price and battery models adapt to the home instead of assuming every site is alike.</p>
<code>RLS · ARX · twins</code>
</article>
<article>
<span class="cap-number">04 / PROTECT</span>
<h3>Failure-aware by design</h3>
<p>Watchdogs, fuse limits and stale-meter protection return hardware to safe autonomous modes.</p>
<code>fallbacks · clamps</code>
</article>
<article>
<span class="cap-number">05 / STORE</span>
<h3>Keep the history</h3>
<p>SQLite telemetry and compressed Parquet rolloff keep detailed energy data under operator control.</p>
<code>SQLite · Parquet</code>
</article>
<article>
<span class="cap-number">06 / CONNECT</span>
<h3>Open integrations</h3>
<p>Use the HTTP API, Home Assistant MQTT discovery and Lua drivers to connect the rest of your home.</p>
<code>HTTP · MQTT · Lua</code>
</article>
</div>
</section>
<section class="section extend" id="extend">
<div class="wrap extend-layout">
<div class="extend-copy">
<p class="section-kicker">Build with it</p>
<h2>New hardware should be a driver, not a fork.</h2>
<p>FTW drivers are plain Lua files with capability-scoped access to Modbus, MQTT, HTTP, WebSocket and TCP. Edit a driver on the Pi and reload it without rebuilding the Go runtime.</p>
<ul class="check-list">
<li>Start from an existing inverter, meter or charger driver</li>
<li>Test with simulators and the same public host API</li>
<li>Contribute the integration back through a pull request</li>
</ul>
<div class="inline-actions">
<a class="text-link" href="https://github.com/srcfl/device-drivers/blob/main/docs/WRITING-A-DRIVER.md">Write a driver <span aria-hidden="true">→</span></a>
<a class="text-link" href="https://github.com/srcfl/device-drivers/tree/main/drivers/lua">Browse drivers <span aria-hidden="true">↗</span></a>
</div>
</div>
<div class="code-window" role="group" aria-label="Example Lua device driver">
<div class="code-title"><span>drivers/lua/my_inverter.lua</span><span>Lua</span></div>
<pre><code><span class="code-key">function</span> <span class="code-call">driver_init</span>(config)
host.set_make(<span class="code-string">"My Inverter"</span>)
host.mqtt_subscribe(config.topic)
<span class="code-key">end</span>
<span class="code-key">function</span> <span class="code-call">driver_poll</span>()
<span class="code-key">local</span> watts = read_power()
host.emit(<span class="code-string">"battery"</span>, {
power_w = watts,
soc = read_soc()
})
<span class="code-key">return</span> <span class="code-number">1000</span>
<span class="code-key">end</span></code></pre>
<div class="code-footer"><span>hot-editable</span><span>no build step</span><span>PRs welcome</span></div>
</div>
</div>
</section>
<section class="section community" id="community">
<div class="wrap community-layout">
<div class="community-intro">
<p class="section-kicker">The community edition</p>
<h2>Free software, shared stewardship.</h2>
<p>Run FTW at home, study it, modify it and use it commercially under Apache-2.0. Development happens in public and Sourceful Energy maintains the core together with project contributors.</p>
<div class="license-line"><span>Apache-2.0</span><span>Public roadmap</span><span>Community PRs</span></div>
</div>
<div class="community-panels">
<article>
<span class="panel-tag">Community support</span>
<h3>You operate what you run.</h3>
<p>FTW Community comes without official support, warranty, response times or service-level commitments. Help is best-effort from other users and maintainers.</p>
<div class="panel-links">
<a href="https://github.com/srcfl/ftw/issues">Issues <span aria-hidden="true">↗</span></a>
<a href="https://discord.gg/25xcBzQaux">Discord <span aria-hidden="true">↗</span></a>
<a href="https://github.com/srcfl/ftw/blob/master/SUPPORT.md">Support policy <span aria-hidden="true">↗</span></a>
</div>
</article>
<article>
<span class="panel-tag">Contribute</span>
<h3>Make the shared system better.</h3>
<p>Add a device, reproduce a hardware edge case, improve the planner or sharpen the docs. Open an issue before a large change, then build in public.</p>
<div class="panel-links">
<a href="https://github.com/srcfl/ftw/blob/master/CONTRIBUTING.md">Contribution guide <span aria-hidden="true">↗</span></a>
<a href="https://github.com/srcfl/ftw/pulls">Pull requests <span aria-hidden="true">↗</span></a>
</div>
</article>
</div>
</div>
</section>
<section class="section organizations" id="organizations">
<div class="wrap organizations-layout">
<div>
<p class="section-kicker">For organizations</p>
<h2>Open code. Commercial accountability.</h2>
<p class="section-intro">Apache-2.0 already gives you permission to use the Community code. A Sourceful engagement buys delivery ownership, additional capabilities and an accountable support relationship.</p>
<a class="btn btn-primary" href="https://www.sourceful.energy/contact">Talk to Sourceful <span aria-hidden="true">→</span></a>
</div>
<div class="service-list">
<div><span>01</span><p><strong>Supported deployments</strong>Architecture, commissioning, upgrades and operational handover.</p></div>
<div><span>02</span><p><strong>Integrations + OEM</strong>Custom hardware, certification, white-label and product delivery.</p></div>
<div><span>03</span><p><strong>Fleet operations</strong>Provisioning, observability and managed multi-site boundaries.</p></div>
<div><span>04</span><p><strong>Long-term support</strong>Defined maintenance, security handling, response times and SLA.</p></div>
</div>
</div>
</section>
<section class="project-cta">
<div class="wrap project-cta-layout">
<div>
<p class="section-kicker">FTW Community</p>
<h2>Energy infrastructure you can own.</h2>
</div>
<div>
<p>Install it. Read it. Break it safely. Send the fix upstream.</p>
<div class="hero-actions">
<a class="btn btn-primary" href="https://github.com/srcfl/ftw#install-on-linux">Get started <span aria-hidden="true">→</span></a>
<a class="btn btn-ghost" href="https://github.com/srcfl/ftw">Star on GitHub <span aria-hidden="true">↗</span></a>
</div>
</div>
</div>
</section>
</main>
<footer>
<div class="wrap footer-main">
<div class="footer-brand">
<img src="/favicon.svg" alt="" width="38" height="38">
<div><strong>FTW</strong><span>An open-source project maintained by Sourceful Energy and contributors.</span></div>
</div>
<div class="footer-links">
<div><span>Project</span><a href="https://github.com/srcfl/ftw">GitHub</a><a href="https://github.com/srcfl/ftw/releases">Releases</a><a href="https://github.com/srcfl/ftw#documentation">Documentation</a></div>
<div><span>Community</span><a href="https://discord.gg/25xcBzQaux">Discord</a><a href="https://github.com/srcfl/ftw/issues">Issues</a><a href="https://github.com/srcfl/ftw/blob/master/CONTRIBUTING.md">Contribute</a></div>
<div><span>Terms</span><a href="https://github.com/srcfl/ftw/blob/master/LICENSE">Apache-2.0</a><a href="https://github.com/srcfl/ftw/blob/master/TRADEMARKS.md">Trademarks</a><a href="https://github.com/srcfl/ftw/blob/master/SUPPORT.md">Support</a></div>
</div>
</div>
<div class="wrap footer-bottom"><span>© Sourceful Labs AB and FTW contributors</span><a href="https://www.sourceful.energy/">sourceful.energy <span aria-hidden="true">↗</span></a></div>
</footer>
</body>
</html>