GPRS-модем Neoway M590 "на колесах". Управление дополнительным отопителем в автомобиле.


Дешевые GSM/GPRS модули подробно изучены энтузиастами, в том числе на mySKU.me. Создано немало сигнализаций, систем телеметрии и даже интеллектуальный почтовый ящик. Но во всех обзорах, которые я видел, использовался канальный режим передачи данных — либо телефонный звонок либо SMS. Я расскажу о своем опыте пакетной передачи данных, причем через протокол UDP в условиях жестких ограничений на трафик.


Все началось, когда товарищ установил себе в машину недорого купленный по случаю догреватель Webasto Thermo Top C, попутно доукомплектовав его циркуляционным насосом.

Протокол обмена идентифицировать не удалось, равно как и модель автомобиля, на котором он был изначально установлен. Но было экспериментально установлено, что при замыкании одного из пинов на +12 вольт питания отопитель оживал и начинал работать.



Сразу возник вопрос — как им управлять? Первой идеей, лежащей на поверхности, было приспособить 433 МГц радиобрелок, наподобие такого:



Что и было сделано. Практически сразу же обнаружились недостатки данного варианта:

1. Отсутствие шифрование радиообмена и отсутствие уникального идентификатора брелка. Конечно, вряд-ли кто-то специально будет слушать эфир, чтоб склонировать запрос на включение отопителя. Но в условиях города если кто-то рядом точно таким брелком будет включать дома торшер, включится и ваш отопитель, что однажды и произошло.
2. Циркуляционный насос питается от того же реле, что и запуск отопителя. Останавливается насос соответственно тоже в момент команды на остановку отопителя, а хотелось бы, чтоб он поработал еще несколько минут.
3. Недостаток, не связанный напрямую со способом управления отопителем, но требующий решения: отопитель высаживает основной аккумулятор. Увидеть, что двигатель теплый, но стартер уже не способен его провернуть — удовольствие ниже среднего.
4. И наконец, полное отсутствие какой-либо обратной связи. Если автомобиль запаркован в прямой видимости из окна квартиры, факт прохождения команды на включение еще можно отследить по появившемуся пару из выхлопной трубы отопителя. Но часто автомобиль остается на стоянке вне зоны видимости, и нет никакой уверенности, что мы придем именно к теплому автомобилю. Команда на включение может утонуть в городских помехах. Команда может дойти, но отопитель не включится из-за проблем в топливной системе или из-за низкого напряжения аккумулятора.

По итогам первого сезона эксплуатации началось обдумывание вариантов включения отопителя с возможностью обратной связи. Проводились научно-исследовательские и опытно-конструкторские работы с радиомодулями SX1278, результаты были многообещающие, но с моими технологическими возможностями габариты абонентского терминала приемлемыми никак не получались. Таскать на ключах набалдашник размером с Нокию 3310 исключительно ради управления вебастой? Было решено, что оно того не стоит.

Следующей идеей было использование мобильной сети для управления по интернету. Именно она и была реализована. Терминал для управления получался еще большего размера, но он все равно у каждого с собой — это смартфон. В минусы варианта можно записать наличие некоторой пусть небольшой, но абонплаты, в плюсы — расстояние, ограниченное только покрытием мобильной сети и возможность управлять из нескольких мест с нескольких устройств.

Было сформулировано техническое задание:
— отопитель и контроллер будут питаться от отдельной аккумуляторной батареи, благо у VW T4 для этого есть место под водительским сиденьем;
— контроллер измеряет три параметра в автомобиле: температуру теплоносителя и напряжение двух аккумуляторов;
— контроллер устанавливает с сервером соединение по UDP и раз в 10 секунд передает на сервер три измеренных параметра;
— сервер возвращает подтверждение приема, в нем же передается состояние реле отопителя;
— поскольку напряжения обеих батарей известны, бесплатным бонусом можно организовать развязку аккумуляторов: как только напряжение на основной батарее падает ниже установленного предела, реле физически разъединяет батареи;
— для управления основными исполнительными механизмами требуются 3 реле: включение отопителя, включение циркуляционного насоса охлаждающей жидкости, включение аккумуляторов в параллель;
— четвертую свободную релюшку на плате задействуем под физическое выключение-включение питания модема, предполагая, что в плане перезагрузки это надежнее, чем дергание специального пина;
— понадобится интернет-сервер с минимум двумя «белыми» портами: для связи с контроллером и для веб-интерфейса пользователя.

Список компонентов:
1. Arduino Pro Mini — 1 шт.


2. Плата реле 4-канальная — 1 шт.


3. Датчик DS18B20 — 1 шт.


4. Модем M590 — 1 шт.
5. Корпус, провода, изолента, припой, клеммы, USB-UART для программирования Arduino.

Поскольку были нарекания, что схемы, нарисованные во Fritzing, представляют из себя нагромождение проводов и сложны для восприятия, я разделил схему на две части — сигнальную и питающую. Схему подключения к реле исполнительных механизмов приводить не буду, так как реализация зависит от типа применяемых устройств. Достаточно знать, что реле №1 управляет отопителем, реле №2 — циркуляционным насосом, реле №3 — зарядкой дополнительного аккумулятора, реле №4 — перегружает модем.

Сигнальная часть:



Резистивные делители для измерения напряжений аккумуляторов подбираются из расчета, чтобы максимально возможное напряжение аккумулятора (ну скажем, 15 вольт) после деления не превышало 1.1 вольта — опорное напряжение внутреннего источника микроконтроллера. Я использовал 1.1 кОм в нижнем плече и 15 кОм в верхнем. Коэффициент для каждой конкретной пары резисторов нужно вписать в скетч перед его загрузкой (для правильной работы алгоритма развязки аккумуляторов) и в php-скрипт интерфейса пользователя (для правильного отображения напряжения батарей).

Размещать делители нужно по возможности поближе к ардуине, иначе длинные провода собирают помехи, и показания, и без того не сильно точные, начинают «прыгать».

Питание:



Контроллер собран в корпусе от коммутатора D-Link и помещен под водительское сиденье рядом с дополнительным аккумулятором.
Температурный датчик протянут в моторный отсек и прикручен синей изолентой к патрубку возврата охлаждающей жидкости к отопителю.

Фото, сделанное в процессе монтажа:



Скетч для Arduino
#include <SoftwareSerial.h>
#include <Regexp.h>
#include <OneWire.h>

SoftwareSerial mySerial(10,11);
OneWire  ds(2);

String s;
int mode = 0;
unsigned long millis5;
unsigned long conntimeout;
unsigned long pumptimeout;

int u0, u0prev, u1;

byte data[2];

byte chargerelay = 0;
byte pumprelay = 0;
byte heaterrelay = 0;

void setup()
{
  mySerial.begin(2400);
  Serial.begin (115200);

  pinMode(6, OUTPUT);     
  digitalWrite(6, HIGH);
  pinMode(7, OUTPUT);     
  digitalWrite(7, HIGH);
  pinMode(8, OUTPUT);     
  digitalWrite(8, HIGH);
  pinMode(9, OUTPUT);     
  digitalWrite(9, HIGH);
  
  pinMode(13, OUTPUT);     
  digitalWrite(13, LOW);

  analogReference(INTERNAL);
  u0 = analogRead(0);
  u1 = analogRead(1);
  
  ds.reset();
  ds.write(0xCC);
  ds.write(0x44);

  millis5 = millis();
  conntimeout = millis();
}

