Старты для чайников

Всё, что не подходит под вышеперечисленные разделы

Модератор: immortal

Alvares
Сообщения: 4
Зарегистрирован: Вс июл 21, 2013 9:32 am
Благодарил (а): 0
Поблагодарили: 0

Старты для чайников

Сообщение Alvares » Вс июл 21, 2013 9:41 am

Господа, добрый день. Комплект умная квартира - это замечательно. Но т.к. опыт в этом деле почти нулевой, может есть у кого какой то материал в виде мурзилок с графическими схемами, скринами, каментами и готовыми сценариями к системе? Самый элементарный контроль по свету как реализовать? Ну или чтоб система просто привет утром сказала ))) Что именно купить и как настроить. С малого начать бы.
kbnn
Сообщения: 29
Зарегистрирован: Пт авг 16, 2013 5:04 pm
Благодарил (а): 0
Поблагодарили: 5 раз

Re: Старты для чайников

Сообщение kbnn » Пт авг 16, 2013 5:30 pm

Поддерживаю. Уже час пытаюсь понять с чего начать и пока не понял.
Аватара пользователя
adzam
Сообщения: 602
Зарегистрирован: Сб дек 08, 2012 10:28 pm
Откуда: Кишинев
Благодарил (а): 20 раз
Поблагодарили: 138 раз

Re: Старты для чайников

Сообщение adzam » Пт авг 16, 2013 6:57 pm

kbnn писал(а):Поддерживаю. Уже час пытаюсь понять с чего начать и пока не понял.
Чтоб система сказала доброе утро ничего покупать не надо,
надо установить прогу и написать пару строк и все
Мои проекты здесь...https://connect.smartliving.ru/profile/41/blog213.htm
Если вам помогло какое-либо мое сообщение - не ленитесь пользоваться кнопкой СПАСИБО.
kbnn
Сообщения: 29
Зарегистрирован: Пт авг 16, 2013 5:04 pm
Благодарил (а): 0
Поблагодарили: 5 раз

Re: Старты для чайников

Сообщение kbnn » Пт авг 16, 2013 8:11 pm

Отлично!
Первые шаги:
1. Установить дистрибутив (в моем случае Windows версия).
2. Подключить IP камеру. КАК?
Vit
Сообщения: 867
Зарегистрирован: Вт янв 17, 2012 12:31 pm
Благодарил (а): 121 раз
Поблагодарили: 78 раз

Re: Старты для чайников

Сообщение Vit » Пт авг 16, 2013 8:21 pm

kbnn писал(а):Отлично!
Первые шаги:
1. Установить дистрибутив (в моем случае Windows версия).
2. Подключить IP камеру. КАК?
например как написано в данной статье

http://smartliving.ru/Main/ScNetCam
kbnn
Сообщения: 29
Зарегистрирован: Пт авг 16, 2013 5:04 pm
Благодарил (а): 0
Поблагодарили: 5 раз

Re: Старты для чайников

Сообщение kbnn » Сб авг 17, 2013 6:29 am

Спасибо, получилось.
kbnn
Сообщения: 29
Зарегистрирован: Пт авг 16, 2013 5:04 pm
Благодарил (а): 0
Поблагодарили: 5 раз

Re: Старты для чайников

Сообщение kbnn » Сб авг 17, 2013 6:47 am

Первые шаги:
1. Установить дистрибутив (в моем случае Windows версия).
2. Подключить IP камеру.
Инструкция: Перейти по ссылке "Панель управления" (правый верхний угол).
В вертикальном меню Панели управления выбрать "Домашние страницы"
Нажать кнопку "Новая страница"
Заполнить поля :
Название: Камеры
Приоритет: 50
Тип: HTML Code
КОД:

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

<div align="center">
<br><img src="http://192.168.1.101:85/videostream.cgi?user=Admin&pwd=pass&resolution=8&rate=6" width="340">
</div>
например как написано в данной статье
http://smartliving.ru/Main/ScNetCam
3. Исправить настройки часового пояса и языка можно по ссылке:
http://127.0.0.1/popup/first_start.html
заменив IP и порт на свой
4. Заставить работать Медиа
Для начала нужно создать медиа коллекцию:
MajorDoMo / Панель управления/Медиа -> Добавить новую коллекцию
Заполнить поля Название: и Путь:, Путь следует указывать сетевой, предварительно расшарив папку.
Пример:\\Comp\SmartHouse\WakeUP\
После этого проверить параметры Терминала:
MajorDoMo / Панель управления/Терминалы -> Редактировать
Хост (адрес): (*) = Свой IP
может проигрывать медиа-контент = Галка
Тип плэйера: VLC
Порт доступа к плэеру: Порт на котором работает MajorDoMo
После этого у меня заработал плэер.
5. Контроль за температурой в помещении.
5.1 Аппаратная часть
Для измерения температуры я использовал:
контроллер Arduino http://amperka.ru/collection/boards/product/arduino-uno
Ethernet Shield http://amperka.ru/collection/boards/pro ... net-shield
Датчик температуры DS18B20+ http://amperka.ru/collection/sensors/pr ... or-ds18b20
Изображение Изображение Изображение
Сразу замечу, что цены в данном магазины намного выше чем в Китае но зато доставка быстрее.
Схема подключения:
Изображение
В данном случаем я передаю в MDM только температуру в одной комнате.
Ниже представлен код для загрузки в Arduino:

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

