MySensors для новичков

maloicds
Сообщения: 25
Зарегистрирован: Пт май 24, 2013 5:10 pm
Благодарил (а): 0
Поблагодарили: 5 раз

Re: MySensors для новичков

Сообщение maloicds » Чт апр 13, 2017 11:25 pm

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

int8_t sleep(int interrupt, int mode, unsigned long ms=0);
int8_t smartSleep(int interrupt, int mode, unsigned long ms=0);

interrupt - Interrupt that should trigger the wakeup.
mode - RISING, FALLING, CHANGE
ms - Number of milliseconds to sleep (or 0 to sleep forever). 
Roman_13j
Сообщения: 32
Зарегистрирован: Пт мар 25, 2016 11:34 pm
Благодарил (а): 5 раз
Поблагодарили: 0

Re: MySensors для новичков

Сообщение Roman_13j » Пт апр 14, 2017 6:27 pm

А не могли б вы еще подсказать, как лучше измерять заряд батареи, через резисторы или встроенными средствами. Кто может поделится кодом скетча, для вычисления заряда без резисторов?
maloicds
Сообщения: 25
Зарегистрирован: Пт май 24, 2013 5:10 pm
Благодарил (а): 0
Поблагодарили: 5 раз

Re: MySensors для новичков

Сообщение maloicds » Пт апр 14, 2017 6:34 pm

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

long readVcc () 
{
 long result;
 ADMUX = _BV (REFS0) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1);
 delay(2);
 ADCSRA |= _BV( ADSC );
 while (bit_is_set(ADCSRA,ADSC));
 result = ADCL;
 result |= ADCH<<8;
 result = 1126400L / result;
 return result;
}
За это сообщение автора maloicds поблагодарил:
Roman_13j (Пт апр 14, 2017 9:21 pm)
Рейтинг: 1.16%
Roman_13j
Сообщения: 32
Зарегистрирован: Пт мар 25, 2016 11:34 pm
Благодарил (а): 5 раз
Поблагодарили: 0

Re: MySensors для новичков

Сообщение Roman_13j » Пт апр 14, 2017 9:20 pm

Спасибо) Буду разбираться
Roman_13j
Сообщения: 32
Зарегистрирован: Пт мар 25, 2016 11:34 pm
Благодарил (а): 5 раз
Поблагодарили: 0

Re: MySensors для новичков

Сообщение Roman_13j » Пт апр 14, 2017 9:37 pm

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

Re: MySensors для новичков

Сообщение Ivan » Пт апр 14, 2017 10:18 pm

Все есть по русски на mysensors.jad.ru

Отправлено с моего SM-G7102 через Tapatalk
Linux, Raspberry PI, MySensors
Connect: http://connect.smartliving.ru/profile/53
Мои проекты: http://smartliving.ru/profile/4
maloicds
Сообщения: 25
Зарегистрирован: Пт май 24, 2013 5:10 pm
Благодарил (а): 0
Поблагодарили: 5 раз

Re: MySensors для новичков

Сообщение maloicds » Пт апр 14, 2017 10:32 pm

ds18b20Показать
#define MY_DEBUG
#define MY_RADIO_NRF24
#define MY_RF24_CE_PIN 7
#define MY_RF24_CS_PIN 8
#define MY_NODE_ID 1
#define CHILD_ID_BATT 1
#define CHILD_ID_TEMP 2
#define ONE_WIRE_BUS 9 // Pin where dallase sensor is connected
#include <SPI.h>
#include <MySensors.h>
#include <DallasTemperature.h>
#include <OneWire.h>
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
unsigned long SLEEP_TIME = 240000;
MyMessage msgVolt(CHILD_ID_BATT, V_VOLTAGE);
MyMessage msgTemp(CHILD_ID_TEMP, V_TEMP);
//-----------------------------------------------------------------
void before()
{
sensors.begin();
}
//-----------------------------------------------------------------
void setup()
{
sensors.setWaitForConversion(false);
Serial.println("Start");
}
//---------------------------------------------------------------
void presentation()
{
sendSketchInfo("Hall sensor", "1.0");
present(CHILD_ID_BATT, S_MULTIMETER, "Battery");
present(CHILD_ID_TEMP, S_TEMP, "Temp");
}
//-------------------------------------------------------------
void loop()
{
flash ();
sensors.requestTemperatures();
sleep(100);
float temperature = sensors.getTempCByIndex(0);
send(msgTemp.set(temperature,1));
send(msgVolt.set(readVcc()));
sleep(SLEEP_TIME);
}
//---------------------------------------------------------------
long readVcc ()
{
long result;
ADMUX = _BV (REFS0) | _BV (MUX3) | _BV (MUX2) | _BV (MUX1);
delay(2);
ADCSRA |= _BV( ADSC );
while (bit_is_set(ADCSRA,ADSC));
result = ADCL;
result |= ADCH<<8;
result = 1126400L / result;
return result;
}
//-----------------------------------------------------------------
void flash ()
{
pinMode(5,OUTPUT);
digitalWrite (5, HIGH);
sleep (5);
digitalWrite (5, LOW);
pinMode (5, INPUT);
}
Аватара пользователя
lanket
Сообщения: 1168
Зарегистрирован: Вт окт 14, 2014 11:27 pm
Откуда: Санкт-Петербург
Благодарил (а): 260 раз
Поблагодарили: 163 раза

