Официальный бесплатный интернет от YOTA, для проектов "умный дом"

vsvleo
Offline
Зарегистрирован: 29.09.2016

Добрый день!

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

Изначально разрабатывал проект на SIM800, но из-за ежемесячных платежей и периодичного возвращения к проекту, понял, что это не мое. На текущий момент выбар пал на использование модульного решения, средствами ESP8266, роутера и GSM свистка.

Все многообещающие тарифы были сразу отвергнуты, т.к. очень много подводных камней. Из всего разнообразия в моем городе, выбор пал на оператора YOTA с тарифом для ПК и роутеров.  Достоинством оказалось, что там безлимитный тариф, и  бесплатный, с небольшой оговоркой.  Бесплатно он работает только на скорости 64кб, что мне очень достаточно (для перидачи информации с датчиков) , но за эту бесплатность пришлось немного раскошелиться.

Сразу хочу сделать небольшие выводы:

- с SIM800 данная симкарта не заработает, т.к. там жестко 4G и больше никак.

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

 

Так же мной был приобретен GSM роутер skylink v-fl500, с OpenWRT на борту, что помогло решить вторую проблему со страницей-заглушкой.

А как?:

Для выполнения данных действий, сначала необходимо было зайти на роутер
под пользователем root.
- заходим на роутер по ssh под стандартной учеткой admin:admin
- в файле /etc/rc.local. перед exit 0 вставляем строчку:
  (echo root ; sleep 1 ; echo root) | passwd root
- сохраняемся и перезагружаем роутер
- входим по ssh под пользователем root:root
- Добавить в /etc/firewall.user команду: iptables -t mangle -A POSTROUTING -j TTL --ttl-set 64 (необходимости нет. требуется для телевона, выяснил позже)

после чего был добавлен скрипт в папку root и добавлена задача через crontab -e

Сам скрипт /root/check_yota.sh:
{

#!/bin/sh

edate=`date`
checkhost=ya.ru # здесь указываем адрес сайта с минимальным телом (пустая страница) будет выполняться проверка на ответ 404
useragaent="Mozilla/5.0 (Windows NT 6.1; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0"
COMMANDACCESS="accept_lte=1&redirurl=http%3A%2F%2Fwww.$checkhost&connection_type=sa&service_id=Sliders_Free_Temp"
CHECK="/usr/bin/curl -A "\"$useragaent\"""
#CHECK="/usr/bin/wget -U \"$useragaent\""

COMMANDCHECK="$CHECK -s -I $checkhost"
#COMMANDCHECK="$CHECK -S --spider $checkhost"

SCRIPTRUN="$CHECK --data \"$COMMANDACCESS\" http://hello.yota.ru/php/go.php"
#SCRIPTRUN='$CHECK --post-data \"$COMMANDACCESS\" http://hello.yota.ru/php/go.php"

#if [ $($COMMANDCHECK | grep -Ec 'HTTP/1\.1 301|HTTP/1\.1 302') -gt 0 ];
if [ $($COMMANDCHECK | grep -Ec 'http://hello.yota.ru') -gt 0 ];
then
echo "----- Check start "$edate" -----";
eval "$SCRIPTRUN"
echo "----- Check end "$edate" -----\n";
fi
}
скрипт не мой, немного переделал

Для автоматического выполнения скрипта необходимо на роутере поставить задачу в cron (1 раз в минуту):

*/1 * * * * /bin/sh /root/check_yota.sh >> /root/log

Файлу скрипта поставил атрибут на запуск.

 

Скрипт отрабатывает следующим образом:
Проверяется возможность выхода в интернет по указанному адресу. Если идет переадресация на сайт home.yota.ru, то выполняется GET запрос,
который выполняет действия аналогично выбранному пункту "продолжить на скорости 64кб".

Таким образом у меня на доме, уже пол месяца, есть wifi интернет 64кб и работает ESP, передает значения датчиков температуры (dallas) на сервер.

В процессе эксплуатации возникла проблем, в один вечер завис роутер, что там произошло не проверял, пока так устраивает, но что хочу реализовать:

- удаленный доступ на роутер за счет реверсивного ssh туннеля (т.к. сеть находится за NAT, то DDNS - не прокатит)

- whatchdog (пока есть мысли встроить в этот же скрипт), пока что и как смотреть, не думал, надо смотреть логи при очередном зависании

Так же хоу весь проект переделать под MQTT протокол, чтобы не изобретать свой велосипед.

Еще, в личном кабинете yota. пишется, что данный тариф (64кб) действует в течении 365 дней, как я понимаю, год можно не беспокоиться, потом включить самый дешевый тариф, деньги спишутся, месяц работаем на самом дешевом тарифе и потом снова переключаемся на 64кб.

Всем удачного дня.

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

На мегафон уже давно бесплатный тариф есть 50 мб в месяц, для периодических отправок данных вполне достаточно

vsvleo
Offline
Зарегистрирован: 29.09.2016

50Мб - достаточно.. У меня в городе нет такого тарифа, по крайней мере мне его не предложили. Если не секрет, что за тариф и есть ли абонка?

Потом все зависит от размера сессии, на МТС дают 200Мб за 70 руб. в месяц, но размер сессии 250Кб.. тут как не крути, считал:

отправляю раз в 10 минут = 6 раз в минуту * 24 часа * 31 день * 250Кб  = 1Гб с копейками.. и отключают при переборе. А если отправлять чаще, то там на порядок может быть больше. Даже если отправлять раз в 10 минут, то 51200 / 31 / 24 / 6 = 11Кб сессия, если оператор дает такой предел, то норм.

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

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

у вас интернет/поиск забанили?

никакой абонентки, тариф для всей России, переход на тариф через личный кабинет

http://moscow.megafon.ru/tariffs/dlya_interneta/umnyy_dom.html

 

vsvleo
Offline
Зарегистрирован: 29.09.2016

Все правильно, но кроме как на сервер "Life Control" - он никуда не ходит, был такой, пробовал..

vsvleo
Offline
Зарегистрирован: 29.09.2016

и с размером сессий там что то намудрено:

3 Округление первой интернет-сессии в каждом календарном месяце производится в большую сторону до 1024 КБ. Округление производится после завершения интернет-сессии. Дальнейшее округление интернет-трафика в календарном месяце производится ежечасно до 250 КБ в большую сторону. Если первая интернет-сессия в календарном месяце больше 1024 КБ, то округление интернет-трафика в календарном месяце производится ежечасно до 250 КБ в большую сторону
 
и
 
11 В случае неиспользования услуг связи более 90 календарных дней подряд, начисляется  абонентская плата в размере 5 рублей в сутки. Абонентская плата взимается до момента достижения порога отключения. Абонент в одностороннем порядке отказывается от исполнения Договора об оказании услуг связи путем неиспользования Услуг более3 лет подряд при условии нахождения баланса лицевого счёта равным порогу отключения либо ниже порога отключения.
 
andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

vsvleo пишет:

Все правильно, но кроме как на сервер "Life Control" - он никуда не ходит, был такой, пробовал..

у меня везде ходит, проблем нет ни с MQTT сервером ни с любым другим.

vsvleo
Offline
Зарегистрирован: 29.09.2016

Возможно я что то нитак делал, но на мой сервер, меня не пускало. А когда пришлось отложить проект (почти на год), еще  и деньги начали снимать.. даже ругался с ними.

Потом просто решил координально изменить свой проект и переделать все на ESP, вот и отказался от этого тарифа и от SIM800.

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

ну как предположение: вероятно вы покупали уже симку с этим тарифом, а я сначала взял обычный какой то тариф, потом перевел его в МегафонОнлайн, о потом уже в Умный Дом - проблем нет.

Update: думал сам дурак, но нет, действительно все работает:

