WallpaperMachine
당신이 사랑하는 배경화면, 맥에서 새롭게 만나보세요
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기LCC (OpenLCB) layout controller for model railroads: finds the nodes on the bus, configures them from their CDI, and runs Home Assistant style automations. One Go binary with a built-in web interface.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗An LCC (OpenLCB) layout controller for model railroads, built to be easy to use: nodes show up by name, configuration is a form instead of a memory map, and automations are built in the browser from triggers, conditions and actions, the way Home Assistant does it.
Interlock is a single Go binary with an embedded web interface. It speaks LCC directly over GridConnect (USB serial or TCP), acts as a hub between links, and is itself a node on the bus.
Status: early. Interlock joins the bus, finds and identifies nodes,
reads their configuration descriptions, shows every message decoded, and
lets you edit a node's configuration in a form generated from its CDI,
with replicated groups as tabs and only changed values written. It turns
the events a node's configuration names into entities (turnouts, blocks,
RailCom reporters, sensors, switches) through YAML profiles, shipped for
canbus-outpost and simple-dcc and guessed for other nodes, and shows them
on an Entities page with live state and levers. Automations with Home
Assistant style triggers, conditions and actions are built in a when /
only if / then editor, kept in automations.yaml, and every run leaves
a trace you can read step by step (docs/automations.md). A Throttle
page drives locomotives by DCC address through the command station's
train nodes, and a Programming page reads and writes CVs on the
programming track and on the main (docs/trains.md); phone throttle
apps such as Engine Driver find Interlock on the network and drive
through it over WiThrottle. The Programming page also sets a decoder's
settings by name from the JMRI project's decoder definitions, fetched on
demand (docs/decoders.md). The roster keeps each locomotive's decoders
with their CV values, so a decoder's settings open without reading it
first, and imports a JMRI roster (docs/roster.md). A node's page installs new firmware on it and
follows the board through its restart. Interlock runs the layout's fast
clock, which automations can use. Settings backs everything up to one
file and restores it. Links can be serial or TCP GridConnect, OpenLCB
TCP or SocketCAN. The documentation site is built from docs/
(make docs); nothing has been tried on real hardware yet, and
docs/design.md has the plan.
make build
bin/interlock -data ./data & # web interface on :8080, hub port on :12021
go run ./cmd/simnode # a simulated canbus-outpost joins the hub
go run ./cmd/simnode -cdi cs -id 0A.00.00.00.00.43 # and a simulated command station
go run ./cmd/simnode -make-firmware outpost-2.0.0.bin -firmware-version 2.0.0 # an image to install on it
go run ./cmd/simlayout instead simulates a whole layout, trains running
on the track plan included, for an Interlock of its own (see
Getting started), and
train tracking follows them.
Open http://localhost:8080/nodes to see the node appear, then watch the monitor.
Requires Go (see go.mod) and Node 22.22 or newer.
make build # builds the web interface and bin/interlock
bin/interlock # serves on :8080 using your user config directory (or $INTERLOCK_DATA)
bin/interlock -data /path/to/dir keeps everything in one directory:
interlock.yaml (written with defaults on first start), the sqlite
database, the entities, automations, roster and your profiles. Links to
the layout go in that file:
links:
- name: outpost
type: serial
device: /dev/cu.usbmodem1234 # a canbus-outpost or simple-dcc USB port; COM3 on Windows
- name: jmri
type: tcp
address: 192.168.1.10:12021 # any GridConnect TCP server
- name: can0
type: socketcan # a Linux CAN interface
interface: can0
Interlock also serves GridConnect on port 12021, so JMRI or a second
Interlock can connect to it, and can serve OpenLCB TCP (hub.openlcb_tcp).
docs/connections.md has the details.
make test # Go tests
make lint # golangci-lint, the TypeScript type check and Prettier's check
make fmt # gofmt and goimports, and Prettier on the web interface and docs
make run # Go server from source on :8080
make dev # Vite dev server with hot reload, proxying /api to :8080
make docs # the documentation site, from docs/
GPL-3.0; see LICENSE.