Visit The New, Modern Unix Linux Community

Top Forums Programming Arduino Project: iPhone to HM-10 BLE to NB-IoT Shield to NB-IoT Network to Internet to Linux Server Post 303043465 by Neo on Wednesday 29th of January 2020 08:08:39 AM
Here is some very preliminary Python UDP server code this test / demo application.

Please feel free to clean it up and repost. Use it anyway you wish.

I know the Python code a mess, so please clean it up and post your "cleaner, nicer, prettier" code back in this thread if the spirit moves you to do so.

This is mainly a "debugging and testing script" and it NOT intended for production use at all.


NB-IoT Test Code with ArduinoBlue
Listens on a port for UDP, simple authentication, echo back with unix time
Version 0.15 29 January 2020
Use as you wish.   If you improve it, please post back.
import socket
import sys
import time
import subprocess

# Create a TCP/IP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# sock.setblocking(False)
port = 1234  # your port number here
append = str(time.time())
file = "/root/debug/arduino/nbiot"+append+".log"
f = open(file, "w")
# Bind the socket to the port
server_address = ('', port)
print >>sys.stderr, 'starting up on %s port %s' % server_address
f.write('starting up on %s port %s' % server_address)
password = "my_simple_password\n"
authenticated = True
receivepw = True
lastsent = 0

while True:
    print >>sys.stderr, '\nwaiting to receive message'
    f.write('\nwaiting to receive message')
   now = time.time()

    data, address = sock.recvfrom(4096)
    print >>sys.stderr, str(time.time())+': received %s bytes from %s' % (len(data), address)
    f.write(str(time.time())+': received %s bytes from %s' % (len(data), address))
    stuff = str(time.time())+ ": "+ data
    print >>sys.stderr, stuff

    # override simple authentication  for now
    if data:
        lastsent = time.time()
        if authenticated == False and receivepw == False:
            sent = sock.sendto("Password: ", address)
            receivepw = True
        elif receivepw == True and authenticated == False:
            if data == password:
                sent = sock.sendto("Authenticated\n", address)
                authenticated = True
                sent = sock.sendto("Password:\n", address)
            print >>sys.stderr, 'a: sent %s bytes back to %s' % (sent, address)
            f.write('a: sent %s bytes back to %s' % (sent, address))
        elif authenticated == True:   #set to True all the time passing the auth code
            if '86940503122XXXXXXX' not in data:
                print >>sys.stderr, str(time.time())+': received %s' % (data)
                f.write(str(time.time())+':received %s' % (data))
                message = data
                # received = "You sent: " + data
                # sent = sock.sendto(received, address)
                # data = time.time()
                # data = "Unix Time: " + str(data)+"\n"
                # sent = sock.sendto(data, address)
                # sensor = sock.sendto("Sensor Data", address)
                # print >>sys.stderr, str(time.time())+': sent %s bytes back to %s' % (sent, address)
                # f.write(str(time.time())+': sent %s bytes back to %s' % (sent, address))
                doit = False
                if 'GetLoadAvgs' in message:
                    replydata = "Server Load Averages:"+subprocess.check_output(['cat', '/proc/loadavg'])
                    doit = True
                elif 'GetDiskSpace' in message:
                    tmp = subprocess.check_output("df | grep md2", shell=True)
                    tmp = tmp.split()
                    replydata ="MD2 Disk Space:"+tmp[4]
                    doit = True
                elif 'GetApache2Procs' in message:
                    tmp = subprocess.check_output("ps aux | grep apache2 | grep -v grep| wc -l", shell=True)
                    replydata ="Apache2 Processes:"+tmp
                    doit = True
                elif 'GetLastBackup' in message:
                    tmp = subprocess.check_output("ls -l /data/dumps | grep main | tail -1", shell=True)
                    tmp = tmp.split(".")
                    tmp = tmp[0].split("_")
                    replydata ="Last Backup:"+tmp[2]
                    doit = True
                elif 'GetSSHDStatus' in message:
                    tmp = subprocess.check_output("ps aux | grep sshd | grep sbin", shell=True)
                    if tmp > 0:
                        sshd = "UP"
                        sshd = "DOWN"
                    replydata ="SSHD Status:"+sshd
                    doit = True
                if doit == True:
                    load = sock.sendto(replydata, address)
                    print >>sys.stderr, str(time.time())+': sent %s bytes back to %s message %s' % (load,address, replydata)
                    f.write(str(time.time())+': sent %s bytes back to %s message %s' % (load, address,replydata))
                received = "Rejected: Unauthorized EMEI"
                sent = sock.sendto(received, address)
            sent = sock.sendto("Error\n", address)
            print >>sys.stderr, str(time.time())+' : sent %s bytes back to %s' % (sent, address)
            f.write(str(time.time())+' : sent %s bytes back to %s' % (sent, address))

