homeconnect_local

Version, currently main branch1 version
  • main branchlatestFeb 14, 2026

github.com/stakach/homeconnect_crystal

homeconnect library for crystal lang (local control)

1 stars
0 dependents
License: MIT

Installation

# Add this to your shard.yml
dependencies:
  homeconnect_local:
    github: stakach/homeconnect_crystal
    branch: main

main is a branch, not a release, so this tracks it rather than pinning a version.

Then run:

shards install

shard.yml

Crystal
no constraint declared
License
MIT
Author
Stephen von Takach

Dependencies

Runtime Dependencies

  • dns*github: spider-gazelle/dns

Development Dependencies

  • ameba*github: crystal-ameba/amebadev

README

homeconnect_local (Crystal)

Minimal Crystal library implementing the Home Connect Local websocket protocol (starting with AES mode).

Status

  • AES mode: implemented (ws://host:80/homeconnect) with AES-CBC + rolling HMAC framing.
  • TLS-PSK mode: implemented (wss://host:443/homeconnect) using OpenSSL TLS 1.2 + PSK callback.

Usage (sketch)

Example: interactive oven CLI (TLS-PSK)

See: examples/oven_cli.cr

require "homeconnect_local"

client = HomeconnectLocal::Client.new(
  host: "192.168.1.50",
  psk64: "<urlsafe base64 psk from profile>",
  iv64: "<urlsafe base64 iv from profile>",
  app_name: "MyAdapter",
  app_id: "deadbeef"
)

client.on_notify = ->(msg : HomeconnectLocal::Message) {
  puts "NOTIFY #{msg.resource} #{msg.data}"
}

client.connect

rsp = client.send_sync(HomeconnectLocal::Message.new(resource: "/ci/info"))
puts rsp.data

Development

crystal spec