передача данных от majordomo к arduino mega server

Модератор: Alex

Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: передача данных от majordomo к arduino mega server

Сообщение nick7zmail » Пн дек 25, 2017 10:08 am

Передавайте по mqtt)) протокол же 2хсторонний...и url запросами сеть не грузит.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: передача данных от majordomo к arduino mega server

Сообщение serghei » Пн дек 25, 2017 10:24 am

Вам нужен вывод в МД или в браузер ? Судя по коду DHT появится через 5 минут. Для теста измените
СпойлерПоказать

Код: Выделить всё

    #ifdef DHT_FEATURE
      if (cycle5m) {// подставьте 20s
        dhtWorks();
      }
    #endif   
Вывод в браузер закомментирован. Я уже много раз объяснял , как это сделать. Собственно , там осталось только добавить вывод в HTML.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Wisdom
Сообщения: 15
Зарегистрирован: Пн дек 25, 2017 8:29 am
Благодарил (а): 2 раза
Поблагодарили: 2 раза

Re: передача данных от majordomo к arduino mega server

Сообщение Wisdom » Пн дек 25, 2017 4:35 pm

serghei писал(а):Вам нужен вывод в МД или в браузер ? Судя по коду DHT появится через 5 минут. Для теста измените
СпойлерПоказать

Код: Выделить всё

    #ifdef DHT_FEATURE
      if (cycle5m) {// подставьте 20s
        dhtWorks();
      }
    #endif    
Вывод в браузер закомментирован. Я уже много раз объяснял , как это сделать. Собственно , там осталось только добавить вывод в HTML.

Мне хотелось бы понять, работают у меня датчики или нет, а кроме как посмотреть в ком порт я не знаю как. Скопировал файл dtemp к себе и вроде заработало. Подключил дисплей 16*2, пока вывожу показания туда, все DHT работает 2 шт, DS выводится один, подсоединю еще один DS и буду пробовать, пока не совсем понял как вывести больше одного. С таймером вроде разобрался, спасибо.
Пока за несколько дней осилил 100 с лишним страниц форума ) закомментируемая строка вывода в HTML не попадалась, буду дальше копать. По аналогии с инструкцией подключения температуры пока не получилось вывести.
Wisdom
Сообщения: 15
Зарегистрирован: Пн дек 25, 2017 8:29 am
Благодарил (а): 2 раза
Поблагодарили: 2 раза

Re: передача данных от majordomo к arduino mega server

Сообщение Wisdom » Пн дек 25, 2017 4:36 pm

nick7zmail писал(а):Передавайте по mqtt)) протокол же 2хсторонний...и url запросами сеть не грузит.
MQTT обмен насколько я понял с MajorDomo?
Буду пробовать, Спасибо за ответ )
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: передача данных от majordomo к arduino mega server

Сообщение serghei » Пн дек 25, 2017 4:56 pm

+2. Если в сериале данные от DHT есть , дальше будет проще. Посмотри код сервера Ажакс
СпойлерПоказать

Код: Выделить всё

  //  #ifdef DHT_FEATURE
 //    for (byte i = 0; i < MAX_DHT_SENSORS; i++) {
 //       s += makeTag(dobjSens[i], "",       String(current_dht[i]));
 //       s += makeTag(dobjSens[i], "Health", String(dtempSensorHealth[i]));
 //     }
//      s += makeTag("mdTempHealth", "", String(tempModulHealth));     
//    #endif     
Раскомментируй все строки. Первый makeTag передает в браузер названия датчиков , а string значения температур. После этого в XML таблице должны появиться Ваши данные датчиков.
Дальше в скрипте надо дописать условия приема этих данных. У меня влажность передается так
СпойлерПоказать