This User Gave Thanks to Neo For This Post:
Test Your Knowledge in Computers #596
Difficulty: Hard
For loops in C use the familiar syntax of placing the initialization, continuation condition, and interpretation on the same line as the keyword for.
True or False?

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Linux for an internet server to an ISP

I just moved away from a T3 line back to a dial up I just wanted to know would a P200 with 64meg and a 4 gig hard drive be ok for a linux server for an additional 3 pcs all running win98. I will be dialing into an isp using a 56k v90 modem. Any support or help will be great. (3 Replies)
Discussion started by: izrailov
3 Replies

2. IP Networking

can i force connecting to local web server via internet network ?

Hello all this is general question , if i have web server installed in my local pc and i have client that connecting to that web server can i force it always to go via the internet network ? the reason im asking is .. that im noticed when i close my internet connection i still can connect to my... (2 Replies)
Discussion started by: umen
2 Replies

3. IP Networking

Can not access Linux server over the Internet

hi i have linux server connected to internet through a switch/router. i have opened a port on the router and i am able to connect to the server if iptables is off. but when it is on i cant. i want to create a rule in iptables so that it accepts packets coming from a particular datacard. it... (7 Replies)
Discussion started by: u.n.i.x
7 Replies

4. Programming

Arduino-cli - Uploading to Unknown Chinese Arduino Boards using the Arduino Command Line Interface

In my further exploration of Arduino, today I decided to install the arduino-cli on my mac today. I followed the instructions for macOS but when I got to this part: arduino-cli board list I got the dreaded "Unknown" Fully Qualified Board Name... (1 Reply)
Discussion started by: Neo
1 Replies

5. Programming

Arduino Project with NB-IoT (3GPP) and LoRa / LoRaWAN

My favorite projects are always related to the "latest" tech in command and control, networking and network communications. This Elecrow GSM/GPRS/EDGE SIM5360E 3G Shield seems to be the "latest and the greatest" as far as 3G and GPS, as far as I can see so far, but I has it drawbacks for sure.... (6 Replies)
Discussion started by: Neo
6 Replies

6. Programming

NB-IoT Arduino Shield from AIS (Thailand) First Impressions

Today I received my NB-IoT Arduino Shield for AIS (Thailand). Here is a "pinout" photo of the shield. My shield looks just like the one above, for the most part. I'll post another photo of the actual device later. When I received the shield in the mail, I went immediately to a local... (8 Replies)
Discussion started by: Neo
8 Replies

7. Programming

Elecrow GSM/GPRS/EDGE SIM5360E 3G Shield for Arduino

Normally I have very good experiences buying from AliExpress, but in this case with Elecrow, I'm disappointed. After confirming with Elecrow on AliExpress that their Elecrow GSM/GPRS/EDGE SIM5360E 3G Shield for Arduino would work with 3G SIM cards in Thailand, I purchased one. My plan was to... (1 Reply)
Discussion started by: Neo
1 Replies

8. Programming

Basic Arduino UNO Bluetooth Testing with the BLE 4.0 (CC2541, MLT-BT04 IC)

Here is a sketch to do basic testing for the Arduino UNO and the MLT-BT04. This BLE module works with IOS (iPhone) and I'll add some details on my IOS testing with an iPhone in a follow-up post. For now, here is the basic BLE (HM-10) sketch for the Arduino UNO: /* Arduino test-code... (7 Replies)
Discussion started by: Neo
7 Replies

9. Programming

Wuhan Coronavirus Status App for China - Rapid Prototype using MQTT and the IoT OnOff IOS App

With a little bit of work, was able to build a nice "Wuhan Coronavirus Status" app using MQTT and the IoT-OnOff app. More on this technique here: ESP32 (ESP-WROOM-32) as an MQTT Client Subscribed to Linux Server Load Average Messages The result turned out nice, I think. I like the look and... (10 Replies)
Discussion started by: Neo
10 Replies

10. Hardware

Arduino Robot Tank Project

Normally I'm not into kits, but I thought my wife would enjoy this one since she is a big fan of robots and droids on StarWars! We are done with the basic mechanical assembly and starting on the electronics assembly today. The robot's "brain" consists of three levels. The Arduino board, on... (5 Replies)
Discussion started by: Neo
5 Replies

Featured Tech Videos

All times are GMT -4. The time now is 06:15 PM.
Unix & Linux Forums Content Copyright 1993-2020. All Rights Reserved.
Privacy Policy