/**
* Контроллер-сборщик данных (к проекту http://smartliving.ru/)
* Platform: Arduino UNO R3 + EthernetShield W5100
**/
#include <Ethernet.h>
#include <SPI.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <math.h>

// MAC-адрес нашего устройства
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 1, 250 };
byte subnet[] = { 255, 255, 255, 0 };
byte gateway[] = { 192, 168, 1, 1 };
byte dns_server[] = { 192, 168, 1, 1 };
// ip-адрес удалённого сервера
byte server[] = { 192, 168, 1, 200 };

EthernetClient rclient;

// Pin controller for connection data pin DS18S20
#define ONE_WIRE_BUS 2 // Digital 2 pin Arduino (куда подключен выход с шины датчиков DS18X20
#define TEMPERATURE_PRECISION 9

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);


// Для поиска
DeviceAddress Termometers;

// Инициализация начальных значений
float tempC;
int old_temperature1=0;
char buf[80];
char ipbuff[16];

// ------------------------------------------------------------------------------------------------

// Функция отправки HTTP-запроса на сервер
void sendHTTPRequest() {
  Serial.println("Begin send request");
  Serial.println(buf); 
  if (rclient.connect(server, 81)) { 
   Serial.println("OK"); 
   rclient.print(buf);
   rclient.println(" HTTP/1.0");
   rclient.print("Host: ");
   sprintf(ipbuff, "%u.%u.%u.%u", ip[0], ip[1], ip[2], ip[3]);
   rclient.println(ipbuff); // ip адрес нашего контроллера в текстовом виде
   rclient.print("Content-Type: text/html\n");
   rclient.println("Connection: close\n");
   delay(2000);
   rclient.stop();
  } else {
   Serial.println("FAILED");     
  }
}

/**************************************************************************************************
*/
void searchDevices() {
   Serial.println("Start search on 1-wire");
   int numberOfDevices = sensors.getDeviceCount();
   Serial.print("Searched 1-wire units: ");
   Serial.println(numberOfDevices);
  // sensors.begin();
   
   for(int i=0;i<numberOfDevices; i++) {
      if(sensors.getAddress(Termometers, i))
      {
          Serial.print("Found device ");
	  Serial.print(i, DEC);
          Serial.print(" with address: ");
          for (uint8_t i = 0; i < 8; i++) {
            if (Termometers[i] < 16) Serial.print("0");
              Serial.print(Termometers[i], HEX);
          }

          Serial.print("Resolution actually set to: ");
		Serial.print(sensors.getResolution(Termometers), DEC); 
          Serial.println();
          float tempC = sensors.getTempC(Termometers);
          Serial.print(tempC);
          Serial.println("C");
      
      } else {
            // not found
      }
    }
}

/**************************************************************************************************
*/

// ------------------------------------------------------------------------------------------------
void setup()
{
  // Для дебага будем выводить отладочные сообщения в консоль
  Serial.begin(9600);
  Serial.println("Start");

// Настройки 1-wire 
  sensors.begin(); // Инициализация шины 1-wire (для датчиков температуры)
  searchDevices();
 Ethernet.begin(mac, ip, dns_server, gateway, subnet); // Инициализируем Ethernet Shield
}

