Skip to content

Instantly share code, notes, and snippets.

@bandrel
Created March 4, 2025 21:36
Show Gist options
  • Save bandrel/15d3266b2e48070b7f6af2b3a4ff6c49 to your computer and use it in GitHub Desktop.
Save bandrel/15d3266b2e48070b7f6af2b3a4ff6c49 to your computer and use it in GitHub Desktop.

Revisions

  1. bandrel created this gist Mar 4, 2025.
    46 changes: 46 additions & 0 deletions gistfile1.txt
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,46 @@
    #!/usr/local/bin/env python3

    # /// script
    # dependencies = [
    # "flask",
    # "requests",
    # ]
    # ///

    #Signup for https://trigger.esp8266-server.de/ to enable webhooks within Alexa using the webhooks skill.
    #https://www.amazon.com/Michael-Dworkin-Webhook-Routine-Trigger/dp/B09RGPYHLL
    #Create Alexa routine using the webhooks to change the scene
    #Replace the id and hash with the ones generated in the applicaion process


    from flask import Flask, request, jsonify
    import requests

    app = Flask(__name__)

    # Replace this with the URL you want to GET
    baseurl = 'https://trigger.esp8266-server.de/api/'

    DND_on = f'{base_url}?id={id1}&hash={hash}'
    DND_off = f'{base_url}?id={id2}&hash={hash}'

    @app.route('/')
    def index():
    return "Webhook listener is running!"

    @app.route('/webhook', methods=['GET','POST'])
    def webhook():
    global enabled_state
    data = request.get_json()
    if data["call"] == 'active':
    # Trigger a GET request to an external service
    get_response = requests.get(DND_on)
    enabled_state = True
    else:
    get_response = requests.get(DND_off)
    enabled_state = False
    return f"Current State is {enabled_state}"

    if __name__ == "__main__":
    # Run the Flask app on port 5001(or any port you prefer)
    app.run(host="0.0.0.0", port=5001, debug=True)