void loop() {
  char c;
  char buf [100] = "";
  MatchState ms;

  if (mySerial.available() > 0) {
    c = mySerial.read();
    Serial.print©;
    s += c;
    if ((c == '\n') || (c == '>')) {
      s.toCharArray(buf, s.length());
      ms.Target(buf);
      if ( (mode == 6) && (ms.Match("UDPRECV:1,1,(%d)") > 0)){
        if (ms.Match("UDPRECV:1,1,0") > 0) {
          if (heaterrelay) pumptimeout = millis();
          heaterrelay = 0;
          digitalWrite(9, HIGH);
        }
        if (ms.Match("UDPRECV:1,1,1") > 0) {
          heaterrelay = 1;
          digitalWrite(9, LOW);
          pumprelay = 1;
          digitalWrite(8, LOW);
        }
        conntimeout = millis();
      }
      if ( (mode == 7) && (ms.Match("UDPSEND") > 0)){
        mode = 6;
      }
      if ( (mode == 6) && (c == '>')) {
        mode = 7;
        millis5 = millis();
      }
      if ( (mode == 5) && (ms.Match("UDPSETUP:1,OK") > 0)) {
        conntimeout = millis();
        mode = 6;
        millis5 = millis();
      }
      if ( (mode == 4) && (ms.Match("OK") > 0)) {
        conntimeout = millis();
        mode = 5;
        millis5 = millis();
      }
      if ( (mode == 3) && (ms.Match("OK") > 0)) {
        conntimeout = millis();
        mode = 4;
        millis5 = millis();
      }
      if ( (mode == 2) && (ms.Match("OK") > 0)) {
        conntimeout = millis();
        mode = 3;
        millis5 = millis();
      }
      if ( (mode == 1) && (ms.Match("OK") > 0)) {
        conntimeout = millis();
        mode = 2;
        millis5 = millis();
      }
      if ( (mode == 0) && ms.Match("PBREADY") > 0) {
        conntimeout = millis();
        mode = 1;
        millis5 = millis();
      }
      s = "";

    }
  }

  if (millis()-millis5 > 5000) {
    u0prev = u0;
    u0 = analogRead(0);
    u1 = analogRead(1);

//Коэффициент резистивного делителя вычисляется исходя из имеющихся номиналов резисторов
    if ((u0prev*0.0157 > 13.2) && (u0*0.0157 > 13.2)) {
      chargerelay = 1;
      digitalWrite(7, LOW);
    }
    if ((u0prev*0.0157 < 12.8) && (u0*0.0157 < 12.8)) {
      chargerelay = 0;
      digitalWrite(7, HIGH);
    }

    if (mode == 7) {
      ds.reset();
      ds.write(0xCC); 
      ds.write(0xBE);
      data[0] = ds.read();
      data[1] = ds.read();
      ds.reset();
      ds.write(0xCC);
      ds.write(0x44);
      char buf[10]="________#";
      buf[0] = (data[0] & 0b00111111) + 0x30;
      buf[1] = (((data[0] & 0b11000000) >> 6) | ((data[1] & 0b00001111) << 2)) + 0x30;
      buf[2] = ((data[1] & 0b11110000) >> 4) + 0x30;
      
      buf[3] = (char)(u0 & 0b0000000000111111) + 0x30;
      buf[4] = (char)(((u0 & 0b0000001111000000) >> 6) | ((u1 & 0b0000000000000011) << 4)) + 0x30;
      buf[5] = (char)((u1 & 0b0000000011111100) >> 2) + 0x30;
      buf[6] = (char)((u1 & 0b0000001100000000) >> 8) + 0x30;
      
      buf[7] = (char)(heaterrelay + pumprelay *2 + chargerelay * 4 + 0x30);
      mySerial.print(buf);
    }
    if (mode == 6) {
      mySerial.print("AT+UDPSEND=1,8\r");
      Serial.println("Sent AT+UDPSEND=1,8");
    }
    if (mode == 5) {
      mySerial.print("AT+UDPSETUP=1,12.34.56.78,1234\r");
      Serial.println("Sent AT+UDPSETUP=1,12.34.56.78,1234");
    }
    if (mode == 4) {
      mySerial.print("AT+XIIC=1\r");
      Serial.println("Sent AT+XIIC=1");
    }
    if (mode == 3) {
      mySerial.print("AT+CGDCONT=1,\"IP\",\"my.operator.apn\"\r");
      Serial.println("Sent AT+CGDCONT=1,\"IP\",\"my.operator.apn\"");
    }
    if (mode == 2) {
      mySerial.print("AT+XISP=0\r");
      Serial.println("Sent AT+XISP=0");
    }
    if (mode == 1) {
      mySerial.print("ATE0\r");
      Serial.println("Sent ATE0");
    }

//Помпа работает еще 5 минут после отключения подогревателя
    if (pumprelay && !heaterrelay) {
      if (millis() - pumptimeout > 300000) {
        pumprelay = 0;
        digitalWrite(8, HIGH);
      }
    }
    
    
    millis5 = millis();
  }


  if (millis() - conntimeout > 120000) {
// 120 секунд не было принято ни одного байта. Дергаем питание модема и инициализируемся заново.
    digitalWrite(6, LOW);
    delay(1000);
    digitalWrite(6, HIGH);
    mode = 0;
    conntimeout = millis();
  }

}



Скорость обмена модема установлена на 2400 bps, используется программный UART (библиотека SoftSerial).

Скетч инициализирует модем, устанавливает соединение с сервером, затем каждые 10 секунд считывает температуру охлаждающей жидкости и напряжения аккумуляторов, после чего передает их на сервер.
Получив от сервера единственный символ ответа, анализирует его. Если этот символ — единица, то включает отопитель и циркуляционный насос. Если этот символ — ноль, то выключает отопитель, через 5 минут выключает циркуляционный насос.

Если в течение 2 минут не получено ни одного ответа от сервера, считает, что модем повис и дергает его питание.

Если на протяжении 5 секунд напряжение основной батареи более 13,2 вольта, замыкает вместе основную и дополнительную батарею. Если на протяжении 5 секунд напряжение объединенной батареи менее 12,8 вольта, разъединяет батареи.

Исходный код UDP-сервера
#include <arpa/inet.h>
#include <netinet/in.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#include <time.h>
#include <string.h>

#define BUFLEN 512
#define PORT 1234


void diep(char *s)
{
  perror(s);
  exit(1);
}

int main(void)
{
  struct sockaddr_in si_me, si_other;
  int s, i, slen=sizeof(si_other);
  char buf[BUFLEN];
  char fbuf[BUFLEN]="            \n";

  FILE *flo, *fts, *fte, *fu0, *fu1, *fbi, *fco;

  if ((s=socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP))==-1)
    diep("socket");

  memset((char *) &si_me, 0, sizeof(si_me));
  si_me.sin_family = AF_INET;
  si_me.sin_port = htons(PORT);
  si_me.sin_addr.s_addr = htonl(INADDR_ANY);
  if (bind(s, &si_me, sizeof(si_me))==-1)
      diep("bind");

  i = 1;
  for (;;) {
    if (recvfrom(s, buf, BUFLEN, 0, &si_other, &slen)==-1) diep("recvfrom()");
    signed short temp = (buf[0] - 0x30) | ((buf[1] - 0x30) << 6) | ((buf[2] - 0x30) << 12);
    int u0 = ((buf[3] - 0x30) | (((buf[4] - 0x30) & 0b00001111) << 6));
    int u1 = ((((buf[4] - 0x30) & 0b00110000) >> 4) | ((buf[5] - 0x30) << 2) | ((buf[6] - 0x30) << 8 ));
    int bits = buf[7] - 0x30;
    time_t t = time(NULL);
    struct tm *ptm = gmtime(&t);
    sprintf(fbuf, "%04d%02d%02d%02d%02d%02d,%d,%d,%d,%d,%s:%d\n", 
           ptm->tm_year+1900, ptm->tm_mon+1, ptm->tm_mday, ptm->tm_hour, ptm->tm_min, ptm->tm_sec,
           temp, u0, u1, bits,
           inet_ntoa(si_other.sin_addr), ntohs(si_other.sin_port));
    flo = fopen("/var/log/udpser.log", "a");
    fwrite(fbuf, 1, strlen(fbuf), flo);
    fclose(flo);

    sprintf(fbuf, "%d", t);
    fts = fopen("/etc/udpser/ts.txt", "w");
    fwrite(fbuf, 1, strlen(fbuf), fts);
    fclose(fts);

    fte = fopen("/etc/udpser/te.txt", "w");
    sprintf(fbuf, "%d", temp);
    fwrite(fbuf, 1, strlen(fbuf), fte);
    fclose(fte);

    fu0 = fopen("/etc/udpser/u0.txt", "w");
    sprintf(fbuf, "%d", u0);
    fwrite(fbuf, 1, strlen(fbuf), fu0);
    fclose(fu0);

    fu1 = fopen("/etc/udpser/u1.txt", "w");
    sprintf(fbuf, "%d", u1);
    fwrite(fbuf, 1, strlen(fbuf), fbi);
    fclose(fu1);

    fbi = fopen("/etc/udpser/bi.txt", "w");
    sprintf(fbuf, "%d", bits);
    fwrite(fbuf, 1, 1, fbi);
    fclose(fbi);

    fco = fopen("/etc/udpser/co.txt", "r");
    fread(buf, 1, 1, fco);
    fclose(fco);
    if (sendto(s, buf, 1, 0, &si_other, slen)==-1) diep("sendto()");
    i = i + 1;
  }

  close(s);
  return 0;


Серверная часть для обработки UDP-подключения написана на языке C и работает на VPS под управлением Debian. Обязанность сервера — получив пакет, выделить из него фрагменты, соответствующие переданной температуре, напряжениям и состояниям реле, и разложить их по соответствующим файлам. Затем взять из файла состояние отопителя и передать его контроллеру в виде одного символа.

Исходный код интерфейса пользователя
<?php
    if ($_POST["q"] != "") {
      file_put_contents('/etc/udpser/co.txt', $_POST["q"]);
      echo "<head><meta http-equiv=\"Refresh\" content=\"2\" /></head>";
      echo "<body>Запрос обработан</body>";
      exit(0);
    };


    $lasttimestamp = file_get_contents("/etc/udpser/ts.txt");
    echo "<head><meta http-equiv=\"Refresh\" content=\"10\" /></head>";
    echo "<body>";
    echo "<table border=0><tr align=\"left\">";
    echo "<th>Последнее обновление: </th><th>";
    echo time()-intval($lasttimestamp)." сек. назад</th></tr>";
    echo "<tr align=\"left\"><th>Температура: </th><th>".number_format((float)file_get_contents("/etc/udpser/te.txt")*0.0625, 4, '.', '')." °С</th></tr>";
    echo "<tr align=\"left\"><th>Основной аккумулятор:   </th><th>";
    echo number_format((float)intval(file_get_contents("/etc/udpser/u0.txt"))*0.01552, 2, '.', '')." вольт</th></tr>";
    echo "<tr align=\"left\"><th>Доп. аккумулятор: </th><th>";
    echo number_format((float)intval(file_get_contents("/etc/udpser/u1.txt"))*0.01560, 2, '.', '')." вольт</th></tr>";
    $bits = intval(file_get_contents("/etc/udpser/bi.txt"));
    echo "<tr align=\"left\"><th>Нагреватель: </th>";
    if ($bits & 1) {
      echo "<th>ВКЛ</th>";
    } else {
      echo "<th>ВЫКЛ</th>";
    }
    echo "</tr>";
    echo "<tr align=\"left\"><th>Насос: ";
    if ($bits & 2) {
      echo "<th>ВКЛ</th>";
    } else {
      echo "<th>ВЫКЛ</th>";
    }
    echo "</tr>";
    echo "<tr align=\"left\"><th>Зарядка: ";
    if ($bits & 4) {
      echo "<th>ВКЛ</th>";
    } else {
      echo "<th>ВЫКЛ</form></th>";
    }
    echo "</tr></table>
";
    $command = intval(file_get_contents("/etc/udpser/co.txt"));
    if (!$command) {
      echo "<form method=post><input type=hidden name=\"q\" value=1><input type=submit value=\"Запросить включение нагревателя\"></form>";
    } else {
      echo "<form method=post><input type=hidden name=\"q\" value=0><input type=submit value=\"Запросить выключение нагревателя\"></form>";
    }
    echo "</body>";


//    echo "<input type=\"button\" value=\"Refresh Page\" onClick=\"window.location.reload()\"";
?>


Интерфейс пользователя написан на языке PHP и располагается в домашнем каталоге веб-сервера. Цель скрипта — вытащить из файлов «сырые» значения температуры, напряжений и состояний, привести их к «человекочитаемому» виду и отобразить. При нажатии на кнопку запуска отопителя положить единичку в файл состояния отопителя. При нажатии на кнопку остановки отопителя положить нолик в файл состояния отопителя.

Получилось конечно брутальненько:



Но я не хипстер, всяческим цветным кнопкам и прочим AJAXам не обучен.

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

Немного о расходе трафика.

Каждые 10 секунд передается запрос и принимается ответ. В запросе 28 байт заголовок и 7 байт полезной нагрузки. В ответе 28 байт заголовок и 2 байта полезной нагрузки. Итого 65 байт каждые 10 секунд. 390 байт в минуту, 561 600 байт в сутки, 17 409 600 байт за 31 день. Расчеты практически совпадают с данными оператора:



На момент написания статьи за неполные 13 дней месяца было израсходовано 5.5 мегабайт из включенных в абонплату 50 (тариф «Легко сказать» МТС Беларусь) при теоретически возможных 7 Мб.



Разницу списываю на нахождение автомобиля вне зоны покрытия сотовой связи.

Возможные доработки и улучшения.

Без особых трудозатрат контроллер можно дополнить GPS-модулем для слежения за перемещением. Можно использовать дополнительные реле для управления автомобильным оборудованием — мигать поворотниками, включать вентилятор печки и т.п. — у кого какие потребности и фантазия.
Для еще большей экономии трафика можно попытаться реализовать механизм KeepAlive — слать пакеты раз в несколько минут только для контроля состояния соединения.
Наконец, можно вскрыть родной протокол управления отопителем и снимать данные температуры по K-Line/CAN прямо со встроенного датчика, избавившись от костыля в виде внешнего DS18B20.
Планирую купить +66 Добавить в избранное +106 +173
+
avatar
  • Brs
  • 14 декабря 2018, 08:53
+3
Классно реализовано! А аджаксы и прочее это действительно все не нужно, обычная форма и текст отлично справляются. Только я бы подумал о механизме заряда дополнительного аккумулятора, сделал бы его зарядку только когда двигатель заведен. Зачем заряду перетекать с основного в дополнительный если мотор заглушен?
+
avatar
+3
То, что вы написали, реализовать просто. Зная, что напряжение аккумулятора без подключения к внешнему источнику не может быть выше 13,8 вольт, можно считать, что как только видим больше, чем 13,80 — значит двигатель заведен и аккумулятор заряжается.
Но текущую схему я тоже взял не с потолка. По гистерезису «13.2 / 12.8» работает устройство развязки аккумуляторов, многократно проверенное и не имеющее особых нареканий.
+
avatar
  • rico
  • 14 декабря 2018, 09:21
0
Зачем заряду перетекать с основного в дополнительный если мотор заглушен?
Особенно, если основная АКБ уже не совсем свежая и имеет тенденцию к потере заряда.
+
avatar
0
Ничего особо не перетечет. 12.8 — это еще практически полностью заряженный аккумулятор. Я по логам работы вижу. Аккумуляторы сцеплены при простое практически всегда. Даже ночуют сцепленные. Но стоит включить зажигание, и они размыкаются. Стоит вебасте начать продуваться, даже без накала — размыкаются. Завелся двигатель — снова замкнулись.

И смотрите предыдущий комментарий — это не я придумал. Вряд-ли люди просто так взяли и вбили 12,8 — 13,2. Скорее всего они экспериментировали с разными напряжениями, и пришли к таким цифрам методом проб и ошибок.
+
avatar
+2
Но однажды это не сработает. Хотя бы однажды — но обязательно.

Например, так: вы завели машину и куда-то на ней поехали. Батареи отлично заряжаются, реле замкнуто, все счастливы. Вы приехали куда-то, заглушили двигатель, и тут — ой блин, совсем забыл же что срочно надо было заехать в ...! — снова запускаете двигатель.
Батареи полностью заряжены, напряжение еще о-го-го! — так как генератор выключился лишь несколько секунд назад… следовательно, контакты реле еще замкнуты…
… и ловят через себя «бонус» в половину (или меньше, или больше — зависит от соотношения «свежести» новой и старой батареи) стартерного тока. Но даже сотни ампер прекрасно хватит, чтобы сплавить контакты китайского реле намертво, а затем поджечь изоляцию ваших проводов — и где? Прямо под сиденьем…

Дело, конечно, ваше… но лично мне думается, что вопрос безопасности стоит немножко додумать. Например, подключившись к «центральному замку» и зажиганию: если двери машины отперты и зажигание выключено, выключаем реле батарей независимо от напряжения; если зажигание включено и напряжение выше порога «есть зарядка», включаем реле. И если хочется чтобы на стоянке батареи тоже были соединены — включаем реле по условию «зажигание выключено, двери заперты более чем 20 секунд, напряжение выше порога».
+
avatar
+2
Абсолютно с вами согласен. Поэтому десятиамперное китайское реле на плате использую исключительно для коммутации другого реле, ампер на 200. На монтажном фото оно видно кстати, можете оценить его размер.
+
avatar
+2
Ок, тогда я за вас спокоен :)
+
avatar
  • aef3iuga
  • 14 декабря 2018, 09:20
+36
«Я знаю отличную шутку про UDP, но не факт, что она до вас дойдет» ©
:-D ;-)
+
avatar
  • Kila
  • 14 декабря 2018, 09:27
