Перейти к содержимому

SmartHome - определение данных GPS

Время чтения 4 минут

Обновлено - Март 10, 2025

Если вы хотите определять GPS-данные с помощью SmartHome, например, для запроса местных погодных данных, это можно реализовать с помощью маршрутизатора Teltonika RUTX50 без дополнительного оборудования или программного обеспечения с Homematic / RaspberryMatic.

Основы

Роутеры RUTX... компании Teltonika позволяют отправлять и получать SMS через активированную SIM-карту. Также возможна отправка данных о местоположении в ответ на SMS с содержанием "Пароль gps„.

Список входящих SMS и содержание SMS можно просмотреть с помощью HTTP-запроса. Данные о текущей долготе и широте можно считать из SMS, полученных в ответ на SMS-запрос.

Теперь их можно обрабатывать с помощью сценария в системе автоматизации SmarttHome, используя HomeMatic или RaspberryMatic. Во время путешествий постоянно меняющиеся геоданные можно использовать для постоянно обновляемого запроса погоды на основе текущего местоположения, например, с помощью бесплатного сервиса от openweathermap.org использовать.

Настройки SMS провайдера

В зависимости от провайдера, SIM-карту, используемую в маршрутизаторе, может потребоваться активировать для отправки SMS. Обычно это делается в соответствующих настройках после входа на веб-сайт провайдера.

В то время как так называемые мультикарточные предложения могут использоваться для звонков и вызовов на всех устройствах, оснащенных такой SIM-картой, SMS поддерживаются только на ОДНОЙ из SIM-карт!

Настройка - Маршрутизатор Teltonika

Услуги - Мобильные утилиты - SMS-шлюз

  • Мобильная почта/получение настроек - Включено
  • Имя пользователя: Имя пользователя
  • Пароль: ЛогинПароль

Услуги - Ввод/вывод - Пост/получение

  • I/O Post/Get Settings - Включено
  • Имя пользователя: Имя пользователя
  • Пароль: ЛогинПароль

Настройка - RaspberryMatic

Установите демон CUx

Демон CUx - это дополнение, предоставляющее виртуальные устройства в HomeMatic / RaspberryMatic, которые можно использовать в качестве менее обременительной замены системных вызовов, например, для отправки SMS-сообщений на маршрутизатор через HTTP-запрос.

AddOn устанавливается через Настройки - Дополнительное программное обеспечение, где вы можете загрузить файл AddOn, нажав на кнопку Выберите файл в соответствующую папку загрузки на компьютере и нажмите на кнопку Установите можно загрузить в центр и установить.

Демон CUx - создание устройства

Демон CUx вызывается через System нажатием кнопки Демон CUx.

Нажмите на кнопку в правом верхнем углу Устройства открывает интерфейс. В левом верхнем углу, в разделе Тип устройства CUxD, выберите из списка следующее Система выбранный.

Функция Exec выбран, в поле Имя вводится соответствующее обозначение, например. GPSа затем нажмите на кнопку Создайте устройство на CCUустройство сохраняется.

Созданное устройство появится в правом окне с идентификатором, например CUX2801001, и к нему можно будет обращаться в сценариях, используя этот идентификатор.

Скрипты

Отправка SMS для вывода данных GPS

Информация в квадратных скобках должна быть заменена вашими собственными данными:

string url="'http://[IP-адрес маршрутизатора]/cgi-bin/sms_send?username=[UserName]&password=[пароль]&number=[Международный номер телефона]&text=[Пароль gps]'“;
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O - "#url);

