Дайте куск рабочего скетча для управления устройством с сайта Народный Мониторинг (narodmon.ru)

uncle_grin
Offline
Зарегистрирован: 26.04.2015

Собственно, вопрос в теме. Нужно управлять устройством, не важно каким, через НародМон. Передачу показаний на сайт отработал, и через TCP и по http (post) отработал успешно работаю два устрйства, передают устойчиво. Еслинтересно скетчи скину, но это не суть важно. Не хватает мозгов на то чтобы передавть команды на устройтво. Мне бы что-нибудь РЕАЛЬНО РАБОТАЮЩЕЕ, передающее на устройство что угодно (слово, циру, иную команду) желательно с использованием TCP, а я уже под себя перепишу

Да, забыл сказать, для arduino. Если будет код большой то поставлю мегу или дуо, это вообще не принципиально

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

uncle_grin пишет:

Собственно, вопрос в теме. 

Вы уверены, что текст: "Дайте куск рабочего скетча для управления устройством с сайта Народный Мониторинг (narodmon.ru)" является вопросом?

По-моему, это требование. Если бы там было слово "пожалуйста", то можно было воспринять это как просьбу, а так - это требование или приказ, но никак не вопрос.

uncle_grin пишет:

Не хватает мозгов 

Инвалид? Тяжёлая травма головы? Почему не хватает-то?

uncle_grin пишет:

Мне бы что-нибудь РЕАЛЬНО РАБОТАЮЩЕЕ, .... , а я уже под себя перепишу

Держите реально работающее. Там немного под себя дополните и всё будет окей.

void setup(void) {}
void loop(void) {}

 

 

uncle_grin
Offline
Зарегистрирован: 26.04.2015

Евгений, как бы повежлевее сказать - идите на хер. Игнорирую

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017
uncle_grin
Offline
Зарегистрирован: 26.04.2015

Клапауций, спасибо, но везде только отправка на сайт, а передачи с сайта я не нашел . Примеры из "букварей" пробовал, но то ли с народмона ничего не приходит, то ли онсессию закрывает раньше чем нуно. Я не пойму. Буду  дома скину пример свой. Но по АПИ  вконце пакета ставятся две решетки ##. После чегосервак закрывает соединене. Пробовал читать до ## - считывает пустое

Извинитн за грамотность - с телеыона пишу, кнопки мелкие

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

uncle_grin, как бы повежливее сказать, идите сами.

И, кстати, где благодарность за работающий код, который я Вам дал?

Logik
Offline
Зарегистрирован: 05.08.2014

.. пока счет 1:1, но схватка только началась, надеюсь увидим захватывающую борьбу а не договорную ничю.

uncle_grin
Offline
Зарегистрирован: 26.04.2015

Не увидите, я к троллингу устойчив.

Мне нужен ответ на вопрос а не отправка к гуглу  (в гугле я в первую очередь искал, не нашел, к сожалению) или хамство Евгения.


  void send_narodmon() {
        // Подключаемся к серверу "Народный мониторинг"
        if(client.connect(server, port)) {
          Serial.println(F("Send data to Narodmon.ru"));
          // Начинаем передачу данных
          // адрес_устройства_в_проекте, имя_устройства, GPS широта, GPS долгота
          client.print(F("#тут был мак адрес#тут было название станции\n"));
          // Температура снаружи
          client.print(F("#T1#"));
          client.print(OutTemperature);        
          client.print(F("#Температура\n"));
          // Влажность снаружи
          client.print(F("#H1#"));
          client.print(OutHumidity);
          client.print(F("#Влажность\n"));
          // Давление
          client.print(F("#P1#"));
          client.print(Pressure);
          client.print(F("#Давление\n"));
          // Радиация
          client.print(F("#R1#"));
          client.print(Radiation);
          client.print(F("#Радиация\n"));
          // Освещенность
          client.print(F("#L1#"));
          client.print(Light);
          client.print(F("#Освещенность\n"));
          // Влажность внутри
          client.print(F("#H2#"));
          client.print(InHumidity);
          client.print(F("#Влажность внутри\n"));
          // Температура внутри
          client.print("#T2#");
          client.print(OutTemperature);        
          client.print(F("#Температура внутри\n"));
          // client.print(F("##"));
          Serial.println(F("End sending data to Narodmon.ru"));
          
          // recive data
         
          // while (client.available()) {
          Serial.println(F("Recieve from Narodmon.ru"));  
          char line = client.read(); // если что-то в ответ будет - все в Serial
          Serial.print(line); //     }
          Serial.println(F("End recieving from Narodmon.ru"));  
          client.print(F("##")); // признак окончания работы
          }
          
          // Даем время отработать Ethernet модулю и разрываем соединение
          delay(250);
          client.stop();
          Serial.println(F("Client stop!"));
        }
  // end send_narodmon

