ЦИФРОВОЙ USB ТЕРМОДАТЧИК
ODTEMP-1
Маленький размер и лёгкое подключение
Удобный интерфейс и богатый функционал
Множество задач опирается на температуру, как на один из важнейших показателей.
Например, по температуре устройства можно определить режим его работы, по температуре помещения - включить вентиляцию или обогрев.

Цифровой USB термометр ODTEMP-1 позволяет определять температуру окружающей среды и передавать значения в удобном для пользователя виде.

Данные можно считывать, как в графическом виде, так и в текстовом, а также передавать по сети, что делает его удобным участником мира IoT.
Характеристики
1. Интерфейс подключения: USB
2. Шаг измерения температуры: 0.5С
3. Габариты: 13х18х58мм
4. Программа под Win7+/Linux/macOS
5. Возможность передавать показания по сети с помощью управляющей программы.

Содержание
Подробная инструкция с картинками
  • 1
    Установка USB термометра ODTEMP-1
  • 2
    Мини-версия программы на технологии PWA (Progressive Web Application) - может работать, как онлайн, так и локально на ПК.
    Проверено на Chromium/Chrome.
  • 3
    Основная программа для работы с устройством
  • 4
    Подключение к облаку (отдельный сервис, не является частью продукта)
  • 5
    Предыдущая версия программы
  • 6
    Для случаев, когда драйвер из ОС не заработал
  • 7
    Примеры работы с устройством без программ с помощью BASH/BAT-скриптов или Python.
  • 8
    Дополнительные материалы: документация на устройства, ссылки на программы.
Установка USB термометра ODTEMP-1
1. Термодатчик устанавливается в USB разъём управляющего ПК.
2. При выборе места установки следует избегать способов подключения, при которых сам датчик нагревается от материнской платы ПК, т.к. это может негативно сказаться на точности показаний.
3. Для работы с устройством доступно кроссплатформенное ПО. Также можно работать с помощью BAT/BASH скриптов.
ODTEMP Mini

Online/Offline программа на базе PWA
PWA (Progressive Web Application) - технология, позволяющая веб-страницам работать похожим на программу образом.
Мы разработали небольшую программу для максимальной легкого начала работы с нашим устройством.
С программой можно работать как с браузера, так и оффлайн - установив ее на пк.
Программа доступна на https://odtemp.unitx.pro
Установка программы:
Вид самостоятельной программы:
Основная программа

ODTEMP Monitor
Особенности программы
  • 1
    Консольная программа
    Программа запускается из консоли, что позволяет её использовать также в ОС без графического интерфейса и удобно ставить в автозагрузку.
  • 2
    Можно запускать как службу в Windows
    Как службу в Windows можно запускать только программы без графического интерфейса.
  • 3
    Встроенный веб-сервер
    Для того, чтобы увидеть интерфейс программы, нужно открыть адрес http://localhost:8000 в web-браузере.
    С другого компьютера этой локальной сети можно открыть по адресу http://<ip_компьютера>:8000
  • 4
    Встроенный монитор загрузки
    Встроенный монитор для контроля загруженности системы через web-интерфейс.
  • 5
    Встроенный облачный клиент
    Встроенный клиент для работы с облачной системой connect.unitx.pro
Перед работой в Windows7 понадобится установить драйвер CDC.
В Windows 8, Windows 10, Linux, macOS установка драйвера не требуется.
Работа в ОС ниже Windows7 не поддерживается.