Код: Выделить всё

           // Humidity DHT
           
           
          try {
            var humDht = this.responseXML.getElementsByTagName('humDHT')[0].childNodes[0].nodeValue;
          } catch (err) {
              humDht = "3";
            }

          try {
            var humDht_ = Math.round(humDht, 1);
            document.getElementById("hum-srv").innerHTML = humDht_ + "%";
            document.getElementById("hum-srv-hide").innerHTML = humDht_ + "%";
          } catch (err) { }
          
          
                     // Temperature DHT
           
           
          try {
            var tempDht = this.responseXML.getElementsByTagName('tempDHT')[0].childNodes[0].nodeValue;
          } catch (err) {
              tempDht = "4";
            }

          try {
            var tempDht_ = Math.round(tempDht, 1);
            document.getElementById("t-srv").innerHTML = tempDht_ + "°";
            document.getElementById("t-srv-hide").innerHTML = tempDht_ + "°";
          } catch (err) { } 
Вам надо подставить свои названия градусников var humDht = this.responseXML.getElementsByTagName('dht1_temp') .

И так для каждого значения. Ну и потом вставить в даш панель. Сложно - пока не поймете этот механизм. Сначала попробуйте с далласом.
За это сообщение автора serghei поблагодарил:
Wisdom (Ср дек 27, 2017 10:56 am)
Рейтинг: 1.16%
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Wisdom
Сообщения: 15
Зарегистрирован: Пн дек 25, 2017 8:29 am
Благодарил (а): 2 раза
Поблагодарили: 2 раза

Re: передача данных от majordomo к arduino mega server

Сообщение Wisdom » Ср дек 27, 2017 10:01 am

serghei писал(а):+2. Если в сериале данные от DHT есть , дальше будет проще. Посмотри код сервера Ажакс
СпойлерПоказать

Код: Выделить всё

  //  #ifdef DHT_FEATURE
 //    for (byte i = 0; i < MAX_DHT_SENSORS; i++) {
 //       s += makeTag(dobjSens[i], "",       String(current_dht[i]));
 //       s += makeTag(dobjSens[i], "Health", String(dtempSensorHealth[i]));
 //     }
//      s += makeTag("mdTempHealth", "", String(tempModulHealth));     
//    #endif                                   
Раскомментируй все строки. Первый makeTag передает в браузер названия датчиков , а string значения температур. После этого в XML таблице должны появиться Ваши данные датчиков.
Дальше в скрипте надо дописать условия приема этих данных. У меня влажность передается так
СпойлерПоказать

Код: Выделить всё

           // Humidity DHT
           
           
          try {
            var humDht = this.responseXML.getElementsByTagName('humDHT')[0].childNodes[0].nodeValue;
          } catch (err) {
              humDht = "3";
            }

          try {
            var humDht_ = Math.round(humDht, 1);
            document.getElementById("hum-srv").innerHTML = humDht_ + "%";
            document.getElementById("hum-srv-hide").innerHTML = humDht_ + "%";
          } catch (err) { }
          
          
                     // Temperature DHT
           
           
          try {
            var tempDht = this.responseXML.getElementsByTagName('tempDHT')[0].childNodes[0].nodeValue;
          } catch (err) {
              tempDht = "4";
            }

          try {
            var tempDht_ = Math.round(tempDht, 1);
            document.getElementById("t-srv").innerHTML = tempDht_ + "°";
            document.getElementById("t-srv-hide").innerHTML = tempDht_ + "°";
          } catch (err) { } 
Вам надо подставить свои названия градусников var humDht = this.responseXML.getElementsByTagName('dht1_temp') .

И так для каждого значения. Ну и потом вставить в даш панель. Сложно - пока не поймете этот механизм. Сначала попробуйте с далласом.
А, закомментирован код vladragor'a а я думал у алекса. С далласом получилось, Спасибо! Правда пришлось поковыряться с алексовским "dash-voltage"
СпойлерПоказать
script_temp.jpg
script_temp.jpg (88.37 КБ) 5740 просмотров
Вот только с DHT нет. Если раскомментировать код
СпойлерПоказать
Kod_DHT_Ajax.jpg
Kod_DHT_Ajax.jpg (219.66 КБ) 5740 просмотров
то не работает dash панель
СпойлерПоказать
Web_DHT_Ajax.jpg
Web_DHT_Ajax.jpg (75.75 КБ) 5740 просмотров
а если закомментировать
СпойлерПоказать
Kod_DHT_no_Ajax.jpg
Kod_DHT_no_Ajax.jpg (217.71 КБ) 5740 просмотров
, то все работает как надо (((
СпойлерПоказать
Web_no_DHT_Ajax.jpg
Web_no_DHT_Ajax.jpg (112.26 КБ) 5740 просмотров
Все датчики работают корректно, что видно и по ком порту
СпойлерПоказать
com_DHT.jpg
com_DHT.jpg (146.86 КБ) 5740 просмотров
и на LCD экране. Спасибо за советы, будем разбираться дальше
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: передача данных от majordomo к arduino mega server

Сообщение serghei » Ср дек 27, 2017 10:30 am

+3. Давайте разбираться. Вот только конкретно этот код смогу проверить только вечером . Начало есть. Дальше будет проще. Сперва проверьте на странице , на что матер......))) что не нравиться браузеру. Какие ошибки он показывает ?
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Wisdom
Сообщения: 15
Зарегистрирован: Пн дек 25, 2017 8:29 am
Благодарил (а): 2 раза
Поблагодарили: 2 раза

Re: передача данных от majordomo к arduino mega server

Сообщение Wisdom » Ср дек 27, 2017 11:03 am

serghei писал(а):+3. Давайте разбираться. Вот только конкретно этот код смогу проверить только вечером . Начало есть. Дальше будет проще. Сперва проверьте на странице , на что матер......))) что не нравиться браузеру. Какие ошибки он показывает ?
Ни на что не ругается. Сайт работает. странички переключатся. страница примеры ajax работает. индикаторы шевелятся. темы переключаются. Но даш панель "пустая", как на скрине выше (похоже что подгружается только HTML и причем болванка даш панели меняется при смене тем, но данных нет)
Причем она не совсем пустая, на ней живой только график сети :o
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: передача данных от majordomo к arduino mega server

Сообщение serghei » Ср дек 27, 2017 11:09 am

Если код правильно вставлен, то в XML таблице должны появиться два DHT градусника. Еще шаманить надо в dash.js

PS я в коммандировку........ Остальное ночью )
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: передача данных от majordomo к arduino mega server

Сообщение serghei » Ср дек 27, 2017 11:49 pm

Странно... Ажакс на может собрать страницу.Я с таким сталкивался.
СпойлерПоказать
Error.jpg
Error.jpg (111.65 КБ) 5669 просмотров
У меня плата от RobotDyn с 8266 на борту.
Последние NAN- это ответ DHT. их нет в наличие. Давай пойдем другим путем. Просто выведем показания на страницу, Как Full2.htm
Сейчас в слепую попробую набросать.
====================
А , ну конечно! Такой фокус с массивом DHT не проходит , потому что там передаются два параметра в одном пакете. Замени в сервере ажакс
СпойлерПоказать

Код: Выделить всё

    #ifdef DHT_FEATURE

    s += makeTag("dht1_temp", "",     String(dhta.readTemperature()));
    s += makeTag("dht1_hum", "",     String(dhta.readHumidity()));
    
    s += makeTag("dht2_temp", "",     String(dhtb.readTemperature()));
    s += makeTag("dht2_hum", "",     String(dhtb.readHumidity()));

    s += makeTag("dht3_temp", "",     String(dhtc.readTemperature()));
    s += makeTag("dht3_hum", "",     String(dhtc.readHumidity()));

    s += makeTag("dht4_temp", "",     String(dhtd.readTemperature()));
    s += makeTag("dht4_hum", "",     String(dhtd.readHumidity()));

    // for (byte i = 0; i < MAX_DHT_SENSORS; i++) {
      //  s += makeTag(dobjSens[i], "",       String(current_dht[i]));
       // s += makeTag(dobjSens[i], "Health", String(dtempSensorHealth[i]));
     // }
     // s += makeTag("mdTempHealth", "", String(tempModulHealth));     
    #endif  
И появится даш-панель. И дальше очень внимательно смотри за названиями! первый в makeTag название датчика как в скетче , потом две кавычки , потом String реальная переменная!!!!
Ну а в dash.js разберёшься?
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Ответить