27 KiB
27 KiB
active, tags
| active | tags | ||
|---|---|---|---|
| true |
|
Goal
Create escape room control software. Each Raspberry Pi (RPi) controls some number of wired props in the room. The room and props are referred to as the game. The game is made up of a number of game elements which can be puzzles, lights, sound, etc.. Each element can utilize one or more props, wired and/or non-wired.
System Diagram
Tasks
- Add horse nicker as a sound effect ➕ 2026-05-11 ✅ 2026-05-11
- Set horse to only trigger in auto pilot if ship and axe puzzle are solved, otherwise nicker and reset after 10 seconds ➕ 2026-05-10 ✅ 2026-05-12
- Set helmets to only trigger in auto pilot if knocker is solved, otherwise grunt and reset after 10 seconds ➕ 2026-05-10 ✅ 2026-05-12
- Display the version number in the DMG title (use
version.json5) ➕ 2026-04-21 ✅ 2026-05-14 - Collect and display the prop controller version numbers and display in the user interface ➕ 2026-05-11 ✅ 2026-05-14
- Change the drum sequence and the number of lights that illuminate ➕ 2026-05-15 ✅ 2026-05-20
- Add the lock combinations to the user interface ➕ 2026-04-23 ✅ 2026-05-20
- Put all locks on one tab ➕ 2026-05-22 ✅ 2026-05-30
- Add drum puzzle sequence to the UI ➕ 2026-05-22
- Add axe puzzle order to the UI ➕ 2026-05-22
- Add the table puzzle order to the UI ➕ 2026-05-22
- Move all lock combinations onto one tab ➕ 2026-05-21
- Add Postgres user for the control software ➕ 2026-05-22
- Add tables for the Memir phrases ➕ 2026-05-22
- Collect and display the game controller version number in the user interface ➕ 2026-05-14
- Change the knocker sequence to match the tapping ➕ 2026-05-15
Archived Tasks
- Change each prop controller to send the time to the next ping in seconds along with it's name ➕ 2026-04-21 ✅ 2026-05-09
- Ensure prop controllers send a ping when they start ➕ 2026-04-22 ✅ 2026-05-09
- Add
.pkggeneration to theodin_ui/Justfilewith version number in file name ➕ 2026-03-20 ✅ 2026-05-09 - Rename
sys_ping_interval_secsin the server to beinitial_sys_poll_time_secs➕ 2026-04-21 ✅ 2026-05-09 - Keep track of all next contact Instant ➕ 2026-04-21 ✅ 2026-05-10
- Switch iOS build of Odin to Escape Gallery profile ➕ 2026-04-16 ✅ 2026-05-10
- Add support for pre-defined messages for Memir in the user interface ➕ 2026-03-05 ✅ 2026-05-06
- Create a separate stopwatch task with it's own commands; start, stop, reset ➕ 2026-02-06 ✅ 2026-02-11
- Incorporate new stopwatch into auto pilot and UI ➕ 2026-02-09 ✅ 2026-03-17
- Fix timer to be visible everywhere ➕ 2026-02-07 ✅ 2026-03-17
- Add faster feedback when press speak button ➕ 2026-02-07 ✅ 2026-03-17
- Move Memir up in the UI ➕ 2026-02-07 ✅ 2026-04-16
- Update the Escape Gallery Control Software with Geno structures ➕ 2026-03-23 ✅ 2026-04-16
- Swap in Geno for all messages and use MessagePack in Dart ➕ 2026-03-03 ✅ 2026-04-16
- Test out using MessagePack in Dart with Geno and Rust ➕ 2026-03-03 ✅ 2026-04-16
- Add
releaseto theJustfileto build macOS package and iOS app ➕ 2026-04-16 ✅ 2026-04-21 - Fix running the app in release mode on MacOS ➕ 2026-03-08 ✅ 2026-04-21
- Create a tool to generate the
updatemethods that copy from game command to game state where the name matches ➕ 2026-04-22 ✅ 2026-04-23 - Sync up all the game command message field with corresponding state message fields ➕ 2026-04-22 ✅ 2026-04-23
- Finish the
odin_game_testservice that just responds to commands by changing state ➕ 2026-04-21 ✅ 2026-04-23 - Add a script to start the NATS service and the test game controller ➕ 2026-04-23 ✅ 2026-04-23
- Move all
getFullStatecalls into the services after connection ➕ 2026-04-23 ✅ 2026-04-26 - All UI latch toggles are broken ➕ 2026-04-23 ✅ 2026-04-26
- Change UI to toggle buttons to solve/unsolve puzzles ➕ 2026-04-23 ✅ 2026-04-26
- Fix the bug with leaving the bellows in the fishes mouth ➕ 2026-03-05 ✅ 2026-04-26
- Add the two iOS devices to the provisioning profile for Escape Gallery ➕ 2026-04-16 ✅ 2026-04-27
- Create a tool to generate the
updatefrom prop state to prop state ➕ 2026-04-22 ✅ 2026-05-01 - Fix iOS app to reconnect to the NATS service after resume ➕ 2026-04-22 ✅ 2026-05-04
- Add
ClueServertoodin-ctrl➕ 2026-02-04 ✅ 2026-02-04 - Move Piper TTS code over to
odin-av2and cut volume ➕ 2026-02-04 ✅ 2026-02-04 - Add Memir text to speech UI ➕ 2026-01-16 ✅ 2026-02-04
- Debug Memir end-to-end ➕ 2026-02-04 ✅ 2026-02-06
- Ensure time with seconds shows when in finished state ➕ 2026-01-28 ✅ 2026-02-06
- Increase power supply timer for
odin-drumand screw down the lid ➕ 2026-01-26 ✅ 2026-02-06 - Remove and drill out the holes for the knocker ➕ 2026-02-04 ✅ 2026-02-06
- Ensure
odin-ctrlrestarts always (fix.conffile) ➕ 2026-01-28 ✅ 2026-02-06 - Write test program for
odin-av2to test TTS ➕ 2026-01-14 ✅ 2026-02-04 - Fix
odin-av2build problem ➕ 2026-01-18 ✅ 2026-01-25 - Design and print caps for the knocker switches ➕ 2026-01-18 ✅ 2026-01-25
- Fix the electronics in the horses head ➕ 2026-01-11 ✅ 2026-01-25
- Add continuous re-start logic to all servers ➕ 2026-01-22 ✅ 2026-01-25
- Fix the knocker detection algorithm ➕ 2026-01-14 ✅ 2026-01-26
- Merge new knocker code into
odin-drum➕ 2026-01-26 ✅ 2026-01-27 - Add the code to gradually turn off the sconces ➕ 2026-01-19 ✅ 2026-01-28
- Wolf snarl starts to quickly after last animal head solved ➕ 2026-01-19 ✅ 2026-01-19
- End sequence starts to quickly after hammer or dragon is solved ➕ 2026-01-19 ✅ 2026-01-19
- Tree of life lights turn off when the helm lights are turned on or off ➕ 2026-01-19 ✅ 2026-01-19
- Turn on the other light when going through the fireplace ➕ 2026-01-19 ✅ 2026-01-19
- Fireplace latch extra toggles need to be faster ➕ 2026-01-19 ✅ 2026-01-19
- Reduce sound effect volume ➕ 2026-01-19 ✅ 2026-01-19
- Switch eyes on the berserker heads in the prop controller ➕ 2026-01-18 ✅ 2026-01-19
- Change all prop controller
main.rsandconfig_file.rsto require a config file ➕ 2026-01-18 ✅ 2026-01-19 - Reduce number of times required to turn crank and make configurable ➕ 2026-01-19 ✅ 2026-01-19
- Put
degrees_to_duty_cycleinodin_prop_util➕ 2026-01-19 ✅ 2026-01-19 - Dragons triggered with only one half of the spear ➕ 2026-01-19 ✅ 2026-01-19
- Turn off barrel puzzle after 5 minutes ➕ 2026-01-19 ✅ 2026-01-19
- Make Memir's eye pulse when on ➕ 2026-01-19 ✅ 2026-01-19
- Make sconces flicker ➕ 2025-08-13 ✅ 2026-01-19
- Make chandelier flicker ➕ 2025-12-23 ✅ 2026-01-19
- Make fireplace flicker ➕ 2025-12-23 ✅ 2026-01-19
Offcondition must turn off cupboards lights, dragon eyes, helm eyes, hammer box light ➕ 2026-01-19 ✅ 2026-01-19- Check the
Runningroom condition sets all the game states ➕ 2026-01-19 ✅ 2026-01-19 - Implement the
Readyroom condition ➕ 2026-01-17 ✅ 2026-01-19 - Implement the
Resettingroom condition ➕ 2026-01-17 ✅ 2026-01-19 - Implement the
Finishedroom condition ➕ 2026-01-17 ✅ 2026-01-19 - Turn on warriors eyes when helm puzzle solved ➕ 2026-01-19 ✅ 2026-01-19
- Check tree lights turn on when the fireplace opens ➕ 2026-01-19 ✅ 2026-01-19
- Add sound effects into the auto-pilot; eagle, horse, bear, fish, hammer, dragons, ➕ 2026-01-18 ✅ 2026-01-19
- Grand finale lightning sequence with flashing lights ➕ 2026-01-18 ✅ 2026-01-19
- Add a timer to the auto-pilot tab ➕ 2026-01-19 ✅ 2026-01-19
- Hook up auto-pilot logic to update the time and sconces based on the time elapsed ➕ 2026-01-19 ✅ 2026-01-19
- Have fire place latch cycle 3 times in the prop controller ➕ 2026-01-19 ✅ 2026-01-19
- Replace the barrel audio ➕ 2026-01-13 ✅ 2026-01-14
- Test out the microphones and make sure we can hear everything ➕ 2026-01-13 ✅ 2026-01-14
- Refactor to remove the timer in the controller in prep for moving timing to the auto-pilot ➕ 2026-01-14 ✅ 2026-01-14
- Add margin to the LabelIconButtons ➕ 2026-01-16 ✅ 2026-01-16
- Make a LabelButton widget with a fix width ➕ 2026-01-14 ✅ 2026-01-16
- Switch to using
publish_jsonandpublish_rmpinodin_ctrl➕ 2026-01-15 ✅ 2026-01-16 - Get piper-rs building in container ➕ 2026-01-14 ✅ 2026-01-16
- Go through all
cmd_loop's and moveSome(cmd) =>logic inside thematch➕ 2026-01-04 ✅ 2026-01-16 - Rename dragon to mantle puzzle ➕ 2026-01-11 \7 u ✅ 2026-01-16
- Create new helm electronics for testing with simulator ➕ 2026-01-10 ✅ 2026-01-17
- Repair electronics for the helms in
odin-tree➕ 2026-01-11 ✅ 2026-01-17 - Implement end game and room off commands for auto-pilot ➕ 2026-01-16 ✅ 2026-01-17
- Remove "Auto Pilot" toggle and add buttons for "Room Ready", "Start Game", "End Game", and "Room Off" ➕ 2026-01-14 ✅ 2026-01-17
- Process, add to
assetsand upload all sound effects toodin-av1➕ 2026-01-15 ✅ 2026-01-17 - Write test program to set background audio volume ➕ 2026-01-15 ✅ 2026-01-18
- Play sound effects and duck background audio ➕ 2026-01-11 ✅ 2026-01-18
- Change color of buttons when value like radio button (add a flag to
LabelIconButton) ➕ 2026-01-11 ✅ 2026-01-18 - Hook up Ui for sound effects ➕ 2026-01-15 ✅ 2026-01-18
- Implement the
Offroom condition ➕ 2026-01-17 ✅ 2026-01-18 - Install new software on iPad ➕ 2026-01-18 ✅ 2026-01-19
- Commit all
odin_testto Gitea ➕ 2026-01-11 ✅ 2026-01-11 - Create test program for the drum sequence ➕ 2026-01-11 ✅ 2026-01-11
- Finish the coding for the drum sequence ➕ 2026-01-04 ✅ 2026-01-11
- Fix sequence and write the tree on/off prop code ➕ 2025-12-29 ✅ 2026-01-11
- Install new piezo drum vibration sensors ➕ 2025-08-17 ✅ 2026-01-11
- Write code for
odin-drumto detect drumming pattern ➕ 2025-12-23 ✅ 2026-01-11 - Hook up knocker to auto-pilot ➕ 2025-12-26 ✅ 2026-01-11
- Hook up drums to auto-pilot ➕ 2025-12-26 ✅ 2026-01-11
- Hook up hammer hand to auto-pilot ➕ 2026-01-11 ✅ 2026-01-11
- Hook up dragons to auto-pilot ➕ 2026-01-11 ✅ 2026-01-11
- Add the timer to the auto-pilot ➕ 2025-12-23 ✅ 2026-01-13
- Add UI to start background music ➕ 2025-12-23 ✅ 2026-01-11
- Add UI for drums ➕ 2025-12-23 ✅ 2026-01-11
- Design the case for the combined power and buck board ➕ 2025-12-23 ✅ 2026-01-11
- Print cases and assemble and program the first one taking notes ➕ 2025-12-23 ✅ 2026-01-11
- Add code to read the Berserker heads in
odin_tree➕ 2025-11-06 ✅ 2026-01-11 - Add UI for Berserker heads ➕ 2025-11-12 ✅ 2026-01-11
- Make the barrel puzzle audio play forever ➕ 2026-01-04 ✅ 2026-01-10
- Add a switch in UI to turn on tree lights ➕ 2025-11-12 ✅ 2026-01-10
- Write the helms prop code ➕ 2025-12-29 ✅ 2026-01-10
- Finish the dragon prop code (reset is not working) ➕ 2026-01-03 ✅ 2026-01-10
- Finish the coding for the detection of the knocker sequence ➕ 2026-01-04 ✅ 2026-01-10
- Add
av1andav2into System tab ➕ 2025-12-13 ✅ 2025-12-13 - Create prop control software for
odin-av1➕ 2025-12-13 ✅ 2025-12-13 - Create prop control software for
odin-av2➕ 2025-12-13 ✅ 2025-12-13 - RFID reader for spear do not register RFID tag reliably. Wall is likely too thick, there are metal nails or screws in the wood, RFID tags buried too deep ➕ 2025-11-08 ✅ 2025-11-13
- Dagger no longer registers reliably. RFID in wrong position or too deep. Also, knife can be reversed so not sure which side RFID tag is on ➕ 2025-11-08 ✅ 2025-11-13
- Horses right eye no longer registers light/dark - need to dismantle and debug ➕ 2025-11-08 ✅ 2025-11-13
- Divide up the controllers equally between the power supplies and see if that fixes the power on problem ➕ 2025-11-08 ✅ 2025-11-13
- Add horse head eye sensor code code in
odin_middle➕ 2025-11-04 ✅ 2025-11-06 - Add short door latch opener code to
odin_left➕ 2025-11-05 ✅ 2025-11-06 - Add long door latch opener code to
odin_left➕ 2025-11-05 ✅ 2025-11-06 - Create
deploy-allscript ➕ 2025-11-05 ✅ 2025-11-06 - Add reset UI ➕ 2025-11-08 ✅ 2025-11-08
- Get fish RFID reader working with reset on
odin_left➕ 2025-11-04 ✅ 2025-11-08 - Get bear RFID reader working with reset
odin_left➕ 2025-11-04 ✅ 2025-11-08 - Get bird RFID reader working
odin_middle➕ 2025-11-04 ✅ 2025-11-08 - Get horse eye light sensors working
odin_middle➕ 2025-11-04 ✅ 2025-11-08 - Change
PROP_SYSTEM_STATE_SUBJECTtoprop.system.stateand re-deploy all prop controllers ➕ 2025-11-04 ✅ 2025-11-08 - Fix the broken sensors on the barrel puzzle ➕ 2025-11-04 ✅ 2025-11-08
- Add UI for the knocker puzzle; knocker, long door ➕ 2025-11-08 ✅ 2025-11-08
- Get knocker door opener working ➕ 2025-11-08 ✅ 2025-11-08
- Add UI for drum puzzle; tree, sensors, short door ➕ 2025-11-08 ✅ 2025-11-08
- Get the drum door opener working ➕ 2025-11-08 ✅ 2025-11-08
- Add UI for the helm puzzle; helmets, hammer chest ➕ 2025-11-08 ✅ 2025-11-08
- Get helm puzzle chest opening ➕ 2025-11-08 ✅ 2025-11-08
- Add UI for
berserker_puzzle.➕ 2025-11-06 ✅ 2025-11-09 - Rename
odin_proptoodin_prop_msg➕ 2025-11-08 ✅ 2025-11-09 - Create a new
odin_prop_utilforhelpers.rscontents and remove all helpers.rs files ➕ 2025-11-08 ✅ 2025-11-09 - Tidy up dragon puzzle UI ➕ 2025-11-11 ✅ 2025-11-11
- Get spear hooked up to UI ➕ 2025-11-11 ✅ 2025-11-11
- Create a generic to
fnfor receivingCmdmessages and do adebug!in prop controllers like inodin_ctrl➕ 2025-11-08 ✅ 2025-11-12 - Generate a Dart file for
SvgPicturein a service and register ➕ 2025-11-05 ✅ 2025-11-12 - Get hammer UI working; hand ➕ 2025-11-08 ✅ 2025-11-12
- Get table puzzle UI coded ➕ 2025-10-18 ✅ 2025-10-31
- Get ship puzzle UI coded ➕ 2025-10-26 ✅ 2025-10-31
- Change timer UI to be a slider ➕ 2025-10-25 ✅ 2025-10-31
- Add a Slider with discrete values and allow setting ➕ 2025-10-26 ✅ 2025-10-31
- Get fireplace puzzle UI coded ➕ 2025-10-26 ✅ 2025-10-31
- Get barrel puzzle UI coded ➕ 2025-10-31 ✅ 2025-10-31
- Configure laptop so I can build and install control software on iPad ➕ 2025-10-31 ✅ 2025-11-01
- Figure out how to set macOS menu and window to Odin ➕ 2025-10-31 ✅ 2025-11-01
- Hook lighting up end-to-end ➕ 2025-10-31 ✅ 2025-11-01
- Create a
label_switchwidget with a ✅ 2025-11-01 - Use
label_switcheverywhere for consistent sizing of label plus switch ➕ 2025-11-01 ✅ 2025-11-01 - Debug the axe puzzle ➕ 2025-11-01 ✅ 2025-11-01
- Create a
PositionedAxewidget with abool?for the state ➕ 2025-11-01 ✅ 2025-11-01 - Refactor
odin-ctrlto pass discretebool?back to UI for axes from controller ➕ 2025-11-01 ✅ 2025-11-02 - Split lighting into throne and feast rooms ➕ 2025-10-31 ✅ 2025-11-02
- Refactor controller to use
include!to avoid extra module ➕ 2025-11-02 ✅ 2025-11-02 - Hook table puzzle up end-to-end ➕ 2025-11-01 ✅ 2025-11-02
- Hook ship puzzle up end-to-end ➕ 2025-10-31 ✅ 2025-11-02
- Make
NavigationRailscrollable ➕ 2025-11-04 ✅ 2025-11-04 - Hook up the barrel puzzle end-to-end ➕ 2025-11-02 ✅ 2025-11-04
- Put the
Stackelements in a container that is sized from the biggest SVG ➕ 2025-11-04 ✅ 2025-11-04 - Remove the numbers from the
axeFrame➕ 2025-11-04 ✅ 2025-11-04 - Fix the system status code in the controller. ➕ 2025-11-04 ✅ 2025-11-04
- Add fireplace latch pin code ➕ 2025-11-04 ✅ 2025-11-04
- Get bird RFID reader working ➕ 2025-11-04 ✅ 2025-11-05
- Add chest latch opener code ➕ 2025-11-05 ✅ 2025-11-05
- Break the messages to/from the prop controllers into a separate library ➕ 2025-09-28 ✅ 2025-09-28
- Switch to using
MessagePackercr for message transmission ➕ 2025-09-28 ✅ 2025-09-28 - Just add the message format header ➕ 2025-09-28 ✅ 2025-09-28
- Test the new
odin_axecode ➕ 2025-09-28 ✅ 2025-09-28 - Merge changes back into
rust_prop_quickstart➕ 2025-09-28 ✅ 2025-09-28 - Add
odin_proptoodin_ctrl➕ 2025-09-28 ✅ 2025-10-03 - Create
AxePuzzleobject and hold onto the handle in theServerobject ➕ 2025-09-28 ✅ 2025-10-03 - Create a new new Flutter app for control ➕ 2025-04-21 ✅ 2025-10-03
- Add
dummystate intoodin_propto supportrust_prop_quickstart➕ 2025-09-28 ✅ 2025-10-03 - Add command to force full state to be sent to controller ➕ 2025-10-03 ✅ 2025-10-03
- Send full state command when controller starts ➕ 2025-10-03 ✅ 2025-10-03
- Request full state when the UI starts up or when the puzzle button is clicked on left ➕ 2025-10-03 ✅ 2025-10-04
- Whiteboard the control software design ➕ 2024-11-26 ✅ 2025-04-25
- Finish Sketch from a plan view of the room ➕ 2025-02-16 ✅ 2025-08-13
- Configure static IP for
eg-1onrm-1.escapegallery.net✅ 2025-09-08 - Configure DHCP & DNS via
dnsmasqoneg-1➕ 2025-08-06 ✅ 2025-09-08 - Configure wired connection for
odin-axe➕ 2025-08-13 ✅ 2025-09-08 - Configure
/etc/hostsoneg-1to addeg-1.rm-1.escapegallery.net➕ 2025-09-08 ✅ 2025-09-09 - Ensure that we can
sshover the10.10.0.0/24network ➕ 2025-09-08 ✅ 2025-09-09 - Configure
nftablesfor therm-1network to NAT packets ➕ 2025-09-08 ✅ 2025-09-09 - Temporarily take down
odin-axeWiFi and check that updates work ➕ 2025-09-09 ✅ 2025-09-09 - Set timeouts for DHCP on
odin-axeand reboot ➕ 2025-09-09 ✅ 2025-09-09 - Disable the WiFi permanently on RPi for
odin-axeand test reboot ➕ 2025-09-08 ✅ 2025-09-09 - Add
env_loggertoodin_axeand remove existing logger ➕ 2025-09-11 ✅ 2025-09-11 - Add a command line to indicated the name of the NATS server ➕ 2025-09-11 ✅ 2025-09-11
- Add Ctrl+C handling ➕ 2025-09-11 ✅ 2025-09-12
- Add a
selectloop that listens on aflumechannel for messages from the monitor thread ➕ 2025-09-11 ✅ 2025-09-12 - Add the thread to monitor the state of the readers ➕ 2025-09-11 ✅ 2025-09-12
- Add
flumeand send a message when axe state changes to main loop ➕ 2025-09-11 ✅ 2025-09-12 - Remove the checks for correctness just record the UID from the RFID chips ➕ 2025-09-11 ✅ 2025-09-12
- Add
serdeandserde_jsonto the project ➕ 2025-09-11 ✅ 2025-09-12 - Kill the GPIO thread when Ctrl+C is hit ➕ 2025-09-12 ✅ 2025-09-12
- Add a
HashMap<String, Value>to track prop state ➕ 2025-09-11 ✅ 2025-09-12 - If the value has change, update the
HashMap➕ 2025-09-12 ✅ 2025-09-12 - Publish nats message when state changes ➕ 2025-09-12 ✅ 2025-09-12
- Run setup scripts on
odin-throneandodin-feast➕ 2025-09-13 ✅ 2025-09-13 - Reverse
odin-throneandodin-feasthost names ➕ 2025-09-13 ✅ 2025-09-13 - Add
odinaccount to/etc/nats-server.confoneg-1➕ 2025-09-13 ✅ 2025-09-13 - Install and configure
lldlinker and test ➕ 2025-09-13 ✅ 2025-09-14 - Fix
odin-drumethernet connection ➕ 2025-09-15 ✅ 2025-09-19 - Set up quick-start to cross compile on mac and then copy to specific machine using
Justfile➕ 2025-09-13 ✅ 2025-09-19 - Put new SD card in
odin-ship➕ 2025-09-15 ✅ 2025-09-25 - Configure SD card in
odin-ship➕ 2025-09-25 ✅ 2025-09-25 - Take
odin-shipoff of WiFi ➕ 2025-09-25 ✅ 2025-09-26 - Create a service file template for prop controllers ➕ 2025-09-13 ✅ 2025-09-26
- Make
cmdmessages set thepropstate and publish ➕ 2025-09-13 ✅ 2025-09-26 - Update the
HashMapwhen the state of the axes changes ➕ 2025-09-11 ✅ 2025-09-26 - Create script to turrn off WiFi for a prop controller ➕ 2025-09-08 ✅ 2025-09-26
- Refactor code to put stuff into
selfmethods ➕ 2025-09-26 ✅ 2025-09-26 - Ensure prop servers output version number when starting ➕ 2025-09-25 ✅ 2025-09-26
- Increment patch number when doing deployments ➕ 2025-09-25 ✅ 2025-09-26
- Write out name of controller from the
clapinformation as first log message ➕ 2025-09-13 ✅ 2025-09-26 - Add code to reset the latch after configurable amount of time (1 sec default) ➕ 2025-09-26 ✅ 2025-09-26
- Debug why the
single_instancecode is not working! ➕ 2025-09-25 ✅ 2025-09-26 - Merge common changes into
rust_prop_quickstart➕ 2025-09-26 ✅ 2025-09-26 - Create the
odin-ctrlproject ➕ 2025-09-14 ✅ 2025-09-27 - Install
odin-ctrloneg-1and setup to build it there ➕ 2025-09-14 ✅ 2025-09-27 odin-axe✅ 2025-10-05- Fix
dnsmasqissue oneg-1➕ 2025-10-05 ✅ 2025-10-05 - Install Caddy on
eg-1➕ 2025-10-05 ✅ 2025-10-05 - Create feast room lighting page ➕ 2025-10-05 ✅ 2025-10-23
- Take
odin-avoff of WiFi ➕ 2025-09-15 ✅ 2025-10-23 - Test that
rust-analyzerin VS Code works with just thesettings.jsonvalue set ➕ 2025-10-23 ✅ 2025-10-23 - Remove all
config.tomlfiles ➕ 2025-10-23 ✅ 2025-10-23 - Set
RUSTFLAGSenvironment variable for builds in the Justfile and test ➕ 2025-10-23 ✅ 2025-10-23 - Fix prop control install scripts ➕ 2025-10-23 ✅ 2025-10-23
- Move
odin-ctrlinstall and deploy scripts toJustfile➕ 2025-10-23 ✅ 2025-10-23 - Ensure all prop controllers send actual state after initialization ➕ 2025-10-19 ✅ 2025-10-23
- Add icons for macOS and web ➕ 2025-10-19 ✅ 2025-10-24
- Make sure each dashboard tab requests state when it loads ➕ 2025-10-23 ✅ 2025-10-24
- Get
odin-axecontroller ping working end-to-end ➕ 2025-10-18 ✅ 2025-10-25 - Send the system state on a timer from
odin-ctrlinstead of as it comes in ➕ 2025-10-25 ✅ 2025-10-25 - Make prop controller status update time a config setting ➕ 2025-10-25 ✅ 2025-10-25
- Add prop controller status for all other prop controllers ➕ 2025-10-24 ✅ 2025-10-26
- Ensure
odin-ctrlrequests full state from all prop controllers 3 seconds after it starts ➕ 2025-10-18 ✅ 2025-10-26 - Label the unused switch that now lights the table ➕ 2025-10-26 ✅ 2025-10-26
- Put a
GridViewin the lighting tab ➕ 2025-10-26 ✅ 2025-10-29 - Remove the arrays from the Lighting controller messages and use named fields ➕ 2025-10-29 ✅ 2025-10-30
- Remove the chandelier solenoid out of the lighting tab ➕ 2025-10-20 ✅ 2025-10-30
- Add unique nav bar icons for all the puzzles ➕ 2025-11-02 ✅ 2025-11-13
- Create
AsyncAwaiterwidget centeredflutter_spinkitspinner and message ➕ 2025-10-30 ✅ 2025-11-13 - Position the drums ➕ 2025-11-13 ✅ 2025-11-13
- Add code to drive tree lights in
odin_tree➕ 2025-11-06 ✅ 2025-11-13 - Move code into the
odin_prop_utilfromodin_prop_msg➕ 2025-12-09 ✅ 2025-12-09 - Fix the
Justfileto label builds correctly ➕ 2025-12-09 ✅ 2025-12-09 - Configure scripting on
odin-ctrl➕ 2025-12-09 ✅ 2025-12-09 - Add code to receive commands from script and forward ➕ 2025-12-09 ✅ 2025-12-13
- Update prop and game controllers ➕ 2025-12-13 ✅ 2025-12-13
- Copy auto pilot code over from the simulator ➕ 2025-12-14 ✅ 2025-12-23
- Get auto pilot UI in the app ➕ 2025-12-13 ✅ 2025-12-23
- Get auto pilot triggering the axe puzzle ➕ 2025-12-14 ✅ 2025-12-23
- Get auto pilot triggering the table puzzle ➕ 2025-12-14 ✅ 2025-12-23
- Get auto pilot triggering the ship puzzle ➕ 2025-12-14 ✅ 2025-12-23
- Get auto pilot triggering the bird puzzle ➕ 2025-12-14 ✅ 2025-12-23
- Get auto pilot triggering the horse puzzle ➕ 2025-12-14 ✅ 2025-12-23
- Get auto pilot triggering the bear puzzle ➕ 2025-12-14 ✅ 2025-12-23
- Get auto pilot triggering the fish puzzle ➕ 2025-12-14 ✅ 2025-12-23
- Get auto pilot triggering the fireplace ➕ 2025-12-14 ✅ 2025-12-23
- Test EG room cameras ➕ 2025-07-06 ✅ 2025-12-23
- Test EG speakers with
audio-forwarder➕ 2025-09-15 ✅ 2025-12-23 - Test Memir speakers with
audio-forwarder➕ 2025-10-23 ✅ 2025-12-23 - Test EG microphone with
audio-forwarder➕ 2025-09-15 ✅ 2025-12-23 - Get crank count code working on
odin_right➕ 2025-11-05 ✅ 2025-12-23 - Add the crank count to the fireplace UI ➕ 2025-10-31 ✅ 2025-12-23
- Add
room_onstate to thegame.controller.statemessage and set when all prop controllers are alive ➕ 2025-10-20 ✅ 2025-12-23 - Update UI based on
room_onstate ➕ 2025-10-20 ✅ 2025-12-23 - Re-install the knocker in the wall ➕ 2025-12-26 ✅ 2025-12-26
Notes
Debug msgpack encoded messages on NATS using:
nats sub --translate 'mpk --to-json' prop.<prop-host>.state
You can also create a debug build of the the prop controller that uses to_vec_named to add field names to the structure.
References
- NATS
- Prop and Game Controller Raspberry Pi Configuration
- Use Rhai for Scripting in Rust
msgpack-cli- Flutter Drawer
- flutter_svg
System Ping
- The room is expected to be started in the following order - game controller then prop controllers and user interface.
- When a prop controller starts it will connect to the NATS server, and once successful will immediately send a system state message, updating the game controllers alive/dead state for that prop controller.
- The prop controller system state ping interval defaults to 60 seconds.
- The system service on the game controller will send a request for full state to all prop controllers when it starts. This is to handle situations where the room is running and the game controller needs to be restarted.
- The system service keeps a list of the last contact time for each of prop controllers. This time is updated each time a prop controller sends a system state message.
- Every 60 seconds (by default) the system service goes through the contact times and checks to see if the last contact time from any prop controller is greater than twice that, i.e. 120 seconds. If so it marks the prop controller as dead.
- The system server will only send out changes to the alive/dead status of systems if anything changes to avoid unnecessary network traffic.