// ------------------------------------------------------------------------------------------------
void loop()
{

  // Перед каждым получением температуры надо ее запросить
  sensors.requestTemperatures();
  
  int valid_sensor=0;

  delay(1000); // задержка в 1 сек.  

  // TEMP SENSOR 1 --------------------------------------
  float current_temp1=0;
  sensors.getAddress(Termometers, 0);
  float tempC = sensors.getTempC(Termometers); // Получим температуру от датчика (или ошибку)
  if (tempC == DEVICE_DISCONNECTED) { 
    // Устройство отсоеденнено
    Serial.println("Termometer1 is DEVICE_DISCONNECTED");
    // TODO Послать бы на сервер сигнал о том, что датчит не отвечает
    
  } else {
    // Устройство отдало реальное значение температуры (или осталось старое)
    Serial.print("T1: ");
    current_temp1 = tempC; // получаем температуру
    Serial.println(current_temp1);
    if ((old_temperature1!=(int)current_temp1) && (current_temp1<79) && (current_temp1>5)) {
      int temp1 = (current_temp1 - (int)current_temp1) * 100; // выделяем дробную часть
      sprintf(buf, "GET /objects/?object=SensorZal&op=m&m=tempChanged&t=%0d.%d", (int)current_temp1, abs(temp1));   
      sendHTTPRequest();
    }
  old_temperature1=(int)current_temp1;
  }
}
Следует обратить внимание на строчки:
Тут следует указать IP на котором работает MDM:

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

// ip-адрес удалённого сервера
byte server[] = { 192, 168, 1, 200 };
Тут указан порт на котором работает MDM:

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

 if (rclient.connect(server, 81)) { 
Следующая строка содержит информацию для изменяемого объекта:

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

 sprintf(buf, "GET /objects/?object=SensorZal&op=m&m=tempChanged&t=%0d.%d", (int)current_temp1, abs(temp1));   
Объект=SensorZal
метод=tempChanged
параметр=t
Данные параметры должны соответствовать заведенным в MDM (см. ниже)

5.2 Серверная часть
В MDM выбираем: Панель управления->Объекты
в Дереве объектов выбрать класс tempSensors
проверить наличие у него:
- свойства temp (для этого свойства нужно включить хранение 7 дней (впрочем количество дней по желанию))
Далее как на рисунке, данные свойства просто должны быть, они ни чем не заполняются.
Безымянный1.png
Безымянный1.png (14.64 КБ) 23600 просмотров
- Проверить и если нет то создать Метод tempChanged
Код Метода tempChanged

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

//$params['t']
 $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['t'])) {
 return;
}


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

if ($t>110) return;

$this->setProperty('temp',$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.'.Temperature',$t);
}
- Создать объект SensorZal
Безымянный2.png
Безымянный2.png (10.39 КБ) 23600 просмотров
Обратите внимание что: SensorZal и tempChanged это те объекты, которые упоминались в Аппаратной части (см. выше).
После этого можно строить график температуры воспользовавшись Визардом: http://smartliving.ru/Main/WizardGraphics
Вот и все.
Последний раз редактировалось kbnn Ср сен 18, 2013 10:20 pm, всего редактировалось 15 раз.
За это сообщение автора kbnn поблагодарили (всего 5):
annton (Вс окт 12, 2014 9:21 pm) • tsember (Пт фев 06, 2015 10:33 pm) • Supermin (Вс фев 08, 2015 12:33 am) • Sturgeon (Пт дек 04, 2015 2:05 pm) • fid (Вт авг 30, 2016 7:03 pm)
Рейтинг: 5.81%
Vit
Сообщения: 867
Зарегистрирован: Вт янв 17, 2012 12:31 pm
Благодарил (а): 121 раз
Поблагодарили: 78 раз

Re: Старты для чайников

Сообщение Vit » Сб авг 17, 2013 4:37 pm

Хорошо, когда все получается!!!))
kbnn
Сообщения: 29
Зарегистрирован: Пт авг 16, 2013 5:04 pm
Благодарил (а): 0
Поблагодарили: 5 раз

Re: Старты для чайников

Сообщение kbnn » Пн авг 19, 2013 8:28 am

Вот еще вопрос. Хочется сделать мониторинг тока в квартире. Понятно, что потребуется Ардуино но с этим проблем нет. Не могу найти Датчик тока. Причем хотелось бы без контактный. Нашел вот такой
http://dx.com/p/ta17-03-octopus-non-inv ... ick-165262 но он только на 10А вроде маловато.
Может кто то знает что нить подобное но посильнее.
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Старты для чайников

Сообщение sergejey » Пн авг 19, 2013 12:08 pm

kbnn писал(а):Вот еще вопрос. Хочется сделать мониторинг тока в квартире. Понятно, что потребуется Ардуино но с этим проблем нет. Не могу найти Датчик тока. Причем хотелось бы без контактный. Нашел вот такой
http://dx.com/p/ta17-03-octopus-non-inv ... ick-165262 но он только на 10А вроде маловато.
Может кто то знает что нить подобное но посильнее.
У меня точно такой же уже куплен, но времени никак нет его прикрутить и попробовать. А почему он на 10А? Он ведь безконтактный и от большого тока ему не должно быть плохо.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Ответить