Send data BMP180 between client and server trought module socket
smalhao opened this issue · 1 comments
I would like to send data of BMP180 sensor between a client and a server with two raspberry pi 3 being that the client when executing the command get the server will give the temperature value to the client. However with the code I build when I execute the get command, the server goes down.
I need some help for this topic.
My code is as follows:
Server:
import socket
import Adafruit_BMP.BMP085 as BMP085
host = '10 .6.4.198 '# Specifies the IP address of our Server
port = 4840 # Port through which to go to carry out the communication, replace 12345 by the port that we want above 1024
sensor = BMP085()
# Function setting of our server so we can call it
def setupServer ():
s = socket.socket (socket.AF_INET, socket.SOCK_STREAM, 0)
# s = socket (domain, type, protocol)
# AF_INET specifies that the desired domain is the Internet domain
# SOCK_STREAM is the type you want and supported by the AF_INET domain
print ("Socket Created.")
# Print statement of socket not working
try:
s.bind ((host, port)) # binds our host and port
except socket.error as msg:
print (msg)
print ("Socket bind complete.")
print ("Waiting for data ......")
returns
# Function setting of our server connection
def setupConnection ():
s.listen (10) # Allows one connection at a time. You can change the value for the desired connections at the same time.
conn, address = s.accept () #Configuration of connection and address and accepting whatever is listening
print ("Connected to:" + address [0] + ":" + str (address [1])) # Str (Address [1]) converts the ip address to string
## print ("Connected to:" + address [1] + ":" + str (address [2]))
return conn # returns connection value
def GET (): # retrieves this stored value that was previously specified
reply = sensor.read_temperature() # variable data storage
return reply
def REPEAT (dataMessage): # repeats the message entered in the command
reply = dataMessage [1]
return reply
def dataTransfer (conn):
#A big loop that sendsreceives data until told not to.
while True:
#Receive the data
data = conn.recv (1024) # receive the data
data = data.decode ('utf-8') # decoding data received in utf-8
#Split the data such that you separate the command from the rest of the data.
dataMessage = data.split ('', 1)
command = dataMessage [0]
if command == 'get':
reply = GET ()
elif command == 'repeat':
reply = REPEAT (dataMessage)
elif command == 'quit':
print ("Our client has left us :(")
break
elif command == 'kill':
print ("Our server is shutting down.")
s.close ()
break
else:
reply = 'Unknow Command'
conn.sendall (str.encode (reply))
print ("Data has been sent !!!!")
conn.close ()
s = setupServer () # calls the setupServer
while True:
try:
conn = setupConnection () # get the connection from the setupServer function
dataTransfer (conn)
except:
break
Client:
import socket
import time
host = '10 .6.4.198 '# Server IP Address
port = 4840 # Port of communication, must be above 1024
s = socket.socket (socket.AF_INET, socket.SOCK_STREAM, 0) # s = socket.socket (addr_family, type)
#################### GRADES ############################# ##############################
#### TCP #####
# Communication in IPV4 protocol with TCP flow-based connection
# Computers establish a connection to each other and read / write data
# in a continuous stream of bytes --- as a file, most common case.
#### UDP ####
# If we had AF_INET6 would be communication with IPV6 protocol
# Had we SOCK_DGRAM we had communication based on UDP datagrams
#Computers send discrete packets (or messages) to each other.
# Each packet contains a collection of bytes, but each packet is separate and independent.
################################################## ####################################
s.connect ((host, port))
print ("<======== Connected to Server =========> \ n")
while True:
command = input ("Enter your command:")
if command == 'quit':
print ("Disconnected of Server")
#Send EXIT request to other end
s.send (str.encode (command))
break
elif command == 'kill':
print ("Server shutdown")
#Send KILL command
s.send (str.encode (command))
break
s.send (str.encode (command))
reply = s.recv (1024)
print (reply.decode ('utf-8'))
s.close()
when i run the program in server gives me the error:
import Adafruit_BMP.BMP085 as BMP085
ImportError: No module named 'Adafruit_BMP'
i run the 2 programs in the python IDLE3
i need some help to find the mistake i'm doing
Thank you for the Issue!
This library has been deprecated in favor of our python3 Blinka library. We have replaced all of the libraries that use this repo with CircuitPython libraries that are Python3 compatible, and support a wide variety of single board/linux computers!
Visit https://circuitpython.org/blinka for more information
CircuitPython has support for almost 200 different drivers, and a as well as FT232H support for Mac/Win/Linux!