---
active: true
tags:
  - project
  - eg
created: 2025-01-13 10:59
---
## Goal

Create a simulator with:

- Puzzle controller RPi
	- Push button puzzle
	- Locked box using solenoid with internal lights
	- Sounds
	- Firewall
	- NATS
- 24VDC power supply with power take-off for testing external puzzles
- Room controller RPi
	- Server software
	- Web UI
- Ethernet hub between controller and puzzles
## Active Tasks

- [ ] Re-wire the 5V/12V power to the PWM board ➕ 2026-01-11
- [ ] Add another light to the top of the board with a MOSFET  ➕ 2026-02-07 
- [ ] Finish merging control code from `odin` back to the simulator ➕ 2025-12-28 
- [ ] Finish creating a simple puzzle code using buttons➕ 2025-04-03
- [ ] Check all logging and and ensure consistency ➕ 2026-01-04 
- [ ] Make a latch for the box ➕ 2026-01-26 
- [ ] Install lip and LED lights in locked box ➕ 2025-02-22
- [ ] Add MOSFET switch for the latch ➕ 2025-12-07 
- [ ] Rewire 12V power to a MOSFET switch ➕ 2025-12-07 
- [ ] Add sound effects that can be played ➕ 2025-12-08 
- [ ] Install handles on the box ➕ 2025-05-30 
- [ ] Install servo latch in box ➕ 2025-04-29 
- [ ] Create simple puzzle using RFID readers ➕ 2025-05-31
## Future Tasks

- [ ] Install an ADC with a touch puzzle ➕ 2026-01-11 
- [ ] Design a case for the LED panel ➕ 2025-12-28 
- [ ] Design a case for the LEDs ➕ 2025-12-28 
- [ ] Rewire the power to the I2C PWM module ➕ 2025-12-07 
- [ ] Add optical sensor to the simulator ➕ 2025-11-06 
- [ ] Add sound sensor to the simulator ➕ 2025-12-08 
## Archived Tasks