Re: MySensors для новичков

Сообщение lanket » Пн апр 17, 2017 10:14 am

Ivan писал(а):Все есть по русски на mysensors.jad.ru

Отправлено с моего SM-G7102 через Tapatalk
Спасибо большое за ресурс.
Хотел перейти на подписи с шифрованием но было куча вопросов. У Вас на сайте все достаточно подробно описано. Буду экспрементировать.

На странице http://mysensors.jad.ru/about/signing/ ошибочку заметил. Один из примеров содержит HTML код вместо скетча для ардуино.

Отправлено с моего Redmi Note 3 через Tapatalk
Разработка голосового асистента для Мажордомо по любому ключевому слову.
:arrow: Обсужение
:arrow: gitHub 2й версии терминала
:arrow: GitHub модуля для МД
gitHub сырого модуля 2й версии
:arrow: Connect
Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.
Sas
Сообщения: 207
Зарегистрирован: Вт июл 12, 2016 6:16 pm
Благодарил (а): 2 раза
Поблагодарили: 14 раз

Re: MySensors для новичков

Сообщение Sas » Пн апр 17, 2017 7:51 pm

Может кто подскажет.
Есть приемник 433 и nrf.
Приемник висит на 2 ноге и принимает данные от датчиков Орегон и отправляет их в гейт через nrf. Работает через орегоновские либы и mysensors.
Но тут я купил временно радио звонок на 433 и решил привязать к этому же приемнику, но у него своя либа.
Как заставить обе либы слушать одновременно один и тот же пин? Тащить все в буфер и кормить его либам у меня не получилось так как либы это не могут. Пока решил "железно" замкнув 2 и 3 ногу "дуины" и повесив на каждую по либе, но это как мне кажется костыли
Roman_13j
Сообщения: 32
Зарегистрирован: Пт мар 25, 2016 11:34 pm
Благодарил (а): 5 раз
Поблагодарили: 0

Re: MySensors для новичков

Сообщение Roman_13j » Чт апр 20, 2017 10:56 pm

Заметил, что шлюз все время отсылает презентацию (версию библиотеки) и данные с датчика только изредка могут прорваться:
20.04.2017 22:48:39 RX 1;1;1;0;0;18.8
20.04.2017 22:48:43 RX 1;2;1;0;16;0
20.04.2017 22:48:45 RX 1;0;1;0;1;69.1
20.04.2017 22:48:49 RX 1;2;1;0;16;1
20.04.2017 22:48:55 RX 0;255;3;0;2;2.1.1
20.04.2017 22:48:59 RX 1;2;1;0;16;0
20.04.2017 22:49:01 RX 1;0;1;0;1;68.3
20.04.2017 22:49:06 RX 0;255;3;0;2;2.1.1
20.04.2017 22:49:12 RX 0;255;3;0;2;2.1.1
20.04.2017 22:49:18 RX 0;255;3;0;2;2.1.1
20.04.2017 22:49:23 RX 0;255;3;0;2;2.1.1
20.04.2017 22:49:29 RX 0;255;3;0;2;2.1.1
20.04.2017 22:49:34 RX 0;255;3;0;2;2.1.1
20.04.2017 22:49:40 RX 0;255;3;0;2;2.1.1
20.04.2017 22:49:45 RX 0;255;3;0;2;2.1.1
20.04.2017 22:49:51 RX 0;255;3;0;2;2.1.1
20.04.2017 22:49:56 RX 0;255;3;0;2;2.1.1
20.04.2017 22:50:02 RX 0;255;3;0;2;2.1.1
20.04.2017 22:50:07 RX 0;255;3;0;2;2.1.1
20.04.2017 22:50:13 RX 0;255;3;0;2;2.1.1
20.04.2017 22:50:18 RX 0;255;3;0;2;2.1.1
20.04.2017 22:50:24 RX 0;255;3;0;2;2.1.1

В чем может быть дело? Кстати заметил, что шлюз такое шлет только тогда, когда подключится к нему через модуль в мжд.

Скетч шлюза
СпойлерПоказать

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

// Enable debug prints to serial monitor
//#define MY_DEBUG

// Enable and select radio type attached
#define MY_RADIO_NRF24
//#define MY_RADIO_RFM69

// Enable gateway ethernet module type
#define MY_GATEWAY_W5100

// W5100 Ethernet module SPI enable (optional if using a shield/module that manages SPI_EN signal)
//#define MY_W5100_SPI_EN 4

// Enable Soft SPI for NRF radio (note different radio wiring is required)
// The W5100 ethernet module seems to have a hard time co-operate with
// radio on the same spi bus.
#if !defined(MY_W5100_SPI_EN) && !defined(ARDUINO_ARCH_SAMD)
#define MY_SOFTSPI
#define MY_SOFT_SPI_SCK_PIN 14
#define MY_SOFT_SPI_MISO_PIN 16
#define MY_SOFT_SPI_MOSI_PIN 15
#endif

// When W5100 is connected we have to move CE/CSN pins for NRF radio
#ifndef MY_RF24_CE_PIN
#define MY_RF24_CE_PIN 5
#endif
#ifndef MY_RF24_CS_PIN
#define MY_RF24_CS_PIN 6
#endif

// Enable to UDP
//#define MY_USE_UDP

//#define MY_IP_ADDRESS 192,168,0,120   // If this is disabled, DHCP is used to retrieve address
// Renewal period if using DHCP
//#define MY_IP_RENEWAL_INTERVAL 60000
// The port to keep open on node server mode / or port to contact in client mode
#define MY_PORT 5003

// Controller ip address. Enables client mode (default is "server" mode).
// Also enable this if MY_USE_UDP is used and you want sensor data sent somewhere.
//#define MY_CONTROLLER_IP_ADDRESS 192, 168, 0, 101

// The MAC address can be anything you want but should be unique on your network.
// Newer boards have a MAC address printed on the underside of the PCB, which you can (optionally) use.
// Note that most of the Ardunio examples use  "DEAD BEEF FEED" for the MAC address.
#define MY_MAC_ADDRESS 0xFA, 0xAD, 0xBE, 0xEF, 0xFE, 0xED

// Enable inclusion mode
#define MY_INCLUSION_MODE_FEATURE
// Enable Inclusion mode button on gateway
//#define MY_INCLUSION_BUTTON_FEATURE
// Set inclusion mode duration (in seconds)
#define MY_INCLUSION_MODE_DURATION 60
// Digital pin used for inclusion mode button
//#define MY_INCLUSION_MODE_BUTTON_PIN  3

// Set blinking period
#define MY_DEFAULT_LED_BLINK_PERIOD 300

#define MY_GATEWAY_MAX_CLIENTS 2 

// Flash leds on rx/tx/err
// Uncomment to override default HW configurations
//#define MY_DEFAULT_ERR_LED_PIN 7  // Error led pin
//#define MY_DEFAULT_RX_LED_PIN  8  // Receive led pin
//#define MY_DEFAULT_TX_LED_PIN  9  // Transmit led pin


#if defined(MY_USE_UDP)
#include <EthernetUdp.h>
#endif
#include <Ethernet.h>
#include <MySensors.h>
#include <SPI.h>

void setup()
{
    // Setup locally attached sensors
}

void presentation()
{
    // Present locally attached sensors
}

void loop()
{
    // Send locally attached sensor data here
}
Ответить