Arduino

Устройство удаленного мониторинга температуры воды

Это устройство регистрирует данные о температуре воды и подключается к веб-сайту для отображения и построения графика температуры в режиме реального времени. У него также есть дополнительная страница загрузки данных. Приложение можно установить на большинство телефонов и компьютеров.
Инструменты и материалы:
-Raspberry Pi Zero W;
-SD-карта (8 ГБ или больше);
-Макетная плата;
-Водонепроницаемый разъем питания;
-Водонепроницаемый 3-проводной разъем;
-Водонепроницаемый цифровой датчик температуры DS18B20;
-Контроллер для Lipo аккумулятора;
-Lipo аккумулятор;
-Солнечная панель;
-Водонепроницаемая коробка;
-Два кабельных ввода;
-Штыревые разъемы;
-Паяльные принадлежности;
-Отвертка;
-Кабель USB;
-Компьютер;

Шаг первый: VPS (виртуальный выделенный сервер)
В данной версии веб-сервер отделен от датчика, потому что это ускоряет загрузку веб-сайта и делает его более надежным. Мастер размещает его на VPS от Vultr. При желании можно запустить веб-сервер на Raspberry Pi или на любом сервере или старом компьютере, который есть в наличии.
Для настройки виртуального сервера нужно выполнить ряд действий.
Сначала создайте учетную запись на vultr.com . Перейдите на вкладку «Products», чтобы создать VPS.
В качестве типа сервера выберите Cloud Compute.
Для местоположения сервера выберите любое место, но желательно как можно ближе.
В качестве операционной системы можно выбрать любой дистрибутив Linux.
В качестве размера сервера выберите твердотельный накопитель 25 ГБ, 1 процессор, память 1024 МБ, пропускную способность 1000 ГБ.
Затем создайте имя хоста сервера и метку. Что-то вроде «WaterTemp».
После того, как все настройки будут установлены, нажмите «Deploy Now».
Теперь просто подождите несколько минут, пока ОС установится.

Шаг второй: настройка сервера
Теперь нужно настроить сервер. Это будет довольно просто, так как просто нужно скопировать и вставить команды в консоль.
Во-первых, нужно подключиться к серверу по ssh. Для этого можно использовать команду ssh или PuTTY для Windows.
Кликнув на только что созданный VPS, мы попадаем на страницу с информацией о сервере.
Команда SSH
Просто нажмите кнопку копирования рядом с IP-адресом, затем откройте эмулятор терминала и введите команду ssh root @, где — IP-адрес сервера. Если будет запрос: «Are you sure you want to continue connecting?», отвечаем «yes» и подтверждаем «enter». Затем вернитесь в Vultr и нажмите кнопку копирования пароля root. Теперь вставьте это в пароль root и нажмите Enter. Если обычная вставка не сработает, возможно, придется попробовать вставить, нажав CTRL + SHIFT + V.

Использование PuTTY
После скачивания и установки PuTTY, открываем его. Затем возвращаемся на страницу Vultr и кликаем кнопку копирования рядом с IP-адресом. Вставляем в текстовый ввод Host Name. Кликаем «Open», затем, если появятся всплывающие окна, « Accept». В открывшемся окне консоли появится вопрос, под каким пользователем войти в систему. Вводим «root» и нажимаем Enter. Возвращаемся в Vultr и копируем пароль root. Снова переходим в консоль, прописываем пароль и подтверждаем Enter.
Если получено приветственное сообщение, значит все сделано правильно.

Теперь нужно создать учетную запись пользователя для запуска веб-сервера.
Обратите внимание, что символ ‘#’ или ‘$’ просто указывает, следует ли вам запускать команду от имени пользователя root, и не должен быть включен в фактическую команду.
Сначала запускаем следующую команду

 Показать / Скрыть текст# adduser watertemp
Затем устанавливаем надежный пароль для этого пользователя. Нажимаем Enter еще несколько раз, чтобы ввести в учетную запись информацию по умолчанию.
Теперь добавим пользователя watertemp в группу sudoers. Это позволит позже запускать команды с правами root.

 Показать / Скрыть текст# visudo
Открываем текстовый редактор Nano. С помощью клавиш со стрелками переходим в конец файла и добавляем следующую строку.

 Показать / Скрыть текстwatertemp ALL=(ALL:ALL) ALL<br>
Далее нажимаем CTRL + O, чтобы сохранить, и Enter для подтверждения. А для выхода нажимаем CTRL + X.
Теперь входим в учетную запись watertemp, используя следующую команду.

 Показать / Скрыть текст# su watertemp

Шаг третий: установка программного обеспечения
Дальше нужно установим код на этот VPS, чтобы сайт заработал.
Выполните следующую команду, чтобы попасть в домашний каталог пользователей watertemp.

 Показать / Скрыть текст$ cd ~
