NEWS
Драйвер ioBroker MySensors
-
-
прыгает потому что твой шлюз отправляет данные постоянно
-
прыгает потому что твой шлюз отправляет данные постоянно `
вроде не прыгает ( подключил к компу)…в иоброкере...ЛОГ:
stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:28 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:28 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:28 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:27 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:27 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:27 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:27 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:27 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:27 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:27 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:27 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:27 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:27 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:27 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:27 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:26 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:26 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:26 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:26 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:26 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:26 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:26 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:26 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:26 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:26 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:26 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:26 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:26 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:25 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:25 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:25 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:25 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:25 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:25 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:25 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:25 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:25 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:25 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:25 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:25 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:24 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:24 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:24 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:24 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:24 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:24 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:24 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:24 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:24 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:24 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:24 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:24 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:23 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:23 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:23 2016-02-21 12:58:18 stateChange mysensors.0.V_TEMP_0_58 "43.29" false mysensors.0 2016-02-21 12:58:23 2016-02-21 12:58:18
-
а попробуй-ка только один датчик температуры выбрать в девлист, может прыгает потому что с двух датчиков неправильно парсит, хотя врятли…
-
ни чего не понимаю!
в скетче каждые 10сек. update!
https://www.youtube.com/watch?v=wsnjSjnc0gU
`if (millis() > next_Time[i]) { next_Time[i] = next_Time[i] + 10000; //Update Value every 10s Rt = Rv / ((1024.0 / analogRead(i)) - 1.0); float tempNTC = (B_wert * Tn / (B_wert + (Tn * log(Rt / Rn)))) - Tn + 25.0 + Temp_offset[i];// Here Offset if needed if ((tempNTC > (last_float_value[i] + delta_ntc)) || (tempNTC < (last_float_value[i] - delta_ntc)) || complete_loop) { //MyMessage msg(i, iomodus[i].variableType); Serial.print("tempNTC of Pin "); Serial.print(i); Serial.print(" is "); Serial.println(tempNTC); send(msg.setSensor(i).set(tempNTC, 2), false); last_float_value[i] = tempNTC; } }`[/i][/i][/i][/i][/i][/i][/i][/i]
-
вроде нашел где глючит, залил , пробуй
-
ok.. отпишусь!
-
Подскажите пожалуйста, из-за чего криво может ставится этот драйвер?
саму ioBroker поставил и запустил раза с пятого
Железо Raspberry Pi B, шлюз Arduino Serial. Подключаю на GPIO, т.е. будет использоваться ttyAMA0
Установку делаю с админ панели
вот лог установки драйвера:
! ````
$ ./iobroker add mysensors
npm install iobroker.mysensors --production --prefix "/opt/iobroker" (System call)
In file included from ../src/serialport.h:5:0, from ../src/serialport.cpp:3:
../node_modules/nan/nan.h:316:47: error: ‘REPLACE_INVALID_UTF8’ is not a member of ‘v8::String’
static const unsigned kReplaceInvalidUtf8 = v8::String::REPLACE_INVALID_UTF8;
^
! make: *** [Release/obj.target/serialport/src/serialport.o] Ошибка 1
gypERR! build error
gyp
ERR!
stack Error:make
failed with exit code: 2gyp ERR! stack at ChildProcess.onExit (/usr/share/node-gyp/lib/build.js:267:23)
gyp ERR! stack at ChildProcess.emit (events.js:98:17)
gyp ERR! stack
at Process.ChildProcess._handle.onexit (child_process.js:809:12)
gyp
ERR! System Linux 4.1.19+gyp ERR! command "nodejs" "/usr/bin/node-gyp" "build" "--fallback-to-build" "--module=/opt/iobroker/node_modules/iobroker.mysensors/node_modules/serialport/build/Release/node-v11-linux-arm/serialport.node" "--module_name=serialport" "--module_path=/opt/iobroker/node_modules/iobroker.mysensors/node_modules/serialport/build/Release/node-v11-linux-arm"! gyp ERR! cwd /opt/iobroker/node_modules/iobroker.mysensors/node_modules/serialportgyp ERR! node -v v0.10.29
gyp ERR! node-gyp -v v0.12.2
! gyp ERR! not ok
node-pre-gyp ERR! build error
node-pre-gyp
ERR! stack Error: Failed to execute 'node-gyp build --fallback-to-build --module=/opt/iobroker/node_modules/iobroker.mysensors/node_modules/serialport/build/Release/node-v11-linux-arm/serialport.node --module_name=serialport --module_path=/opt/iobroker/node_modules/iobroker.mysensors/node_modules/serialport/build/Release/node-v11-linux-arm' (1)node-pre-gyp
ERR! stack at ChildProcess. <anonymous>(/opt/iobroker/node_modules/iobroker.mysensors/node_modules/serialport/node_modules/node-pre-gyp/lib/util/compile.js:83:29)node-pre-gyp ERR! stack at ChildProcess.emit (events.js:98:17)
node-pre-gyp ERR! stack at maybeClose (child_process.js:755:16)
node-pre-gyp ERR! stack at Process.ChildProcess._handle.onexit (child_process.js:822:5)
! node-pre-gyp
ERR! System Linux 4.1.19+node-pre-gyp ERR! command "node" "/opt/iobroker/node_modules/iobroker.mysensors/node_modules/serialport/node_modules/.bin/node-pre-gyp" "install" "--fallback-to-build"
node-pre-gyp ERR! cwd /opt/iobroker/node_modules/iobroker.mysensors/node_modules/serialport
node-pre-gyp ERR! node -v v0.10.29
node-pre-gyp ERR! node-pre-gyp -v v0.6.18
node-pre-gyp
ERR! not ok
npmWARN This failure might be due to the use of legacy binary "node"
npm WARN For further explanations, please read/usr/share/doc/nodejs/README.Debian! npm
WARN optional dep failed, continuing serialport@2.0.6</anonymous> -
Ты мой видео на YouTube смотрел? Там всё показано
-
Подскажите пожалуйста, из-за чего криво может ставится этот драйвер?
саму ioBroker поставил и запустил раза с пятого
Железо Raspberry Pi B, шлюз Arduino Serial. Подключаю на GPIO, т.е. будет использоваться ttyAMA0
Установку делаю с админ панели
вот лог установки драйвера:
! ````
$ ./iobroker add mysensors
npm install iobroker.mysensors --production --prefix "/opt/iobroker" (System call)
In file included from ../src/serialport.h:5:0, from ../src/serialport.cpp:3:
../node_modules/nan/nan.h:316:47: error: ‘REPLACE_INVALID_UTF8’ is not a member of ‘v8::String’
static const unsigned kReplaceInvalidUtf8 = v8::String::REPLACE_INVALID_UTF8;
^
! make: *** [Release/obj.target/serialport/src/serialport.o] Ошибка 1
gypERR! build error
gyp
ERR!
stack Error:make
failed with exit code: 2gyp ERR! stack at ChildProcess.onExit (/usr/share/node-gyp/lib/build.js:267:23)
gyp ERR! stack at ChildProcess.emit (events.js:98:17)
gyp ERR! stack
at Process.ChildProcess._handle.onexit (child_process.js:809:12)
gyp
ERR! System Linux 4.1.19+gyp ERR! command "nodejs" "/usr/bin/node-gyp" "build" "--fallback-to-build" "--module=/opt/iobroker/node_modules/iobroker.mysensors/node_modules/serialport/build/Release/node-v11-linux-arm/serialport.node" "--module_name=serialport" "--module_path=/opt/iobroker/node_modules/iobroker.mysensors/node_modules/serialport/build/Release/node-v11-linux-arm"! gyp ERR! cwd /opt/iobroker/node_modules/iobroker.mysensors/node_modules/serialportgyp ERR! node -v v0.10.29
gyp ERR! node-gyp -v v0.12.2
! gyp ERR! not ok
node-pre-gyp ERR! build error
node-pre-gyp
ERR! stack Error: Failed to execute 'node-gyp build --fallback-to-build --module=/opt/iobroker/node_modules/iobroker.mysensors/node_modules/serialport/build/Release/node-v11-linux-arm/serialport.node --module_name=serialport --module_path=/opt/iobroker/node_modules/iobroker.mysensors/node_modules/serialport/build/Release/node-v11-linux-arm' (1)node-pre-gyp
ERR! stack at ChildProcess. <anonymous>(/opt/iobroker/node_modules/iobroker.mysensors/node_modules/serialport/node_modules/node-pre-gyp/lib/util/compile.js:83:29)node-pre-gyp ERR! stack at ChildProcess.emit (events.js:98:17)
node-pre-gyp ERR! stack at maybeClose (child_process.js:755:16)
node-pre-gyp ERR! stack at Process.ChildProcess._handle.onexit (child_process.js:822:5)
! node-pre-gyp
ERR! System Linux 4.1.19+node-pre-gyp ERR! command "node" "/opt/iobroker/node_modules/iobroker.mysensors/node_modules/serialport/node_modules/.bin/node-pre-gyp" "install" "--fallback-to-build"
node-pre-gyp ERR! cwd /opt/iobroker/node_modules/iobroker.mysensors/node_modules/serialport
node-pre-gyp ERR! node -v v0.10.29
node-pre-gyp ERR! node-pre-gyp -v v0.6.18
node-pre-gyp
ERR! not ok
npmWARN This failure might be due to the use of legacy binary "node"
npm WARN For further explanations, please read/usr/share/doc/nodejs/README.Debian! npm
WARN optional dep failed, continuing serialport@2.0.6</anonymous>
```` `
Не хватает питона и build-essential -
Maxtox видео смотрел, но посмотрел еще раз действитвельно упустил один момент. У меня почему то даже на качестве 720р текст плохо был виден. только при втором просмотре увидел версию nodejs 12.6.
Все переустановил еще разок, заработало! Через USB шлюз уже подключил, через GPIO пока еще не успел. Ругается Serial error: Error: Serialport not open, буду настройки проверять.
Bluefox , в последнем образе Raspbian уже последние версии стоят, проверял.
Кстати, подскажите еще такой момент. При установке уже самого ioBroker вылазит следующее (хотя ставил под рутом):
! Write "./iobroker start" to start the ioBroker
! Cannot create file /usr/bin/iobroker!. Non critical
! –---------------------------------------------------
! You can manually copy file into /usr/bin/. Just write:
! sudo cp /opt/iobroker/node_modules/iobroker/install/iobroker /usr/bin/
! sudo chmod 777 /usr/bin/iobroker
! -----------------------------------------------------
! Cannot copy file to /etc/init.d/iobroker.sh: Error: EACCES: permission denied, open '/etc/init.d/iobroker.sh'
! -----------------------------------------------------
! You can manually copy file and install autostart:
! sudo cp /opt/iobroker/node_modules/iobroker/install/linux/iobroker.sh /etc/init.d/
! sudo chmod 777 /etc/init.d/iobroker.sh
! sudo bash /opt/iobroker/node_modules/iobroker/install/linux/install.sh
! -----------------------------------------------------
! or just start "sudo bash /opt/iobroker/install.sh"
! -----------------------------------------------------Как и написано, ручками эти команды выполняю и запускаю брокера.
-
Драйвер предназначен для работы с беспроводными устройствами (arduino+nrf24), использующими библиотеку с http://www.mysensors.org/…
драйвер в обкатке, предложения(пожелания) не игнорируются `
Привет!
Адаптер для mysensors это действительно круто. Я давно лелеял надежду что кто-нибудь напишет подобную штуку, так как сам совсем не программист. Но, как я понял, данный адаптер в режиме tcp или udp выступает в качестве шлюза для устрйств mysensensors, т.е. работает как сервер и ждет подключений на порт 5003? Разве не логичнее ему получать данные от mysensors gateway запущенном на какой-нибудь esp8266? И есть ли в планах такой режим?
-
fishka18rus Не совсем так. Данный драйвер принимает данные (посылает команды) через физический шлюз, выполненный на одном из вариантов Serial, MQTT или Ethernet. Соответственно на чем сделан шлюз (ардуина + usb или esp8266 или сетевой модуль) не важно для ioBroker, будет работать с любой железкой либо через uart, либо через сеть
-
Возможность автоматической раздачи id, новым подключаемым узлам и возможность обновления прошивки по воздуху (на основе загрузчика MYSBootloader планируется?
-
da… v planax est
-
Кто может подказать по такой штуке…
в скетче описал датчики, они появились в Объектах в таком виде:
~~![](</s><URL url=)http://s019.radikal.ru/i634/1604/fe/567a3f1240f8.png" />
В скетче датчики описаны так:
MyMessage AlmStatus(MyAlm, V_VAR1); MyMessage BatStatus(MyBat, V_WATT); MyMessage NetStatus(MyNet, V_VAR2); gw.present(MyAlm, S_CUSTOM, "123", false); gw.present(MyBat, S_POWER, "123", false); gw.present(MyNet, S_CUSTOM, "123", false);
По картинке видно, что V_VAR1 и V_VAR2 показываются пустыми полями, и по началу не подтягивались и данные.
А для S_POWER добавилась лишняя переменная, которая не была описана.
Чтобы данные с переменных V_VAR1 и V_VAR2 тоже было видно, прописал ручками так:
~~![](</s><URL url=)http://s017.radikal.ru/i409/1604/d3/89954a1243f8.png" />
Но по идее этот подход не соответсвуют идее разработчика. Как вообще правильно надо описывать датчики в MySensors?
Я предполагал, что драйвер брокера из gw.present вытягивает переменные S_…, а потом уже из сообщений тянет типы переменных V_…. При таком подходе в Объектах было бы только то, что описанно в скетче и ничего лишнего.~~~~
-
Но по идее этот подход не соответсвуют идее разработчика. Как вообще правильно надо описывать датчики в MySensors?
Я предполагал, что драйвер брокера из gw.present вытягивает переменные S_…, а потом уже из сообщений тянет типы переменных V_…. При таком подходе в Объектах было бы только то, что описанно в скетче и ничего лишнего. `
а как вытащить тип переменной из V… ?
пример S_Custom
-
По идее все просто…
gw.present(2, S_CUSTOM, "text", false);
в шлюз придет:
30;2;0;0;23;text
где:
__30 - адрес узла
2 - child-sensor-id - адрес датчика
0 - message-type "presentation"
0 - ack
23 - sub-type "S_CUSTOM"__
т.е. переменную S_… получили из презентации
–--------------------------
теперь будем получать код переменной V…
__MyMessage AlmStatus(2, V_VAR2);
gw.send(AlmStatus.set(-84));__
в шлюз получим:
2016-04-05 11:43:04 warn Serial data received: 30;2;1;0;25;-84
где:
__30 - адрес узла
2 - child-sensor-id - адрес датчика
1 - message-type "set"
0 - ack__
25 - sub-type "V_VAR2"
-84 - значение
В результате дерево объектов можно построить следующим образом:
1. с узла при презентации получаем: арес узла, адреса датчиков, их тип S_… и комментарий, название скетча, версия скетча
2. При отправке сообщений gw.send(MyMessage.set(x)); добавляем в дерево объектов подобъекты типов V_…, к каким добавить объектам S_… определяем по адресу датчика.
-
По идее все просто…
gw.present(2, S_CUSTOM, "text", false);
в шлюз придет:
30;2;0;0;23;text
где:
__30 - адрес узла
2 - child-sensor-id - адрес датчика
0 - message-type "presentation"
0 - ack
23 - sub-type "S_CUSTOM"__
т.е. переменную S_… получили из презентации
–--------------------------
теперь будем получать код переменной V…
__MyMessage AlmStatus(2, V_VAR2);
gw.send(AlmStatus.set(-84));__
в шлюз получим:
2016-04-05 11:43:04 warn Serial data received: 30;2;1;0;25;-84
где:
__30 - адрес узла
2 - child-sensor-id - адрес датчика
1 - message-type "set"
0 - ack__
25 - sub-type "V_VAR2"
-84 - значение
В результате дерево объектов можно построить следующим образом:
1. с узла при презентации получаем: арес узла, адреса датчиков, их тип S_… и комментарий, название скетча, версия скетча
2. При отправке сообщений gw.send(MyMessage.set(x)); добавляем в дерево объектов подобъекты типов V_…, к каким добавить объектам S_… определяем по адресу датчика. `
Это означает, что пока сенсоры не пошлют данные, объекты не создадутся. А если это output? И данные никогда не придут? Или температура, которая каждые 30 мин обновляется? -
если output, то правильно использовать вот эту штуку:
The ack parameter has the following meaning:
Outgoing: 0 = unacknowledged message, 1 = request ack from destination node
Incoming: 0 = normal message, 1 = this is an ack message
что логично, если мы посылаем команду на узел надо ведь получить подтверждение, что команда принята, а не потерялась?
> Или температура, которая каждые 30 мин обновляется?
Можно проверять есть ли в дереве объектов уже такая переменная у датчика №х, если нет, то добавляем в дерево. Если есть просто обновляем значение у нее.И потом, можно сделать гибрид :roll:
т.е. оставить все как сейчас + добавить это:
> Можно проверять есть ли уже в дереве объектов такая переменная у датчика, если нет, то добавляем в дерево. Если есть просто обновляем значение у нее.