ha-sunriser
Home Assistant integration for the SunRiser 8/10 LED aquarium controller.
0
Project description
ha-sunriser โ Bring Your Aquarium Light Into Home Assistant, Powered by WizFi360
#WizFi360 #HomeAssistant #TCP #SmartAquarium #HACS #PWM #MessagePack #IoT #LEDControl #WiFiModule
๐ Community-developed HA integration | Reverse-engineered from open-source SunRiser firmware Production-deployed integration with 49 releases (v1.7.1, April 2026) โ real devices, real users
01 โ What is this project?
Aquarium hobbyists with the SunRiser 8/10 LED controller by LEDaquaristik.de face a familiar problem: the controller has a built-in scheduling engine, per-channel PWM dimming, temperature sensing, and even weather simulation โ but none of that data surfaces in a smart home dashboard. The device sits on the local network with no native Home Assistant support, leaving owners to manage it through a separate browser UI while every other smart device integrates seamlessly.
ha-sunriser solves this by bridging the SunRiser 8/10 to Home Assistant as a fully native custom integration. Once installed via HACS, the controller appears in HA as a device with light entities (per PWM channel, 0โ100% dimmable), switch entities for maintenance mode, time-lapse, and DST auto-tracking, sensor entities for DS1820 temperature readings and firmware version, and a custom Lovelace card that renders all active light schedules as a colour-accurate 24-hour chart โ matching the exact LED colours displayed in the device's own web UI.
The result: aquarium light state, temperature, connectivity health, and planner schedules โ all in one smart home dashboard, with Alexa voice control, HA automations, and backup/restore services on top.
02 โ Why MessagePack over HTTP?
๐ท Binary efficiency on embedded hardware
The SunRiser 8/10 communicates using MessagePack, a compact binary serialisation format. On an embedded system with limited RAM and no HTTP/2 support, MessagePack reduces payload size compared to JSON while remaining schema-agnostic. The integration faithfully speaks this protocol to ensure complete compatibility across all SunRiser firmware versions.
๐ท Open-source firmware as the source of truth
The integration was reverse-engineered from LEDaquaristik's open-source SunRiser firmware (GPL-3.0). This means every config key, PWM range (0โ1000), and API endpoint is grounded in the device's own documented internal behaviour โ not guesswork.
๐ท WizFi360 constraint drives architecture
The SunRiser 8/10 uses a WizFi360 Wi-Fi module for network connectivity. The WizFi360 can only handle one TCP connection at a time. This single hardware constraint is the architectural keystone of the entire integration: rather than batching API calls, the integration staggers polling โ one HTTP request per tick โ ensuring the WizFi360 is never overwhelmed. The hardware limitation became a design discipline that makes the integration more reliable, not less.
03 โ System Architecture

