Bottom Page

Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
 Send data BMP180 between client and server trought module socket
#1
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:
Code: Select all

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 # 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 ()
            print ("Temperature = {0: 0.2f * C" .format (sensor.read_temperature ()))
        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()
Quote

Top Page

Possibly Related Threads...
Thread Author Replies Views Last Post
  Server and Network (socket) [WinError 10053] Timxxx 0 50 Jul-17-2019, 11:50 PM
Last Post: Timxxx
  Python server(Django web site)/client(Python app) connection Junior_Pythoneer 5 195 Jul-05-2019, 05:41 PM
Last Post: noisefloor
  Question concerning function of a a socket pkm 4 1,081 Jun-04-2019, 07:48 AM
Last Post: DeaD_EyE
  socket.gaierror: [Errno -2] Name or service not known seokangwoo99 5 387 May-25-2019, 02:36 PM
Last Post: DeaD_EyE
  socket programming ConnectionRefusedError error srm 3 282 May-16-2019, 08:07 PM
Last Post: LavaCreeperKing
  Socket reading script Will86 4 346 Apr-17-2019, 06:57 AM
Last Post: Will86
  Server and Network (socket) [WinError 10053] SheeppOSU 2 390 Apr-13-2019, 09:23 PM
Last Post: SheeppOSU
  How to combine data taken from server between client and GUI? bescf 9 512 Apr-02-2019, 11:48 AM
Last Post: bescf
  Send Pressure sensor data to IoT platform using WebSockets in Python barry76 3 417 Mar-12-2019, 09:48 AM
Last Post: barry76
  Graphql subscriptions client Edoar 0 209 Mar-11-2019, 04:13 PM
Last Post: Edoar

Forum Jump:


Users browsing this thread: 1 Guest(s)