+3
Какое потребление получилось у вашей системы целиком? Не совсем еще понял, для чего нужно было часть логики переносить на сервер, по сути ардуина может все сама делать, и только ждать команды на включение отопителя, которую можно посылать звонком. И делать обратный звонок либо СМС в случае каких-то проблем.
+
avatar
+2
В момент передачи данных до 200 миллиампер. Без передачи данных с обесточенными релюшками — порядка 50. Каждое включенное реле еще +50 мА.
по сути ардуина может все сама делать, и только ждать команды на включение отопителя, которую можно посылать звонком. И делать обратный звонок либо СМС в случае каких-то проблем.
Все и делалось ради нормальной обратной связи. Слать СМС — обычно это дополнительные деньги. Обратный звонок — тоже. Или предлагаете «кидать глухарей»? Один глухарь — система запустилась, температура растет. Два глухаря — что-то пошло не так.
+
avatar
  • Kila
  • 14 декабря 2018, 09:44
0
СМС, как и трафик, может быть в пакете. Просто в нормальном режиме для чего постоянно видеть состояния реле или напряжения? Какие будут ваши действия, если что-то пойдет не так? Вы ведь все равно пойдете к машине. Согласен, обратная связь нужна, но ее вполне заменит СМС с текстом «проблемки».
+
avatar
+2
Даже 2-3 смс каждое утро — это под 100 смс в месяц. Сколько будет стоить тариф с сотней включенных смс? Конкретно мой тариф с 50 мегабайтами стоит четверть доллара. www.mts.by/mobile/tariffs/for_calls/legko_skazat/
+
avatar
  • aef3iuga
  • 14 декабря 2018, 10:55
0
В РФ у того же МТСа для умных девайсов есть тарифный план со стоимостью 790 российских ржублей в год(именно в год), это выходит около 25 беларуских рублей в него же, то есть по 2 ваших рубля в месяц. Включено 200 метров трафика и 100 смсок в месяц.

Стоит посмотреть нет ли у кого-то из ваших операторов аналога тарифа «Умное устройство», что бы не ужиматься с трафиком или смсками в подобных девайсах
+
avatar
0
2 наших рубля — это ровно в 4 раза больше, чем я плачу сейчас. И ужиматься мне не надо, максимум, что я потреблю — треть от того, что мне можно потребить.

А если уж совсем нищебродствовать, то есть тарифы с бонусами за входящие из других сетей. С основного телефона с безлимитом во все сети «назвонить» бонусов, и потом пользоваться за них интернетом.
+
avatar
  • aef3iuga
  • 14 декабря 2018, 13:17
0
Ну если ужиматься не приходится, то ок.
Я просто обратил внимание, что могут существовать тарифы типа «Умное устройство», где может быть вкусней по условиям
+
avatar
  • f0r
  • 14 декабря 2018, 16:21
0
Ржублей — оговорочка по Фрейду? :)
+
avatar
  • aef3iuga
  • 14 декабря 2018, 17:11
0
Не-не. Это что бы не путать. Есть российские ржубли и беларуские рубли :)
+
avatar
  • kvolk
  • 14 декабря 2018, 09:49
+1
Все и делалось ради нормальной обратной связи.
по UDP?
+
avatar
0
Пусть за 5 минут прогрева потеряется один пакет. Но остальные 29 дойдут.
+
avatar
  • kvolk
  • 14 декабря 2018, 10:59
0
А может и наоборот, гарантий ведь этот протокол не предоставляет.
+
avatar
+2
Наверно в таких условиях приема, где теряются 29 пакетов из 30, и СМС не дойдет.
+
avatar
  • kvolk
  • 14 декабря 2018, 13:25
0
Дело не в «условиях приёма», дело в самом протоколе. Помимо «условий приёма» есть ещё масса причин по которым ваш трафик может не дойти до устройства.
+
avatar
+1
Может. На то он и UDP, сверху уже тонко пошутили. Но в данном случае концепция устройства такова, что ничего страшного не произойдет ни при потере одного пакета, ни при потере 50% пакетов, ни при потере 90% пакетов. Ну а если теряется более 90% — вам точно нужен такой сотовый оператор?
+
avatar
  • aef3iuga
  • 14 декабря 2018, 13:45
+7
Я бы еще пошутил про IPv4, но шутки закончились ;)
+
avatar
+5
Шутите про IPv6, они никогда не закончатся.
Хотя тут другая проблема — уже лет 20 собираюсь пошутить про IPv6, все никак не соберусь.
+
avatar
  • aef3iuga
  • 14 декабря 2018, 13:55
+4
Шутки про IPv6 мало кто может услышать
+
avatar
0
уже много кто, процентов 90 сайтов, которыми я пользуюсь, а в целом по миру трафик вроде сейчас 50/50 v6 к v4
+
avatar
  • aef3iuga
  • 16 декабря 2018, 12:58
0
Какой 50/50?
www.google.com/intl/en/ipv6/statistics.html
25% у гугла обращений и то за счет США
В РФ я знаю одного(!!!!) провайдера, который дает нативный IPv6, при чем недавно эти чудаки ввели за IPv6 плату в 50 рублей в месяц за /56
+
avatar
  • iklopik
  • 18 декабря 2018, 16:01
0
они никогда не закончатся.
Однажды я что-то подобное слышал. Речь шла не об IPv6, правда, а о 640 килобайтах памяти. Не хватило таки. ;)
+
avatar
  • rexen
  • 16 декабря 2018, 22:27
0
Надо что-нибудь про HTTPS пошутить.

Например, что скоро без него даже попрошайкам милостыню подавать нельзя будет.
+
avatar
  • aef3iuga
  • 17 декабря 2018, 10:16
0
Хотел пошутить про https, но не прошло рукопожатие :)
+
avatar
  • kvolk
  • 14 декабря 2018, 13:45
-1
… вам точно нужен такой сотовый оператор?
А Вы точно уверены что это вина сотового оператора? Пакет может потеряться и у провайдера вашего VPS.
+
avatar
+1
А вам точно нужен хостер с потерей 90% пакетов? :)
+
avatar
  • kvolk
  • 14 декабря 2018, 13:54
0
Я не против такой реализации, это просто и эффективно в условиях реальности. Один вопрос, почему не TCP? Ведь памяти ардуины будет достаточно, если привести скетч в порядок.
+
avatar
+1
Ну так трафик же! Все эти Retransmit'ы и KeepAlive'ы боюсь что увеличат трафик раза в три, и 50 мегабайт перестанет хватать.
А так бы да, и памяти ардуины не надо никакой дополнительной. TCP поднимается AT-командами точно так же, как и UDP. И серверной части на С не надо. mysite.com/set.php?t=-5.34&v0=12.57 и все дела.
+
avatar
  • aef3iuga
  • 14 декабря 2018, 13:50
0
Ну вон в РФ пару лет назад в ГД обсуждали вопрос запрета UDP, потому что его могут для VPN'ов использовать :-D
+
avatar
  • kvolk
  • 14 декабря 2018, 09:36
+1
У ардуины не так много оперативной памяти чтобы ею разбрасываться.
Дополнительная информация
Замените

      mySerial.print("AT+UDPSEND=1,8\r");
      Serial.println("Sent AT+UDPSEND=1,8");

на

      mySerial.print(F("AT+UDPSEND=1,8\r"));
      Serial.println(F("Sent AT+UDPSEND=1,8"));

и так далее.

Почему сервер не захотели сделать на php?
Почему UDP?
+
avatar
  • gibson
  • 14 декабря 2018, 10:31
0
UDP — меньше трафика жрет)
+
avatar
+1
Почему сервер не захотели сделать на php?
Слушать UDP-сокет на PHP? Наверно можно, а в чем принципиальное преимущество перед C?
+
avatar
  • aef3iuga
  • 14 декабря 2018, 10:56
+2
www.binarytides.com/udp-socket-programming-in-php/
Можно. Но смысла столько же, сколько крутить педали велосипеда руками, а рулем управлять ногами :-D
+
avatar
  • aef3iuga
  • 14 декабря 2018, 11:47
0
Зачем что-то левое, если можно в обычном дэбиан-чруте поднять обычный nginx+php-fpm на андроиде?
+
avatar
  • kvolk
  • 14 декабря 2018, 10:58
-1
а в чем принципиальное преимущество перед C?
И сервер и вебморда в одной странице.
+
avatar
+1
Вебморда работает только в момент обновления страницы. Как она одновременно может слушать сокет, я не понимаю. Нужен все равно отдельный процесс в отдельном файле, запускаемый как сервис.
+
avatar
  • kvolk
  • 14 декабря 2018, 11:47
0
в одной странице.
в одном файле.
+
avatar
0
Наверно у нас с вами разные PHP. Смотрите, мы обращаемся по адресу mysever.com/page.php
Веб-сервер находит файл page.php и просит движок PHP его исполнить. Результаты исполнения сервер отдает веб-браузеру, после этого процесс прибивается. Все. Как в этом же файле слушать UDP порт, я не знаю.
+
avatar
  • aef3iuga
  • 14 декабря 2018, 12:02
+1
php может работать через обработчик(например php-fpm), а может исполняться на системе через системный интерпретатор. Второй может слушать UDP
+
avatar
+1
Это никак не отменяет того факта, что Listener и Frontend — суть разные компоненты, и скрещивать их в одном файле — это создавать гибрид утюга и электробритвы в одном корпусе. Можно, но не нужно.
+
avatar
  • aef3iuga
  • 14 декабря 2018, 12:43
+1
А я и не спорю, я просто написал, что можно :)
+
avatar
  • kvolk
  • 14 декабря 2018, 13:15
0
Наверно у нас с вами разные PHP.
Увы.
Listener и Frontend — суть разные компоненты, и скрещивать их в одном файле — это создавать гибрид утюга и электробритвы
А в чём проблема? Разве вызывает сложность разделить код на тот который будет выполняться из вебморды и из консоли?

ЗЫ. Ни чего не имею против текущей реализации.
+
avatar
0
Разве вызывает сложность разделить код на тот который будет выполняться из вебморды и из консоли?
Разделить код прямо внутри одного файла? Ну можно наверно:

if (i_am_frontend) {
сюда код фронтенда;
}
else {
сюда код системного сервиса;
}

Но это только если нам религия запрещает больше одного файла создавать.
+
avatar
0
основная проблема такого подхода — жадность опсосов. Если это не анлим, пусть даже на 64к, то большинство считают любое движение байтиков в сети по нижнему (по их мнению ) порогу. Обычно это отнюдь не сто байт.
+
avatar
  • rico
  • 14 декабря 2018, 09:55
+6
Ключевая вещь в этом контексте — не разрывать GPRS-соединение как можно дольше (пока позволяет сеть), поскольку большинство операторов в РФ округляет объем данных, переданных в сессии (кто-то — до 10Кб, а кто-то — и до 100Кб). И если каждый раз рвать соединение, то раз в десять секунд 10(100) кБ тарифицироваться будет. С другой стороны активная сессия GPRS энергопотребление изделия увеличивает.
IMHO, разумно было бы режим онлайн-мониторинга «по требованию» включать (для отладки или если есть подозрения в нештатном функционировании), а в остальное время пользоваться SMS-каналом.
+
avatar
  • rbskates
  • 14 декабря 2018, 10:35
+2
Хорошая самоделка! Я бы добавил TVS диоды перед резисторами делителя, чтобы гасить скачки напряжения.
+
avatar
+3
А совет можно? :)
Раз уж вы используете модули, сделайте для них плату. Это не таких мощных усилий требует как кажется.
Есть SprintLayout, есть DipTrace…
Я не сколько про эстетику сколько про удобство монтажа. Воткнул и всё. Никаких соплей и раздумий «а не отвалится ли
это всё при вибрации».
Типа вот такого
+
avatar
+3
Текстолит, лазерный утюг, лимонная кислота, перекись водорода, бормашинка… Ради чего? Здесь реально десяток проводов, в них нельзя запутаться.
+
avatar
0
Выглядит во-первых колхозно, во-вторых- кто сказал что в 10 проводах не запутаться?- запутаться и в двух проводках можно:)), в третьих- тут уже говорили- нужны супрессоры на входах и на питании, иначе прилетит импульсная помеха (а в автомобилях они есть, особенно во время заведения двигателя), и все- ардуинка выгорит.
+
avatar
+2
Проводочки можно красиво уложить. Будут ласкать глаз не хуже печатной платы.
А по поводу супрессоров… Делителем 15 вольт превращаются в 1.1 вольта. Сколько надо подать на аналоговый вход атмеги, чтоб гарантированно ее сжечь? вольт 11? Это значит до делителя 150 вольт. Где в автомобиле такие напряжения, кроме катушки зажигания?
+
avatar
+1
Статическое напряжение в 8000 вольт подойдет?
+
avatar
+1
Не забывайте, что вход зашунтирован достаточно низкоомным резистором. То есть вариант «подошел потерся кот» не прокатит. Минимум надо притащить школьную электрофорную машину, и то сомневаюсь.
+
avatar
+1
К сожалению — везде. Бортовая сеть автомобиля не сильно оптимизирована в плане помехоустойчивости, а коммутируемых индуктивных элементов в ней — пруд пруди: от обмотки возбуждения генератора до форсунок и уймы реле. Да, и электробензонасос тоже не сахар. А чтобы сжечь атмегу, на любой вход надо подать всего лишь на 1 вольт больше, чем на вывод питания :)

Но, на самом деле, «сжечь» в вашем случае — это вряд ли. А вот подвесить — запросто, AVR это любят.

И чтобы два раза не вставать — про точность измерений.
Во-первых, можно измерять не «только когда нужно», а постоянно, и усреднять результаты — тогда влияние случайностей будет сильно нивелировано.
А во-вторых, есть одна «фитча» в Ардуино, связанная с переключением мультиплексора АЦП, приводящая к тому, что первое после переключения значение иногда получается «странным».
Лечится например так:
вместо
u0=analogRead(0);
u1=analogRead(1);

пишем
u0=analogRead(0);
delay(50);
u0=analogRead(0);
u1=analogRead(1);
delay(50);
u1=analogRead(1);
+
avatar
+1
Ну смотрите. Из бортовой электрики напрямую в контроллер приходят только два питания. Остальное можно считать, что развязано, что релюхи, что температурный датчик. Аккумуляторы сами по себе можно считать огромными электролитическими конденсаторами, поднять на них напряжение до 50 вольт — задача малореальная. Даже если это и случится, все равно на входе ардуины не будет на 1 вольт больше, чем на выводе питания.
Далее преобразователь напряжения. Кроме собственных сглаживающих конденсаторов у него есть защита по перенапряжению и индуктивность последовательно нагрузке. Что еще хотеть?
+
avatar
  • mike888
  • 14 декабря 2018, 22:54
+1
Если посмотреть осциллографом что происходит в бортсети при работе стартера, то увиденое слегка удивит. И неспроста в блоках автоэлектроники ставят варисторы по питанию и защиты по входным цепям.
+
avatar
  • InOn
  • 15 декабря 2018, 08:48
+1
Да, теоретически, всё так и есть. А практика и опыт по замене выгоревших, переставших работать и самое забавное — «глючащих» дуин и им подобных, говорит об обратном.
И ещё прекрасно работающая на одном авто, начинает выкидывать кренделя на другом.
+
avatar
+1
Практика — критерий истины. Я тоже начинающий практик, если вы заметили. За месяц еще ничего не выгорело и даже не зависло.
+
avatar
0
Кстати, есть «бесплатный» способ борьбы с зависанием ардуины: достаточно включить встроенный watchdog.

К сожалению, в старом загрузчике (а я на 99% уверен что у вас прошит именно он) watchdog сломан, и его включение приведет к «бесконечному ребуту».

Выход — зашить optiboot в качестве загрузчика, в нем watchdog работоспособен.

Как все жто проделать, описано очень много где, и вроде даже тут на Муське это было.

А аккумулятор… увы, «как огромный конденсатор» он ведет себя только «около постоянного тока». А для импульсов порядка микро- и даже миллисекунд его «сглаживающие» свойства ничтожны. А «плевки» эдс самоиндукции переключающихся индуктивных нагрузок имеют примерно такую ширину. И сотни вольт амплитуды.
+
avatar
0
Ради того чтобы хотя бы чуть-чуть расти над собой. Это же не первая и не последняя поделка?
Чтобы двигаться от «да пофигу» в сторону «как надо». Чтобы можно было повторить вашу задумку.
Или следующая поделка будет выглядеть так ? :)
+
avatar
+9
Я как-то спокойно отношусь к внешнему виду самоделок. По крайней мере спойлер меня совершенно не пугает.
Выполняет свою функцию — ну и отлично.
Конечно, если вдруг придется делать «для чужих», особенно промышленную партию, тогда да — альтиум, герберы, металлизация, паяльная маска, шелкография, корпус под заказ, паспорт изделия, гарантийный талон.
+
avatar
  • vkozloff
  • 14 декабря 2018, 11:30
0
Для улучшения читаемости я бы mode-константы в дефайны вынес. А так-то за реализацию алгоритма конечного автомата ставлю плюс.
+
avatar
  • kvolk
  • 14 декабря 2018, 11:54
+1
Все симкарты у Вас запускаются на этом модеме?
+
avatar
+1
Пробовал три разные трех белорусских операторов. Все три успешно вышли на связь.
+
avatar
  • arbatjc
  • 14 декабря 2018, 12:10
0
Действительно классно! Плюсую, спасибо!
+
avatar
  • ariss
  • 14 декабря 2018, 12:10