04 โ Why WizFi360? โญ
๐ท WizFi360 as a commercial-grade embedded Wi-Fi solution
The SunRiser 8/10 embeds the WIZnet WizFi360 โ WIZnet's AT-command based Wi-Fi module โ as the device's sole network interface. The WizFi360 handles TCP/IP stack management entirely in hardware, offloading all network state from the ARM microcontroller so the MCU can focus on real-time PWM generation across 8 or 10 channels simultaneously.
๐ท TCP mode โ HTTP server on WizFi360
The WizFi360 operates in TCP server mode, accepting inbound HTTP/1.1 connections and passing request bodies to the SunRiser firmware over UART. This is a hardware-managed TCP socket โ the WizFi360 handles the full TCP handshake, connection state, and data framing without any software TCP stack on the microcontroller side.
Key characteristic: the WizFi360's TCP socket accepts one connection at a time. Once a connection is active, any additional inbound attempt is rejected until the first is closed. This is the defining constraint that ha-sunriser was engineered around.
๐ท The constraint that shaped an integration
Most HA integrations fire multiple API calls in a single update cycle. ha-sunriser cannot โ and by respecting this, it achieves something rare: zero dropped connections in production. The staggered-polling coordinator design means the WizFi360 always has the connection it expects, and HA always gets the data it polls for. A connectivity binary sensor further monitors whether the WizFi360 responded on the last cycle, giving users an early warning system for network issues.
๐ท Verified in production โ
- 49 tagged releases, v1.7.1 latest (April 19, 2026)
- Full documentation site (mrinterbugs.github.io/ha-sunriser)
- Docker-based test environment (Dockerfile.test, pytest.ini, tests/ directory)
- Active GitHub Issues and Pull Requests demonstrating real-device usage
- Lovelace Day Planner card renders real device PWM data live
05 โ Key Components
๐ WIZnet WizFi360 โ TCP Server Mode (HTTP/1.1, single-socket)
WIZnet's embedded Wi-Fi module providing full TCP/IP connectivity for the SunRiser 8/10 ARM microcontroller via UART-AT interface. Operates in hardware-managed TCP server mode โ one active connection at a time. This physical constraint is the core architectural driver of ha-sunriser's staggered polling design.
๐ Python 3 / Home Assistant Integration Framework
The integration (96.2% Python) is built on HA's DataUpdateCoordinator pattern. Handles entity discovery, state polling, service calls (backup, restore, reboot, log retrieval, planner read/write), and options flow for configurable poll intervals (5โ3600 s) and scheduled daily reboots.
๐ฆ MessagePack Binary Protocol
Compact binary serialisation for all device communication โ config reads/writes, state updates, planner data, and diagnostics. Implemented faithfully from the open-source SunRiser firmware as reference.
๐ก๏ธ DS1820 Temperature Sensor (1-Wire)
Hardware temperature sensor attached to the SunRiser, exposed in HA as a sensor entity. Enables aquarium temperature monitoring, dashboard display, and HA automations (e.g., alert if temperature exceeds safe range).
๐จ Custom Lovelace Day Planner Card (JavaScript)
Auto-registered card that renders all active PWM channel schedules as a 24-hour chart, using the same LED channel colours as the device's native web UI. Cached at startup โ no extra device requests on page load.
โ๏ธ HACS Distribution
Standard Home Assistant Community Store packaging with hacs.json, automated CI via GitHub Actions, and a full mkdocs documentation site โ making the integration accessible to non-technical aquarium owners worldwide.
06 โ Application Scenarios
01. Smart Aquarium Dashboard
Combine SunRiser channel states, DS1820 temperature, and connectivity health in a single HA Lovelace dashboard alongside other tank sensors (pH, salinity, flow rate). One screen for the full tank picture.
02. Voice-Controlled Maintenance Mode
Expose the Maintenance Mode switch to Home Assistant Cloud (Nabu Casa). Say "Alexa, turn on tank maintenance mode" to pause the lighting program during water changes โ hands-free, no phone required. A single WizFi360 TCP call handles the toggle.
03. Automated Light Backup Before Changes
Script a sunriser.backup call in HA before any schedule change. If the new planner doesn't work out, sunriser.restore sends the saved config back to the device โ full rollback in one service call.
04. Connectivity Alerting
The binary sensor fires when the WizFi360 misses a poll response. Use it in an HA automation to push a notification immediately if the SunRiser loses network โ before the lighting program silently stops and the tank goes dark.
Conclusion
ha-sunriser demonstrates that understanding hardware constraints at the chip level โ here, the WizFi360's single-TCP-connection model โ is what separates robust IoT integrations from brittle ones.
- โ WizFi360 TCP server mode directly inspired the staggered-polling architecture
- โ MessagePack binary protocol implemented faithfully from open-source firmware
- โ 49 production releases โ v1.7.1 current (April 2026)
- โ Full entity coverage: lights, switches, sensors, binary sensors, buttons, numbers, selects
- โ Custom Lovelace Day Planner card with live device data
- โ Alexa voice control via HA Cloud integration
- โ Backup/restore/reboot service actions
- โ Docker test environment + pytest suite
- โ HACS-installable with full documentation site
Q&A
Q: Why does ha-sunriser send only one HTTP request per polling tick, instead of batching? A: The SunRiser 8/10's WizFi360 Wi-Fi module enforces a single-socket TCP constraint โ only one active connection is accepted at a time. The staggered design is a direct architectural response to this WizFi360 hardware limitation, ensuring the integration never overwhelms the module and always receives clean responses.
Q: What protocol does the SunRiser use, and why MessagePack instead of JSON or REST? A: The SunRiser uses MessagePack over HTTP/1.1. On an ARM microcontroller with limited RAM and no HTTP/2 support, MessagePack provides compact binary serialisation that is both efficient to transmit over the WizFi360's UART link and easy to parse on the device side. The integration reverse-engineered this protocol from the open-source SunRiser firmware.
Q: Can I monitor whether my SunRiser lost network connection? A: Yes. The integration exposes a binary sensor that reports whether the device responded on the last WizFi360 poll cycle. If the WizFi360 drops off the network, HA reports the device as offline immediately โ you can trigger automations or push notifications from there.
Q: Is this integration affiliated with LEDaquaristik? A: No. ha-sunriser is community-built, reverse-engineered from LEDaquaristik's open-source SunRiser firmware (GPL-3.0), and is not affiliated with or supported by LEDaquaristik.
Original Link: https://maker.wiznet.io/Lihan__/projects/ha%2Dsunriser/
ha-sunriser โ WizFi360 ์์์ ์์กฑ๊ด ์กฐ๋ช ์ Home Assistant๋ก ์ ์ดํ๋ค
#WizFi360 #HomeAssistant #TCP #SmartAquarium #HACS #PWM #MessagePack #IoT #LEDControl #WiFiModule
๐ ์ปค๋ฎค๋ํฐ ๊ฐ๋ฐ HA ํตํฉ ๋ชจ๋ | ์คํ์์ค SunRiser ํ์จ์ด ์ญ๊ณตํ ๊ธฐ๋ฐ 49ํ ๋ฆด๋ฆฌ์ฆ(v1.7.1, 2026๋ 4์) โ ์ค์ ๊ธฐ๊ธฐ, ์ค์ ์ฌ์ฉ์ ํ๊ฒฝ์์ ๊ฒ์ฆ
01 โ ์ด ํ๋ก์ ํธ๋ ๋ฌด์์ธ๊ฐ?
LEDaquaristik.de์ SunRiser 8/10 LED ์ปจํธ๋กค๋ฌ๋ฅผ ์ฌ์ฉํ๋ ์์กฑ๊ด ๋ง๋์๋ค์ ๊ณตํต๋ ๋ถํธ์ ๊ฒช๋๋ค. ์ด ์ปจํธ๋กค๋ฌ๋ ์ฑ๋๋ณ PWM ๋๋ฐ, ์ผ์ ์ค์ผ์ค๋ง, ์จ๋ ์ผ์ฑ, ๋ ์จ ์๋ฎฌ๋ ์ด์ ๊น์ง ๊ฐ์ถ๊ณ ์์ง๋ง โ ๊ทธ ๋ชจ๋ ๋ฐ์ดํฐ๋ ๋ณ๋ ์น ๋ธ๋ผ์ฐ์ UI ์์ ๊ฐํ ์๋ค. ๋ค๋ฅธ ์ค๋งํธํ ๊ธฐ๊ธฐ๋ค์ด Home Assistant์ ์์ฐ์ค๋ฝ๊ฒ ํตํฉ๋๋ ๋์, SunRiser๋ง์ ์ฌ์ ํ ๋ก์ปฌ ๋คํธ์ํฌ์ ์ฌ์ฒ๋ผ ์กด์ฌํ๋ค.
ha-sunriser๋ SunRiser 8/10์ Home Assistant์ ์์ ํ ๋ค์ดํฐ๋ธ ๊ธฐ๊ธฐ๋ก ํธ์ ์ํจ๋ค. HACS๋ฅผ ํตํด ์ค์นํ๋ฉด ์ปจํธ๋กค๋ฌ๊ฐ HA์ ๋ค์๊ณผ ๊ฐ์ด ๋ํ๋๋ค: ์ฑ๋๋ณ ์กฐ๋ช ์ํฐํฐ(0โ100% ๋๋ฐ), ์ ์ง๋ณด์ ๋ชจ๋ยทํ์๋ฉ์คยทDST ์๋ ์ถ์ ์ฉ ์ค์์น ์ํฐํฐ, DS1820 ์จ๋ ๋ฐ ํ์จ์ด ๋ฒ์ ์ผ์, ๊ทธ๋ฆฌ๊ณ ๊ธฐ๊ธฐ ์์ฒด ์น UI์ ๋์ผํ LED ์์์ผ๋ก 24์๊ฐ ์ค์ผ์ค์ ๋ ๋๋งํ๋ ์ปค์คํ Lovelace ์นด๋๊น์ง.
๊ฒฐ๊ณผ๋ฌผ: ์์กฑ๊ด ์กฐ๋ช ์ํ, ์จ๋, ์ฐ๊ฒฐ ์ํ, ํ๋๋ ์ค์ผ์ค โ ์ค๋งํธํ ๋์๋ณด๋ ํ๋์์ ์ ๋ถ. ์ฌ๊ธฐ์ Alexa ์์ฑ ์ ์ด, HA ์๋ํ, ๋ฐฑ์ /๋ณต์ ์๋น์ค๊น์ง ๋ค์ผ๋ก ๋ฐ๋ผ์จ๋ค.
02 โ ์ HTTP ์์ MessagePack์ธ๊ฐ?
๐ท ์๋ฒ ๋๋ ํ๋์จ์ด์์์ ๋ฐ์ด๋๋ฆฌ ํจ์จ์ฑ
SunRiser 8/10์ MessagePack โ ์ปดํฉํธํ ๋ฐ์ด๋๋ฆฌ ์ง๋ ฌํ ํฌ๋งท โ ์ผ๋ก ํต์ ํ๋ค. RAM์ด ์ ํ์ ์ด๊ณ HTTP/2๋ฅผ ์ง์ํ์ง ์๋ ์๋ฒ ๋๋ ์์คํ ์์, MessagePack์ JSON๋ณด๋ค ํ์ด๋ก๋๋ฅผ ์ค์ด๋ฉด์๋ ์คํค๋ง์ ์ข ์๋์ง ์๋๋ค. ํตํฉ ๋ชจ๋์ ์ด ํ๋กํ ์ฝ์ ์ถฉ์คํ ๊ตฌํํด ๋ชจ๋ SunRiser ํ์จ์ด ๋ฒ์ ๊ณผ์ ์์ ํ ํธํ์ฑ์ ํ๋ณดํ๋ค.
๐ท ์คํ์์ค ํ์จ์ด๋ฅผ ์ง์ค์ ์์ฒ์ผ๋ก
์ด ํตํฉ์ LEDaquaristik์ ์คํ์์ค SunRiser ํ์จ์ด(GPL-3.0)๋ฅผ ์ญ๊ณตํํด ๊ตฌ์ถ๋์๋ค. ๋ชจ๋ ์ค์ ํค, PWM ๋ฒ์(0โ1000), API ์๋ํฌ์ธํธ๋ ๊ธฐ๊ธฐ ์์ฒด์ ๋ฌธ์ํ๋ ๋ด๋ถ ๋์์ ๊ธฐ๋ฐํ๋ค โ ์ถ์ธก์ด ์๋ ๊ณต์ ์์ค ์ฝ๋์์ ๋์ถ๋ ๊ฐ๋ค์ด๋ค.
๐ท WizFi360 ์ ์ฝ์ด ์ํคํ ์ฒ๋ฅผ ๊ฒฐ์ ํ๋ค
SunRiser 8/10์ ๋คํธ์ํฌ ์ฐ๊ฒฐ์ ์ํด WizFi360 Wi-Fi ๋ชจ๋์ ํ์ฌํ๊ณ ์๋ค. WizFi360์ ํ ๋ฒ์ ํ๋์ TCP ์ฐ๊ฒฐ๋ง ์ฒ๋ฆฌํ ์ ์๋ค. ์ด ๋จ์ผ ํ๋์จ์ด ์ ์ฝ์ด ํตํฉ ์ ์ฒด ์ํคํ ์ฒ์ ํต์ฌ์ถ์ด๋ค: API ํธ์ถ์ ๋ฐฐ์น๋ก ๋ฌถ๋ ๋์ , ํตํฉ์ ํด๋ง์ ๋ถ์ฐ์ํจ๋ค โ ํฑ๋น HTTP ์์ฒญ ํ๋. WizFi360์ด ๊ณผ๋ถํ๋๋ ์ผ์ด ์๋๋ก ํ๋ ํ๋์จ์ด ์กด์ค ์ค๊ณ๋ค. ํ๋์จ์ด ํ๊ณ๊ฐ ์คํ๋ ค ์ ๋ขฐ์ฑ์ ๋์ด๋ ์ค๊ณ ๊ท์จ์ด ๋ ๊ฒ์ด๋ค.
03 โ ์์คํ ์ํคํ ์ฒ

