mysensors

skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1753 раза
Контактная информация:

Re: mysensors

Сообщение skysilver » Вт дек 30, 2014 4:18 pm

Ivan писал(а):Кому интересно, нарисую схему и скетч.
Поддерживаю. Делитесь наработками сразу. :)
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Ivan
Сообщения: 1473
Зарегистрирован: Сб окт 12, 2013 11:03 pm
Благодарил (а): 49 раз
Поблагодарили: 327 раз

Re: mysensors

Сообщение Ivan » Вт дек 30, 2014 10:57 pm

Где взял схему от дребезга не помню Но было что-то типа как здесь http://www.niva-faq.msk.ru/tehnika/elek ... /cop_3.gif

То есть подтягивающий резистор на питание, и параллельно кнопке конденсатор.

Ардуина Pro Mini 3.3 - с удаленными светодиодами и регулятором.
Засунул все в корпус PowerBank - описывал выше.

Как привязывать к МД и реализовать запрос у МД предыдущего статуса, описывал тоже выше

Скетч прилогаю

PS. Наверно по каждому устройству нужно писать статью, с полным описанием, куда чего
Вложения
GazCounter.zip
(2.76 КБ) 259 скачиваний
За это сообщение автора Ivan поблагодарили (всего 2):
triada13 (Вт дек 30, 2014 11:05 pm) • mirsum (Сб май 02, 2015 4:41 pm)
Рейтинг: 2.33%
Linux, Raspberry PI, MySensors
Connect: http://connect.smartliving.ru/profile/53
Мои проекты: http://smartliving.ru/profile/4
ngservis
Сообщения: 92
Зарегистрирован: Ср ноя 19, 2014 4:15 pm
Откуда: Альметьевск
Благодарил (а): 7 раз
Поблагодарили: 4 раза

Re: mysensors

Сообщение ngservis » Пн янв 05, 2015 7:50 pm

Сколько ищу и не могу найти как запустить mgtt_daemon.php , без него никак.
Rasberry PI + arduino mega 2560
AlexeyKr
Сообщения: 28
Зарегистрирован: Сб мар 30, 2013 7:34 am
Благодарил (а): 3 раза
Поблагодарили: 4 раза

Re: mysensors

Сообщение AlexeyKr » Пн янв 05, 2015 8:26 pm

Под windows проверьте наличие файла mqtt.bat по адресу \_majordomo\htdocs\scripts , а рядом и mqtt_daemon.php
Запускаем вручную или добавьте команды в start.bat
Ivan
Сообщения: 1473
Зарегистрирован: Сб окт 12, 2013 11:03 pm
Благодарил (а): 49 раз
Поблагодарили: 327 раз

Re: mysensors

Сообщение Ivan » Пн янв 05, 2015 9:20 pm

Если последняя версия. То mqtt с основным циклом запускается. Только настроить нужно опции сервера, на закладке mqtt
За это сообщение автора Ivan поблагодарил:
ngservis (Вт янв 06, 2015 8:40 am)
Рейтинг: 1.16%
Linux, Raspberry PI, MySensors
Connect: http://connect.smartliving.ru/profile/53
Мои проекты: http://smartliving.ru/profile/4
ngservis
Сообщения: 92
Зарегистрирован: Ср ноя 19, 2014 4:15 pm
Откуда: Альметьевск
Благодарил (а): 7 раз
Поблагодарили: 4 раза

Re: mysensors

Сообщение ngservis » Вт янв 06, 2015 8:40 am

Буду разбираться!
Rasberry PI + arduino mega 2560
ngservis
Сообщения: 92
Зарегистрирован: Ср ноя 19, 2014 4:15 pm
Откуда: Альметьевск
Благодарил (а): 7 раз
Поблагодарили: 4 раза

Re: mysensors

Сообщение ngservis » Пт янв 09, 2015 4:54 pm

Переименовал mqtt_daemon.php в cycle_mqtt_daemon.php для автозапуска. Часть циклов закрывается после запуска, в том числе и mqtt . Интересно для чего это реализовано ?
Rasberry PI + arduino mega 2560
Molostov
Сообщения: 50
Зарегистрирован: Пт янв 17, 2014 1:47 am
Откуда: Карпинск, Свердловская область
Благодарил (а): 135 раз
Поблагодарили: 12 раз

Re: mysensors

Сообщение Molostov » Пн янв 12, 2015 2:48 am

