SmartLiving.ru

Обсуждение проекта
 
Текущее время: Вс дек 17, 2017 3:05 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 35 ]  На страницу Пред.  1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения: Re: ESP8266 MegaD api
СообщениеДобавлено: Ср май 03, 2017 5:51 pm 
Не в сети

Зарегистрирован: Вт дек 01, 2015 1:01 pm
Сообщения: 27
Благодарил (а): 3 раз.
Поблагодарили: 0 раз.
я не специально...
с телефона так получилось)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ESP8266 MegaD api
СообщениеДобавлено: Ср май 03, 2017 5:57 pm 
Не в сети

Зарегистрирован: Вт дек 01, 2015 1:01 pm
Сообщения: 27
Благодарил (а): 3 раз.
Поблагодарили: 0 раз.
вот такая фигня... хотя вроде все правильно


Вложения:
screenshot4.png
screenshot4.png [ 84.49 КБ | Просмотров: 1500 ]
screenshot3.png
screenshot3.png [ 130.67 КБ | Просмотров: 1500 ]
screenshot2.png
screenshot2.png [ 122.96 КБ | Просмотров: 1500 ]
screenshot1.png
screenshot1.png [ 127.17 КБ | Просмотров: 1500 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ESP8266 MegaD api
СообщениеДобавлено: Ср май 03, 2017 8:04 pm 
Не в сети

Зарегистрирован: Ср май 03, 2017 7:41 pm
Сообщения: 92
Благодарил (а): 9 раз.
Поблагодарили: 9 раз.
Всем привет... Настроил ESP-8266 в Мажордомо с помощью добавления в базу данных файлов из этого сообщения: viewtopic.php?p=44899#p44899 К ESP подключил датчик BMP-280, в результате чего вижу данные с датчика в браузере:
Вложение:
1.jpg
1.jpg [ 11.12 КБ | Просмотров: 1492 ]
Данные привязываются в Мажордомо к свойствам, но при этом давление привязывается с префиксом "pres:":
Вложение:
2.jpg
2.jpg [ 40.51 КБ | Просмотров: 1492 ]
Подскажите как убрать этот префикс, чтобы привязывалось только числовое значение давления. Спасибо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ESP8266 MegaD api
СообщениеДобавлено: Чт май 04, 2017 4:11 pm 
Не в сети

Зарегистрирован: Чт авг 11, 2016 1:19 am
Сообщения: 41
Откуда: Киев
Благодарил (а): 2 раз.
Поблагодарили: 9 раз.
По-хорошему это нужно в модуле учитывать.

А самый просто вариант привязать это давление к методу, который сделает из него нужный вид и запишет в нужное место
отрезать лишнее можно так: substr("pres:747.80", -6, 3);

_________________
Домик Алисы - Orange Pi PC, DietPi | esp8266(wifi-iot)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ESP8266 MegaD api
СообщениеДобавлено: Чт май 04, 2017 7:04 pm 
Не в сети

Зарегистрирован: Ср май 03, 2017 7:41 pm
Сообщения: 92
Благодарил (а): 9 раз.
Поблагодарили: 9 раз.
Мне тоже пришло в голову, что в модуле что-то не так работает. Префикс температуры и влажности-то убираются. Видимо надо исправлять файл "readvalues.inc.php".
"temp:" и "hum:" в коде упоминаются, а "pres:" почему-то нет. Пробовал добавить строку: $tmp[0]=str_replace("pres:", "", $tmp[0]); Видимо надо как-то изменить ещё и конструкцию elseif ($type==3 && preg_match('/temp:([\d\.]+)\/hum:([\d\.]+)/', $states[$i], $m)) { но пока не пойму как именно

Код:
<?php

 $record
=SQLSelectOne("SELECT * FROM megaddevices WHERE ID='".(int)$id."'");


 $url='http://'.$record['IP'].'/'.$record['PASSWORD'].'/?cmd=all';
 if ($all) {
  $stateData=$all;
 } else {
  $stateData=getURL($url, 0);
 }

 //echo $stateData;exit;

 $states=explode(';', $stateData);

 $total=count($states);
 for($i=0;$i<$total;$i++) {
  

     $prop
=SQLSelectOne("SELECT * FROM megadproperties WHERE DEVICE_ID='".$record['ID']."' AND NUM='".$i."'");

     $type=(int)$prop['TYPE'];
     $mode=(int)$prop['MODE'];

     if (!$prop['ID']) {
      continue;
     }

     //echo $type.' '.$states[$i]."<br/>";
     $old_value=$prop['CURRENT_VALUE_STRING'];
     $old_value2=$prop['CURRENT_VALUE_STRING2'];

     if ($states[$i]!=='') {
      if ($type==0) {
       $tmp=explode('/', $states[$i]);
       if ($tmp[0]=='ON') {
        $prop['CURRENT_VALUE_STRING']=1;
       } else {
        $prop['CURRENT_VALUE_STRING']=0;
       }
       if (isset($tmp[1])) {
        $prop['CURRENT_VALUE_STRING2']=$tmp[1];
        $prop['COUNTER']=$tmp[1];
       }
      } elseif ($type==1) {

       if($mode==1){
        $prop['CURRENT_VALUE_STRING']=intval($states[$i]);
       } else {
         if ($states[$i]=='ON') {
          $prop['CURRENT_VALUE_STRING']=1;
         } else {
          $prop['CURRENT_VALUE_STRING']=0;
         }
       }


      } elseif ($type==&& preg_match('/temp:([\d\.]+)\/hum:([\d\.]+)/', $states[$i], $m)) {
       $prop['CURRENT_VALUE_STRING']=$m[1];
       $prop['CURRENT_VALUE_STRING2']=$m[2];
      } else {
       $tmp=explode('/', $states[$i]);
       $tmp[0]=str_replace("temp:", "", $tmp[0]);
       $tmp[0]=str_replace("hum:", "", $tmp[0]);
       $prop['CURRENT_VALUE_STRING']=$tmp[0];
       if (isset($tmp[1])) {
        $prop['CURRENT_VALUE_STRING2']=$tmp[1];
       }
      }
     }

     $prop['UPDATED']=date('Y-m-d H:i:s');
     SQLUpdate('megadproperties', $prop);

     //echo $stateData;exit;


    if ($prop['LINKED_OBJECT'] && $prop['LINKED_PROPERTY']) {
     if ($old_value!=$prop['CURRENT_VALUE_STRING'] || $prop['CURRENT_VALUE_STRING']!=gg($prop['LINKED_OBJECT'].'.'.$prop['LINKED_PROPERTY'])) {
      setGlobal($prop['LINKED_OBJECT'].'.'.$prop['LINKED_PROPERTY'], $prop['CURRENT_VALUE_STRING'], array($this->name=>'0'));
     }
    }

    if ($prop['LINKED_OBJECT'] && $prop['LINKED_METHOD'] && ($old_value!=$prop['CURRENT_VALUE_STRING'])) {
     $params=array();
     $params['TITLE']=$record['TITLE'];
     $params['VALUE']=$prop['CURRENT_VALUE_STRING'];
     $params['value']=$params['VALUE'];
     $params['port']=$i;
     $params['m']=$m; 
     callMethod
($prop['LINKED_OBJECT'].'.'.$prop['LINKED_METHOD'], $params);
    }

    if ($prop['LINKED_OBJECT2'] && $prop['LINKED_PROPERTY2']) {
     if ($old_value2!=$prop['CURRENT_VALUE_STRING2'] || $prop['CURRENT_VALUE_STRING2']!=gg($prop['LINKED_OBJECT2'].'.'.$prop['LINKED_PROPERTY2'])) {
      setGlobal($prop['LINKED_OBJECT2'].'.'.$prop['LINKED_PROPERTY2'], $prop['CURRENT_VALUE_STRING2'], array($this->name=>'0'));
     }
    }

    if ($prop['LINKED_OBJECT2'] && $prop['LINKED_METHOD2'] && ($old_value2!=$prop['CURRENT_VALUE_STRING2'])) {
     $params=array();
     $params['TITLE']=$record['TITLE'];
     $params['VALUE']=$prop['CURRENT_VALUE_STRING2'];
     $params['value']=$params['VALUE'];
     $params['port']=$i;
     $params['m']=$m; 
     callMethod
($prop['LINKED_OBJECT2'].'.'.$prop['LINKED_METHOD2'], $params);
    }


 }


//internal temp sensor data
$prop=SQLSelectOne("SELECT * FROM megadproperties WHERE DEVICE_ID='".$record['ID']."' AND TYPE='100'");
if ($prop['ID']) {
 $stateData=getURL('http://'.$record['IP'].'/'.$record['PASSWORD'].'/?tget=1', 0);
 $old_value=$prop['CURRENT_VALUE_STRING'];
 if ($stateData!='') {
  $prop['CURRENT_VALUE_STRING']=$stateData;
  $prop['UPDATED']=date('Y-m-d H:i:s');
  SQLUpdate('megadproperties', $prop);

    if ($prop['LINKED_OBJECT'] && $prop['LINKED_PROPERTY']) {
     if ($old_value!=$prop['CURRENT_VALUE_STRING'] || $prop['CURRENT_VALUE_STRING']!=gg($prop['LINKED_OBJECT'].'.'.$prop['LINKED_PROPERTY'])) {
      setGlobal($prop['LINKED_OBJECT'].'.'.$prop['LINKED_PROPERTY'], $prop['CURRENT_VALUE_STRING'], array($this->name=>'0'));
     }
    }

 }
}




Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ESP8266 MegaD api
СообщениеДобавлено: Вс май 07, 2017 12:02 am 
Не в сети

Зарегистрирован: Сб апр 15, 2017 7:17 am
Сообщения: 3
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
zoz писал(а):
Мне тоже пришло в голову, что в модуле что-то не так работает. Префикс температуры и влажности-то убираются. Видимо надо исправлять файл "readvalues.inc.php".
"temp:" и "hum:" в коде упоминаются, а "pres:" почему-то нет. Пробовал добавить строку: $tmp[0]=str_replace("pres:", "", $tmp[0]); Видимо надо как-то изменить ещё и конструкцию elseif ($type==3 && preg_match('/temp:([\d\.]+)\/hum:([\d\.]+)/', $states[$i], $m)) { но пока не пойму как именно


Такая же проблема с датчиком влажности, префикс влажности не убирается
viewtopic.php?f=5&t=2263&start=610#p52186


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ESP8266 MegaD api
СообщениеДобавлено: Вс май 07, 2017 12:24 am 
Не в сети

Зарегистрирован: Сб апр 15, 2017 7:17 am
Сообщения: 3
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
zoz писал(а):
По-хорошему это нужно в модуле учитывать.

А самый просто вариант привязать это давление к методу, который сделает из него нужный вид и запишет в нужное место
отрезать лишнее можно так: substr("pres:747.80", -6, 3);


Или
//$pres содержит строку "pres:747.80"
$pres=str_replace("pres:", "", $pres);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ESP8266 MegaD api
СообщениеДобавлено: Вс май 07, 2017 2:57 pm 
Не в сети

Зарегистрирован: Ср май 03, 2017 7:41 pm
Сообщения: 92
Благодарил (а): 9 раз.
Поблагодарили: 9 раз.
Удалось убрать префикс "pres:" таким образом:
Код:
      } elseif ($type==&& preg_match('/temp:([\d\.]+)\/pres:([\d\.]+)/', $states[$i], $m)) {
       $prop['CURRENT_VALUE_STRING']=$m[1];
       $prop['CURRENT_VALUE_STRING2']=$m[2];
      } else {
       $tmp=explode('/', $states[$i]);
       $tmp[0]=str_replace("temp:", "", $tmp[0]);
       $tmp[1]=str_replace("pres:", "", $tmp[1]);

Почему-то у температуры префикс появляется если прописать "$tmp[1]", а у давления при "$tmp[1]" он наоборот убирается.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ESP8266 MegaD api
СообщениеДобавлено: Пн июн 26, 2017 7:17 pm 
Не в сети

Зарегистрирован: Ср ноя 09, 2016 10:21 am
Сообщения: 84
Откуда: Липецкая обл.
Благодарил (а): 21 раз.
Поблагодарили: 2 раз.
Доброго времени всем читающим эту ветку.
Не получается подключить к серверу, пробовал и добавлять как написано viewtopic.php?p=44899#p44899 и в ручную вводить данные, ни чего. Обнаруживается , но конфигурацию не читает.
У меня возник вопрос , какую маску сети ставить в ESP8266, 32-ю или 24-ю.
На форуме http://ab-log.ru/forum/viewtopic.php?f=1&t=1130 в примерах 24 маска, а viewtopic.php?p=44899#p44899 в таблице забита 32 маска. Причем я поставил 32 в ESP8266 и она у меня потерялась. Долго не мог перепрошить.

Странно но в логе Apache присутствует запись : 26/Jun/2017:19:44:34 +0300] "GET /megad.php?mdid=3&all=OFF/0;temp:0.00;OFF;OFF;OFF;temp:0.00;ON/0;NC;NC;0 HTTP/1.1" 200
Почему она не отображается во вкладке.

_________________
Debian Linux 7,Linux 3.2.0-4-686-pae on i686
Intel(R) Celeron(R) CPU 1.70GHz, 1 cores


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ESP8266 MegaD api
СообщениеДобавлено: Вт июл 25, 2017 8:02 pm 
Не в сети

Зарегистрирован: Ср ноя 09, 2016 10:21 am
Сообщения: 84
Откуда: Липецкая обл.
Благодарил (а): 21 раз.
Поблагодарили: 2 раз.
С получением в MajorDoMo, модуль отображается.
Одна проблема к P9 - ADC MegaDEps подключаю датчик газа MQ4 , на самой меге показывает , а в браузере MD не 9-й отображается как Output и показания 0. По ссылке http://www.ab-log.ru/forum/viewtopic.php?f=1&t=1130 указывается -ADC - вход АЦП (аналого-цифровой преобразователь) может принимать значение в диапазоне от 0 до 1023. Функционал Act и Net
У кого как напишите.

_________________
Debian Linux 7,Linux 3.2.0-4-686-pae on i686
Intel(R) Celeron(R) CPU 1.70GHz, 1 cores


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 35 ]  На страницу Пред.  1, 2, 3, 4  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: PuRGen, vitkov и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB