โฐ Menu
๐ Overview
0. THE BINDING CONSTRAINT โ READ THIS FIRST
1. PROJECT OVERVIEW
2. HARDWARE โ ALREADY OWNED (No Cost)
3. CARPUTER โ HARDWARE TO PURCHASE
4. SYSTEM ARCHITECTURE โ THREE TIERS
5. POWER ARCHITECTURE (the keystone)
6. ESP32 NODE NETWORK (Tier 0)
7. CAMERA SYSTEM + NVR
8. CAN BUS INTEGRATION
9. SOFTWARE STACK
10. THERMAL MANAGEMENT
11. HOME RAG SERVER (HP Z440 #1)
12. OFF-GRID MESH + REMOTE ACCESS (Phase 2/3)
13. PENDING ACTIONS
14. PHASED ROADMAP
15. COST SUMMARY
16. ARCHITECTURE AT A GLANCE
17. MASTER PARTS LIST (BOM) (rev 3.43)
โฃ Wire Diagrams
Stateful illuminated switch (momentary + independent LED)
๏ผ
๏ผ
Fit
100%
wheel / pinch = zoom ยท drag = pan
switch_led_stateful
2014 RAM 1500 Carputer โ STATEFUL ILLUMINATED SWITCH (momentary button + independent LED, state held by Waveshare)
One press toggles ยท voice can also toggle ยท the LED is driven by the Waveshare so it ALWAYS shows the true state, no matter which changed it.
Use a MOMENTARY pushbutton with a SEPARATE LED (4 wires: 2 contact + 2 LED). NOT a latching switch (it would lie about state once voice changes it).
LEGEND: blue = DI signal in ยท green = LED-drive (DO sink) ยท purple dashed = DO trigger ยท red = 12V / load power ยท magenta = RS485 Modbus ยท teal = MQTT/voice
cluster_switch
DASH SWITCH โ ONE physical part (momentary + independent LED), 4 wires
sw_c
CONTACT (momentary, NO)
terminals: COM + NO
io
Modbus RTU IO 8CH @ PANEL (SKU 26244)
DIx reads the button ยท DOy drives the LED
(both local โ short runs)
RS485 SLAVE addr 2
sw_c->io
NO -> DIx (press = momentary pulse)
sw_l
LED (independent)
terminals: LED+ + LED-
sw_l->io
LED- (cathode) -> DOy
DOy sinks to GND when STATE=ON
gnd
chassis / panel GND
gnd->sw_c
COM -> GND (dry contact)
p12
+12V (panel, fused)
res
series resistor
(only if LED not 12V-rated;
~1k @12V / ~330R @5V)
p12->res
12V
res->sw_l
LED+ (anode)
ctrl
Waveshare ESP32-S3 8DI-8DO
HOLDS rock_lights STATE (source of truth)
RS485 MASTER ยท ESPHome
ctrl->io
RS485 A/B + GND (one Cat5 home)
master polls DIx, writes DOy
relay
Bosch relay (relay/fuse box)
triggered by a DO
ctrl->relay
DO trigger (rock lights)
note
STATE = rock_lights (single source of truth in the Waveshare)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Inputs that change STATE:
โข button press (DIx rising edge) -> TOGGLE state
โข voice / app (MQTT) -> SET state on/off
STATE then drives BOTH outputs together:
โข DO -> relay -> ROCK LIGHTS (the load)
โข DOy -> switch LED (feedback lamp)
=> button and voice always agree; the LED always
shows the real state, however it was changed.
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
ESPHome sketch:
binary_sensor (momentary) on_press: switch.toggle rock_lights
switch 'rock_lights' (template):
turn_on: DO(relay)=ON, DO(led)=ON
turn_off: DO(relay)=OFF, DO(led)=OFF
(voice/app call the same rock_lights switch)
voice
Voice / app (MQTT via Pi broker)
"turn on/off rock lights"
voice->ctrl
MQTT set state
rock
ROCK LIGHTS
(house 12V, fused)
relay->rock
switched + fused 14-12 AWG
open the PDF version โบ
โน prev
next โบ