Приветствую всех. Тоже пытаюсь построить что-нибудь умное. Хочу попросить помощи, если это возможно. На сайте mysensors есть светодиодный диммер, но он для одного цвета, может быть есть люди которые смогут его переписать для rgb ленты, т.е. 3 каналов. Понятно, что нужно объявить в коде 3 V_Dimmer и это проходит, но отчёт о состоянии приходит обратно всегда для одного канала. Управлять этим диммером пытаюсь через MqTT гейт.
Во вложении попытка переписать код, но работает это не совсем корректно (Этот код также взят с форума искомого сайта)
СпойлерПоказать

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

/***
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * version 2 as published by the Free Software Foundation.
 * 
 * DESCRIPTION
 * This sketch provides a Dimmable LED Light using PWM and based Henrik Ekblad 
 * <henrik.ekblad@gmail.com> Vera Arduino Sensor project.  
 * Developed by Bruce Lacey, inspired by Hek's MySensor's example sketches.
 * 
 * The circuit uses a MOSFET for Pulse-Wave-Modulation to dim the attached LED or LED strip.  
 * The MOSFET Gate pin is connected to Arduino pin 3 (LED_PIN), the MOSFET Drain pin is connected
 * to the LED negative terminal and the MOSFET Source pin is connected to ground.  
 *
 * This sketch is extensible to support more than one MOSFET/PWM dimmer per circuit.
 *
 * REVISION HISTORY
 * Version 1.0 - February 15, 2014 - Bruce Lacey
 * Version 1.1 - August 13, 2014 - Converted to 1.4 (hek) 
 *
 ***/
#define SN "MultiDimmableLED"
#define SV "1.2"

#include <MySensor.h> 
#include <SPI.h>

#define LED_BLUE 5      // Arduino pin attached to MOSFET Gate pin
#define LED_RED 6
#define LED_GREEN 7



#define FADE_DELAY 10  // Delay in ms for each percentage fade up/down (10ms = 1s full-range dim)

MySensor gw(9,10);

static int currentLevel_B = 0;
static int currentLevel_R = 0;
static int currentLevel_G = 0;


// Current dim level...
MyMessage dimmerMsg_B(1, V_DIMMER);
MyMessage lightMsg_B(1, V_LIGHT);

MyMessage dimmerMsg_R(2, V_DIMMER);
MyMessage lightMsg_R(2, V_LIGHT);

MyMessage dimmerMsg_G(3, V_DIMMER);
MyMessage lightMsg_G(3, V_LIGHT);

/***
 * Dimmable LED initialization method
 */
void setup()  
{ 
  Serial.println( SN ); 
  gw.begin( incomingMessage_B );
  gw.begin( incomingMessage_R );
  gw.begin( incomingMessage_G );
  // Register the LED Dimmable Light with the gateway
  gw.present( 1, S_DIMMER );
  gw.present( 2, S_DIMMER );
  gw.present( 3, S_DIMMER );

  gw.sendSketchInfo(SN, SV);
  // Pull the gateway's current dim level - restore light level upon sendor node power-up
  gw.request( 1, V_DIMMER );
  gw.request( 2, V_DIMMER );
  gw.request( 3, V_DIMMER );
  
}

/***
 *  Dimmable LED main processing loop 
 */
void loop() 
{
  gw.process();
}

