Первый запуск веб страницы
На одноплатном компьютере возможно запустить веб-сервер, чтобы на нем работал, например, ваш веб-сайт. Веб-сайт может выступать в роли панели управления для робота с одноплатным компьютером. Веб-сервер будет работать на языке Python с помощью фреймворка flask. Для начала его надо установить:
sudo apt install python3-flaskДалее требуется создать папку, в которой будут храниться все файлы веб-проекта:
mkdir serverВ ней требуется создать еще две папки: в папке templtes будут храниться веб-страницы, в папке static --- изображения для сайта и прочие файлы.
cd server
mkdir static
mkdir templatesТеперь создадим файл hello_world.py со следующим кодом:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'Hello world'
if __name__ == '__main__':
app.run(debug=True, port=80, host='0.0.0.0')Запустим файл командой:
sudo python3 hello_world.pyИ перейдем по IP-адресу одноплатного компьютера в браузер. В браузере отобразится фраза “Hello world”. Клиент (браузер) отправляет запрос на сервер (nanopi), и сервер возвращает веб-страницу. Однако для создания сайта, которым будет удобно пользоваться, недостаточно языка Python. Чтобы создать “скелет” веб-страницы, определить, где и какой элемент будет находиться, нужен язык разметки HTML. Создавая файл HTML, который будет находиться в подпапке «templates», мы можем использовать отдельный файл под каждую страницу и динамически дополнять эту страницу данными из кода на питоне.
Итак, мы создадим файл с именем index.html, который будет сохранен в /templates. Вы можете использовать любой текстовый редактор для создания HTML-файла. Это может быть Geany, «nano» в терминале или gedit. Введем в файл index.html следующий код:
<!DOCTYPE html>
<head>
<title>{{ title }}</title>
</head>
<body>
<h1>Hello, World!</h1>
<h2>Время на сервере: {{ time }}</h2>
</body>
</html>На этой веб-странице будет отображаться текущее время, которое будет заполняться в шаблоне из кода Python. Модифицируем код на питоне, чтобы он мог отправить время на веб-страницу:
from flask import Flask, render_template
import datetime
app = Flask(__name__)
@app.route("/")
def hello():
now = datetime.datetime.now()
timeString = now.strftime("%Y-%m-%d %H:%M")
templateData = {
'title' : 'HELLO!',
'time': timeString
}
return render_template('index.html', **templateData)
if __name__ == "__main__":
app.run(host='0.0.0.0', port=80, debug=True)Таким образом, при вводе IP-адреса NanoPi в адресную строку браузера будет отображаться веб-страница, содержащая строку “Hello world!” и текущее время. С помощью языка разметки html и каскадной таблицы стилей css можно разметить удобный для использования интерфейс робота или умного дома, которым управляет одноплатный компьютер. Из кода Pyhton доступны библиотеки, позволяющие работать с камерой, портами gpio NanoPi и прочими функциями, следовательно, с помощью веб-сайта можно контролировать почти любой параметр устройства, которым управляет одноплатный компьютер. В следующем примере будет описан способ управления светодиодами через веб-сайт.