0
Такая вебаста на многие авто ставится, в частности, на моей E39 стоит такая же. И я уж лет 6 как с вашим первоначальным вариантом юзаю. Ни разу сама по себе (кто-то другой) не включилась. Кроме того, купленный абсолютно такой же передатчик не включил установленный приемник (параметры и внутренности одинаковые.). На метров 30 добивает, более не пробовал, не было нужды. Причем приемник стоит в крыле переднем. +12 на первый пин — и она запускается.
+
avatar
0
У вас наверно изначально предпусковой нагреватель? Управлять циркуляционным насосом сам умеет?
+
avatar
  • ariss
  • 14 декабря 2018, 13:00
0
Да.
И таймер есть. Но внутри авто на панели. Что неудобно в сильный мороз. Ну и мозги анализируют — не включится при напряжении меньше 12 вроде (точно не помню, для примера), и, если работает, то отключится если напряжение упадет, а при «все норм» — через полчаса отключится. Но это все неважно. Я про «приемо-передатчик» в первую очередь :)
+
avatar
  • BTN
  • 14 декабря 2018, 12:32
0
А с чего Вы решили что вебаста высосет аккум до невозможности работы стартера? Насколько я знаю у них в мозгах прописан приоритет по напряжению, а не по температуре, т.е. даже если ОЖ не прогрелась, но напруга уже низкая, то она просто самостоятельно глушится для экономии энергии аккума для стартера. Точных данных порога отключения не знаю, но вроде как на 11 с чем то вольтах отрубается. Хотя с двумя аккумами и разделением в любом случае лучше.
+
avatar
+1
Вроде отключение на 11.5. Не полный разряд, но хорошенько покрутить может уже и не хватить.
+
avatar
  • clihlt
  • 16 декабря 2018, 01:40
0
У меня такое было. Аккм старый и однажды не смог. А вебасто отработала и когда я пришёл ещё шуршала.
+
avatar
  • mike888
  • 14 декабря 2018, 12:35
+3
Вебаста управляется по протоколу W-bus также заточена под протокол шины конкретного авто для управления климатом, если версия прошивки не универсальна. С управлением потенциалом шли ранние версии Termo Top Z/C, Termo Top Evo упраляется только по шине. Шина естественно двунаправленая и по ней же идёт и диагностика, можно читать состояние котла. Для диагностики в нете ищется программа WTT версия без донгла, крякнутая и через K-line адаптер всё работает. Диагностикой можно смотреть и менять порог отключения по напряжению и время работы котла.
Ну с М590 как повезёт, лучше брать SIM800L, 590 китайцы продают б\у и приколы с ними не редкость. Собственно модем это по сути телефон по функционалу, только без обвязки и строить на нём можно что угодно.
Котёл по команде отключения делает продувку и прокачку жижи ещё пару минут для устранения возможного перегрева. Да и болезнь этих котлов, удыхание терморезистора, лечится заменой, там обычный NTC 10кОм.
Ну и на ардуине прямой смысл делать шину для котла, а не колхозить реле.
Вебасто делает все приблуды для управления, как брелки на 500м с обратной связью, так и GSM вариант, но ценник не вдохновляет.
Жадность опсосов конечно это что-то, передача пары килобайт в сутки обходится рублей в 30 из-за жлобского округления сессий, поэтому ещё подумаешь нужно ли связываться с этим. В Питере Тиньков в 99р в месяц обходится, но это виртуалка на Теле2, охват по области так себе.Мегафон минимум 7р в день.
+
avatar
0
Ну и на ардуине прямой смысл делать шину для котла, а не колхозить реле.
Не могу не согласиться. Проблема в том, что конкретно с моим котлом WTT не захотела связываться вообще ни по одному протоколу ни одного автопроизводителя. Вроде бы писали, что ее видит Star. Но стара у меня нет, чтоб посниффить его обмен.
+
avatar
  • mike888
  • 14 декабря 2018, 12:52
0
Скорее проблема в адаптере, не все адаптеры одинаковы, нужен на определёном камне с соответствующими настройками. Почитать можно тут www.carhelp.info Я использовал такой, пошёл сразу без доп настроек orionspb.ru/diagnostic/OBD_adaptors/187/ он с нужной начинкой.
+
avatar
0
Я прямо на микроконтроллере осциллографом смотрел. На ногах, которые идут к микрушке восьминогой, преобразователю K-L в TTL. На RX есть мои посылки, что WТТ отправляет, на TX тишина глухая. Сказал бы, что контроллер мертвый, так ведь нет, прижимаю пин к питанию — продувается и начинает щелкать насосиком.
+
avatar
  • mike888
  • 14 декабря 2018, 22:47
0
Там один пин разъёма под шину используется, другой иногда под управление потенциалом или шина конкретного авто. Всё от прошивки зависит и версии платы. В ветке форума по вебастам на carhelp всё расжёвано и много инфы есть, дублировать тут нет смысла, тем более TTZ/C давно не выпускаются
+
avatar
  • LTW
  • 14 декабря 2018, 23:32
0
В Питере Тиньков в 99р в месяц обходится, но это виртуалка на Теле2, охват по области так себе.Мегафон минимум 7р в день.
Я тоже в Питере. МТС Коннект-4 в автосигналке:
Отчет за полгода
Отчет за выбранные периоды
Информация о расходах по лицевому счету 	Сумма (руб.)
Баланс на 01.06.2018 	120,89
Израсходовано по номеру 54,06
— Связь. Входящая (Мобильная) 	0,00
— Связь. Исходящая (_Мобильная) 	12,00
— Связь. Входящая (Сотовые операторы) 	0,00
— SMS. Входящее 	0,00
— SMS контент. Категория 0 	0,00
— SMS. Исходящее (Мобильная) 	13,91
— Мобильный интернет: трафик 2G 	2,60
— Мобильный интернет: трафик 2G (internet.mts.ru). (ВСР, Дом. МР) 	0,06
— SMS. Исходящее 	25,50
— USSD Запрос баланса 	0,00
— Разовые услуги (смена тарифа, добавление услуг, заказ документов и пр.) 	0,00
Баланс на 30.11.2018 	66,82
Звонки и смс — это сообщения о балансе, севшем аккумуляторе и срабатывании тревоги. На интернет за полгода ушло меньше 3 рублей. При этом связь по-немножку (те самые 2кб), но каждый день:
Деталька
01.12.2018	16:51:06	internet.mts.ru	gprs	4Kb	0,0099				
02.12.2018	17:11:41	internet.mts.ru	gprs	2Kb	0,0050				
03.12.2018	04:54:08	internet.mts.ru	gprs	1Kb	0,0025				
03.12.2018	17:27:41	internet.mts.ru	gprs	3Kb	0,0074				
04.12.2018	17:42:08	internet.mts.ru	gprs	4Kb	0,0099				
05.12.2018	17:53:11	internet.mts.ru	gprs	2Kb	0,0050				
06.12.2018	14:59:08	internet.mts.ru	gprs	86Kb	0,2135				
09.12.2018	01:37:29	internet.mts.ru	gprs	22Kb	0,0546				
10.12.2018	04:51:50	internet.mts.ru	gprs	1Kb	0,0025				
10.12.2018	17:03:37	internet.mts.ru	gprs	2Kb	0,0050				
11.12.2018	20:18:42	internet.mts.ru	gprs	2Kb	0,0050				
12.12.2018	19:50:50	internet.mts.ru	gprs	2Kb	0,0050				
13.12.2018	13:10:53	internet.mts.ru	gprs	12Kb	0,0298				
14.12.2018	12:45:46	internet.mts.ru	gprs	3Kb	0,0074				
+
avatar
  • mike888
  • 15 декабря 2018, 00:04
0
У меня задачи чуть другие, на даче метеостанция шлёт инфу каждые 15 минут на народмонитор, из опсосов только мегафон и только появляется теле2, но связь весьма неувереная, так что выбор не богатый. Инет только через сотовую связь. Есть мысль поставить тарелку с соответствующей головой, тогда возможно какой-то выбор будет. А для вебасты есть родной брелок Т90, мне его хватает. И у него есть выход и по шине и потенциал, что весьма удобно для включения вентилятора печки. Левых сигналок в машине нет и не будет, поскольку неактуально, достаточно родной.
+
avatar
  • OkeaH
  • 15 декабря 2018, 13:50
0
У Б3 в РФ есть тарифы «Умные...» стоимость которых как правило не превышает 800р в год. У теле2 тоже есть варианты.

Для народного мониторинга полагаю вполне подойдет такой тариф.
Мега Умные вещи
20р в неделю или 750р в год.
Мобильный интернет Безлимитно. После израсходования пакета 60 МБ в неделю интернет предоставляется безлимитно на скорости 64 КБ/с.
+
avatar
  • mike888
  • 15 декабря 2018, 14:46
+1
В описании этого тарифа меня насторожила вторая строчка, с описанием того на чем оно не работает. Либо это полный идиот писал, но доказывать что ты не верблюд или менять IMEI и идентификацию в прошивке модема у меня нет никакого желания.
Написано что не работает на модемах, хотя основа любого устройства использующее сотовую связь это модем. Хз что под этим имелось ввиду, но опыт общения с опсосами есть и добраться до человека который в состоянии понять что ты говоришь и понимающего протокол обмена и ошибки, дело очень непростое
+
avatar
  • OkeaH
  • 15 декабря 2018, 17:29
0
Согласен, странное ограничение учитывая, что на тарифе всего 60мб в неделю и дальнейшее ограничение скорости 64 КБ/с.
+
avatar
  • mike888
  • 15 декабря 2018, 20:38
0
Раньше были тарифы в которых после выборки объёма скорость резали до 64кбит, реально же на этой скорости вполне шло радио и меня вполне устравивало, но жадные опсосы это прикрыли и после выборки объёма либо отрубается инет, либо идёт по условиям тарифа с конским ценником, либо врубается автопродление рублей за 15. Реальный же трафик девайсов управления и мониторинга составляет пару килобайт в сутки, если видео не передавать, но много сессий, которые округляются до 100-250 килобайт в зависимости от опсоса. Реально же за сессию передаётся сотня байт.
+
avatar
  • Sanja
  • 15 декабря 2018, 12:41
0
у Йопты есть тариф-конструктор, на котором можно отключить всё, и оставить единственную опцию «безлимитный мессенджер» за 10 руб. в месяц. Можно общаться с девайсом через чат WhatsApp.
Йопта работает на инфраструктуре мегафона, а не на грустном Теле2
+
avatar
  • mike888
  • 15 декабря 2018, 14:11
0
Не всё есть везде, конкретно у меня на даче ёты нет и скорее всего не будет. А теле2 это ртк, который потихоньку восстанавливает свою монополию на связь, жлобы ещё те, рулят там дуболомы армейские, но тем не менее это наша реальность.
На старте виртуального опсоса от сбербанка был халявный тариф 50 минут и 500мбайт в месяц, это бесплатно и кто взял, у того он работает и сейчас. Проблема лишь в том что виртуальные симки долго стартуют.
+
avatar
+1
Здравствуйте! Спасибо за информацию. Нам бы хотелось более подробно разобраться в вопросе.
Пожалуйста, продублируйте его нам в личные сообщения группы ВКонтакте (vk.me/yota), также указа адрес Вашей дачи.
Мы проверим информацию, посмотрим покрытие сети и, если потребуется, передадим данные ответственным специалистам для дальнейшей оптимизации сети.
+
avatar
  • mike888
  • 16 декабря 2018, 02:55
0
Координаты 58.966125, 29.407718, в сектах не состою так что дублировать инфу не могу.
Ртк клянётся что использует все вышки всех операторов, что похоже на правду, поскольку все их сети стали появляться. Впрочем скоро всех схавает и будет как было один поставщик всей связи, потом его государство возьмёт под своё крыло, всё идёт к этому. А остальные будут оставлены так, для вида. )
+
avatar
  • urix
  • 17 декабря 2018, 12:47
0
Подождите, так что, Мегафон с его государственной протекцией — ничто по сравнению с задрипанным Еле2?
+
avatar
  • mike888
  • 17 декабря 2018, 16:38
0
Еле2 это уже давно ртк, мегавонь никуда не денется, уже давно витает идея передать все коммуникации под одно крыло и опсосы будут лишь торговать. Всё под соусом естественой монополии. Да и сотовая связь в сегодняшнем виде уже не нужна, пользователю всё равно что внутри абонентского устройства, куча транспортных протоколов лишь мешает, всё идёт к стандартному инет протоколу и IP устройствах. Это уже всё есть и работает, по сути надо лишь поменять совсем немного, любой смартфон это уже IP устройство и установив приложение для IP телефонии можно отказаться от аппаратной голосовой части.
Мегавонь меня реально достала, вечно мелочь по карманам тырят, это с момента её появления традиция. К еле2 таких претензий нет.
+
avatar
  • achkov
  • 14 декабря 2018, 12:55
0
проект конечно хороший, но тем, кто хочет попроще, я бы посоветовал обратить внимание на RTU5024. Себе поставил два года назад. Тариф велком без абонентской платы. деньги не списываются, т. к. реле «скидывает» звонок. Утром просыпаюсь, и в зависимости от наружной температуры «звоню» на RTU5024 за 10-30 минут до выхода из дома… Да, как и автор, в багажник кинул дополнительный аккумулятор и раз в неделю-две от него при помощи I-max-b6 заряжаю основной аккумулятор. Да и еще прикупил себе реле термостат W1209WK с перспективой установки совместно с RTU для отключения вебасты по достижению заданной температуры
+
avatar
+1
Простое GSM-реле не решает главной проблемы — отсутствия обратной связи. Перемерзла солярка и котел не зажегся — как знать об этом заранее, чтоб потеплее одеться?
+
avatar
  • bampr
  • 14 декабря 2018, 14:30
0
наверное нужно чтобы при звонке на телефон-у-печки происходил контроль запуска — например, стоял микрофон гарнитуры, и вам будет слышно, запустилось или нет… большинство простых старых телефонов при подключении гарнитуры имеют автоподъем трубки, и вам будет слышно, что работает… при нажатии кнопок — поставить дешифратор тональности — 10 разных команд
+
avatar
+3
Ну а что, тоже вариант. Пьешь утром чай на кухне и слушаешь по громкой связи как гудит твоя вебаста :)
+
avatar
  • bampr
  • 14 декабря 2018, 14:43
0
симфония ) ну, главное то результат, обратная связь получена и бесплатно )))
меня больше другое интересует, ваши проекты по wifi управлению ) чтобы в окне одного приложения можно было и видеть что на камере и управлять дискретными выходами
что посоветуете?
ну типа IP-танка )
+
avatar
0
ваши проекты по wifi управлению )
Вы меня ни с кем не путаете? Я вроде не разрабатывал таких проектов.
Но навскидку могу порекомендовать WiFi IP-камеру + ESP8266, если я правильно понял ваши потребности.
+
avatar
  • bampr
  • 14 декабря 2018, 14:47
0
мне нужно ОДНО приложение )
может и путаю, тогда извините
+
avatar
  • demonk
  • 14 декабря 2018, 17:53
0
Как вариант роутер + usb вебкамера + ардуино
habr.com/post/153017/
я себе такой танчик сделал
+
avatar
  • bampr
  • 14 декабря 2018, 14:47
0
кстати, есть видео где загорелся сам по себе мерседес, и его тушили погрузчиком, который рядом убирал снег… наверное запустился обогреватель… так что поразмышляйте…
+
avatar
0
Вряд-ли из-за обогревателя. Немцы — люди серьезные и все сделали на совесть. Скорее что-то с проводкой. Но я вроде все нормально сделал. Не забыл ни про сечение, ни про предохранители, ни про гофры.
+
avatar
  • bampr
  • 14 декабря 2018, 15:43
0
а я и не утверждал, что нагреватель ставили немцы )
могли поставить уже здесь, как в вашем варианте )
+
avatar
0
Нагреватель изготовили немцы. Там все академично и энтерпрайзно. Ни разу не слышал истории, чтоб отопитель признали виновным в пожаре. А установлено их по миру немало.
+
avatar
  • Sanja
  • 15 декабря 2018, 12:37
+2
соседи себе поставили в шлагбаумы SIM-карты, настроили GSM-реле на сброс звонка, сообщили 100 квартирам номер. А потом оператор через 90 дней отключил номера за отсутствием платных операций, и они весело бегали по двору :)
+
avatar
  • achkov
  • 15 декабря 2018, 13:57
0
На моем тарифе раз в полгода надо класть на счет мин 5 бел рублей, что бы не заблокировали номер. Деньги остаются на счету…
+
avatar
+1
У этой разработки единственный и неоспоримый плюс это возможность парковать машину везде.
Все остальное сплошные минусы.
Самая дешевая двухсторонняя сигналка+ардуина полностью решат проблему обратной связи, да это будет не очень наглядно когда состояние будет индицироваться иконкой открытой двери или открытого багажника, но это лучше чем привязка к опсосу.
+
avatar
0
Сколько стоит самая дешевая двухсторонняя сигналка? И сколько за эти деньги можно платить опсосу?
+
avatar
0
Проблема опсоса не в деньгах а в самом наличии опсоса.
Да и если говорить о деньгах, то время, которое потрачено на вариант с опсосом, стоит значительно дороже чем время, потраченное на вариант с сигналкой. Сколько лично ты времени потратил на софт?
+
avatar
+1
Две недели на работе в промежутках между работой )
Время у меня получается вроде как бесплатное. А если сигналка стоит долларов 100, то на эти деньги я смогу 20 лет платить и опсосу и хостеру за самый дешевый VPS.
+
avatar
0
Опсос проблема сам по себе, не важно платный он или бесплатный, и хостер проблема- это все лишает систему автономности, привязывает ее к сервисам, которые ты не можешь контролировать.
+
avatar
+1
Ну это не пульт управления аппаратом искусственного дыхания и не привод стержней замедлителя в реакторе. Ну будет у него готовность 95%, а не 99,999%, никто от этого не умрет.

Ну ляжет раз в год опсос и раз в год хостер…

С таким же успехом раз в год может в неподходящий момент сесть батарейка в двухстороннем брелке. И еще раз в год люди в одинаковых ботинках могут диапазон 433 МГц глушилкой задавить перед проездом кого-нибудь важного.
+
avatar
0
Если с такой точки зрения рассуждать то обратная связь вообще не нужна, вероятность того, что при грамотной эксплуатации не зажжется котел или застынет соляра крайне мала.
+
avatar
0
УЖЕ один раз не зажглась. За месяц не сильно холодной эксплуатации. Помогла как раз телеметрия. Посмотрели в логах, что напряжение просело до 9.5 вольт. Почистили и поджали клеммы, с тех пор пока все ОК.
+
avatar
0
Грязные и прослабленные клеммы это не совсем то, что имеется ввиду под «грамотной эксплуатацией». И телеметрия не имеет никакого отношения к обратной связи, ошибок там от силы штук 10, их запросто можно одним светодиодом локально показывать- не совсем наглядно но так-же эффективно.
+
avatar
0
Даже если на 100 долларов платить 20 лет только за VPS — это 5 долларов в год. Где можно купить такую халяву?
+
avatar
+1
lowendstock.com/ — от 2 долларов в год.
+
avatar
0
Интересный сайт, благодарю!
+
avatar
  • borisfen
  • 14 декабря 2018, 17:00
0
мдаа, отэто геморрой… еще и топливо жрет эта вабаста неплохо с бака.
живу в ЧС, врезал в корч предпусковой подогреватель и подключил через вебтаймер к розетке — профит. можно по программе запускать, можно с радио-пульта.
+
avatar
0
живу в ЧС
Не всем же так повезло.
+
avatar
  • borisfen
  • 14 декабря 2018, 20:26
+2
так а чо повезло? я сам в свое время абсолютно сознательно решил, что квартира однозначно идет лесом…
сам человек кузнец своего счастья
+
avatar
  • GSV
  • 14 декабря 2018, 17:30
0
Интересно получилось.Но GSM устройство полностью зависит от работы опсосов.Есть хоть и старенький, но вполне годный предмет для целей ТС.
+
avatar
0
Писал в обзоре, что исследовал нечто подобное. Не устраивает по габаритам.
+
avatar
-1
Это годится для коротких активных сессий, включил полетал выключил, как эта штука будет вести себя в режиме ожидания не знает даже программист, который ее писал.
+
avatar
  • Horzey
  • 15 декабря 2018, 05:28
+1
Почти ничего не понял, но всё круто и интересно. Я от этого далёк, но как хотелось бы так же знать, уметь.Спасибо автору.
+
avatar
  • Sanja
  • 15 декабря 2018, 12:32
0
а зачем автор разбирает ответы от ds18b20 руками, если есть библиотека? Или это regex.h всю память съел, пришлось ужиматься?

кстати, горячо рекомендую проверять ответ от этого градусника на показание -127 градусов, с ним бывает при сбоях.

Его лучше тогда запитать через транзистор и передёргивать ему питание при сбое.
+
avatar
0
А зачем библиотека, если оно и вручную элементарно реализуется?
+
avatar
  • alexr
  • 15 декабря 2018, 23:28
+1

1. Отсутствие шифрование радиообмена и отсутствие уникального идентификатора брелка. Конечно, вряд-ли кто-то специально будет слушать эфир, чтоб склонировать запрос на включение отопителя. Но в условиях города если кто-то рядом точно таким брелком будет включать дома торшер, включится и ваш отопитель, что однажды и произошло.
думаю что вы ошибаетесь, использую кучу таких брелоков и приемников дома, все брелки имеют уникальный код, приемник программируется под них, причем под каждую кнопку, причем программируется действие вкл/выкл/перекл и на вашей картинке видна перемычка для обучения приемника. Если отопитель у вас и включился сам, то причина точно не в этом.
Для надежности можно было поставить два модуля с приемником, реле включить последовательно, а брелок взять с четырьмя кпопками, и тогда можно было бы запрограммировать включение при нажатии обеих кнопок на брелке (последовательно), а отключение по нажатию 3-ей или 4-ой кнопки. И все бы работало железобетонно.
+
avatar
  • Alex3k
  • 17 декабря 2018, 06:42
+1
Объясните пожалуйста человеку с прямыми руками, но пока плохо разбирающегося в сетевых протоколах и программировании — серверная часть где находится? И что означает фраза «с минимум двумя «белыми» портами». Про белый айпишник я в курсе, дома у провайдера за доп плату взять не проблема, но зачем их два?
Большое спасибо заранее.
+
avatar
0
Серверная часть находится на VPS, написано в обзоре.
«Белый» айпишник — нынче очень жирно, это 65535 «белых» портов. На дешевых VPS давно 1 ip на несколько пользователей, в пользование каждому выдан только некий поддиапазон портов.
+
avatar
  • Alex3k
  • 17 декабря 2018, 08:22
0
Спасибо, буду читать про VPS. Извиняюсь, не обратил внимание что речь идет про белые «порты»
+
avatar
  • aef3iuga
  • 17 декабря 2018, 10:17
+1
Это у тебя беда какая-то, а не дешевый VPS. На арубовских за 1 ойро в месяц ты имеешь свой IPшник.
+
avatar
0
12 ойро в год — это нифига не дешевый VPS. Дешевый VPS — это 2 доллара в год.
+
avatar
  • aef3iuga
  • 17 декабря 2018, 13:36
+1
2 ойро в год это и не впс, это openvzшный таз с 64 метрами рама(негарантированного) работающий на мобиле «хостера»
+
avatar
0
Тем не менее для описываемых задач вполне подходит.
+
avatar
  • _Igor_
  • 17 декабря 2018, 09:20
0
А какой размер у SIM карты?
Есть ли подобные платы под обычный размер (не мини, микро)?
+
avatar
+1
Не очень понятно, что имеется в виду под «обычным размером». Для меня используемый в герое обзора «мини» — как раз «обычный размер». А уже «микро» и «нано» — уменьшенный размер.
+
avatar
  • _Igor_
  • 17 декабря 2018, 11:00
0
ОК. Спасибо.
+
avatar
  • aef3iuga
  • 17 декабря 2018, 10:23
+1
Обычно любой ОПСОС выдает полную сим-карту(ту которая размером с банковскую карту) и из нее выламываются микро, мини, нано. В чем может быть проблема с размером?
+
avatar
  • _Igor_
  • 17 декабря 2018, 11:06
0
У меня уже есть симка, обычная по размерам. Такие раньше выдавали… ну лет десять назад.
Поэтому и ищу под нее плату для экспериментов.
+
avatar
  • aef3iuga
  • 17 декабря 2018, 11:34
0
10 лет назад выдавали ту которая размером с банковскую карту с возможностью выломать из нее мини. Которая из них? И что мешает БЕСПЛАТНО обменять ее на новую?
+
avatar
  • iklopik
  • 18 декабря 2018, 16:21
0
А почему не стали использовать спящий режим? Были основания, или просто пренебрегли энергопотреблением ардуино, как малой величиной?
10 секунд в данном случае не догма, точности не нужно, и, следовательно, можно использовать watchdog. Плюс можно прикрутить RTC DS3231, и задавать время запуска прогрева, и не важно, будет ли связь с сервером. Хотя, надо ли оно… Так, мысли вслух. :)
+
avatar
+2
Именно так, пренебрег. Даже при постоянном потреблении 100 мА аккумулятор будет разряжаться порядка месяца. Причем на запуск авто это никак не повлияет.
+
avatar
  • shmv
  • 29 марта 2019, 21:39
+1
мне нужно всё тоже самое но на esp8266