Files
rate_music/pico/wifi_client.py

85 lines
2.3 KiB
Python

import network
import urequests
import time
import usocket
import socket
import ssl
# global variable for the IP-Adress of the laptop hotspot
IP_ADRESS_SERVER:str = '192.168.0.100' #None
IP_ADRESS_ACCESSPOINT = None
SERVER_PORT:int = 3000 #None
# configures the raspberry pi as wifi-client and connects it to an access point
def wifi_connect(SSID:str, PASSWORD:str) -> None:
# configure raspberry pi as client
wifi = network.WLAN(network.STA_IF)
# activate client
wifi.active(True)
# connect to laptop hotspot
wifi.connect(SSID, PASSWORD)
# wait until it has connected
while not wifi.isconnected():
print("Connect to", SSID, "...")
time.sleep(1)
# connected to laptop hotspot
print("Connected to", SSID)
# geat and print IP-adress of raspberry
ip_adress_pico = wifi.ifconfig()[0]
print("IP-Adresse Pico:", ip_adress_pico)
# get ip-adress of access point and store it in the global variable
global IP_ADRESS_ACCESSPOINT
IP_ADRESS_ACCESSPOINT = wifi.ifconfig()[2]
print("IP-adress access point:", IP_ADRESS_ACCESSPOINT)
print()
# send a HTTP-request to the access point with the rate value
def send_request(rate_value:int) -> None:
# create HTTP-URL
URL = f"http://{IP_ADRESS_SERVER}:{str(SERVER_PORT)}/rating/{rate_value}"
print(URL)
# create request
response = urequests.get(URL)
# print HTTP-answer of the access point
print("Server response:")
print(response.text) # Die Antwort des Servers anzeigen
print()
response.close()
# test, if there can be a connection to the given ip adress and port
def ping_ip(ip:str, port:int) -> bool:
s = usocket.socket(usocket.AF_INET, usocket.SOCK_STREAM)
s.settimeout(1)
try:
s.connect((ip, port))
print(f"{ip} reachable")
s.close()
return True
except:
print(f"{ip} not reachable")
s.close()
return False
# search for the server in the lokal network
# in the ip range from lower_limit to upper_limit
def search_server(lower_limit:int, upper_limit:int, port:int) -> str:
global IP_ADRESS_SERVER
for i in range(lower_limit, upper_limit):
ip = IP_ADRESS_ACCESSPOINT[:-1] + str(i)
if ping_ip(ip, port):
print(f"Server found unter: {ip}:{port}")
IP_ADRESS_SERVER = ip
return ip