I designed in Fusion 360 and 3D-printed the pieces I needed for the bust and the hardware needed to actuate the box (The Batman statue I got from Thingiverse and customized it to fit my needs: https://www.thingiverse.com/thing:1912100).

The box must be plugged in and the switch on the battery pack under the bust needs to be switched on. While powered on, the bust is continuously transmitting a binary signal of the button's pressed state. When the button is pressed, the box will engage the solenoid (unlock), move servo from closed to open position, and then disengage the solenoid (lock). When the button is pressed again the procedure is preformed the same but with the servo moving from the open to the closed position.

Initially the box was listening for a single transmission to determine if the button state had changed but this wasn't reliable and the box would open or shut erratically. Too fix this I included a loop in the receiver code that would read 5 transmitted signals and determine whether they all matched (all 1 or all 0) before opening/closing the box. This drastically improved efficacy as it eliminated most extraneous signals without affecting response time.