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))
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")
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
def reboot(self): log.info("Rebooting board ...") import machine machine.reset()
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]
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")
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
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")))