Обратите внимание, что строка заключена в двойные (") И одинарные (') перевернутые запятые!

Этот сценарий используется в создаваемой программе GPS_Loc_Update а следующий скрипт, который, в свою очередь, вызывает программу GPS_Data, задерживается на 30 секунд, чтобы дождаться получения SMS с данными PÜS:

var programObj = dom.GetObject("GPS_Data");
programObj.ProgramExecute();

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

Вывод списка SMS

Чтобы считать GPS-данные, маршрутизатор запрашивает список SMS через HTTP-запрос.

Для этого сценария требуются две переменные типа DRAWING CHAIN, которые необходимо создать в разделе Настройки - Системные переменные внизу, нажав кнопку Создать:

  • W_Lat (для сохранения геогр. широты)
  • W_Lon (для сохранения географической долготы)

Содержание сценария (строки с ведущими Восклицательный знак это комментарии; WriteLine-Инструкции используются только для управления выходом и могут быть удалены):

var url = "http://[IP-адрес маршрутизатора]/cgi-bin/sms_list?username=[UserName]&password=[пароль]“;

! Объявление переменных
var posValueStart;
var posValueEnd;
var pos;
var data;
var posStart;
var posEnd; string stderr; string stdout;

! Команда WGET для передачи строки HTTP-запроса на маршрутизатор
system.Exec("wget -q -O - '"#url#"'", &stdout, &stderr);

! Вывод результатов запроса для проверки
WriteLine(stdout);

! Индекс: 1
! Дата: Fri Jan 26 11:01:02 2024
! Отправитель: +49xxxxxxxxxxx
! Текст: Время исправления: 2024-01-26, 11:01:01 Широта: 54.834682 Долгота: 12.040196 http://maps.google.com/?
! q=54.834682,12.040196&om=1speed:0
! Статус: прочитано

! Считывание данных GPS
pos = 0;
! Позиция начала искомого значения
posStart = 'Широта: ';
! Положение конца искомого значения
posEnd = ' Долгота: ';
posValueStart = stdout.Find(posStart) + posStart.Length();
posValueEnd = stdout.Find(posEnd)-posValueStart;
Это та строка, которую вы ищете:
string Latitude = stdout.Substr(posValueStart, posValueEnd);
! Преобразование строки (символьной строки) в число с плавающей точкой
var lat = Latitude.ToFloat();
! Вывод географической долготы для проверки
WriteLine("Широта");WriteLine(Широта);

! Сохранение географической долготы в переменной W_Lat
dom.GetObject('W_Lat').State(lat);

pos = 0;
posStart = 'Долгота: ';
posEnd = ' http';
posValueStart = stdout.Find(posStart) + posStart.Length();
posValueEnd = stdout.Find(posEnd)-posValueStart;
string Longitude = stdout.Substr(posValueStart, posValueEnd);
var lon = Longitude.ToFloat();
WriteLine("Долгота");WriteLine(lon);

dom.GetObject('W_Lon').State(lon);

Программа не содержит условия для выполнения, поскольку она инициируется с помощью вышеуказанной программы или скрипта.

Теперь географическая информация может быть использована для запроса данных о погоде для этого места. Для этого создается другая программа, которая периодически запускается через контроль времени и вставляет эти два значения в строку HTTP-запроса вышеупомянутого погодного сервиса с помощью скрипта, таким образом, учитывая изменение местоположения в запросе.

Программа W_Data_OWM

Составление URL-адреса

! Загрузка переменных, заполненных в GPS_Data W_Lat и W_Lon и присвоить переменным url_1 и url_2

var url_1 = dom.GetObject("W_Lat").Value();
WriteLine("Lat=");WriteLine(url_1);
var url_2 = dom.GetObject("W_Lon").Value();
WriteLine("Lon=");WriteLine(url_2);

! Составьте URL, используя содержимое переменных из url_1 и url_2
! [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx] представляет собой API-ключ погодного сервиса, полученный после регистрации
var url = "https://api.openweathermap.org/data/2.5/weather?lat="#url_1#"&lon="#url_2#"&appid=[xxxxxxxxxxxxxxxxxxxxxxxxxxxxx]&units=metric";
! Вывод полной строки для проверки
WriteLine(url);

Далее следует та же процедура объявления переменных, команда WGET, вывод результата запроса для проверки и считывание нужных погодных данных (см. Документация) в соответствии с процедурой, описанной для данных GPS.

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

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