ESP8266 MegaD api
Модератор: immortal
-
- Сообщения: 27
- Зарегистрирован: Вт дек 01, 2015 1:01 pm
- Благодарил (а): 3 раза
- Поблагодарили: 0
- Контактная информация:
-
- Сообщения: 27
- Зарегистрирован: Вт дек 01, 2015 1:01 pm
- Благодарил (а): 3 раза
- Поблагодарили: 0
- Контактная информация:
Re: ESP8266 MegaD api
вот такая фигня... хотя вроде все правильно
- Вложения
-
- screenshot4.png (84.49 КБ) 7745 просмотров
-
- screenshot3.png (130.67 КБ) 7745 просмотров
-
- screenshot2.png (122.96 КБ) 7745 просмотров
-
- screenshot1.png (127.17 КБ) 7745 просмотров
-
- Сообщения: 682
- Зарегистрирован: Ср май 03, 2017 7:41 pm
- Благодарил (а): 111 раз
- Поблагодарили: 107 раз
Re: ESP8266 MegaD api
Всем привет... Настроил ESP-8266 в Мажордомо с помощью добавления в базу данных файлов из этого сообщения: viewtopic.php?p=44899#p44899 К ESP подключил датчик BMP-280, в результате чего вижу данные с датчика в браузере: Данные привязываются в Мажордомо к свойствам, но при этом давление привязывается с префиксом "pres:": Подскажите как убрать этот префикс, чтобы привязывалось только числовое значение давления. Спасибо.
-
- Сообщения: 74
- Зарегистрирован: Чт авг 11, 2016 1:19 am
- Откуда: Киев
- Благодарил (а): 6 раз
- Поблагодарили: 41 раз
Re: ESP8266 MegaD api
По-хорошему это нужно в модуле учитывать.
А самый просто вариант привязать это давление к методу, который сделает из него нужный вид и запишет в нужное место
отрезать лишнее можно так: substr("pres:747.80", -6, 3);
А самый просто вариант привязать это давление к методу, который сделает из него нужный вид и запишет в нужное место
отрезать лишнее можно так: substr("pres:747.80", -6, 3);
Домик Алисы - Orange Pi PC, DietPi | +BroadlinkRM+esp8266(espEasy)+zigbee(sonoff,Aqara)
-
- Сообщения: 682
- Зарегистрирован: Ср май 03, 2017 7:41 pm
- Благодарил (а): 111 раз
- Поблагодарили: 107 раз
Re: ESP8266 MegaD api
Мне тоже пришло в голову, что в модуле что-то не так работает. Префикс температуры и влажности-то убираются. Видимо надо исправлять файл "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)) { но пока не пойму как именно
"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==3 && 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'));
}
}
}
}
-
- Сообщения: 3
- Зарегистрирован: Сб апр 15, 2017 7:17 am
- Благодарил (а): 0
- Поблагодарили: 1 раз
Re: ESP8266 MegaD api
Такая же проблема с датчиком влажности, префикс влажности не убирается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
-
- Сообщения: 3
- Зарегистрирован: Сб апр 15, 2017 7:17 am
- Благодарил (а): 0
- Поблагодарили: 1 раз
Re: ESP8266 MegaD api
Илиzoz писал(а):По-хорошему это нужно в модуле учитывать.
А самый просто вариант привязать это давление к методу, который сделает из него нужный вид и запишет в нужное место
отрезать лишнее можно так: substr("pres:747.80", -6, 3);
//$pres содержит строку "pres:747.80"
$pres=str_replace("pres:", "", $pres);
-
- Сообщения: 682
- Зарегистрирован: Ср май 03, 2017 7:41 pm
- Благодарил (а): 111 раз
- Поблагодарили: 107 раз
Re: ESP8266 MegaD api
Удалось убрать префикс "pres:" таким образом:
Почему-то у температуры префикс появляется если прописать "$tmp[1]", а у давления при "$tmp[1]" он наоборот убирается.
Код: Выделить всё
} elseif ($type==3 && 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]);
-
- Сообщения: 87
- Зарегистрирован: Ср ноя 09, 2016 10:21 am
- Откуда: Липецкая обл.
- Благодарил (а): 22 раза
- Поблагодарили: 2 раза
Re: ESP8266 MegaD api
Доброго времени всем читающим эту ветку.
Не получается подключить к серверу, пробовал и добавлять как написано 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
Почему она не отображается во вкладке.
Не получается подключить к серверу, пробовал и добавлять как написано 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
Intel(R) Celeron(R) CPU 1.70GHz, 1 cores
-
- Сообщения: 87
- Зарегистрирован: Ср ноя 09, 2016 10:21 am
- Откуда: Липецкая обл.
- Благодарил (а): 22 раза
- Поблагодарили: 2 раза
Re: ESP8266 MegaD api
С получением в 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
У кого как напишите.
Одна проблема к 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
Intel(R) Celeron(R) CPU 1.70GHz, 1 cores