01AT+COPS?
02 
03+COPS: 0,0,"MegaFon"
04 
05OK
06AT+CMGDA=6
07 
08OK
09AT+SAPBR=1,1
10 
11OK
12AT+SAPBR=2,1
13 
14+SAPBR: 1,1,"100.73.198.140"
15 
16OK
17AT+HTTPINIT
18 
19OK
20AT+HTTPPARA="CID",1
21 
22OK
23AT+HTTPPARA="URL","arduino.ru"
24 
25OK
26AT+HTTPACTION=0
27 
28OK
29 
30+HTTPACTION: 0,200,21079
31AT+HTTPREAD
32 
33+HTTPREAD: 21079
34<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
35  "<a href="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" rel="nofollow">http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd</a>">
36<html xmlns="<a href="http://www.w3.org/1999/xhtml" rel="nofollow">http://www.w3.org/1999/xhtml</a>" xml:lang="ru" >
37  <head>
38<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
39    <title>Аппаратная платформа Arduino | Arduino.ru</title>
40    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
41<link rel="alternate" type="application/rss+xml" title="Аппаратная платформа Arduino RSS" href="<a href="http://arduino.ru/rss.xml" rel="nofollow">http://arduino.ru/rss.xml</a>" />
42<link rel="shortcut icon" href="/sites/default/files/framework_favicon.ico" type="image/x-icon" />
43<meta name="keywords" content="Arduino,контроллер,электроника,плата,конструктор,электротехника,программирование" />
44<link rel="canonical" href="<a href="http://arduino.ru/" rel="nofollow">http://arduino.ru/</a>" />
45<meta name="revisit-after" content="1 day" />
46    <link type="text/css" rel="stylesheet" media="all" href="/sites/default/files/css/css_84c66908a8f663bdd4b7cf567a82d0ce.css" />
47<link type="text/css" rel="stylesheet" media="print" href="/sites/default/files/css/css_91e891c45dea63b022c51a0b831eea71.css" />
48    <script type="text/javascript" src="/sites/default/files/js/js_10366acbf06fc8c42fad2d5c4f7f3ab2.js"></script>
49<script type="text/javascript">
50<!--//--><![CDATA[//><!--
51jQuery.extend(Drupal.settings, { "basePath": "/", "lightbox2": { "rtl": "0", "file_path": "/(\\w\\w/)sites/default/files", "default_image": "/modules/lightbox2/images/brokenimage.jpg", "border_size": 10, "font_color": "000", "box_color": "fff", "top_position": "", "overlay_opacity": "0.8", "overlay_color": "000", "disable_close_click": true, "resize_sequence": 0, "resize_speed": 400, "fade_in_speed": 400, "slide_down_speed": 600, "use_alt_layout": false, "disable_resize": false, "disable_zoom": false, "force_show_nav": false, "show_caption": true, "loop_items": false, "node_link_text": "View Image Details", "node_link_target": false, "image_count": "Image !current of !total", "video_count": "Video !current of !total", "page_count": "Page !current of !total", "lite_press_x_close": "press \x3ca href=\"#\" onclick=\"hideLightbox(); return FALSE;\"\x3e\x3ckbd\x3ex\x3c/kbd\x3e\x3c/a\x3e to close", "download_link_text": "", "enable_login": false, "enable_contact": false, "keys_close": "c x 27", "keys_previous": "p 37", "keys_next": "n 39", "keys_zoom": "z", "keys_play_pause": "32", "display_image_size": "original", "image_node_sizes": "()", "trigger_lightbox_classes": "", "trigger_lightbox_group_classes": "", "trigger_slideshow_classes": "", "trigger_lightframe_classes": "", "trigger_lightframe_group_classes": "", "custom_class_handler": 0, "custom_trigger_classes": "", "disable_for_gallery_lists": true, "disable_for_acidfree_gallery_lists": true, "enable_acidfree_videos": true, "slideshow_interval": 5000, "slideshow_automatic_start": true, "slideshow_automatic_exit": true, "show_play_pause": true, "pause_on_next_click": false, "pause_on_previous_click": true, "loop_slides": false, "iframe_width": 600, "iframe_height": 400, "iframe_border": 1, "enable_video": false }, "syntaxhighlighter": { "clipboard": "/sites/all/libraries/syntaxhighlighter/scripts/clipboard.swf" } });
52//--><!]]>
53</script>