Advertisement
0x255

esp32 micropython aler button example

Nov 20th, 2020 (edited)
1,309
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.58 KB | None | 0 0
  1. SSID, PASSWORD = 'ssid', 'pass'
  2. PRESS_TTL = 0.01
  3.  
  4. ALERT_ENDPOINT = 'https://ya.ru/foo/bar/baz/ni'
  5. DEVICE_ID = 'some_dummy_device_id'
  6. HASH_SALT = '$y$j9T$edgJeH8xqTYX6/NTUBML70$oq6bfszMECZZCib5ADrj8BkAxsWtw1Nd54L.gE2OXE5'
  7.  
  8. def network_config(ssid, password):
  9.     """ setup wifi connection """
  10.     import network
  11.  
  12.     sta_if = network.WLAN(network.STA_IF)
  13.     if not sta_if.isconnected():
  14.         print('connecting to network...')
  15.         sta_if.active(True)
  16.         sta_if.connect(ssid, password)
  17.         while not sta_if.isconnected():
  18.             pass
  19.     print('network config:', sta_if.ifconfig())
  20.  
  21. def get_secret():
  22.     """ generate secret for request """
  23.  
  24.     from datetime import datetime
  25.     from hashlib import sha256
  26.  
  27.     raw_secret = ''.join((
  28.         DEVICE_ID, HASH_SALT, datetime.now().minute
  29.     ))
  30.  
  31.     return sha256(_)
  32.  
  33. def post_alert():
  34.     """ post http request to alert server """
  35.     import urequests as requests
  36.  
  37.     r = requests.post(ALERT_ENDPOINT, json={
  38.         'device_id': DEVICE_ID,
  39.         'secret': get_secret(),
  40.     })
  41.  
  42.  
  43. def monitor_emerg_button(buutton):
  44.     """ monitor targer button"""
  45.     first = button.value()
  46.     time.sleep(PRESS_TTL)
  47.     second = button value()
  48.  
  49.     status_pressed = first and not second
  50.     status_released = not first and second
  51.  
  52.     if status_pressed:
  53.         post_alert()
  54.  
  55. def main():
  56.     """ app entry point """
  57.     import machine
  58.  
  59.     network_config(SSID, PASSWORD)
  60.  
  61.     button = machine.Pin(12, machine.Pin.IN, machine.Pin.PULL_UP)
  62.  
  63.     while True:
  64.         monitor_emerg_button(button)
  65.  
  66. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement