Toggle 555 timer IC both with switch and arduino
Connect an arduino GPIO directly to pin 6 of the 555, when configured as an input it will do nothing (allowing manual control via the button), but when configured as output (low or high) it will turn the 555 on or off. 
(then set it back to an input to allow the switch to work)

if you need toggle action connect a different GPIO to pin 3 and write the opposite of what you see there to the first GPIO ot flip the 555 to the opposite state.

To make it aceppt 3.3V triggering change the top 10K to 22K,
put a 4.7K resistor from pin 5 to ground and  and put 150K parallel to the 10uF capacitor.







simulate this circuit &ndash; Schematic created using CircuitLab

the arduino can motnior the status on the monitoring input, the command output should be high impedance most of the time sending a brief pulse of high or low will set the state of the 555.  to toggle it read the monitoring input and write to the command output briefly, 1ms should be plenty long enough.

R1 reduces the voltage on pin 7 to 2.4V  meaning the 555's  threshold and trigger levels are now 2.4V and 1.2V thus compatible with the 3.3V logic at the other end of the wire.  

R5 keeps the charge in the capacitor from exceedinf 3.3V (which could otherwise damage the arduino when the button is pressed) 

R6 and R7 are a voltage divider to make the 5V from the 555 into 3.3V for the monitoring input.

For 12V operation instead of 5V reduce R1 to 1.2K increase R2 and R6 to 39K. The relay coil resistance requirement increases to 120 ohms.