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
  How can i create a server for already existing client using Python? Chapanson 1 53 5 hours ago
Last Post: Larz60+
  Simple TCP Client and TCP Server Problem Vapulabis 5 406 Jul-12-2020, 05:09 PM
Last Post: ndc85430
  socket without blocking loop and automatically retrieve data from the port RubenP 3 410 Jun-21-2020, 10:59 PM
Last Post: Gribouillis
  [Socket] Can a server be accessible from devices not in the same network? SheeppOSU 2 380 Jun-18-2020, 01:29 PM
Last Post: DeaD_EyE
  [Socket] Is there a way to recognize a client by their device? SheeppOSU 1 258 Jun-03-2020, 08:37 AM
Last Post: Knight18
  how to send an image from server to client using PICKLE module dafdaf 1 369 Jun-02-2020, 01:08 PM
Last Post: nuffink
  how can i send a list of tuples from the server to the client using sockets? dafdaf 1 308 Apr-13-2020, 10:51 PM
Last Post: Larz60+
  Python script multi client server sonra 1 323 Mar-24-2020, 03:49 PM
Last Post: Larz60+
  Python 2.7 vs Python 3.8 (Socket Module) MattB 8 1,679 Mar-18-2020, 01:02 PM
Last Post: MattB
  Writing socket server NewPy_thwan_Programmer 0 359 Feb-23-2020, 03:58 PM
Last Post: NewPy_thwan_Programmer

Forum Jump:


Users browsing this thread: 1 Guest(s)