Hardware for simple pushbutton input for network connection?


Senior Member
I have been asked to provide a push button to turn on and off a device in a location that I can't easily run wires.  The device is already on the network and has a web page with a virtual button to turn it on and off but they are wanting a physical button.  My first thought was a wall mounted or counter top tablet but they want something simple.  I am thinking maybe a ESP8266 - that could connect to the wifi network and relay the button press. 
I do have some unused outputs on the Caddx alarm panel so perhaps I could set up some way to toggle an output from the alarm keypad and use that output.  The alarm panel is close to the device to control so it would be easy from there.  I should look up how the outputs can be controlled from the keypad. 
Just looking for ideas...
I am sort of doing that today with an wireless ESP01 with relay running Tasmota.  You can run a MQTT script in Python to trigger an MQTT trigger to a second ESP01.
Tested this with MQTT running on an OpenWRT router and using it to trigger an alarm zone from the Hikvision hardware PIR to an ESP01 next to the OmniPro 2 alarm panel.
Here is the Python script I am using.  You can purchase two ESP01's to make this work.

import paho.mqtt.client as mqtt
MQTTv31 = 3
MQTTv311 = 4
MQTTv5 = 5
message = 'ON'
def on_connect(client,userdata, flags, rc):
    print("rc: " + str(rc))

def on_message(client, userdata, msg):
    global message
    print(msg.topic + " " + str(msg.qos) + " " + str(msg.payload))
    message = msg.payload

def on_publish(client, userdata, mid):
    print("mid: " + str(mid))

def on_subscribe(client, userdata, mid, granted_qos):
    print("Subscribed: " + str(mid) + " " + str(granted_qos))

def on_log(client, userdata, level, buf):

mqttc = mqtt.Client("petetest",protocol=MQTTv311)
# Assign event callbacks
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_publish = on_publish
mqttc.on_subscribe = on_subscribe
# Connect
mqttc.connect("", 1883)
#mqttc.connect("", 1883)

# Continue the network loop

Purchased a pair of 1-relay ESP01 on Amazon.
Lutron's Pico remotes are great, they're either Caseta/Ra2 or zigbee.  There'd have to be some other hub involved for either of those.  Upside is they're already in a Decora wall switch form-factor and can even be integrated into an existing wall box (just use a larger wall plate and put the Pico into the empty position.  The Claro panels make it seamless-looking.  That and they use plain coin-style batteries, that last upwards of 10 years.