- [x] Install the switch/plug box on the simulator ➕ 2026-02-04 ✅ 2026-02-06
- [x] Re-install a power supply for `sim-ctrl` ➕ 2026-01-11 ✅ 2026-02-04
- [x] Create Flutter app to monitor puzzle ➕ 2025-04-03 ✅ 2025-12-07
- [x] Install RFID readers next to buttons ➕ 2025-03-31 ✅ 2025-12-07
- [x] Install colored LEDs above the buttons with resin ➕ 2025-04-18 ✅ 2025-12-07
- [x] Create puzzle controller setup scripts and check in to source control ➕ 2025-05-21 ✅ 2025-06-03
- [x] Setup RPi development system ➕ 2025-05-14 ✅ 2025-06-03
- [x] Create model for holding the NVRAM SSD for the development RPi 4 ➕ 2025-05-29 ✅ 2025-05-31
- [x] Solder a new GPIO v3 board ➕ 2025-05-30 ✅ 2025-06-02
- [x] Create an RFID reader box ➕ 2025-03-31 ✅ 2025-05-30
- [x] Install false bottom in lock box ➕ 2025-04-29 ✅ 2025-05-30
- [x] Design and print 12VDC power supply end cover ➕ 2025-01-13 ✅ 2025-05-04
- [x] Reflash the RPi with new WiFi password ➕ 2025-04-29 ✅ 2025-05-04
- [x] Install some buttons ➕ 2025-01-13 ✅ 2025-04-29
- [-] Route a channel for LED light lip in box ➕ 2025-01-16 ❌ 2025-04-29
- [x] Figure out which 12VDC relay to use with RPi ➕ 2025-01-31 ✅ 2025-04-29
- [x] Design box for 12VDC relay ➕ 2025-01-17 ✅ 2025-04-29
- [x] Configure `nftables` for `sim-ctrl` ➕ 2025-03-31 ✅ 2025-04-03
- [x] Disable WiFi connection on `sim-ctrl` ➕ 2025-03-30 ✅ 2025-04-03
- [x] Test `ssh` tunneling through to `sim-puz1` ➕ 2025-02-22 ✅ 2025-04-03
- [x] Install NATs server on `sim-ctrl` ➕ 2025-04-03 ✅ 2025-04-03
- [x] Test pub/sub from puzzle machine ➕ 2025-04-03 ✅ 2025-04-03
- [x] Configure `dnsmasq` on `sim-ctrl` and configure DHCP and DNS ➕ 2025-02-22 ✅ 2025-03-30
- [x] Install mag lock box to simulator ➕ 2025-01-13 ✅ 2025-03-16
- [x] Install Ubuntu on `sim-room` controller ➕ 2025-02-22 ✅ 2025-02-24
- [x] Rename system to `sim-room` ➕ 2025-02-24 ✅ 2025-02-24
- [x] Configure `sim-room` WiFi for `Valhalla` ➕ 2025-02-22 ✅ 2025-02-24
- [x] Configure static IP on `eth0` ➕ 2025-02-24 ✅ 2025-03-16
- [x] Install Raspian on `sim-puzzle-1` controller ➕ 2025-02-22 ✅ 2025-03-16
- [x] Design and print 12VDC mounting brackets ➕ 2025-01-13 ✅ 2025-01-13
- [x] Design and print mounting bracket for RPi units ➕ 2025-01-13 ✅ 2025-01-13
- [x] Install 12VDC power supply ➕ 2025-01-13 ✅ 2025-01-14
- [x] Design and print network switch holder ➕ 2025-01-14 ✅ 2025-01-14
- [x] Install outlet with 12VAC plug ➕ 2025-01-13 ✅ 2025-01-16
- [x] Install controller RPi ➕ 2025-01-13 ✅ 2025-01-16
- [x] Install ethernet switch ➕ 2025-01-13 ✅ 2025-01-16
- [x] Design better box for buck converters ➕ 2025-01-13 ✅ 2025-01-17
- [x] Design better box for puzzle RPi breakout board ➕ 2025-01-17 ✅ 2025-01-31
- [x] Install 12VDC bus bars ➕ 2025-01-17 ✅ 2025-01-31
- [x] Install puzzle RPi ➕ 2025-01-13 ✅ 2025-01-31
- [x] Install breakout board for puzzle RPi ➕ 2025-01-13 ✅ 2025-01-31
- [x] Install buck converter for 5VDC power for puzzle RPi ➕ 2025-01-13 ✅ 2025-01-31
- [x] Install a buck converter for 5VDC power to controller RPi ➕ 2025-01-13 ✅ 2025-01-31
- [x] Make a network cable from hub to controller RPi ➕ 2025-01-31 ✅ 2025-02-06
- [x] Make a network cable from hub to puzzle RPi ➕ 2025-01-31 ✅ 2025-02-06
- [x] Set two buck boards at 5VDC for 12VDC input ➕ 2025-01-31 ✅ 2025-02-06
- [x] Make a cable from power bar to controller RPi buck board ➕ 2025-01-31 ✅ 2025-02-06
- [x] Make a cable from power bar to puzzle RPi ➕ 2025-01-31 ✅ 2025-02-06
- [x] Build the mag lock box ➕ 2025-01-13 ✅ 2025-02-11
- [x] Fix icon for UI ➕ 2025-12-07 ✅ 2025-12-07
- [x] Push to `git.mozayik.net` ➕ 2025-12-07 ✅ 2025-12-07
- [x] Install `sim-puz` ➕ 2025-12-07 ✅ 2025-12-07
- [x] Install `sim-ctrl` ➕ 2025-12-07 ✅ 2025-12-07
- [x] Get System tab working ➕ 2025-12-07 ✅ 2025-12-07
- [x] Get Lighting tab working ➕ 2025-12-07 ✅ 2025-12-07
- [x] Test out Rhai scripting to see how to pass structures in and out ➕ 2025-12-10 ✅ 2025-12-13
- [x] Finish the first button puzzle sequence ➕ 2025-12-13 ✅ 2025-12-13
- [x] Timeout the success and failure buttons ➕ 2025-12-13 ✅ 2025-12-13
- [x] Support unknown state when button sequence starts ➕ 2025-12-13 ✅ 2025-12-13
- [x] Now send completed or failed status back in state ➕ 2025-12-13 ✅ 2025-12-13

### Button Puzzle States

```mermaid
stateDiagram-v2
    NotRunning --> Waiting
    Waiting --> Error : timeout
    Waiting --> Error : wrong button
    Waiting --> Completed : last right button
    Waiting --> Waiting : right button
    Error --> NotRunning
    Completed --> NotRunning
```
