sonnyyu:
At Yun:
nano /mnt/sda1/udp.py
#!/usr/bin/python
import socket
UDP_IP = "192.168.0.230" #Uno IP address
UDP_PORT = 8888
MESSAGE = "G"
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # UDP
sock.sendto(bytes(MESSAGE), (UDP_IP, UDP_PORT))
recvmsg=sock.recv(1024)
print recvmsg
sock.close()
/mnt/sda1/udp.py
make sure return value from nano.
#!/usr/bin/python
import socket
import sys
sys.path.insert(0, '/usr/lib/python2.7/bridge/')
from bridgeclient import BridgeClient as bridgeclient
UDP_IP = "192.168.0.230" #Uno IP address
UDP_PORT = 8888
MESSAGE = "G"
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # UDP
sock.sendto(bytes(MESSAGE), (UDP_IP, UDP_PORT))
recvmsg=sock.recv(1024)
#print recvmsg
sock.close()
bc = bridgeclient()
bc.put('to_arduino',recvmsg)
sannyyu: I am using your code shown above to control my WiFi lights successfully but now I would like to be able to receive UDP messages from my iPhone/iMac and to send a reply. The messages from the iPhone/iMac can be sent at any time.
I have added the following code to receive UDP messages from my iPhone and to send a reply. However, the Python code hangs and I never see the output from the statement - print("After dataFromClient"). If I send a UDP message from my iPhone then the print is executed.
I would like the code to continue processing if no UDP data has been received. I am testing this on my iMac running Python v3.4 and sending UDP test messages from my iPhone.
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server_socket.bind(('', 6666))
print ("UDPServer listening on port 6666")
while True:
dataFromClient, address = server_socket.recvfrom(256)
print ("Received %d bytes: '%s'" % (len(dataFromClient), dataFromClient))
if (dataFromClient == b'g'):
msg = 'G,' + str(lightReading)
server_socket.sendto(bytes(msg, 'utf-8'), address)
elif (dataFromClient == b'n'):
msg = 'N,' + str(nSchedules) + str(lightReading)
server_socket.sendto(bytes(msg, 'utf-8'), address)
else:
print ("( " ,address[0], " " , address[1] , " ) said : ", dataFromClient)
print("After dataFromClient")