Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > CyberWrt

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.12.2014, 21:00   #1
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9820
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Модуль "SmartPoint"

Модуль "SmartPoint"
Создан SergeJey, он же является основателем программы управления умным домом "MajorDoMo"

Перед установкой модуля установите модуль "Драйвер USB-Serial" для Вашей модели Arduino


Запускаем и настраиваем модуль:
Указываем ID или генерируем его соответствующей кнопкой,
Указываем порт Arduino и скорость обмена.
Регистрируем устройство в разделе SLP своего проффайла на http://connect.smartliving.ru и настраиваем правила и интерфейс узла автоматики.

Интерфейс настроек:
Нажмите на изображение для увеличения
Название: jp7QqI.png
Просмотров: 286
Размер:	57.8 Кб
ID:	2064
Admin вне форума   Ответить с цитированием
Старый 03.12.2014, 21:19   #2
SergeJey
Junior Member
 
Регистрация: 16.08.2012
Сообщений: 23
Вес репутации: 0
SergeJey is an unknown quantity at this point
По умолчанию Re: Модуль "SmartPoint"

Спасибо за публикацию модуля!

В двух словах расскажу, для чего предназначен этот модуль. С помощью данного модуля и подключенного Arduino-контроллера роутер превращается в так называемый "Универсальный узел автоматики". Контроллер в данной схеме служит для взаимодействия с внешним миром -- он выдаёт информацию от датчиков в консоль и может принимать команды на исполнение. Роутер, в свою очередь, загружает из интернета набор правил, предназначеных для обработки входящих данных от контроллера. Правила загружаются при запуске роутера и работают без необходимости постоянного соединения с интернетом. В случае невозможности загрузить набор правил, используется последний загруженный.

Более детальное описание концепции можно найти в статье Универсальный узел автоматики

Я лично применяю данную систему для создания различных шлюзов и передачи данных в систему MajorDoMo, но вообще модуль можно использовать совершенно автономно -- правила обработки данных базовые, но многим можно успешно пользоваться (переменные, условные вызовы действий, отправка http-запросов, отправка команд контроллеру, таймеры и многое другое). Так же с установкой модуля пользователь получает несложное HTTP API для взаимодействия с подключенным контроллером.

Кроме того, имеется возможность создавать человеко-дружественный интерфейс для просмотра поступающей информации, а так же для инициализации каких-либо команд.

Важный момент -- в модуле есть так называемая "Облачная синхронизация", включив которую можно получить доступ к управлению устройством без дополнительной настройки сети (проброса портов и т.п.)

Пример базового скечта для Arduino, который выдаёт случайным образом данные и может принимать команды:

Код:
#include <EEPROM.h> //Needed to access the eeprom read write functions

#define PIN_LED (13) // INDICATOR

unsigned int unique_device_id = 0;
unsigned int packet_received_id = 0;

unsigned int uptime = 0;
unsigned int old_uptime = 0;

String inData;


struct SEND_DATA_STRUCTURE {
  //put your variable definitions here for the data you want to send
  //THIS MUST BE EXACTLY THE SAME ON THE OTHER ARDUINO
  //Struct can'e be bigger then 26 bytes for VirtualWire version
  unsigned int device_id;
  unsigned int destination_id;  
  unsigned int packet_id;
  byte command;
  int data;
};

SEND_DATA_STRUCTURE mydata;

//This function will write a 2 byte integer to the eeprom at the specified address and address + 1
void EEPROMWriteInt(int p_address, unsigned int p_value)
      {
      byte lowByte = ((p_value >> 0) & 0xFF);
      byte highByte = ((p_value >> 8) & 0xFF);

      EEPROM.write(p_address, lowByte);
      EEPROM.write(p_address + 1, highByte);
      }

//This function will read a 2 byte integer from the eeprom at the specified address and address + 1
unsigned int EEPROMReadInt(int p_address)
      {
      byte lowByte = EEPROM.read(p_address);
      byte highByte = EEPROM.read(p_address + 1);

      return ((lowByte << 0) & 0xFF) + ((highByte << 8) & 0xFF00);
      }


void setup()
{
    pinMode(PIN_LED,OUTPUT);  
    Serial.begin(9600);

  // Device ID
  randomSeed(analogRead(0));
  Serial.print("Getting Device ID... "); 
  unique_device_id=EEPROMReadInt(0);
  if (unique_device_id<10000 || unique_device_id>60000 || unique_device_id==26807) {
   Serial.print("N/A, updating... "); 
   unique_device_id=random(10000, 60000);
   EEPROMWriteInt(0, unique_device_id);
  }
  Serial.println(unique_device_id);    

}

void blinking(int count) {
 for(int i=0;i<count;i++) {
  digitalWrite(PIN_LED, HIGH); 
  delay(1000);
  digitalWrite(PIN_LED, LOW);
  delay(1000);
 }
}

void loop() {
  uptime=round(millis()/1000);
  if (uptime!=old_uptime) {
    Serial.print("Uptime: ");
    Serial.println(uptime);
    old_uptime=uptime;
    if (random(0,100)>70) {
      Serial.print("DATA RECEIVED: ");
      Serial.println(uptime);
    }
  }
  if (Serial.available()) {
    char c=Serial.read();
    if (c == '\n' || c == ';')
        {
          Serial.println(inData);
          if (inData.equals("blink")) {
           Serial.println("BLINKING!");
           blinking(3);
          } else {
            Serial.print("Unknown command: ");
            Serial.println(inData);
          }
          inData="";
          Serial.flush();
        } else {
          inData += (c);
        }    
  }  
  delay(100);
}

Последний раз редактировалось SergeJey; 03.12.2014 в 21:23.
SergeJey вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 16:31. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика