J'ai un script python qui agit comme un webhook. Une partie est la suivante :
import json
import os
import urllib
import socket
import _thread
from flask import Flask
from flask import request
from flask import make_response
app=Flask(__name__)
ip = ('192.168.1.75', 9050)
@app.route('/webhook',methods=['GET','POST'])
def webhook():
_thread.start_new_thread(sendDataToDevice,(ip))
req = request.get_json(silent=True,force=True)
print("Request:")
print(json.dumps(req,indent=4))
res=makeWebHookResult(req)
res=json.dumps(res,indent=4)
r=make_response(res)
r.headers['Content-Type']='application/json'
return r
if __name__ == '__main__':
app.run(port=8080,host='localhost')
La fonction du script est d'envoyer des données à un appareil connecté au réseau local. Cela fonctionne parfaitement lorsque j'ouvre mon navigateur Web et que je tape ce qui suit dans la barre d'URL :
http://localhost:8080/webhook
Je veux héberger le script sur un serveur, par exemple. Heroku. Comment puis-je accéder au périphérique local dans ce cas ?
Remarque : je sais que je peux exécuter le script sur ma machine locale et le rendre visible sur Internet à l'aide de ngrok, mais je souhaite le garder accessible même lorsque mon ordinateur est éteint. Aussi, voulez un lien fixe, et les liens donnés par ngrok changent à chaque exécution.
J'ai déjà rencontré un problème similaire avec l'IoT. Malheureusement, il n'existe pas de moyen simple de rendre un appareil visible en ligne. Voici une solution simple que j'ai utilisée. Ce n'est peut-être pas le meilleur, mais ça marche.
Si vous avez accès à votre routeur WiFi local, vous pouvez configurer quelque chose appelé DDNS (Dynamic Domain Name System). Votre routeur se connectera alors à un fournisseur de service DDNS comme no-ip (www.noip.com) et il sera visible sur internet. Vous pouvez donner une URL personnalisée comme susmit-home.noip.com
.
Cependant, susmit-home.noip.com
il ne désignera désormais que votre routeur WiFi et non votre réseau WiFi. Donc, si vous souhaitez accéder au local device_ip
et device_port
tel que "192.168.1.75", 9050. Vous pouvez alors configurer la redirection de port sur votre routeur pour cette combinaison de port IP local. Habituellement, la configuration ressemble à ceci :
device_ip
(par exemple 192.168.1.75)device_port
(par exemple 9050)any_port
(par exemple 9050)Assurez-vous que votre device_ip
adresse IP est statique sur votre routeur WiFi afin qu'elle ne change pas.
Enfin, dans votre code, vous pouvez simplement remplacer la ligne ip = ('192.168.1.75', 9050)
par ip = ('susmit-home.noip.com', 9050)
.
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots