# mutiple_aps.py
# Baustein für Kontakversuche zu mehreren WLAN-APs
import os,sys       # System- und Dateianweisungen    
from machine import Pin, reset, I2C
from time import sleep, ticks_ms
import network

led=[errorLed,onairLed,statusLed ]
red,green,blue=0,1,2

def blink(pulse,wait,col,inverted=False,cnt=1):
    for i in range(cnt):
        if inverted:
            led[col].off()
            sleep(pulse)
            led[col].on()
            sleep(wait)
        else:
            led[col].on()
            sleep(pulse)
            led[col].off()
            sleep(wait)


def hexMac(byteMac):
    """
    Die Funktion hexMAC nimmt die MAC-Adresse im Bytecode  
    entgegen und bildet daraus einen String fuer die Rueckgabe
    """
    macString =""
    for i in range(0,len(byteMac)):     
        macString += hex(byteMac[i])[2:] 
        if i <len(byteMac)-1 :           
            macString +="-"
    return macString

# ***************** Connect to WLAN **********************
connectStatus = {
    0: "STAT_IDLE",
    1: "STAT_CONNECTING",
    5: "STAT_GOT_IP",
    2:  "STAT_WRONG_PASSWORD",
    3:  "NO AP FOUND",
    4:  "STAT_CONNECT_FAIL",
    }

mySSID1= 'Here_goes_your_SSID'
mySSID2 = 'Here_goes_your_SSID'
myPass = 'Here_goes_your_Password'

# Unbedingt das AP-Interface ausschalten
nac=network.WLAN(network.AP_IF)
nac.active(False)
nac=None

# Wir erzeugen eine Netzwerk Interface-Instanz
nic = network.WLAN(network.STA_IF)
nic.active(False)
# Abfrage der MAC-Adresse zum Eintragen im Router, 
# damit die Freigabe des Zugangs erfolgen kann
MAC = nic.config('mac')  
myID=hexMac(MAC)
print("Client-ID",myID)

# Wir aktivieren das Netzwerk-Interface
nic.active(True)

# Aufbau der Verbindung
# Wir setzen eine statische IP-Adresse
nic.ifconfig(("10.1.1.94","255.255.255.0","10.1.1.20","10.1.1.100"))

# Anmelden am WLAN-Router
nic.connect(mySSID1, myPass)   
nmax=10
col = red
if not nic.isconnected():
    # warten bis die Verbindung zum Accesspoint steht
    n=0
    while not nic.isconnected() and n < nmax:
        print("{}.".format(nic.status()),end='')
        blink(0.8,0.2,blue) # blink blue LED lang-kurz
        n+=1
    if n < nmax:
        col = blue
    nic.connect(mySSID2, myPass)
    n=0
    while not nic.isconnected() and n < nmax:
        print("{}.".format(nic.status()),end='')
        blink(0.2,0.8,blue) # blink blue LED lang-kurz
        n+=1
    if n < nmax:
        col = green
    
# Wenn verbunden, zeige Verbindungsstatus & Config-Daten
print("\nconnected: ",nic.isconnected())
print("\nVerbindungsstatus: ",connectStatus[nic.status()])
# War die Konfiguration erfolgreich? Kontrolle
STAconf = nic.ifconfig()
print("STA-IP:\t\t",STAconf[0],"\nSTA-NETMASK:\t",\
      STAconf[1],"\nSTA-GATEWAY:\t",STAconf[2] ,sep='')
#