Установите пакеты с помощью этой команды

 Показать / Скрыть текст$ sudo apt install -y npm nodejs —fix-missing
Вводим пароль, который использовали для создания пользователя температуры воды.
После загрузки пакетов, загружаем код с помощью этой команды.

 Показать / Скрыть текст$ git clone https://github.com/Basicprogrammer10/WaterTemp.git
Переходим в папку и компилируем Typescript в jаvascript с помощью следующей команды

 Показать / Скрыть текст$ git clone https://github.com/Basicprogrammer10/WaterTemp.git
Открываем файл конфигурации и добавляем необходимые значения.

 Показать / Скрыть текст$ cd ~/WaterTemp/api/config && vim config.json
Команда должна открыть файл config.json в Vim. Кликаем «i», затем меняем следующие настройки:
-Измените sensor.ip на IP-адрес сервера. (Localhost, если запускаем веб-сервер на raspberry pi).
-Измените server.port на 80
Нажимаем escape, затем введите ‘:wq’ и нажимаем Enter.
Далее вводим команду

 Показать / Скрыть текст$ cd ~ / WaterTemp / api && npm i —production
Чтобы запустить веб-сервер вводим

 Показать / Скрыть текстcd ~ / WaterTemp / api && sudo node src
Вводим пароль. Если все сделано правильно, то будет надпись «Starting Water Temp Serve v0.4 ‘. Теперь протестируем веб-сайт, введя IP-адрес из Vultr в свой веб-браузер. Должна открыться веб-страница.

Шаг четвертый: подключение к Pi
Загрузите Raspberry Pi Imager. С помощью программы устанавливаем Raspberry Pi Os Lite на SD-карту. В загрузочном разделе создаем новый файл с именем wpa_supplicant.conf и прописываем в него следующий текст.

 Показать / Скрыть текстctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
country=2 letter ISO 3166-1 country code here
update_config=1

network={
ssid="Name of your wireless LAN"
psk="Password for your wireless LAN"
}
Создаем файл с именем ssh без содержимого. Устанавливаем карту обратно в Raspberry, и устройство должно подключиться к сети после загрузки.
Теперь просто нужно подключиться к нему по ssh. Для этого повторяем те же шаги для использования ssh, что и на шаге 2 (до создания учетной записи), но подключаемся к «pi@raspberrypi.local». Пароль по умолчанию — raspberry.

Шаг пятый: настройка Raspberry
Дальше нужно установить программное обеспечение Raspberry Pi. Как и раньше, создаем новую учетную запись пользователя и добавляем ее в группу sudoers. Пароль по умолчанию для пользователя pi — «raspberry». При запуске visudo добавляем строку «watertemp ALL = (ALL: ALL) ALL».

 Показать / Скрыть текст$ sudo adduser watertemp
$ sudo visudo
$ su watertemp
$ cd ~
Дальше выполняем следующую команду, чтобы установить необходимые пакеты.

 Показать / Скрыть текст$ sudo apt install -y git vim
Для установки Cargo (используемого для компиляции / запуска серверного программного обеспечения) используем следующую команду. После запроса выбираем вариант 1.

 Показать / Скрыть текст$ curl https://sh.rustup.rs -sSf | sh
Перезагружаем устройство.

 Показать / Скрыть текст$ exit
Проверяем.

 Показать / Скрыть текст$ cargo -V
cargo 1.53.0 (4369396ce 2021-04-27)
Если получаем информацию о версии, значит все сделали правильно.
Дальше загрузим код для виртуального сервера.

 Показать / Скрыть текст$ git clone https://github.com/Basicprogrammer10/WaterTemp.git
Чтобы начать сборку программного обеспечения, выполняем следующую команду (выполнение может занять около часа).

 Показать / Скрыть текст$ cd ~ / WaterTemp / sensor_Interface && Cargo build —release
Как только это будет сделано, запускаем режим отладки. Режим отладки означает, что он будет просто использовать случайные значения для текущей температуры.

 Показать / Скрыть текст$ cd ~ / WaterTemp / sensor_Interface && ./target/release/sensor_interface —debug
Если все сделано правильно,то отобразятся следующие значения:
[*] Starting Sensor Interface [v0.7] LOGGING DEBUG
[*] Device ID: 28-00000bdf4372
[*] Serving on: 127.0.0.1:3030

Шаг шестой: взаимодействие датчика с веб-сервером
Теперь подключим веб-сервер к Raspberry Pi. Для этого мастер использует порт 3030. Пользователю нужно будет настроить порт в своей сети. Этот процесс отличается для каждого маршрутизатора, поэтому нужно выяснить, как это сделать самостоятельно.
Вводим следующую команду, чтобы открыть файл конфигурации

 Показать / Скрыть текст$ vim ~ / WaterTemp / sensor_Interface / config.ini