Вот эта функция, она не чистовая, с элементами для отладки - принятое должна слать в консоль (41-46 строки). Данные на народмон передает, с народмона не принимает.

 

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Инструкции для слабаков?

===============================

This API is designed to transfer from the web service narodmon.ru load control commands, as well as to change the settings

of the monitoring device.

Command transmission occurs immediately after receiving the next packet of sensor readings from the monitoring device in

the already open socket, which allows controlling devices with gray IPs behind NAT routers.

For the TCP,GET,POST protocols instead of the typical OK and with no errors, the narodmon.ru server transmits

commands starting with the # symbol and dividing the commands by the ";" without spaces in the chronological order

to avoid overflow of reception buffer on weak devices to 5 for 1 session.

Example TCP,GET,POST: #reboot=1 or #pwm4=200;interval=300

For MQTT protocol the command is sent momentarily due to the fact that the device always supports active connection to the

server (MQTT broker) using PUBLISH with QoS=1, i.e. with the expectation of acknowledgment of the command reception - PUBACK.

Example for MQTT: User/Device/output12=1 or User/Device/system/restart=1

Commands for execution can be placed in the queue by its owner in the Sensors \ Configuring Sensors \ send the command

to the device or by clicking on the graphic switch for on/off sensors in the active "Control Mode" for this device.

If the device is not communicating with the server within an hour after sending a command from the site, then

this command is removed from the queue for execution.

At the moment, Device Management API is supported on narodmon.ru and in mobile applications for

Android 2017 и WinPhone / WinMobile.

The full list of supported commands should be found in the device manual or learn from its developer!

 

uncle_grin
Offline
Зарегистрирован: 26.04.2015

wdrakula пишет:

Инструкции для слабаков?

===============================

This API is designed to transfer from the web service narodmon.ru load control commands, as well as to change the settings

of the monitoring device.

Command transmission occurs immediately after receiving the next packet of sensor readings from the monitoring device in

the already open socket, which allows controlling devices with gray IPs behind NAT routers.

For the TCP,GET,POST protocols instead of the typical OK and with no errors, the narodmon.ru server transmits

commands starting with the # symbol and dividing the commands by the ";" without spaces in the chronological order

to avoid overflow of reception buffer on weak devices to 5 for 1 session.

Example TCP,GET,POST: #reboot=1 or #pwm4=200;interval=300

For MQTT protocol the command is sent momentarily due to the fact that the device always supports active connection to the

server (MQTT broker) using PUBLISH with QoS=1, i.e. with the expectation of acknowledgment of the command reception - PUBACK.

Example for MQTT: User/Device/output12=1 or User/Device/system/restart=1

Commands for execution can be placed in the queue by its owner in the Sensors \ Configuring Sensors \ send the command

to the device or by clicking on the graphic switch for on/off sensors in the active "Control Mode" for this device.

If the device is not communicating with the server within an hour after sending a command from the site, then

this command is removed from the queue for execution.

At the moment, Device Management API is supported on narodmon.ru and in mobile applications for

Android 2017 и WinPhone / WinMobile.

The full list of supported commands should be found in the device manual or learn from its developer!

 

Вы можете отвечать нормально, без издевок?

Да я вам могу и на русском привести АПИ:

Данное API предназначено для передачи с вебсервиса narodmon.ru команд управления нагрузкой, а также для изменения настроек устройства мониторинга.

Передача команд происходит сразу после получения от устройства мониторинга очередного пакета показаний датчиков в уже открый сокет, что позволяет управлять устройствами с "серыми" IP находящимися за роутерами NAT.

Для протоколов TCP,GET,POST вместо типичного OK и при отстутствии ошибок, сервер narodmon.ru передает команды, начиная с символа # и разделяя команды через ";" без пробелов в хронологическом порядке во избежание переполнения буфера приема на слабых устройствах до 5 за 1 сеанс.

Пример TCP,GET,POST: #reboot=1 или #pwm4=200;interval=300

Для протокола MQTT отправка команды происходит сиюминутно в связи с тем, что устройство всегда поддерживает активным соединение с сервером (брокером MQTT) при помощи PUBLISH с QoS=1, т.е. с ожиданием подтверждения приема команды - PUBACK.

Пример для MQTT: User/Device/output12=1 или User/Device/system/restart=1

Команды на исполнение могут быть помещены в очередь его владельцем в Датчики \ Настройка датчиков \ отправить команду на устр-во или же по клику на графическом переключателе для датчиков "вкл / выкл" и активном "Режиме управления" устройством.

Если устройство в течение часа после отправки команды с сайта так и не вышло на связь с сервером, то данная команда удаляется из очереди на исполнение.

