Table of Contents

6. Synchronní komunikace

Cíle cvičení

Plánování úloh

Pro pravidelné opakované spouštění úloh lze v prostředí Flask využít např. APScheduler.

pip install Flask-APScheduler

Příklady: https://viniciuschiele.github.io/flask-apscheduler/rst/examples.html

Pro běh na pozadí lze dále využít třídu BackgroundScheduler()

import time
import atexit
from flask import Flask, request, render_template
 
app = Flask(__name__)
 
from apscheduler.schedulers.background import BackgroundScheduler
 
def print_date_time():
    print(time.strftime("%A, %d. %B %Y %I:%M:%S %p"))
 
scheduler = BackgroundScheduler()
scheduler.add_job(func=print_date_time, trigger="interval", seconds=60)
scheduler.start()
 
# Shut down the scheduler when exiting the app
atexit.register(lambda: scheduler.shutdown())
 
if __name__ == '__main__':
    app.run(debug=True, use_reloader=False)

Serializace dat

Na straně příjemce (PC) bude pravděpodobně třeba instalovat modul ujson

pip install ujson

Na straně RPi Pico není třeba instalovat nic, modul ujson je součástí jádra MicroPythonu.

Seznam všech dostupných modulů na Pico lze získat

help('modules')

Na straně RPi Pico se pak může kód rozšířit např. takhle:

data = {'led': led.value()}
print(ujson.dumps(data), end='\n')

Na kód dekodéru na straně serveru může vypadat následově:

ret = ser.readline().decode()
led = ujson.loads(ret)['led']