Faire de la domotique par internet
Posté : dim. 29 juil. 2018 12:50
Petit débutant, mon but est de faire de la domotique, je voudrais piloter mon arrosage, chauffage etc... depuis internet.
Dans l'excellent livre de M. Jansee ''RPi l'alliance de la programmation et de l'électronique, 45 applications pour l'électronicien'' celui-ci décrit chapitre 12 des applis Client-Serveur (commande de LED, etc..) qui fonctionnent très bien mais en réseau local c.a.d. derrière une BOX.
Comment ''modifier'' ces programmes(python) pour que les commandes puissent passer par internet.
Merci d'avance pour votre aide.
Voici les 2 programmes ci_dessous :
PROGRAMME INSTALLE SUR LE RPi :
# -*- coding: utf-8 -*-
# Serveur TCP
import os
import RPi.GPIO as GPIO
import socket
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(4, GPIO.OUT)
GPIO.setup(26, GPIO.OUT)
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(("192.168.1.27", 5000)) #GAZINET
#server.bind(("192.168.8.102", 5000)) #DENIA
server.listen(5)
print "Serveur TCP a l'ecoute du port 5000"
while 1:
myclient, address = server.accept()
print "Connected to ", address
# etablir la liaison
myclient.send('0')
while 1:
# attendre les donnees client
data = myclient.recv(512)
if data == "q" or data == "qq":
myclient.close()
break
else:
if data == '1':
GPIO.output(4, 1)
GPIO.output(26, 1)
print "Recu : " , data,
newdata = 'LED 4 on'
else:
GPIO.output(4, 0)
GPIO.output(26, 0)
newdata = 'LED 4 off'
print " envoi :" ,newdata
myclient.send(newdata)
if data == "qq":
server.close()
print "Le serveur TCP est fermé"
break
else:
print "Serveur TCP a l'ecoute du port 5000"
PROGRAMME INSTALLE SUR LE PC:
# Client TCP
import socket
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(("192.168.1.27", 5000))
# connexion avec serveur
data = client.recv(512)
if data <> "0":
print "Reponse inattendue du serveur fermeture"
print data
client.send("q")
client.close()
exit()
# boucle de communication
while 1:
data = raw_input ("Envoi (q pour quitter, qq pour arreter le serveur) :")
client.send(data)
if data == "q" or data == "qq":
client.close()
break;
data = client.recv(512)
print "Recu :" , data
Dans l'excellent livre de M. Jansee ''RPi l'alliance de la programmation et de l'électronique, 45 applications pour l'électronicien'' celui-ci décrit chapitre 12 des applis Client-Serveur (commande de LED, etc..) qui fonctionnent très bien mais en réseau local c.a.d. derrière une BOX.
Comment ''modifier'' ces programmes(python) pour que les commandes puissent passer par internet.
Merci d'avance pour votre aide.
Voici les 2 programmes ci_dessous :
PROGRAMME INSTALLE SUR LE RPi :
# -*- coding: utf-8 -*-
# Serveur TCP
import os
import RPi.GPIO as GPIO
import socket
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(4, GPIO.OUT)
GPIO.setup(26, GPIO.OUT)
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(("192.168.1.27", 5000)) #GAZINET
#server.bind(("192.168.8.102", 5000)) #DENIA
server.listen(5)
print "Serveur TCP a l'ecoute du port 5000"
while 1:
myclient, address = server.accept()
print "Connected to ", address
# etablir la liaison
myclient.send('0')
while 1:
# attendre les donnees client
data = myclient.recv(512)
if data == "q" or data == "qq":
myclient.close()
break
else:
if data == '1':
GPIO.output(4, 1)
GPIO.output(26, 1)
print "Recu : " , data,
newdata = 'LED 4 on'
else:
GPIO.output(4, 0)
GPIO.output(26, 0)
newdata = 'LED 4 off'
print " envoi :" ,newdata
myclient.send(newdata)
if data == "qq":
server.close()
print "Le serveur TCP est fermé"
break
else:
print "Serveur TCP a l'ecoute du port 5000"
PROGRAMME INSTALLE SUR LE PC:
# Client TCP
import socket
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(("192.168.1.27", 5000))
# connexion avec serveur
data = client.recv(512)
if data <> "0":
print "Reponse inattendue du serveur fermeture"
print data
client.send("q")
client.close()
exit()
# boucle de communication
while 1:
data = raw_input ("Envoi (q pour quitter, qq pour arreter le serveur) :")
client.send(data)
if data == "q" or data == "qq":
client.close()
break;
data = client.recv(512)
print "Recu :" , data