На данный момент API управления устройствами поддерживается на сайте narodmon.ru и в мобильных приложениях для Андроид 2017 и WinPhone / WinMobile.

Список поддерживаемых команд следует искать в инструкции к устройству или узнать у его разработчика!

 

________________________

Почему у меня не принимает команды? Что я сделал не так?

По идее 41-46 строки должны считать команду

 

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Хамство - это заходить и требовать "Дайте кусок рабочего скетча" даже не сказав "пожалуйста", как будто ты сержант, а здесь твоё отделение. Думаю, хрен тебе кто что даст. Христос учил "Просите и дано будет вам". Для тех кто в танке, могу добавить "Требуйте и будете посланы нахер". Учись просить, чтобы что-то получать.

uncle_grin
Offline
Зарегистрирован: 26.04.2015

Да что не так? Отсосать надо было что-ли?

Попросил кусок скетча, в чем проблема-то? Знаете - помогите, не знаете - пройдите мимо. Все предельно просто. Не денег же прошу?

 

Вы, например, знаете что делать или нет?

 

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

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

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

uncle_grin пишет:

Вы, например, знаете что делать или нет?

Тебе? Знаю - идти нахер.

uncle_grin
Offline
Зарегистрирован: 26.04.2015

Значит не знаете, пришли поболтать вместо одиночного онанизма.

Спасибо. Игнор

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

uncle_grin пишет:

Да что не так? Отсосать надо было что-ли?

Попросил кусок скетча, в чем проблема-то? Знаете - помогите, не знаете - пройдите мимо. Все предельно просто. Не денег же прошу?

 

Вы, например, знаете что делать или нет?

 

Ты, мудло, советы папе своему давай, если тебя мама с ним познакомила. Пошел отсюда вон!

uncle_grin
Offline
Зарегистрирован: 26.04.2015

Придурки какие-то бешеные... Вам женщины что-ли не дают, или не похмелились? Я советы не даю, а прошу :)

Если вы не соображаете или не хотите помочь - просто пройдите мимо, как я прохожу мимо большинства тем

Пока что вижу, что большинство с этим не сталкивались и в моем вопросе помочь не может

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Не "не сможет", а "не хочет". Хамство не лучший способ добиться положительного результата.

uncle_grin
Offline
Зарегистрирован: 26.04.2015

Все верно! Прочитайте второе сообщение в теме, так нормальные люди разговаривают?

okta
Offline
Зарегистрирован: 10.01.2015

Нам достаточно первого сообщения, все остальное производная от него.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

uncle_grin пишет:

Прочитайте второе сообщение в теме, так нормальные люди разговаривают?

Приношу свои искренние извинения. Действительно, я выбрал неправильный тон в разговоре с Вами, т.к. не знал Вас. С такими как Вы нормальные люди разговаривают как в посте №13

PatriotRR
Offline
Зарегистрирован: 17.12.2017
/*  val - строка вида

    #1234568787E00
    #TG1#+25.00
    #HG1#16.43
    ##
  */

    wdt_reset(); // сбросить WachDog
...

    // узнать длину строки
    int lenStr = val.length() + 1;

    // Отправить запрос
    SerialGSM.println("AT+TCPSEND=0," + String(lenStr));

    // Дождаться приглашение
    while (!SerialGSM.find(">"));

    // Отправить данные
    SerialGSM.println(val);   

    // ждать ответ (если что - перезагрузка по "собаке")
    while (!SerialGSM.find("OK"));

    delay (1000); val = ""; // очистить переменную для строки

    // считать из буфера
    while (SerialGSM.available()) {
      delay(20);
      val += char(SerialGSM.read());
    }

    /* Ответы narodmon
       OK
       +TCPSEND:0,76
       +TCPRECV:0,9,#sauto=0
       +TCPCLOSE:0,Link Closed

       или
       OK
       +TCPSEND:0,76
       +TCPRECV:0,3,OK
       +TCPCLOSE:0,Link Closed

       или, в случае одной из неудач
       OK
       +TCPSEND:0,76
       +TCPRECV:0,19,INTERVAL 178s < 5m
    */

    // если ответ содержит команду...
    if (val.indexOf("#sauto=1") > 0 ) 
    {
        // Реагировать на полученную команду

    }
...

 

uncle_grin
Offline
Зарегистрирован: 26.04.2015

Спасибо!

uncle_grin
Offline
Зарегистрирован: 26.04.2015

Всё давно было решено и забыто:

вместо 43 строки

    while (client.available()) {
          line = line + char(client.read());
        }

и дальше шел разбор переменной line и реакция железки.

 

Но некоторые забывают что доброе слово и кошке приятно.