From 4a151cb4324078253a169a7f2a163fe674d4ceee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ebbe=20Ba=C3=9F?= Date: Sat, 26 Mar 2022 20:14:20 +0100 Subject: [PATCH] added socket server --- debug-client.py | 9 ++++++++ main.py | 50 +++++++++++++++++++++++------------------ test-client.py | 11 +++++++++ test-server.py | 17 ++++++++++++++ test.py | 60 ------------------------------------------------- 5 files changed, 65 insertions(+), 82 deletions(-) create mode 100644 debug-client.py create mode 100644 test-client.py create mode 100644 test-server.py delete mode 100644 test.py diff --git a/debug-client.py b/debug-client.py new file mode 100644 index 0000000..da15321 --- /dev/null +++ b/debug-client.py @@ -0,0 +1,9 @@ +import socket + +HOST = "172.0.0.1" +PORT = 5760 + +with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: + s.connect((HOST, PORT)) + s.sendall(b"Hello, world") + data = s.recv(1024) \ No newline at end of file diff --git a/main.py b/main.py index 3618a80..9ed918c 100644 --- a/main.py +++ b/main.py @@ -1,13 +1,18 @@ import time -import requests -from rpi_ws281x import * -import RPi.GPIO as GPIO import os from datetime import datetime +try: + import requests + from rpi_ws281x import * + import RPi.GPIO as GPIO + import socket +except ImportError: + print('Some modules are missing. Try to install them with "pip3 install -r requirements.txt"') + exit() -led_power = 'True' +led_power = True idle_mode = 1 -power_button_pressed = 'false' +power_button_pressed = False # LED strip configuration: LED_COUNT = 60 # Number of LED pixels. @@ -19,6 +24,9 @@ LED_BRIGHTNESS = 255 # Set to 0 for darkest and 255 for brightest LED_INVERT = False # True to invert the signal (when using NPN transistor level shift) LED_CHANNEL = 0 # set to '1' for GPIOs 13, 19, 41, 45 or 53 +SOCKET_BIND_IP = '0.0.0.0' +SOCKET_BIND_PORT = 5760 + def debug_print(message: str): now = datetime.now() current_time = now.strftime("%H:%M:%S") @@ -43,7 +51,7 @@ def wheel(pos): def rainbowCycle(strip, wait_ms=5, iterations=10): for j in range(256*iterations): - if power_button_pressed == 'True': + if power_button_pressed == True: break elif idle_mode > 1: break @@ -76,9 +84,12 @@ def change_idle_mode(channel): debug_print('Change Idlemode executed') def power_toggle(channel): - global power_button_pressed - power_button_pressed = 'True' - debug_print('Toggle Power executed') + if led_power == True: + led_power = False + debug_print('LED Power OFF') + else: + led_power = True + debug_print('LED Power ON') if __name__ == '__main__': strip = Adafruit_NeoPixel(LED_COUNT, LED_PIN, LED_FREQ_HZ, LED_DMA, LED_INVERT, LED_BRIGHTNESS, LED_CHANNEL) @@ -89,21 +100,16 @@ if __name__ == '__main__': GPIO.add_event_detect(13, GPIO.RISING, callback=power_toggle, bouncetime=300) GPIO.add_event_detect(19, GPIO.RISING, callback=change_idle_mode, bouncetime=300) + with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: + s.bind((SOCKET_BIND_IP, SOCKET_BIND_PORT)) + s.listen() + conn, addr = s.accept() try: while True: - try: - debug_print('Button pressed: '+str(power_button_pressed)) - if str(power_button_pressed) == 'True': - if led_power == 'True': - led_power = 'False' - power_button_pressed = 'False' - else: - led_power = 'True' - power_button_pressed = 'False' - except: - pass - - if led_power == 'True': + socket_data = conn.recv(1024) + print(socket_data) + print(type(socket_data)) + if led_power == True: if check_internet() == False: blink(strip, Color(255,0,0), Color(255,255,255)) else: diff --git a/test-client.py b/test-client.py new file mode 100644 index 0000000..0af878f --- /dev/null +++ b/test-client.py @@ -0,0 +1,11 @@ +import socket + +HOST = "192.168.190.20" +PORT = 5760 + +with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: + s.connect((HOST, PORT)) + s.sendall(b"Hello, world") + data = s.recv(1024) + +print(f"Received {data!r}") \ No newline at end of file diff --git a/test-server.py b/test-server.py new file mode 100644 index 0000000..b00e3d9 --- /dev/null +++ b/test-server.py @@ -0,0 +1,17 @@ +import socket + +HOST = '0.0.0.0' +PORT = 5760 + +with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: + s.bind((HOST, PORT)) + s.listen() + conn, addr = s.accept() + with conn: + print(f"Connected by {addr}") + while True: + data = conn.recv(1024) + if not data: + break + conn.sendall(data) + \ No newline at end of file diff --git a/test.py b/test.py deleted file mode 100644 index ce9ea7d..0000000 --- a/test.py +++ /dev/null @@ -1,60 +0,0 @@ -import time -from rpi_ws281x import * -import configparser -import os - -# LED strip configuration: -LED_COUNT = 60 # Number of LED pixels. -LED_PIN = 18 # GPIO pin connected to the pixels (18 uses PWM!). -#LED_PIN = 10 # GPIO pin connected to the pixels (10 uses SPI /dev/spidev0.0). -LED_FREQ_HZ = 800000 # LED signal frequency in hertz (usually 800khz) -LED_DMA = 10 # DMA channel to use for generating signal (try 10) -LED_BRIGHTNESS = 255 # Set to 0 for darkest and 255 for brightest -LED_INVERT = False # True to invert the signal (when using NPN transistor level shift) -LED_CHANNEL = 0 # set to '1' for GPIOs 13, 19, 41, 45 or 53 - -def wheel(pos): - """Generate rainbow colors across 0-255 positions.""" - if pos < 85: - return Color(pos * 3, 255 - pos * 3, 0) - elif pos < 170: - pos -= 85 - return Color(255 - pos * 3, 0, pos * 3) - else: - pos -= 170 - return Color(0, pos * 3, 255 - pos * 3) - -def rainbowCycle(strip, wait_ms=10, iterations=10): - for j in range(256*iterations): - for i in range(strip.numPixels()): - strip.setPixelColor(i, wheel((int(i * 256 / strip.numPixels()) + j) & 255)) - strip.show() - time.sleep(wait_ms/1000.0) - -def setColor(strip, color, iterations=10, wait_ms=10): - for i in range(strip.numPixels()): - strip.setPixelColor(i, color) - strip.show() - time.sleep(wait_ms/1000.0) - -def blink(strip, color1, color2, iterations=10, wait_ms=10): - for i in range(strip.numPixels()): - strip.setPixelColor(i, color1) - strip.show() - time.sleep(1) - for i in range(strip.numPixels()): - strip.setPixelColor(i, color2) - strip.show() - time.sleep(1) - -if __name__ == '__main__': - strip = Adafruit_NeoPixel(LED_COUNT, LED_PIN, LED_FREQ_HZ, LED_DMA, LED_INVERT, LED_BRIGHTNESS, LED_CHANNEL) - strip.begin() - - try: - while True: - #blink(strip, Color(255,0,0), Color(255,255,255)) - #setColor(strip, Color(255,0,0)) - rainbowCycle(strip) - except KeyboardInterrupt: - setColor(strip, Color(0,0,0)) \ No newline at end of file