예제 #1
0
def main():

    # Bootsplash anzeigen
    # und 1sek warten. Wichtig: in dieser Zeit hat man die Möglichkeit über serial ein neues Programm hochzuladen
    # Beim ESP32 ist das nicht mehr wichtig, da dieser zwei serial Schnittstellen hat.
    display = Display(scl=4, sda=0)
    display.println("RSSI")
    display.println("Location")
    display.println("Logger")
    display.println("")
    # display.print_dot()

    # Systeme konfigurieren
    try:

        # nur zum Testen
        # wlan = network.WLAN(network.STA_IF)
        # wlan.active(True)
        # wlan.connect('Freifunk')
        # while not wlan.isconnected():
        # 	display.print_dot()
        # 	time.sleep(0.5)
        # display.println(str(wlan.status('rssi')))
        # time.sleep(10)

        display.println("===CONF START==")
        display.println("scan wlan")
        # Wlan Objekt erstellen, dass selbständig einen scan macht und das stärkste Freifunk zurück gibt.
        # display.print_dot()
        wlan = Wlan("Freifunk")
        # display.println(wlan.ff_ap_bssid)
        wlan.connect()

        display.println("connect")
        #display.println(ubinascii.hexlify(wlan.ff_list[0][1])+str(wlan.ff_list[0][3]))
        while not wlan.isconnected():
            display.print_dot()
            time.sleep(0.5)

        gps = Gps()

        s = 0.1

        display.println("init uart 9600")
        display.print_dot()
        uart = Uart(0, 9600)
        time.sleep(s)

        display.println("set baud 115200")
        display.print_dot()
        uart.send_command(b'PMTK251,115200')
        time.sleep(s)

        display.println("init UART 115200")
        display.print_dot()
        uart = Uart(0, 115200)
        time.sleep(s)

        display.println("set 2Hz")
        display.print_dot()
        uart.send_command(b'PMTK220,500')
        time.sleep(s)

        display.println("set RMC, GGA")
        display.print_dot()
        uart.send_command(b'PMTK314,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,00')
        time.sleep(s)

        display.println("===CONF END===")

        while True:
            line = uart.readline()
            # display.println(str(line))
            gps.refresh(line)
            quality = False
            if wlan.isconnected() and int(
                    gps.sats) > 7 and gps.is_fix and float(gps.hdop) < 2:
                quality = True

            if not (wlan.isconnected()):
                # display.println("")
                # display.println("lost wlan :(")
                # display.println("reconnect...")
                wlan.reconnect()
            # else:
            display.print_info(gps, quality, wlan)
            # display.println(str(wlan.wlan.status('rssi')))
            time.sleep(0.1)

    except Exception as ex:
        display.println(repr(ex))
        for e in ex.args:
            display.println(e[:16])
            time.sleep(1)
            display.println(e[16:32])
            time.sleep(1)
            display.println(e[32:48])
        display.println("")
        time.sleep(10)