MT8057 - Детектор углекислого газа

Подключение исполнительных устройств, датчиков, контроллеров.

Модератор: immortal

Ответить
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

MT8057 - Детектор углекислого газа

Сообщение sergejey » Вт фев 09, 2016 6:15 pm

Изображение

https://geektimes.ru/company/medgadgets/blog/249750/

Купил в офис детектор, который показывает уровень углекислого газа и температуру. При подключении к компьютеру можно считывать данные по USB с помощью приложения. Написал небольшой сценарий (co2level), который раз в минуту берёт последнее показание из лога программы и сохраняет в систему. В общем интересный прибор, в будущем на основе показаний планирую принудительно запускать вытяжку, а пока система просто напоминает о необходимости проветривания.
Код сценария co2levelПоказать

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

$path='c:/app/co2/'.date('Y/m/d').'.CSV'; //путь к логу (программа у меня в c:\app\co2\)
if (file_exists($path)) {
  $data=LoadFile($path);
  $lines=explode("\n",$data);
  $latest=$lines[count($lines)-2];
  $tmp=explode(',',$latest);
  if ($tmp[2]>0) {
   echo " Temp: ".$tmp[2];
   callMethod('TempSensor03.tempChanged',array('t'=>$tmp[2]));
  }
  if ($tmp[1]>0) {
   echo " CO2: ".$tmp[1];  
   callMethod('co2.co2Changed',array('c'=>$tmp[1]));
  }
  echo "<br/>".$latest;
} else {
  echo "File $path not found";
}
setTimeout("co2",'runScript("co2level");',30); 
За это сообщение автора sergejey поблагодарил:
Albert (Вс апр 29, 2018 10:10 am)
Рейтинг: 1.16%

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Silowar
Сообщения: 85
Зарегистрирован: Пт фев 06, 2015 10:19 am
Благодарил (а): 16 раз
Поблагодарили: 9 раз

Re: MT8057 - Детектор углекислого газа

Сообщение Silowar » Чт авг 18, 2016 5:53 pm

Сергей, хотел поинтересоваться по поводу этого датчика, хотим купить такой же себе в офис.
Как он показал себя в работе?
Стоит его покупать или нет?
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: MT8057 - Детектор углекислого газа

Сообщение sergejey » Пт авг 19, 2016 11:37 am

Silowar писал(а):Сергей, хотел поинтересоваться по поводу этого датчика, хотим купить такой же себе в офис.
Как он показал себя в работе?
Стоит его покупать или нет?
Показал хорошо, уже несколько месяцев выполняет свою функцию -- на офисном дашборде выводит уровень:
Изображение

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Silowar
Сообщения: 85
Зарегистрирован: Пт фев 06, 2015 10:19 am
Благодарил (а): 16 раз
Поблагодарили: 9 раз

Re: MT8057 - Детектор углекислого газа

Сообщение Silowar » Пт авг 19, 2016 4:18 pm

Сергей,
Сегодня купил такой датчик в офис.
Хотел спросить, А как выглядит у Вас метод co2Changed?

И еще я не понял как правильно запустить сценарий.
Меня смутила вот эта строчка в конце сценария:
setTimeout("co2",'runScript("co2level");',30)
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: MT8057 - Детектор углекислого газа

Сообщение sergejey » Вт авг 23, 2016 1:26 pm

Silowar писал(а):Сергей,
Сегодня купил такой датчик в офис.
Хотел спросить, А как выглядит у Вас метод co2Changed?
СпойлерПоказать

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

//$params['c']
 $this->setProperty("updated",time());
 $this->setProperty("updatedTime",date("H:i",time()));
 $this->setProperty("alive",1); 
 
$ot=$this->object_title;
$alive_timeout=(int)$this->getProperty("aliveTimeOut");
if (!$alive_timeout) {
 $alive_timeout=30*60;
}
clearTimeOut($ot."_alive");
setTimeOut($ot."_alive","sg('".$ot.".alive',0);",$alive_timeout); 

if (!isset($params['c'])) {
 return;
}


$old_temp=$this->getProperty('co2');
$t=round($params['c'],1);

$this->setProperty('co2',$t);
if ($params['uptime']) {
 $this->setProperty('uptime',$params['uptime']);
}

if ($t>$old_temp) {
 $d=1;
} elseif ($t<$old_temp) {
 $d=-1;
} else {
 $d=0;
}
$this->setProperty('direction',$d);

$linked_room=$this->getProperty("LinkedRoom");
if ($linked_room) {
 setGlobal($linked_room.'.CO2',$t);
} 
И еще я не понял как правильно запустить сценарий.
Меня смутила вот эта строчка в конце сценария:
setTimeout("co2",'runScript("co2level");',30)
поставьте его на периодическую запись раз в сутки, а эта строчка как раз для того, чтобы сценарий сам себя запускал через 30 секунд.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Silowar
Сообщения: 85
Зарегистрирован: Пт фев 06, 2015 10:19 am
Благодарил (а): 16 раз
Поблагодарили: 9 раз

Re: MT8057 - Детектор углекислого газа

Сообщение Silowar » Вт авг 23, 2016 5:20 pm

Сергей, спасибо.

Хотел еще уточнить по поводу запуска раз в сутки, а в этом случае не будут дублироваться выполнение сценария?
Вроде как, если поставить выполнение на раз в сутки, то получается, что каждые сутки будет запускаться еще один таймер на выполнение скрипта?
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: MT8057 - Детектор углекислого газа

Сообщение sergejey » Ср авг 24, 2016 2:49 pm

Silowar писал(а):Сергей, спасибо.

Хотел еще уточнить по поводу запуска раз в сутки, а в этом случае не будут дублироваться выполнение сценария?
Вроде как, если поставить выполнение на раз в сутки, то получается, что каждые сутки будет запускаться еще один таймер на выполнение скрипта?
Не совсем так -- таймеры с одним именем не дублируются. Запуск таймера с таким же именем отменяет другие экземпляры того же таймера, так что распараллеливания не будет.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
VirBy
Сообщения: 14
Зарегистрирован: Вт мар 28, 2017 10:53 am
Благодарил (а): 3 раза
Поблагодарили: 0

Re: MT8057 - Детектор углекислого газа

Сообщение VirBy » Ср мар 29, 2017 1:05 am

Отличный датчик.
Имею такой же в распоряжении.

Но не могу сообразить как это можно использовать в Вашей системе на rpi3.
Очень хотелось бы получить график.
Подскажете?
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: MT8057 - Детектор углекислого газа

Сообщение sergejey » Ср мар 29, 2017 9:41 am

VirBy писал(а):Отличный датчик.
Имею такой же в распоряжении.

Но не могу сообразить как это можно использовать в Вашей системе на rpi3.
Очень хотелось бы получить график.
Подскажете?
К Linux-системе я его не подключал... попробуйте поискать в интернете код для считывания данных с этого устройства под Linux. Скорее всего, кто-то уже разобрался )

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
VirBy
Сообщения: 14
Зарегистрирован: Вт мар 28, 2017 10:53 am
Благодарил (а): 3 раза
Поблагодарили: 0

Re: MT8057 - Детектор углекислого газа

Сообщение VirBy » Сб апр 01, 2017 10:53 am

sergejey писал(а): Скорее всего, кто-то уже разобрался )
Как использовать в мд не нашёл. А искать я умею...
Пришлось взять непонятный мне скрипт на питоне(ни разу не программер) на гитхабе, который в цикле опрашивает эти данные и рисует графики rrd. Там, кстати, судя по всему ещё и нечто похожее на атмосферное давление. Но так как я хотел графики посредством мажордомо и из его интерфейса - втупую обрезал цикл в конце и заставил выплевывать в консоль только значение СО2. Ну а дальше уже через установку глобальной переменной. Хотелось бы упростить это скрипт и убрать ошмётки от rrd, но это я уже не осилил...
UPD: Разобрался и вроде выкинул все лишнее. Теперь в вывод только CO2 или t.
Ответить