04 โ ์ WizFi360์ธ๊ฐ? โญ
๐ท ์์ฉ ๋ฑ๊ธ ์๋ฒ ๋๋ Wi-Fi ์๋ฃจ์ ์ผ๋ก์์ WizFi360
SunRiser 8/10์ ๊ธฐ๊ธฐ์ ์ ์ผํ ๋คํธ์ํฌ ์ธํฐํ์ด์ค๋ก WIZnet WizFi360์ ๋ด์ฅํ๋ค. WizFi360์ TCP/IP ์คํ ๊ด๋ฆฌ ์ ์ฒด๋ฅผ ํ๋์จ์ด์์ ์ฒ๋ฆฌํด, ARM MCU๊ฐ 8~10๊ฐ ์ฑ๋์ ๊ฑธ์น ์ค์๊ฐ PWM ์์ฑ์๋ง ์ง์คํ ์ ์๊ฒ ํด์ค๋ค.
๐ท TCP ๋ชจ๋ โ WizFi360 ์์ HTTP ์๋ฒ
WizFi360์ TCP ์๋ฒ ๋ชจ๋๋ก ๋์ํ๋ฉฐ, ์ธ๋ฐ์ด๋ HTTP/1.1 ์ฐ๊ฒฐ์ ๋ฐ์ ์์ฒญ ๋ณธ๋ฌธ์ UART๋ฅผ ํตํด SunRiser ํ์จ์ด๋ก ์ ๋ฌํ๋ค. MCU ์ธก์๋ ์ํํธ์จ์ด TCP ์คํ์ด ์ ํ ์๋ค โ TCP ํธ๋์ ฐ์ดํฌ, ์ฐ๊ฒฐ ์ํ, ๋ฐ์ดํฐ ํ๋ ์ด๋ฐ ๋ชจ๋ WizFi360 ํ๋์จ์ด๊ฐ ์ฒ๋ฆฌํ๋ค.
ํต์ฌ ํน์ฑ: WizFi360 TCP ์์ผ์ ํ ๋ฒ์ ์ฐ๊ฒฐ ํ๋๋ง ์๋ฝํ๋ค. ์ฒซ ๋ฒ์งธ ์ฐ๊ฒฐ์ด ์ ์ง๋๋ ๋์ ์ถ๊ฐ ์ธ๋ฐ์ด๋ ์๋๋ ๋ชจ๋ ๊ฑฐ๋ถ๋๋ค. ์ด๊ฒ์ด ha-sunriser๊ฐ ์ค๊ณ์ ํด๊ฒฐํด์ผ ํ๋ ๊ฒฐ์ ์ ์ ์ฝ์ด๋ค.
๐ท ์ํคํ ์ฒ๋ฅผ ๋น์ด๋ธ ์ ์ฝ
๋๋ถ๋ถ์ HA ํตํฉ์ ํ ๋ฒ์ ์ ๋ฐ์ดํธ ์ฌ์ดํด์ ์ฌ๋ฌ API ํธ์ถ์ ๋ฌถ์ด ๋ณด๋ธ๋ค. ha-sunriser๋ ๊ทธ๋ด ์ ์๋ค โ ๊ทธ๋ฆฌ๊ณ ์ด ์ ์ฝ์ ์กด์คํจ์ผ๋ก์จ ๋๋ฌธ ๊ฒ์ ๋ฌ์ฑํ๋ค: ํ๋ก๋์ ์์ ์ฐ๊ฒฐ ๋๋ ์ ๋ก. ๋ถ์ฐ ํด๋ง ์ฝ๋๋ค์ดํฐ ์ค๊ณ๋ WizFi360์ด ํญ์ ๊ธฐ๋ํ๋ ์ฐ๊ฒฐ์ ๋ฐ๊ณ , HA๋ ํญ์ ํด๋งํ ๋ฐ์ดํฐ๋ฅผ ์ป๋ ๊ฒ์ ๋ณด์ฅํ๋ค. ์ถ๊ฐ๋ก ์ฐ๊ฒฐ ๋ฐ์ด๋๋ฆฌ ์ผ์๊ฐ WizFi360 ์๋ต ์ฌ๋ถ๋ฅผ ๋ชจ๋ํฐ๋งํด ๋คํธ์ํฌ ๋ฌธ์ ๋ฅผ ์กฐ๊ธฐ ๊ฒฝ๋ณดํ๋ค.
๐ท ํ๋ก๋์ ๊ฒ์ฆ โ
- 49ํ ํ๊ทธ ๋ฆด๋ฆฌ์ฆ, v1.7.1 ์ต์ (2026๋ 4์ 19์ผ)
- ์ ์ฒด ๋ฌธ์ ์ฌ์ดํธ (mrinterbugs.github.io/ha-sunriser)
- Docker ๊ธฐ๋ฐ ํ ์คํธ ํ๊ฒฝ (Dockerfile.test, pytest.ini, tests/ ๋๋ ํ ๋ฆฌ)
- ์ค์ ๊ธฐ๊ธฐ ์ฌ์ฉ์ ์ฆ๋ช ํ๋ ํ์ฑ GitHub Issues ๋ฐ Pull Requests
- Day Planner Lovelace ์นด๋๊ฐ ์ค๊ธฐ๊ธฐ PWM ๋ฐ์ดํฐ๋ฅผ ์ค์๊ฐ ๋ ๋๋ง
05 โ ์ฃผ์ ๊ตฌ์ฑ ์์
๐ WIZnet WizFi360 โ TCP ์๋ฒ ๋ชจ๋ (HTTP/1.1, ๋จ์ผ ์์ผ)
SunRiser 8/10 ARM MCU์ UART-AT ์ธํฐํ์ด์ค๋ก TCP/IP ์ฐ๊ฒฐ์ ์ ๊ณตํ๋ WIZnet ์๋ฒ ๋๋ Wi-Fi ๋ชจ๋. ํ๋์จ์ด ๊ด๋ฆฌ TCP ์๋ฒ ๋ชจ๋๋ก ๋์ โ ๋์ ํ์ฑ ์ฐ๊ฒฐ ํ๋ ์ ํ. ์ด ๋ฌผ๋ฆฌ์ ์ ์ฝ์ด ha-sunriser ๋ถ์ฐ ํด๋ง ์ค๊ณ์ ํต์ฌ ๋์ธ.
๐ Python 3 / Home Assistant ํตํฉ ํ๋ ์์ํฌ
HA์ DataUpdateCoordinator ํจํด ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋ ํตํฉ (์ ์ฒด ์ฝ๋์ 96.2%๊ฐ Python). ์ํฐํฐ ์๋ ๋ฐ๊ฒฌ, ์ํ ํด๋ง, ์๋น์ค ํธ์ถ(๋ฐฑ์
, ๋ณต์, ์ฌ๋ถํ
, ๋ก๊ทธ ์์ง, ํ๋๋ ์ฝ๊ธฐ/์ฐ๊ธฐ), ์ต์
ํ๋ก์ฐ๋ฅผ ํตํ ํด๋ง ๊ฐ๊ฒฉ(5โ3600์ด) ๋ฐ ์ผ์ผ ์์ฝ ์ฌ๋ถํ
์ค์ ์ง์.
๐ฆ MessagePack ๋ฐ์ด๋๋ฆฌ ํ๋กํ ์ฝ
๋ชจ๋ ๊ธฐ๊ธฐ ํต์ โ ์ค์ ์ฝ๊ธฐ/์ฐ๊ธฐ, ์ํ ์ ๋ฐ์ดํธ, ํ๋๋ ๋ฐ์ดํฐ, ์ง๋จ โ ์ ์ฌ์ฉ๋๋ ์ปดํฉํธ ๋ฐ์ด๋๋ฆฌ ์ง๋ ฌํ. ์คํ์์ค SunRiser ํ์จ์ด๋ฅผ ๋ ํผ๋ฐ์ค๋ก ์ถฉ์คํ ๊ตฌํ.
๐ก๏ธ DS1820 ์จ๋ ์ผ์ (1-Wire)
SunRiser์ ์ฐ๊ฒฐ๋ ํ๋์จ์ด ์จ๋ ์ผ์. HA ์ผ์ ์ํฐํฐ๋ก ๋ ธ์ถ๋์ด ์์กฑ๊ด ์จ๋ ๋ชจ๋ํฐ๋ง, ๋์๋ณด๋ ํ์, HA ์๋ํ(์: ์จ๋ ์ด์ ์ ์๋ฆผ)์ ํ์ฉ ๊ฐ๋ฅ.
๐จ ์ปค์คํ Lovelace Day Planner ์นด๋ (JavaScript)
๋ชจ๋ ํ์ฑ PWM ์ฑ๋ ์ค์ผ์ค์ 24์๊ฐ ์ฐจํธ๋ก ๋ ๋๋งํ๋ ์๋ ๋ฑ๋ก ์นด๋ โ ๊ธฐ๊ธฐ ์์ฒด ์น UI์ ๋์ผํ LED ์ฑ๋ ์์ ์ฌ์ฉ. ์์ ์ ์บ์๋์ด ํ์ด์ง ๋ก๋ ์ ๊ธฐ๊ธฐ์ ์ถ๊ฐ ์์ฒญ ์์.
โ๏ธ HACS ๋ฐฐํฌ
hacs.json, GitHub Actions CI ์๋ํ, ์ ์ฒด mkdocs ๋ฌธ์ ์ฌ์ดํธ๋ฅผ ๊ฐ์ถ ํ์ค Home Assistant Community Store ํจํค์ง โ ๋น๊ธฐ์ ์ ์ธ ์์กฑ๊ด ์ ํธ๊ฐ๋ ์ ์ธ๊ณ ์ด๋์๋ ์ ๊ทผ ๊ฐ๋ฅ.
06 โ ์ ์ฉ ์๋๋ฆฌ์ค
01. ์ค๋งํธ ์์กฑ๊ด ๋์๋ณด๋
SunRiser ์ฑ๋ ์ํ, DS1820 ์จ๋, ์ฐ๊ฒฐ ์ํ๋ฅผ ๋ค๋ฅธ ์์กฐ ์ผ์(pH, ์ผ๋, ์ ๋)์ ํจ๊ป HA Lovelace ๋์๋ณด๋ ํ๋์ ํตํฉ. ์ ์ฒด ์์กฐ ์ํฉ์ ํ๋ฉด ํ๋๋ก ํ์ .
02. ์์ฑ ์ ์ด ์ ์ง๋ณด์ ๋ชจ๋
์ ์ง๋ณด์ ๋ชจ๋ ์ค์์น๋ฅผ Home Assistant Cloud(Nabu Casa)์ ๋ ธ์ถํ๋ฉด Alexa๊ฐ ์ค๋งํธํ ๊ธฐ๊ธฐ๋ก ์ธ์ํ๋ค. ์์กฐ ๋ฌผ๊ฐ์ด ์ค "์๋ ์ฌ, ์์กฐ ์ ์ง๋ณด์ ๋ชจ๋ ์ผ์ค" ํ ๋ง๋๋ก ์กฐ๋ช ํ๋ก๊ทธ๋จ์ ์ผ์ ์ ์ง โ ์ ํ๋ ์ ์จ๋ ๋๋ค. WizFi360 TCP ํธ์ถ ํ๋๊ฐ ํ ๊ธ์ ์ฒ๋ฆฌํ๋ค.
03. ๋ณ๊ฒฝ ์ ์๋ ์ค์ ๋ฐฑ์
HA ์คํฌ๋ฆฝํธ๋ก ์ค์ผ์ค ๋ณ๊ฒฝ ์ sunriser.backup ์๋น์ค๋ฅผ ํธ์ถํ๋ค. ์ ํ๋๋๊ฐ ์ ๋๋ก ์๋ํ์ง ์์ผ๋ฉด sunriser.restore๊ฐ ์ ์ฅ๋ ์ค์ ์ ๊ธฐ๊ธฐ๋ก ๋๋๋ฆฐ๋ค โ ์๋น์ค ํธ์ถ ํ๋๋ก ์ ์ฒด ๋กค๋ฐฑ ์๋ฃ.
04. ์ฐ๊ฒฐ ์ํ ์๋ฆผ
WizFi360์ด ํด๋ง ์๋ต์ ํ์ง ์์ผ๋ฉด ๋ฐ์ด๋๋ฆฌ ์ผ์๊ฐ ํธ๋ฆฌ๊ฑฐ๋๋ค. HA ์๋ํ์์ ์ด๋ฅผ ํ์ฉํด SunRiser๊ฐ ๋คํธ์ํฌ๋ฅผ ์๋ ์ฆ์ ํธ์ ์๋ฆผ ์ ์ก โ ์กฐ๋ช ํ๋ก๊ทธ๋จ์ด ์กฐ์ฉํ ๋ฉ์ถ๊ณ ์์กฐ๊ฐ ์ด๋์์ง๊ธฐ ์ ์ ๋์.
๊ฒฐ๋ก
ha-sunriser๋ ์นฉ ์์ค์ ํ๋์จ์ด ์ ์ฝ โ ์ฌ๊ธฐ์๋ WizFi360์ ๋จ์ผ TCP ์ฐ๊ฒฐ ๋ชจ๋ธ โ ์ ๊น์ด ์ดํดํ๋ ๊ฒ์ด ๊ฒฌ๊ณ ํ IoT ํตํฉ๊ณผ ์ทจ์ฝํ ํตํฉ์ ๊ฐ๋ฅด๋ ์ฐจ์ด์์ ์ฆ๋ช ํ๋ค.
- โ WizFi360 TCP ์๋ฒ ๋ชจ๋๊ฐ ๋ถ์ฐ ํด๋ง ์ํคํ ์ฒ์ ์ง์ ์ ๋์ธ
- โ ์คํ์์ค ํ์จ์ด์์ ๋์ถ๋ MessagePack ๋ฐ์ด๋๋ฆฌ ํ๋กํ ์ฝ ์ถฉ์ค ๊ตฌํ
- โ 49ํ ํ๋ก๋์ ๋ฆด๋ฆฌ์ฆ โ v1.7.1 ํ์ฌ (2026๋ 4์)
- โ ์์ ํ ์ํฐํฐ ์ปค๋ฒ๋ฆฌ์ง: ์กฐ๋ช , ์ค์์น, ์ผ์, ๋ฐ์ด๋๋ฆฌ ์ผ์, ๋ฒํผ, ์ซ์, ์ ํ
- โ ์ค๊ธฐ๊ธฐ ๋ฐ์ดํฐ ๊ธฐ๋ฐ ์ปค์คํ Lovelace Day Planner ์นด๋
- โ HA Cloud ํตํฉ์ ํตํ Alexa ์์ฑ ์ ์ด
- โ ๋ฐฑ์ /๋ณต์/์ฌ๋ถํ ์๋น์ค ์ก์
- โ Docker ํ ์คํธ ํ๊ฒฝ + pytest ํ ์คํธ ์ค์ํธ
- โ ์ ์ฒด ๋ฌธ์ ์ฌ์ดํธ๋ฅผ ๊ฐ์ถ HACS ๋ฐฐํฌ
Q&A
Q: ha-sunriser๋ ์ ๋ฐฐ์น ์์ฒญ ๋์ ํฑ๋น HTTP ์์ฒญ ํ๋๋ง ๋ณด๋ด๋์? A: SunRiser 8/10์ WizFi360 Wi-Fi ๋ชจ๋์ ๋จ์ผ ์์ผ TCP ์ ์ฝ์ ๊ฐ์ ํฉ๋๋ค โ ํ ๋ฒ์ ํ๋์ ํ์ฑ ์ฐ๊ฒฐ๋ง ์๋ฝ๋ฉ๋๋ค. ๋ถ์ฐ ์ค๊ณ๋ ์ด WizFi360 ํ๋์จ์ด ํ๊ณ์ ๋ํ ์ง์ ์ ์ธ ์ํคํ ์ฒ ๋์์ผ๋ก, ํตํฉ์ด ๋ชจ๋์ ์ ๋ ๊ณผ๋ถํ์ํค์ง ์๊ณ ํญ์ ๊น๋ํ ์๋ต์ ๋ฐ๊ฒ ๋ณด์ฅํฉ๋๋ค.
Q: SunRiser๋ ์ด๋ค ํ๋กํ ์ฝ์ ์ฌ์ฉํ๊ณ , ์ JSON์ด๋ REST ๋์ MessagePack์ธ๊ฐ์? A: SunRiser๋ HTTP/1.1 ์์ MessagePack์ ์ฌ์ฉํฉ๋๋ค. RAM์ด ์ ํ์ ์ด๊ณ HTTP/2๋ฅผ ์ง์ํ์ง ์๋ ARM MCU์์, MessagePack์ WizFi360์ UART ๋งํฌ๋ฅผ ํตํด ์ ์กํ๊ธฐ์ ํจ์จ์ ์ด๋ฉด์ ๊ธฐ๊ธฐ ์ธก์์ ํ์ฑํ๊ธฐ๋ ์ฌ์ด ์ปดํฉํธ ๋ฐ์ด๋๋ฆฌ ์ง๋ ฌํ๋ฅผ ์ ๊ณตํฉ๋๋ค. ํตํฉ์ ์คํ์์ค SunRiser ํ์จ์ด์์ ์ด ํ๋กํ ์ฝ์ ์ญ๊ณตํํ์ต๋๋ค.
Q: SunRiser๊ฐ ๋คํธ์ํฌ ์ฐ๊ฒฐ์ ์์๋์ง ๋ชจ๋ํฐ๋งํ ์ ์๋์? A: ๋ค. ํตํฉ์ด ๋ ธ์ถํ๋ ๋ฐ์ด๋๋ฆฌ ์ผ์๊ฐ ๋ง์ง๋ง WizFi360 ํด๋ง ์ฌ์ดํด์์ ๊ธฐ๊ธฐ๊ฐ ์๋ตํ๋์ง ๋ณด๊ณ ํฉ๋๋ค. WizFi360์ด ๋คํธ์ํฌ์์ ์ดํํ๋ฉด HA๊ฐ ์ฆ์ ๊ธฐ๊ธฐ๋ฅผ ์คํ๋ผ์ธ์ผ๋ก ํ์ํฉ๋๋ค โ ์ฌ๊ธฐ์ ์๋ํ๋ ํธ์ ์๋ฆผ์ ํธ๋ฆฌ๊ฑฐํ ์ ์์ต๋๋ค.
Q: ์ด ํตํฉ์ LEDaquaristik๊ณผ ๊ณต์ ์ ํด ๊ด๊ณ์ธ๊ฐ์? A: ์๋๋๋ค. ha-sunriser๋ LEDaquaristik์ ์คํ์์ค SunRiser ํ์จ์ด(GPL-3.0)๋ฅผ ์ญ๊ณตํํด ์ปค๋ฎค๋ํฐ๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ๊ตฌ์ถํ ํ๋ก์ ํธ๋ก, LEDaquaristik๊ณผ ์ ํดํ๊ฑฐ๋ ๊ณต์ ์ง์์ ๋ฐ์ง ์์ต๋๋ค.