Дальше нужно будет изменить некоторые настройки.
-Измените ip на 0.0.0.0
-Измените порт на выбранный вами порт (или 3030)
-Измените log_delay на время между сбором точек данных
Далее получаем IP-адрес с помощью команды:

 Показать / Скрыть текст$ curl https://icanhazip.com
Записываем это значение, оно понадобится позже.
Переходим к серверу:

 Показать / Скрыть текст$ vim ~ / WaterTemp / api / config / config.json
Измените sensor.port на 3030 или свой выбранный порт.
Измените sensor.ip, чтобы он стал общедоступным IP-адресом Raspberry Pi.
Перезагрузите датчик на Raspberry Pi с помощью этой команды:

 Показать / Скрыть текст$ cd ~ / WaterTemp / sensor_Interface && ./target/release/sensor_interface —debug
Дальше нужно убедится, что можно подключиться к Raspberry Pi, выбрав «[Public IP]:[Port]/test» в своем веб-браузере. Если написано: ‘All Systems are a Go!’, значит все сделано правильно.

Шаг седьмой: автозапуск
Теперь нужно настроить автозапуск сервера для Pi. Это легко сделать, отредактировав файл /etc/rc.local.
Откройте файл rc.local с помощью следующей команды:

 Показать / Скрыть текст$ sudo vim /etc/rc.local <br>
Копируем и вставляем в него текст.

 Показать / Скрыть текст#!/bin/sh -e

cd /home/watertemp/WaterTemp/sensor_Interface
./target/release/sensor_interface —debug

exit 0
Если все сделано правильно, то при следующем включении Pi, он должен автоматически запустить сервер датчиков.

Шаг восьмой: добавление датчика
Сначала нужно согласно схеме подключить датчик к Raspberry Pi. Схему подключения датчика можно посмотретьздесь.
Затем запускаем pi и ssh. Вводим следующую команду:

 Показать / Скрыть текст$ sudo raspi-config
Переходим в «Interface options», затем «1-Wire», затем «enable». Выбираем «finish» и перегружаем устройство.
Дальше, чтобы убедиться, что датчик подключен правильно, и чтобы получить идентификатор устройства, используем эту команду:

 Показать / Скрыть текст$ ls / sys / bus / w1 / devices / | grep 28- *
Она должна показать ID, который выглядит примерно так: «28 -00000d0ab505». Копируем этот идентификатор и помещаем его в файл конфигурации интерфейса датчика с помощью команды:

 Показать / Скрыть текст$ vim ~ / WaterTemp / sensor_Interface / config.ini
Теперь снова нужно отредактировать файл /etc/rc.local, чтобы он запускался без режима отладки. Запустите эту команду:

 Показать / Скрыть текст$ sudo vim /etc/rc.local
Убеждаемся, что содержимое файла такое же, как ниже

 Показать / Скрыть текст#!/bin/sh -e

cd /home/watertemp/WaterTemp/sensor_Interface
./target/release/sensor_interface

exit 0
Перегружаем Pi, он должен подключиться к датчику и начать получать данные от него.
Чтобы проверить его в своем веб-браузере, переходим к [Public IP]: [Port] / temp.

Шаг девятый: сборка
Подключаем к устройству зарядное устройство, аккумулятор и солнечную панель. Кабели к солнечной панели и датчику температуры должны проходить через водонепроницаемые разъемы, поэтому убеждаемся что все работает и демонтируем разъемы от солнечной панели и датчика температуры.

В коробке сверлим два отверстия для кабелей датчика температуры и солнечной панели. Устанавливаем кабельные вводы в отверстия и закрепляем их. Через кабельные вводы протягиваем провода и припаиваем на место. Собираем все в коробке .

Шаг десятый: приложение и веб-сайт
Данное устройство работает на iPhone с приложением Scriptable, которое можно загрузить из магазина.

Главная страница
Если работаем с веб-сайтом, то справа верху на главной странице есть три кнопки:
«Птичка» и «Крестик» — если подключены веб-сокеты. Щелчок по нему повторно подключит веб-сокет.
«График» — Показать / скрыть график
° F / ° C / ° K — изменить единицу измерения.
Внизу страницы есть две ссылки:
Код — переход в репозиторий GitHub
Данные — переход на страницу данных.
Страница данных
Можно попасть сюда, кликнув ссылку данных внизу главной страницы. На этой странице отображается много информации о данных (самая низкая/высокая температура воды, средняя температура, количество опросов и т.д.). Она также позволяет загружать его в виде файла CSV или JSON и ссылки на общедоступный REST API.
В разделе «Загрузить данные» отображается приблизительный размер файла CSV в килобайтах.
REST API
Щелкнув ссылку под Access API, попадаем в документацию API. На этой странице представлена вся информация об API и некоторые базовые примеры на Python.

Все готово, теперь у нас есть устройство, с помощью которого можно удаленно отслеживать температуру воды в бассейне, емкости и т.д.

Источник

Похожие статьи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть
Закрыть