29.10.2015 11:22:23 INFO Connected to COM9
29.10.2015 11:22:25 CHILD New child discovered, node id=0, child id=0
29.10.2015 11:22:25 RX 0;0;3;0;9;radio init fail
Это значит что не правильно подключил RF-ку или она не рабочая? И вообще, если RF-ка не работает, то к контроллеру не подключится?
Проверь RF-ку либо не правильно подключена, либо не рабочая, заметь что Rf-ка подключается к меге немного по другому.
Попробуй в скетче сменить ip, может есть устройство с таким же, например из DHCP диапазона.
Linux версия. Ubuntu Server 16.04+2xArduinoMega+Eth_GW_Mysensors_10node+WeatherStation+Xiaomi CONNECT
#include <MySensor.h>
#include <SPI.h>
#include <Wire.h>
#include <Bounce2.h>
#define SN "Relay_Motion"
#define SV "1.2"
#define NODE_ID 24
//motion config pin
#define DIGITAL_INPUT_SENSOR 3 // The digital input you attached your motion sensor. (Only 2 and 3 generates interrupt!)
#define INTERRUPT DIGITAL_INPUT_SENSOR-2 // Usually the interrupt = pin -2 (on uno/nano anyway)
#define CHILD_ID 1 // Id of the sensor child
#define CHILD_MOT 2
//relay config pin
#define RELAY_1 4 // Arduino Digital I/O pin number for first relay (second on pin+1 etc)
#define NUMBER_OF_RELAYS 1 // Total number of attached relays
#define RELAY_ON 1 // GPIO value to write to turn on attached relay
#define RELAY_OFF 0 // GPIO value to write to turn off attached relay
boolean lastMotion = false;
Bounce debouncer1 = Bounce();
MySensor gw;
//SimpleTimer timer;
// Initialize motion message
MyMessage msg(CHILD_ID, V_LIGHT);
MyMessage msgMOT(CHILD_MOT, V_TRIPPED);
void setup()
{
// Initialize library and add callback for incoming messages
gw.begin(incomingMessage, NODE_ID, true);
// Send the sketch version information to the gateway and Controller
gw.sendSketchInfo("Relay_Motion", "1.3");
// Fetch relay status
for (int sensor=1, pin=RELAY_1; sensor<=NUMBER_OF_RELAYS;sensor++, pin++) {
// Register all sensors to gw (they will be created as child devices)
gw.present(sensor, S_LIGHT);
// Then set relay pins in output mode
pinMode(pin, OUTPUT);
// Set relay to last known state (using eeprom storage)
digitalWrite(pin, gw.loadState(sensor)?RELAY_ON:RELAY_OFF);
}
pinMode(DIGITAL_INPUT_SENSOR, INPUT_PULLUP); // sets the motion sensor digital pin as input
// Register all sensors to gw (they will be created as child devices)
gw.present(CHILD_MOT, S_MOTION);
}
void loop()
{
// Alway process incoming messages whenever possible
gw.process();
boolean tripped = digitalRead(DIGITAL_INPUT_SENSOR)==HIGH;
if (lastMotion != tripped) {
// Serial.println(tripped);
gw.send(msgMOT.set(tripped? 1 : 0)); // Send tripped value to gw
lastMotion = tripped;
} // Sleep until interrupt comes in on motion sensor. Send update every two minute.
}
void incomingMessage(const MyMessage &message) {
// We only expect one type of message from controller. But we better check anyway.
if (message.type==V_LIGHT) {
// Change relay state
digitalWrite(message.sensor-1+RELAY_1, message.getBool()?RELAY_ON:RELAY_OFF);
// Store state in eeprom
gw.saveState(message.sensor, message.getBool());
// Write some debug info
Serial.print("Incoming change for sensor:");
Serial.print(message.sensor);
Serial.print(", New status: ");
Serial.println(message.getBool());
}
}
После работы с нодой падает цикл, благо он перезапускается.
Всем доброе время суток. Внимательно читаю данную тему, но вот чего-то толи никак не увижу, то-ли пропускаю. Допустим, создаем с нуля систему датчиков, причем датчики эти, не каждый сам по себе, а как и концепция Mysensors, объеденены нодами. Т.е это обособленные центры сбора данных и их конвертации, а затем выдачи. Меня вот что смущает.. Допустим все то-же самое делать на основе проводных соединений, будет ли данная концепция, работать? Вижу это так. Есть "нода", она читает пусть 2-3 температурных, и 2-4 контактных. Т.е. обраную связь (прием) она не требует. Таким образом, данные, например один раз в минуту выдаются в сериал, например на основе витой пары, а вот уже далее шлюз данные предает по HTTP. Т.е основная идея это асинхронный опрос. Тогда и сеть как ее аппаратная реализация сильно упрощается. Конечно возможны наложения, но тогда допустим внести в счетчики времени нод, интервалы, которые разнесут процессы передачи и чтения. Либо допустим, метки в данных, что уже по сути и реализовано, в протоколе обмена. Или этот путь изначально отвергнут, как тупиковый. Радиоканал конечно замечательная штука но что то он мне не "симпатичен".
Это довольно просто. В MySensors есть базовый класс MyTransport.
Для реализации своего транспорта достаточно реализовать несколько несложных методов типа send, receive и available.
Думаю должно неплохо получиться на Clunet
У кого Motion сенсор есть? Я весь мозг сломал. Падает cycle_mysensor, именно когда срабатывает датчик. Испробовал все. Даже простой скетч с mysensors.org. Со всеми остальными проблем нет. Цикл может крутиться стабильно сколько угодно, но как только включаю ноду с датчиком движения цикл падает после первых данных с датчика.
Не в Debmes ни в порту Гейта нет ничего особенного.
Пока добавил в Config.php перезапуск cycle_mysensor.php, но это получается кощунство дергать цикл после каждого срабатывания.
Linux версия. Ubuntu Server 16.04+2xArduinoMega+Eth_GW_Mysensors_10node+WeatherStation+Xiaomi CONNECT