void incomingMessage_B(const MyMessage &message) {
  if (message.type == V_LIGHT || message.type == V_DIMMER) {
    
    //  Retrieve the power or dim level from the incoming request message
    int requestedLevel_B = atoi( message.data );
    
    // Adjust incoming level if this is a V_LIGHT variable update [0 == off, 1 == on]
    requestedLevel_B *= ( message.type == V_LIGHT ? 100 : 1 );
    
    // Clip incoming level to valid range of 0 to 100
    requestedLevel_B = requestedLevel_B > 100 ? 100 : requestedLevel_B;
    requestedLevel_B = requestedLevel_B < 0   ? 0   : requestedLevel_B;

    fadeToLevel_B( requestedLevel_B );
    
    // Inform the gateway of the current DimmableLED's SwitchPower1 and LoadLevelStatus value...
    gw.send(lightMsg_B.set(currentLevel_B > 0 ? 1 : 0));

    // hek comment: Is this really nessesary?
    gw.send(dimmerMsg_B.set(currentLevel_B));
  }
}
      
 void incomingMessage_R(const MyMessage &message) {
  if (message.type == V_LIGHT || message.type == V_DIMMER) {
    
    //  Retrieve the power or dim level from the incoming request message
    int requestedLevel_R = atoi( message.data );
    
    // Adjust incoming level if this is a V_LIGHT variable update [0 == off, 1 == on]
    requestedLevel_R *= ( message.type == V_LIGHT ? 100 : 1 );
    
    // Clip incoming level to valid range of 0 to 100
    requestedLevel_R = requestedLevel_R > 100 ? 100 : requestedLevel_R;
    requestedLevel_R = requestedLevel_R < 0   ? 0   : requestedLevel_R;
   
    fadeToLevel_R( requestedLevel_R );
    
    // Inform the gateway of the current DimmableLED's SwitchPower1 and LoadLevelStatus value...
    gw.send(lightMsg_R.set(currentLevel_R > 0 ? 1 : 0));

    // hek comment: Is this really nessesary?
    gw.send(dimmerMsg_R.set(currentLevel_R));

  }
 } 
 void incomingMessage_G(const MyMessage &message) {
  if (message.type == V_LIGHT || message.type == V_DIMMER) {
    
    //  Retrieve the power or dim level from the incoming request message
    int requestedLevel_G = atoi( message.data );
    
    // Adjust incoming level if this is a V_LIGHT variable update [0 == off, 1 == on]
    requestedLevel_G *= ( message.type == V_LIGHT ? 100 : 1 );
    
    // Clip incoming level to valid range of 0 to 100
    requestedLevel_G = requestedLevel_G > 100 ? 100 : requestedLevel_G;
    requestedLevel_G = requestedLevel_G < 0   ? 0   : requestedLevel_G;
   
    fadeToLevel_G( requestedLevel_G );
    
    // Inform the gateway of the current DimmableLED's SwitchPower1 and LoadLevelStatus value...
    gw.send(lightMsg_G.set(currentLevel_G > 0 ? 1 : 0));

    // hek comment: Is this really nessesary?
    gw.send(dimmerMsg_G.set(currentLevel_G));

  }
 } 

/***
 *  This method provides a graceful fade up/down effect
 */
void fadeToLevel_B( int toLevel_B ) {

  int delta = ( toLevel_B - currentLevel_B ) < 0 ? -1 : 1;
  
  while ( currentLevel_B != toLevel_B ) {
    currentLevel_B += delta;
    analogWrite( LED_BLUE, (int)(currentLevel_B / 100. * 255) );
    delay( FADE_DELAY );
  }
}

/***
 *  This method provides a graceful fade up/down effect
 */
void fadeToLevel_R( int toLevel_R ) {

  int delta = ( toLevel_R - currentLevel_R ) < 0 ? -1 : 1;
  
  while ( currentLevel_R != toLevel_R ) {
    currentLevel_R += delta;
    analogWrite( LED_RED, (int) (currentLevel_R / 100. * 255) );
    delay( FADE_DELAY );
  }
}

void fadeToLevel_G( int toLevel_G ) {

  int delta = ( toLevel_G - currentLevel_G ) < 0 ? -1 : 1;
  
  while ( currentLevel_G != toLevel_G ) {
    currentLevel_G += delta;
    analogWrite( LED_GREEN, (int)(currentLevel_G / 100. * 255) );
    delay( FADE_DELAY );
  }
}


Может быть также получится этот заодно и оптимизировать.
Ivan
Сообщения: 1473
Зарегистрирован: Сб окт 12, 2013 11:03 pm
Благодарил (а): 49 раз
Поблагодарили: 327 раз

Re: mysensors

Сообщение Ivan » Пн янв 12, 2015 8:28 am

Есть 2 способа
1. Сделать каждый цвет как переменную VAR1 VAR2 VAR3. И отсылать отдельно
2. Передавать в одной цифре. Каждый бай отдельно цвет. Упаковать и распаковать думаю проблем не составит

Укажите диапазон 1 цвета
Linux, Raspberry PI, MySensors
Connect: http://connect.smartliving.ru/profile/53
Мои проекты: http://smartliving.ru/profile/4
Molostov
Сообщения: 50
Зарегистрирован: Пт янв 17, 2014 1:47 am
Откуда: Карпинск, Свердловская область
Благодарил (а): 135 раз
Поблагодарили: 12 раз

Re: mysensors

Сообщение Molostov » Пн янв 12, 2015 11:16 am

Наверное будет удобно диапазон от 0 до 255 сделать.
Ответить