С большой вероятностью в современных *nix системах для работы с последовательным портом понадобится повышение прав пользователя или настройка прав доступа к устройству.
Установка и работа
Скачайте подходящую версию под свою ОС
2
Узнайте номер COM-порта (для win-систем) или имя устройства (для *nix) своего сторожевого таймера. Для старых Win-систем может понадобится установка драйвера.
3
В консоли перейдите в папку с программой и запустите её в формате odtemp... /dev/ttyACM0
Где odtemp... - название вашего исполняемого файла (в зависимости от платформы),
/dev/ttyACM0 - название файла устройства или, например, COM3 для Windows.
В *nix системах убедитесь, что у пользователя, запускающего программу, достаточно прав для открытия файла устройства.
На этом всё: в консоль раз в секунду начнет выводиться значение температуры. Если больше ничего не требуется, остальное можно пропустить.
4
Если вам нужен интерфейс для настроек или контроля, то добавьте дополнительно параметр -w
Возможно, в вашей ОС также понадобятся дополнительные права/разрешения для открытия вебсервера.
Откройте web-браузер с адресом http://localhost:8000
Если всё прошло нормально, вы должны увидеть такую страницу:
5
Перед вами страница управления. На ней можно увидеть версию устройства, его состояние. Время работы программы. Температуру термодатчика.
6
Ссылка "Монитор" позволяет открыть страницу на которой можно получить некоторые сведения о загруженности системы (бывает полезно при удаленном контроле).
7
Раздел "Connect" позволяет настроить клиента нашего облачного сервиса Connect.UnitX
Для регистрации не нужно никаких персональных данных. Вы получаете токен, который используется как логин/пароль/идентификатор пользователя.
Сервис не является частью продукта.
8
Чтобы сервис передавал данные в облако, программа должна быть запущена с дополнительным параметром -c. При этом web-интерфейс может быть как включен, так и выключен.
9
Настройки (для платных тарифов):
Имя устройства - имя, как устройство будет отображаться в сервисе.
Оповещения - включить уведомление в Telegram или приложении, при переходе через значение "Значение".
Значение - градусы цельсия.
Период - через какие промежутки времени отправлять в облако данные, в минутах.

В бесплатном тарифе облака можно смотреть только текущее значение.
В платном тарифе: хранение данных и оповещения.

10
При нажатии на ссылку Аккаунт можно перейти на экран своего аккаунта в сервисе.
11
Уведомления в Telegram (для платных тарифов)
1. Подключитесь к боту @connect.unitx
2. Включите бота командой /start
3. Привяжите к своему аккаунту командой
/connect UID, где UID - ваш токен облачного сервиса
4. Командой /now можно смотреть текущее состояние активных (за текущие сутки) датчиков.
5. Автоматические уведомления, согласно настройкам устройства, также будут приходить боту.
IOT Sensor Monitor (скачать)
Предыдущая версия программы для odtemp1
Главное окно программы
Получение данных от программы
по сети в JSON
В программы можно включить передачу данных о термодатчиках в JSON формате.
Например, по адресу http://<ip>:34242/json в браузере можно получить данные следующего вида
для ODTEMP-1Ux:

{
    "sensors": [
        {
            "id": "/DS18B20/20323939554B43120010800A",
            "max": 125,
            "min": -55,
            "serial": "20323939554B43120010800A",
            "state": 0,
            "type": "DS18B20",
            "unit": "℃",
            "value": 25.5
        }
    ],
    "timestamp": 1528660156476
}
Для ODTEMP-1Wx:

{
    "sensors": [
        {
            "alias": "TEST-2080-H",
            "id": "/HDC2080/20313337584D430100290008",
            "max": 125,
            "min": -40,
            "serial": "20313337584D430100290008",
            "state": 0,
            "type": "HDC2080",
            "unit": "℃",
            "value": 28.13
        },
        {
            "alias": "TEST-2080-H",
            "id": "/HDC2080_RH/20313337584D430100290008",
            "max": 100,
            "min": 0,
            "serial": "20313337584D430100290008",
            "state": 2,
            "type": "HDC2080_RH",
            "unit": "%",
            "value": 26.86
        }
    ],
    "timestamp": 1539980752561,
    "version": "1.0.1"
}
CDC драйвер
В Windows 8, Windows 10, Linux, macOS установка CDC драйвера не требуется.
Перед работой с уcтройством в Windows7 понадобится установить драйвер CDC.

Если вы всё же хотите запустить устройство на другом оборудовании - напишите нам и мы расскажем, возможно ли это сделать!

Установка драйвера CDC для Windows7
Данная мини-инструкция показывает основные моменты установки драйвера виртуального COM-порта под Windows7. Версии Windows ниже 7 драйвером не поддерживаются.
Драйвер можно скачать по ссылке.
Скрипты и примеры
Для тех, кто хочет использовать текстовый протокол для интеграции со своим программным обеспечением
Получить температуру
Однократно получить значение темературы

Запрос:
~G

Ответ:
 ~G25.0
где 25.0 - текущая температуры термодатчика
Задать передачу температуры по таймеру
Термодатчик будет передавать значение температуры раз в 1000 мс (раз 1 секунду).
Настройки режима работы сохраняются во внутренней памяти.

Запрос:
~W1000

Ответ:
~F1000
~G24.0
~G24.0
...
Передача параметров с помощью echo
Пример загрузки параметров с помощью echo в Linux

echo "~W1000" > /dev/ttyACM0
Передача данных о температуре по сети в UDP формате (Linux)
В режиме автоматической передачи значений термодатчиком

cat USBPORT | sed 's/~G//' | socat - udp-sendto:127.0.0.1:5000
Однострочный скрипт для выполнения каких-либо действий при превышении температуры (Linux)
В режиме автоматической передачи значений термодатчиком. Сравнивается с 30 градусами.

cat /dev/ttyACM1 | sed 's/~G//' | { read temp; if [[ -z "$temp" ]]; then echo 'No data'; elif [[ $(echo "$temp>30" | bc -l) -ne 0 ]]; then echo 'Overtemp'; else echo 'Normal'; fi; }
Однострочный скрипт для выполнения каких-либо действий при превышении температуры (Windows Powershell)
В режиме автоматической передачи значений термодатчиком. Сравнивается с 30 градусами.

$port = new-object System.IO.Ports.SerialPort COM8, 9600, None, 8, One; $port.Open(); $data = $port.ReadLine(); $port.Close(); if (-not $data) { "no data" } else { $temp = $data -replace '~G', ''; if ([float]$temp -gt 30) { "Overtemp" } else { "Normal" } }
Остановить автоматическую передачу температуры
Термодатчик перестанет передавать значение температуры раз в ХХ мс и будет передавать только по запросу ~G.
Настройки режима работы сохраняются во внутренней памяти.

Запрос:
~W0

Ответ:
~F0

Получение температуры
с помощью Python
Пример программы для получения температуры от датчика

#!/usr/bin/python3
'''
Example:
python3 ./odtemp-test.py
'''
from time import sleep
import serial


def run():
    port = '/dev/ttyACM0'
    ser = serial.Serial(port)
    while True:
        ser.write(b'~G')
        ser_data = ser.readline()
        if ser_data:
            data = ser_data.decode("utf-8")
            print('Read from serial (repl to ~G): {0}'.format(data.strip()))
            if data.startswith('~G'):
                print('Temperature is {0}'.format(float(data[2:])))
        else:
            print('sensor error')
        sleep(1)


if __name__ == "__main__":
    run()

Python-программа для хранения показаний в лог
Пример небольшой, но уже полноценной программы программы для сохранения данных в лог.
Для работы нужен python3 и библиотека pyserial.

Запускается с командой строки:
python3 optemp1.py -p /dev/ttyACM1 -f odtemp2.log -t 300

from time import sleep
import serial
import logging
import argparse
import sys

parser = argparse.ArgumentParser(description="ODTEMP-1 Monitor")
parser.add_argument("-p", "--port", type=str, required=True, help="Имя последовательного порта, например COM3 или /dev/ttyACM0")
parser.add_argument("-t", "--timeout", type=float, default=30, help="Таймаут между записями в секундах")
parser.add_argument("-f", "--file", type=str, required=True, help="Путь к файлу для записи лога")
args = parser.parse_args()

logging.basicConfig(format='%(asctime)s %(message)s', datefmt='%d-%m-%y %H:%M:%S', filename=args.file, encoding='utf-8', level=logging.DEBUG)
logging.getLogger().addHandler(logging.StreamHandler(sys.stdout))

def run():
    ser = serial.Serial(args.port)
    logging.info('ODTEMP-1 Monitor')
    while True:
        ser.write(b'~G')
        ser_data = ser.readline()
        if ser_data:
            data = ser_data.decode("utf-8")
            if data.startswith('~G'):
                logging.info('Температура: {0}'.format(float(data[2:])))
        else:
            logging.warning('sensor error')
        sleep(args.timeout)

if __name__ == "__main__":
    run()
Дополнительные ресуры
1. Техподдержка,
2. Инструкция на устройство в pdf.