Índice
Atualizado – 29 de janeiro de 2024
Se você deseja determinar dados de GPS usando SmartHome, por exemplo, para consultar dados meteorológicos locais, você pode fazer isso com um roteador Teltonika RUTX50 sem hardware ou software adicional usando Homematic/RaspberryMatic.
Noções básicas
Os roteadores Teltonika RUTX.. permitem enviar e receber SMS através do cartão SIM ativado. Da mesma forma, enviar dados de posição em resposta a um SMS com o conteúdo “Senha do GPS„.
Uma solicitação HTTP pode ser usada para visualizar a lista de entrada de SMS e o conteúdo do SMS. As informações atuais de longitude e latitude podem ser lidas no SMS recebido em resposta à solicitação de SMS.
Agora eles podem ser processados via script na automação residencial inteligente usando HomeMatic ou RaspberryMatic. Ao viajar, os dados geográficos em constante mudança podem ser usados para uma consulta meteorológica constantemente atualizada com base na localização atual, por exemplo, através do serviço gratuito de openweathermap.org usar.
Configuração – Roteador Teltonika
Serviços – Utilitários Móveis – Gateway SMS
- Postagem móvel/obter configurações – Habilitado
- Nome de usuário: Nome de login
- Senha: LoginSenha
Serviços – Entrada/Saída – Postar/Obter
- Configurações de postagem/obtenção de E/S – Habilitado
- Nome de usuário: Nome de login
- Senha: LoginSenha
Configuração – RaspberryMatic
Instale o daemon CUx
O daemon CUx é um complemento que fornece dispositivos virtuais dentro do HomeMatic/RaspberryMatic, que podem ser usados, entre outras coisas, como um substituto menos oneroso para chamadas de sistema, aqui, por exemplo, para enviar SMS por meio de uma solicitação HTTP ao roteador.
O AddOn é instalado via Configurações - Software Adicional, lá na área inferior você pode baixar o arquivo AddOn clicando no botão Selecione o arquivo
na pasta de download correspondente no computador e clique no botão Instalar
ser carregado no centro e instalado.
Daemon CUx – criar dispositivo
O daemon CUx é chamado através do sistema clicando no botão Daemon CUX
.
Clique no botão no canto superior direito Dispositivos
abre a interface. No canto superior esquerdo, em Tipo de dispositivo CUxD, está na lista abaixo sistema
selecionado.
Como uma função a função se torna Executivo
selecionado, um nome correspondente no campo Nome, por exemplo GPS, entrou e clicou no botão Criar dispositivo na CCU
, o dispositivo foi salvo.
O dispositivo criado aparece então com seu ID na janela direita, por exemplo, CUX2801001, e pode ser endereçado em scripts usando este ID.
Roteiros
Envie SMS para saída de dados GPS
As informações entre colchetes devem ser substituídas por seus próprios dados:
string url=“'http://[IP do roteador]/cgi-bin/sms_send?username=[Nome de usuário]&senha=[senha]&número=[Número de telefone internacional]&texto=[Senha do GPS]'“;
dom.GetObject(“CUxD.CUX2801001:1.CMD_EXEC”).State(“wget -q -O – “#url);
Observe que a string está entre aspas duplas (“) E simples (‘)!
Este script estará no programa a ser criado GPS_Loc_Update
chamado e o seguinte script, que por sua vez chama o programa GPS_Data, é deslocado em 30 segundos para aguardar o recebimento do SMS com os dados do PÜS:
var programaObj = dom.GetObject(“GPS_Data”);
programObj.ProgramExecute();
programa GPS_Loc_Update
pode ser realizado uma vez por dia ou em intervalos mais curtos, conforme necessário, usando o controle de tempo.
Lista de SMS de saída
Para ler os dados GPS, o roteador é solicitado a enviar a lista de SMS por meio de uma solicitação HTTP.
Este script requer duas variáveis do tipo STRING, que devem ser criadas em Configurações - Variáveis de Sistema abaixo clicando no botão Novo:
- W_Lat (para armazenar a latitude geográfica)
- W_Lon (para armazenar a longitude geográfica)
O conteúdo do script (linhas com início ponto de exclamação são comentários; WriteLine-As instruções são usadas apenas para controle de saída e podem ser excluídas.)):
var url = “http://[IP do roteador]/cgi-bin/sms_list?username=[Nome de usuário]&senha=[senha]“;
! Declaração da variável
var posValueStart;
var posValueEnd;
var pos;
var dados;
var posStart;
var posEnd; string stderr; string stdout;
! Comando WGET para transmitir a string de solicitação HTTP para o roteador
system.Exec(“wget -q -O – ‘“#url#“‚”, &stdout, &stderr);
! Saída do resultado da consulta para verificação
WriteLine(stdout);
! Índice: 1
! Data: Sexta-feira, 26 de janeiro 11:01:02 2024
! Remetente: +49xxxxxxxxxxxxx
! Texto: Horário de correção: 26/01/2024, 11:01:01 Latitude: 54.834682 Longitude: 12.040196 http://maps.google.com/?
! q=54.834682,12.040196&om=1velocidade:0
! Estado: lido
! Leia os dados do GPS
posição = 0;
! Posição de início do valor pesquisado
posStart = 'Latitude: ';
! Posição do final do valor pesquisado
posEnd = ' Longitude: ';
posValueStart = stdout.Find(posStart) + posStart.Length();
posValueEnd = stdout.Find(posEnd)-posValueStart;
! a string que você está procurando é:
string Latitude = stdout.Substr(posValueStart, posValueEnd);
! Conversão da string (string de caracteres) em um número de ponto flutuante
var lat = Latitude.ToFloat();
! Saída da longitude geográfica para controle
WriteLine(“Latitude”);WriteLine(Latitude);
! Salve a longitude geográfica na variável W_Lat
dom.GetObject('W_Lat').State(lat);
posição = 0;
posStart = 'Longitude: ';
posEnd = 'http';
posValueStart = stdout.Find(posStart) + posStart.Length();
posValueEnd = stdout.Find(posEnd)-posValueStart;
string Longitude = stdout.Substr(posValueStart, posValueEnd);
var lon = Longitude.ToFloat();
WriteLine(“Longitude”);WriteLine(lon);
dom.GetObject('W_Lon').State(lon);
O programa não contém nenhuma condição de execução porque é iniciado através do programa ou script acima.
Agora as informações geográficas podem ser usadas para consultar os dados meteorológicos deste local. Para tanto, é criado outro programa que é iniciado periodicamente por meio de um cronômetro, que utiliza um script para inserir os dois valores na string de solicitação HTTP do serviço meteorológico mencionado acima e, assim, leva em consideração a mudança de localização na consulta. .
Programa W_Data_OWM
Compondo o URL
! Carregando as variáveis preenchidas em GPS_Data W_Lat e W_Lon e atribuindo às variáveis url_1 e 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);
! Compondo a URL usando o conteúdo da variável url_1 e url_2
! [xxxxxxxxxxxxxxxxxxxxxxxxx] representa a chave API do serviço meteorológico recebida após o registro
var url = “https://api.openweathermap.org/data/2.5/weather?lat=”#url_1#”&lon=”#url_2#”&appid=[xxxxxxxxxxxxxxxxxxxxxxxxxxx]&units=metric”;
! Saída da string completa para verificação
WriteLine(url);
Isto é seguido pelo mesmo procedimento de declaração das variáveis, o comando WGET, gerando o resultado da consulta para verificação e leitura dos dados meteorológicos desejados (ver. documentação) de acordo com o procedimento indicado para dados GPS.