Пример #1
0
    def get_onboard_button_events(self, btn, bcc_key, on_single_click,
                                  on_double_click):
        import gc
        from machine import Timer

        if btn.value() == 0:
            self.button_click_counter[bcc_key] += 1
            if self.button_click_counter[bcc_key] == 1:
                log.info("single-click registered (mem free: " +
                         str(gc.mem_free()) + ")")
                sc = getattr(tk, on_single_click)
                sc()

            elif self.button_click_counter[bcc_key] == 2:
                log.info("double click registered (mem free: " +
                         str(gc.mem_free()) + ")")
                sc = getattr(tk, on_double_click)
                sc()
            else:
                pass

            gtim = Timer(1)
            gtim.init(period=300,
                      mode=Timer.ONE_SHOT,
                      callback=lambda t: self.
                      reset_onboard_button_event_counter(bcc_key))
Пример #2
0
    def format(self):
        import uos
        log.info("Formatting filesystem ...")

        while uos.listdir("/"):
            lst = uos.listdir("/")
            uos.chdir("/")
            while lst:
                try:
                    uos.remove(lst[0])
                    log.info("Removed '" + uos.getcwd() + "/" + lst[0] + "'")
                    lst = uos.listdir(uos.getcwd())
                except:
                    dir = lst[0]
                    log.info("Directory '" + uos.getcwd() + "/" + dir +
                             "' detected. Opening it...")
                    uos.chdir(dir)
                    lst = uos.listdir(uos.getcwd())
                    if len(lst) == 0:
                        log.info("Directory '" + uos.getcwd() +
                                 "' is empty. Removing it...")
                        uos.chdir("..")
                        uos.rmdir(dir)
                        break

        log.info("Format completed successfully")
Пример #3
0
    def connect_to_wifi(self, ssid, password, mode, wait_for_ip=0):
        import network, time

        log.info(
            "Attempting to connect to WiFi '{}' with password '{}'...".format(
                ssid, password))
        n = network.WLAN(mode)
        n.active(True)
        n.connect(ssid, password)

        # Wait for IP address to be provided
        count = 0
        while not n.isconnected() and count < wait_for_ip:
            log.info("Waiting to obtain IP ... ({} sec remaining)".format(
                str(wait_for_ip - count)))
            time.sleep(1)
            count += 1

        # Get provided IP
        ip = n.ifconfig()[0]

        if ip == "0.0.0.0":
            log.info("Could not obtain IP on '{}'".format(ssid))
        else:

            log.info("Connected with IP '{}'".format(ip))

        return ip
Пример #4
0
 def reboot(self):
     log.info("Rebooting board ...")
     import machine
     machine.reset()
Пример #5
0
 def reset_onboard_button_event_counter(self, bcc_key):
     log.info("FBC resetting to 0. Previous was " +
              str(self.button_click_counter[bcc_key]))
     self.button_click_counter[bcc_key] = 0
     return self.button_click_counter[bcc_key]
Пример #6
0
import sys

from hw.NodeMCU import NodeMCU
from lib.toolkit import log, load_properties, determine_preferred_wifi

# Instantiate our board
board = NodeMCU()

# Startup heartbeat
board.blink_blue_led(8, 0.04)

# Print version
version_info = load_properties("MANIFEST.MF")
log.info(version_info["name"] + " " + version_info["version"] +
         " running on " + sys.platform)

# Connect to WiFi
preferred_wifi = determine_preferred_wifi(
    load_properties("conf/network.properties"), board.scan_wifi())
ip = board.connect_to_wifi(preferred_wifi["ssid"], preferred_wifi["password"],
                           10)

# board.get_user_button_events("hello_world", "hello_world")
Пример #7
0
import machine

from lib.PropertyManager import PropertyManager
from lib.Stepper import Stepper
from lib.toolkit import log

if machine.reset_cause() == machine.DEEPSLEEP_RESET:
    log.info("Woke from deep sleep ...")
else:
    log.info("Power on from hard reset ...")

p = PropertyManager("conf/profile.properties")
stepper = Stepper(p.get_str_property("step_file"), 2)

if stepper.get_current_step() == 1:
    log.debug("step 1 code")

    from hw.screen.SSD1306 import SSD1306
    from hw.screen.Screen import ConnectionType
    from hw.sensor.AnalogSensor import AnalogSensor

    log.debug("Connecting to soil humidity sensor at pin {}".format(
        p.get_str_property("analog_pin")))

    # SUBMERGED IN WATER (vlow)   : 364
    # COMPLETELY DRY     (vhigh)  : 1024
    soil_sensor = AnalogSensor(p.get_int_property("analog_pin"),
                               p.get_int_property("vhigh"),
                               p.get_int_property("vlow"))

    # SSD1306 OLED init
Пример #8
0
import time

import machine
import ssd1306
from hw.sensor.bmp180.bmp180 import BMP180
from machine import I2C, Pin

from hw.board.NodeMCU import NodeMCU
from lib.PropertyManager import PropertyManager
from lib.toolkit import log

if machine.reset_cause() == machine.DEEPSLEEP_RESET:
    log.info("Woke from deep sleep ...")
else:
    log.info("Power on from hard reset ...")

p = PropertyManager()
board = NodeMCU()

# BMP180 init
bus = I2C(scl=Pin(p.get_int_property("bmp_scl")),
          sda=Pin(p.get_int_property("bmp_sda")),
          freq=100000)

bmp180 = BMP180(bus)
bmp180.oversample_sett = 2
bmp180.baseline = 101325

# OLED init
i2c = machine.I2C(machine.Pin(p.get_int_property("ssd1306_scl")),
                  machine.Pin(p.get_int_property("ssd1306_sda")))