Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Русский
    3. ioBroker
    4. ioBroker драйвера
    5. Драйвер ioBroker MySensors

    NEWS

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    Драйвер ioBroker MySensors

    This topic has been deleted. Only users with topic management privileges can see it.
    • H
      Haba last edited by

      Кто может подказать по такой штуке…

      в скетче описал датчики, они появились в Объектах в таком виде:

      ~~![](</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_…. При таком подходе в Объектах было бы только то, что описанно в скетче и ничего лишнего.~~~~

      1 Reply Last reply Reply Quote 0
      • M
        Maxtox last edited by

        @Haba:

        Но по идее этот подход не соответсвуют идее разработчика. Как вообще правильно надо описывать датчики в MySensors?

        Я предполагал, что драйвер брокера из gw.present вытягивает переменные S_…, а потом уже из сообщений тянет типы переменных V_…. При таком подходе в Объектах было бы только то, что описанно в скетче и ничего лишнего. `

        а как вытащить тип переменной из V… ?

        пример S_Custom 😄

        1 Reply Last reply Reply Quote 0
        • H
          Haba last edited by

          По идее все просто…

          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_… определяем по адресу датчика.

          1 Reply Last reply Reply Quote 0
          • Bluefox
            Bluefox last edited by

            @Haba:

            По идее все просто…

            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 мин обновляется?

            1 Reply Last reply Reply Quote 0
            • H
              Haba last edited by

              если 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:

              т.е. оставить все как сейчас + добавить это:
              > Можно проверять есть ли уже в дереве объектов такая переменная у датчика, если нет, то добавляем в дерево. Если есть просто обновляем значение у нее.

              1 Reply Last reply Reply Quote 0
              • H
                Haba last edited by

                По идее что-то типа такого должно выходить для сенсоров S_CUSTOM

                ~~![](</s><URL url=)http://s020.radikal.ru/i710/1604/3f/3fb04f1da99b.png" />

                1-й адрес уже работает, данные видны

                2-й еще скетч не додлелал, поэтому пока false~~

                1 Reply Last reply Reply Quote 0
                • H
                  Haba last edited by

                  как отправить команду на узел mySensors?

                  …

                  скриптом так sendTo ('mysensors.0', 'send', '30;1;1;0;24;3\n');

                  кнопкой из vis можно как то послать команду не используя скрипты?

                  1 Reply Last reply Reply Quote 0
                  • H
                    Haba last edited by

                    Bluefox переделал немного библиотеку, чтобы как и говорил ранее, добавлялись новые датчики, которые по умолчанию не входят в список.

                    файл main.js

                    ! ```
                    /* jshint -W097 */// jshint strict:false /*jslint node: true */ "use strict"; ! // you have to require the utils module and call adapter function var utils = require(__dirname + '/lib/utils'); // Get common adapter utils var serialport; var Parses = require('sensors'); var MySensors = require(__dirname + '/lib/mysensors'); var getMeta = require(__dirname + '/lib/getmeta').getMetaInfo; var getMeta2 = require(__dirname + '/lib/getmeta').getMetaInfo2; ! var adapter = utils.adapter('mysensors'); var devices = {}; var mySensorsInterface; var floatRegEx = /^[+-]?\d+(\.\d*)$/; var inclusionOn = false; var inclusionTimeout = false; ! var config = {}; ! try { serialport = require('serialport');//.SerialPort; } catch (e) { console.warn('Serial port is not available'); } ! //принимаем и обрабатываем сообщения adapter.on('message', function (obj) { if (obj) { switch (obj.command) { case 'listUart': if (obj.callback) { if (serialport) { // read all found serial ports serialport.list(function (err, ports) { adapter.log.info('List of port: ' + JSON.stringify(ports)); adapter.sendTo(obj.from, obj.command, ports, obj.callback); }); } else { adapter.log.warn('Module serialport is not available'); adapter.sendTo(obj.from, obj.command, [{comName: 'Not available'}], obj.callback); } } ! break; } } }); ! // is called when adapter shuts down - callback has to be called under any circumstances! adapter.on('unload', function (callback) { adapter.setState('info.connection', false, true); try { if (mySensorsInterface) mySensorsInterface.destroy(); mySensorsInterface = null; callback(); } catch (e) { callback(); } }); ! // is called if a subscribed state changes adapter.on('stateChange', function (id, state) { if (!state || state.ack || !mySensorsInterface) return; ! // Warning, state can be null if it was deleted adapter.log.debug('stateChange ' + id + ' ' + JSON.stringify(state)); ! if (id === adapter.namespace + '.inclusionOn') { setInclusionState(state.val); } else // output to mysensors if (devices[id] && devices[id].type == 'state') { if (typeof state.val === 'boolean') state.val = state.val ? 1 : 0; if (state.val === 'true') state.val = 1; if (state.val === 'false') state.val = 0; ! mySensorsInterface.write( devices[id].native.id + ';' + devices[id].native.childId + ';1;0;' + devices[id].native.varTypeNum + ';' + state.val, devices[id].native.ip); } }); ! adapter.on('objectChange', function (id, obj) { if (!obj) { if (devices[id]) delete devices[id]; } else { if (obj.native.id !== undefined && obj.native.childId !== undefined && obj.native.subType !== undefined) { devices[id] = obj; } } }); ! // is called when databases are connected and adapter received configuration. // start here! adapter.on('ready', function () { main(); }); ! // start here! adapter.on('unload', function () { adapter.setState('inclusionOn', false, true); }); ! var presentationDone = false; ! function setInclusionState(val) { val = val === 'true' || val === true || val === 1 || val === '1'; inclusionOn = val; ! if (inclusionTimeout) clearTimeout(inclusionTimeout); inclusionTimeout = null; ! if (inclusionOn && adapter.config.inclusionTimeout) { inclusionTimeout = setTimeout(function () { inclusionOn = false; adapter.setState('inclusionOn', false, true); }, adapter.config.inclusionTimeout); } } ! function processPresentation(data, ip, port) { var result = Parses.parse(data.toString()); ! //var result = [{ // id: lineParts[0], // childId: lineParts[1], // type: Values.types[lineParts[2]], // ack: lineParts[3] === '1', // payload: lineParts[5] // subType: Values.subTypes[result.type][lineParts[4]]; //}]; ! if (!result || !result.length) { adapter.log.warn('Cannot parse data: ' + data); return null; } ! for (var i = 0; i < result.length; i++) { adapter.log.debug('Got: ' + JSON.stringify(result[i])); if (result[i].type === 'presentation' && result[i].subType) { adapter.log.debug('Сообщение Презетация'); presentationDone = true; var found = false; for (var id in devices) { adapter.log.debug('id = ' + id); if ((!ip || ip === devices[id].native.ip) && devices[id].native.id == result[i].id && devices[id].native.childId == result[i].childId && devices[id].native.subType == result[i].subType) { found = true; adapter.log.debug('Найден id = ' + id); break; } } ! // Add new node if (!found) { adapter.log.debug('Не найден id. Добавляем новый узел'); var objs = getMeta(result[i], ip, port, config[ip || 'serial']); for (var j = 0; j < objs.length; j++) { adapter.log.debug('Проверка ' + devices[adapter.namespace + '.' + objs[j]._id]); if (!devices[adapter.namespace + '.' + objs[j]._id]) { devices[adapter.namespace + '.' + objs[j]._id] = objs[j]; adapter.log.info('Add new object: ' + objs[j]._id + ' - ' + objs[j].common.name); adapter.setObject(objs[j]._id, objs[j], function (err) { if (err) adapter.log.error(err); }); } } } // проверяем, есть ли принятая переменная в объектах } else if (result[i].type === 'set' && result[i].subType) { adapter.log.debug('Тип "set". Ищем переменную в базе...'); var found = false; var id_found; // сюда сохраним id совпавший по параметрам id и childId for (var id in devices) { if ((!ip || ip === devices[id].native.ip) && devices[id].native.id == result[i].id && devices[id].native.childId == result[i].childId && devices[id].native.varType == result[i].subType) { found = true; adapter.log.debug('Найден id = ' + id); break; } if (devices[id].native.id == result[i].id && devices[id].native.childId == result[i].childId){ id_found = id; adapter.log.debug('Сохранили id_found с совпавшими id и childId'); adapter.log.debug('devices[id_found].native.id = ' + devices[id_found].native.id); adapter.log.debug('devices[id_found].native.childId = ' + devices[id_found].native.childId); } adapter.log.debug('Объект не найден!!!'); } // Добавляем новую переменную в существующий узел if (!found) { adapter.log.debug('Не найден id. Добавляем новую переменную'); var common_name = devices[id_found].common.name.split('.'); var objs = getMeta2(result[i], ip, port, config[ip || 'serial'],devices[id_found].native.subType,common_name[0]); if (!devices[adapter.namespace + '.' + objs[0]._id]) { devices[adapter.namespace + '.' + objs[0]._id] = objs[0]; adapter.log.info('Add new object: ' + objs[0]._id + ' - ' + objs[0].common.name); adapter.setObject(objs[0]._id, objs[0], function (err) { if (err) adapter.log.error(err); }); } } } else { // try to convert value var val = result[i].payload; if (floatRegEx.test(val)) val = parseFloat(val); if (val === 'true') val = true; if (val === 'false') val = false; result[i].payload = val; } } return result; } /* function syncObjects(index, cb) { if (typeof index === 'function') { cb = index; index = 0; } ! index = index || 0; ! if (!adapter.config.devices || index >= adapter.config.devices.length) { cb && cb(); return; } ! var id = adapter.config.devices[index].name.replace(/[.\s]+/g, '_'); ! adapter.getObject(id, function (err, obj) { if (err) adapter.log.error(err); ! // if new or changed if (!obj || JSON.stringify(obj.native) !== JSON.stringify(adapter.config.devices[index])) { adapter.setObject(id, { common: { name: adapter.config.devices[index].name, def: false, type: 'boolean', // нужный тип надо подставить read: 'true', write: 'true', // нужный режим надо подставить role: 'state', desc: obj ? obj.common.desc : 'Variable from mySensors' }, type: 'state', native: adapter.config.devices[index] }, function (err) { // Sync Rooms adapter.deleteStateFromEnum('rooms', '', '', id, function () { if (adapter.config.devices[index].room) { adapter.addStateToEnum('rooms', adapter.config.devices[index].room, '', '', id); } }); ! if (err) adapter.log.error(err); if (!obj) { adapter.log.debug('Create state ' + id); ! // if new object => create state adapter.setState(id, null, true, function () { setTimeout(function () { syncObjects(index + 1, cb); }, 0); }); } else { adapter.log.debug('Update state ' + id); setTimeout(function () { syncObjects(index + 1, cb); }, 0); } }); } else { setTimeout(function () { syncObjects(index + 1, cb); }, 0); } }); } ! function deleteStates(states, cb) { if (!states || !states.length) { cb && cb(); return; } var id = states.pop(); adapter.log.debug('Delete state ' + id); adapter.delForeignObject(id, function (err) { adapter.deleteStateFromEnum('rooms', '', '', id); ! if (err) adapter.log.error(err); ! adapter.delForeignState(id, function (err) { if (err) adapter.log.error(err); ! setTimeout(function () { deleteStates(states, cb); }, 0); }) }); } */ function main() { adapter.getState('inclusionOn', function (err, state) { setInclusionState(state ? state.val : false); }); ! // read current existing objects (прочитать текущие существующие объекты) adapter.getForeignObjects(adapter.namespace + '.*', 'state', function (err, states) { // subscribe on changes adapter.subscribeStates('*'); adapter.subscribeObjects('*'); devices = states; ! if (!devices[adapter.namespace + '.info.connection'] || !devices[adapter.namespace + '.info.connection'].common || (devices[adapter.namespace + '.info.connection'].common.type === 'boolean' && adapter.config.type !== 'serial') || (devices[adapter.namespace + '.info.connection'].common.type !== 'boolean' && adapter.config.type === 'serial')) { adapter.setForeignObject(adapter.namespace + '.info.connection', { "_id": "info.connection", "type": "state", "common": { "role": "indicator.connected", "name": adapter.config.type === 'serial' ? 'If connected to my sensors' : 'List of connected gateways', "type": adapter.config.type === 'serial' ? 'boolean' : 'string', "read": true, "write": false, "def": false }, "native": { ! } }, function (err) { if (err) adapter.log.error(err); }); } ! mySensorsInterface = new MySensors(adapter.config, adapter.log, function (error) { // if object created mySensorsInterface.write('0;0;3;0;14;Gateway startup complete'); ! // process received data mySensorsInterface.on('data', function (data, ip, port) { var result = processPresentation(data, ip, port); // update configuration if presentation received ! if (!result) return; ! for (var i = 0; i < result.length; i++) { if (result[i].type === 'set') { adapter.log.debug('Тип сообщения: set'); // If set quality if (result[i].subType == 77) { adapter.log.debug('subType = 77'); for (var id in devices) { if (devices[id].native && (!ip || ip == devices[id].native.ip) && devices[id].native.id == result[i].id && devices[id].native.childId == result[i].childId) { adapter.log.debug('Set quality of ' + (devices[id].common.name || id) + ' ' + result[i].childId + ': ' + result[i].payload + ' ' + typeof result[i].payload); adapter.setState(id, {q: typeof result[i].payload}, true); } } } else { if (result[i].subType === 'V_LIGHT') result[i].subType = 'V_STATUS'; if (result[i].subType === 'V_DIMMER') result[i].subType = 'V_PERCENTAGE'; ! for (var id in devices) { adapter.log.debug(devices[id].native.varType + ' /// ' + result[i].subType); if (devices[id].native && (!ip || ip == devices[id].native.ip) && devices[id].native.id == result[i].id && devices[id].native.childId == result[i].childId && devices[id].native.varType == result[i].subType) { ! if (devices[id].common.type == 'boolean') { result[i].payload = result[i].payload === 'true' || result[i].payload === true || result[i].payload === '1' || result[i].payload === 1; } adapter.log.debug('Set value ' + (devices[id].common.name || id) + ' ' + result[i].childId + ': ' + result[i].payload + ' ' + typeof result[i].payload); adapter.setState(id, result[i].payload, true); break; } } } } else if(result[i].type === 'internal') { var saveValue = false; adapter.log.debug('Внутреннее сообщение'); switch (result[i].subType) { case 'I_BATTERY_LEVEL': // 0 Use this to report the battery level (in percent 0-100). adapter.log.info('Battery level ' + (ip ? ' from ' + ip + ' ': '') + ':' + result[i].payload); saveValue = true; break; ! case 'I_TIME': // 1 Sensors can request the current time from the Controller using this message. The time will be reported as the seconds since 1970 adapter.log.info('Time ' + (ip ? ' from ' + ip + ' ': '') + ':' + result[i].payload); if (!result[i].ack) { // send response: internal, ack=1 mySensorsInterface.write(result[i].id + ';' + result[i].childId + ';3;1;' + result[i].subType + ';' + Math.round(new Date().getTime() / 1000), ip); } break; ! case 'I_VERSION': // 2 Used to request gateway version from controller. adapter.log.info('Version ' + (ip ? ' from ' + ip + ' ': '') + ':' + result[i].payload); saveValue = true; if (!result[i].ack) { // send response: internal, ack=1 mySensorsInterface.write(result[i].id + ';' + result[i].childId + ';3;1;' + result[i].subType + ';' + (adapter.version || 0), ip); } break; ! case 'I_SKETCH_NAME': // 2 Used to request gateway version from controller. adapter.log.info('Name ' + (ip ? ' from ' + ip + ' ': '') + ':' + result[i].payload); saveValue = true; break; ! case 'I_INCLUSION_MODE': // 5 Start/stop inclusion mode of the Controller (1=start, 0=stop). adapter.log.info('inclusion mode ' + (ip ? ' from ' + ip + ' ': '') + ':' + result[i].payload ? 'STARTED' : 'STOPPED'); break; ! case 'I_CONFIG': // 6 Config request from node. Reply with (M)etric or (I)mperal back to sensor. result[i].payload = (result[i].payload == 'I') ? 'Imperial' : 'Metric'; adapter.log.info('Config ' + (ip ? ' from ' + ip + ' ': '') + ':' + result[i].payload); config[ip || 'serial'] = config[ip || 'serial'] || {}; config[ip || 'serial'].metric = result[i].payload; saveValue = true; break; ! case 'I_LOG_MESSAGE': // 9 Sent by the gateway to the Controller to trace-log a message adapter.log.info('Log ' + (ip ? ' from ' + ip + ' ': '') + ':' + result[i].payload); break; ! case 'I_ID_REQUEST': if (inclusionOn) { // find maximal index var maxId = 0; for (var id in devices) { if (devices[id].native && (!ip || ip == devices[id].native.ip) && devices[id].native.id > maxId) { maxId = devices[id].native.id; } } maxId++; if (!result[i].ack) { // send response: internal, ack=0, I_ID_RESPONSE mySensorsInterface.write(result[i].id + ';' + result[i].childId + ';3;0;4;' + maxId, ip); } } else { adapter.log.warn('Received I_ID_REQUEST, but inclusion mode is disabled'); } break; ! default: adapter.log.info('Received INTERNAL message: ' + result[i].subType + ': ' + result[i].payload); } ! if (saveValue) { for (var id in devices) { adapter.log.debug('2 ' + devices[id].native.varType + ' /// ' + result[i].subType); if (devices[id].native && (!ip || ip == devices[id].native.ip) && devices[id].native.id == result[i].id && devices[id].native.childId == result[i].childId && devices[id].native.varType == result[i].subType) { ! if (devices[id].common.type == 'boolean') result[i].payload = !!result[i].payload; if (devices[id].common.type == 'number') result[i].payload = parseFloat(result[i].payload); ! adapter.log.info('Set value ' + (devices[id].common.name || id) + ' ' + result[i].childId + ': ' + result[i].payload + ' ' + typeof result[i].payload); adapter.setState(id, result[i].payload, true); break; } } } ! } } }); ! mySensorsInterface.on('connectionChange', function (isConn, ip, port) { adapter.setState('info.connection', isConn, true); // try soft request if (!presentationDone && isConn) { // request metric system mySensorsInterface.write('0;0;3;0;6;get metric', ip, port); mySensorsInterface.write('0;0;3;0;19;force presentation', ip, port); setTimeout(function () { // send reboot command if still no presentation if (!presentationDone) { mySensorsInterface.write('0;0;3;0;13;force restart', ip, port); } }, 1500); } }); }); }); }
                    файл getmeta.js (добавил функцию)
                    ! >! [spoiler]`~~[code]~~function getMetaInfo2(packet, ip, port, config, subType, common_name) {
                    ! config = config || {};
                    var type = presentation[subType];
                    if (!type) {
                    type = {
                    type: 'string',
                    role: 'state',
                    vars: ['V_VAR1', 'V_VAR2', 'V_VAR3', 'V_VAR4', 'V_VAR5'],
                    index: packet.subType
                    };
                    }
                    var varType = packet.subType;
                    var variable = vars[varType];
                    var id = (ip ? ip.replace(/./g, '') + '.' : '') + packet.id + '.' + packet.childId + '' + subType.replace('S_', '') + /*'.' + packet.subType + */ '.' + varType;

                    var result = [
                        {
                                _id:            (ip ? ip.replace(/\./g, '_') + '.'  : '') + packet.id + '.' + packet.childId + '_' + subType.replace('S_', '') + '.' + varType,
                                common: {
                                    name:       common_name ? (common_name + '.' + varType) : id,
                                    type:       variable.type,
                                    role:       variable.role + (type.role ? '.' + type.role : ''),
                                    min:        variable.min,
                                    max:        variable.max,
                                    unit:       variable.unit,
                                    def:        variable.def,
                                    read:       variable.read,
                                    write:      variable.write
                                },
                                native: {
                                    ip:         ip,
                                    id:         packet.id,
                                    childId:    packet.childId,
                                    subType:    packet.subType,
                                    subTypeNum: type.index,
                                    varType:    varType,
                                    varTypeNum: variable.index
                                },
                                type: 'state'
                            }
                        ]; 
                    

                    ! return result;
                    }
                    ! module.exports.getMetaInfo = getMetaInfo;
                    module.exports.getMetaInfo2 = getMetaInfo2;[/code]`[/spoiler][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]

                    1 Reply Last reply Reply Quote 0
                    • S
                      sanich2908 last edited by

                      Почему не видит сом порт на Raspi ???

                      evice converter now attached to ttyUSB0

                      root@raspberrypi:~# dmesg

                      Нажмите Ctrl+A и Ctrl+C, что бы скопировать в буфер обмена и после этого нажмите мышкой в любом месте.

                      mysensors-0 2016-09-24 21:32:56.957 warn Module serialport is not available

                      mysensors-0 2016-09-24 21:32:55.643 info starting. Version 1.0.2 in /opt/iobroker/node_modules/iobroker.mysensors

                      host-raspberrypi 2016-09-24 21:32:53.436 info instance system.adapter.mysensors.0 started with pid 2654

                      host-raspberrypi 2016-09-24 21:32:51.029 info instance system.adapter.mysensors.0 terminated with code 0 (OK)

                      mysensors-0 2016-09-24 21:32:51.000 info terminating

                      host-raspberrypi 2016-09-24 21:32:50.916 info stopInstance system.adapter.mysensors.0 killing pid 2648

                      host-raspberrypi 2016-09-24 21:32:50.915 info stopInstance system.adapter.mysensors.0

                      1 Reply Last reply Reply Quote 0
                      • H
                        Haus last edited by

                        @sanich2908:

                        Почему не видит сом порт на Raspi ???

                        evice converter now attached to ttyUSB0

                        root@raspberrypi:~# dmesg

                        Нажмите Ctrl+A и Ctrl+C, что бы скопировать в буфер обмена и после этого нажмите мышкой в любом месте.

                        mysensors-0 2016-09-24 21:32:56.957 warn Module serialport is not available

                        mysensors-0 2016-09-24 21:32:55.643 info starting. Version 1.0.2 in /opt/iobroker/node_modules/iobroker.mysensors

                        host-raspberrypi 2016-09-24 21:32:53.436 info instance system.adapter.mysensors.0 started with pid 2654

                        host-raspberrypi 2016-09-24 21:32:51.029 info instance system.adapter.mysensors.0 terminated with code 0 (OK)

                        mysensors-0 2016-09-24 21:32:51.000 info terminating

                        host-raspberrypi 2016-09-24 21:32:50.916 info stopInstance system.adapter.mysensors.0 killing pid 2648

                        host-raspberrypi 2016-09-24 21:32:50.915 info stopInstance system.adapter.mysensors.0 `

                        sudo apt-get update

                        sudo apt-get install build-essential

                        sudo apt-get install python2.7

                        1 Reply Last reply Reply Quote 0
                        • S
                          sanich2908 last edited by

                          Да установлено всё это, а СОМ порт не видит :oops:

                          1 Reply Last reply Reply Quote 0
                          • Bluefox
                            Bluefox last edited by

                            @sanich2908:

                            Да установлено всё это, а СОМ порт не видит :oops: `
                            Ruf mal noch mal:

                            cd /opt/iobroker
                            iobroker stop mysensors
                            npm install iobroker.mysensors --production --force
                            iobroker upload mysensors
                            iobroker start mysensors
                            
                            

                            Danach sollten die Ports in der Konfig drin sein.

                            1 Reply Last reply Reply Quote 0
                            • S
                              sanich2908 last edited by

                              Ещё пару переустановок всего и заработало :shock:

                              1 Reply Last reply Reply Quote 0
                              • M
                                Maxtox last edited by

                                @sanich2908:

                                Ещё пару переустановок всего и заработало :shock: `
                                Молодец!

                                1 Reply Last reply Reply Quote 0
                                • S
                                  sanich2908 last edited by

                                  Вот ни где не сказано, что inclusionON надо в Обьектах поставить в TRUE, и тогда добавляются сенсоры в Нодах.

                                  1 Reply Last reply Reply Quote 0
                                  • Bluefox
                                    Bluefox last edited by

                                    @sanich2908:

                                    Вот ни где не сказано, что inclusionON надо в Обьектах поставить в TRUE, и тогда добавляются сенсоры в Нодах. `
                                    По идее должно управляться из настроек. Получается что не работает?

                                    1 Reply Last reply Reply Quote 0
                                    • G
                                      Genvik last edited by

                                      Добрый день.

                                      Перечитал эту ветку.

                                      Не могу понять, почему у меня не появляются данные с нод во вкладке "объекты"?

                                      В логе вижу, что данные идут.
                                      ` > mysensors-0 2016-10-07 15:25:29.157 info Connected

                                      mysensors-0 2016-10-07 15:25:29.142 info disconnected

                                      mysensors-0 2016-10-07 15:24:48.362 info List of port: [{"comName":"/dev/ttyAMA0"},{"comName":"/dev/ttyUSB0","manufacturer":"1a86","serialNumber":"1a86_USB2.0-Serial","pnpId":"usb-1a86_USB2.0-Serial-if00-port0","vendorId":"0x1a86","productI

                                      mysensors-0 2016-10-07 15:24:29.147 info Log :TSP:SANCHK:OK

                                      mysensors-0 2016-10-07 15:24:29.142 warn Serial data received: 0;255;3;0;9;TSP:SANCHK:OK

                                      mysensors-0 2016-10-07 15:23:29.205 info Log :TSP:SANCHK:OK

                                      mysensors-0 2016-10-07 15:23:29.191 warn Serial data received: 0;255;3;0;9;TSP:SANCHK:OK

                                      mysensors-0 2016-10-07 15:23:29.157 info Connected

                                      mysensors-0 2016-10-07 15:23:29.139 info disconnected

                                      mysensors-0 2016-10-07 15:22:29.144 info Log :TSP:SANCHK:OK

                                      mysensors-0 2016-10-07 15:22:29.139 warn Serial data received: 0;255;3;0;9;TSP:SANCHK:OK

                                      mysensors-0 2016-10-07 15:22:26.284 info Log :TSP:MSG:SEND 0-0-10-10 s=3,c=1,t=2,pt=2,l=2,sg=0,ft=0,st=ok:0

                                      mysensors-0 2016-10-07 15:22:26.264 warn Serial data received: 0;255;3;0;9;TSP:MSG:SEND 0-0-10-10 s=3,c=1,t=2,pt=2,l=2,sg=0,ft=0,st=ok:0

                                      mysensors-0 2016-10-07 15:22:26.185 info Log :TSP:MSG:ACK msg

                                      mysensors-0 2016-10-07 15:22:26.161 warn Serial data received: 0;255;3;0;9;TSP:MSG:ACK msg

                                      mysensors-0 2016-10-07 15:22:26.158 info Log :TSP:MSG:READ 10-10-0 s=3,c=1,t=2,pt=2,l=2,sg=0:0

                                      mysensors-0 2016-10-07 15:22:26.154 warn Serial data received: 0;255;3;0;9;TSP:MSG:READ 10-10-0 s=3,c=1,t=2,pt=2,l=2,sg=0:0

                                      mysensors-0 2016-10-07 15:22:26.094 info Log :TSP:MSG:READ 10-10-0 s=3,c=1,t=2,pt=0,l=1,sg=0:0

                                      mysensors-0 2016-10-07 15:22:26.084 warn Serial data received: 0;255;3;0;9;TSP:MSG:READ 10-10-0 s=3,c=1,t=2,pt=0,l=1,sg=0:0

                                      mysensors-0 2016-10-07 15:22:26.024 info Log :TSP:MSG:SEND 0-0-10-10 s=2,c=1,t=2,pt=2,l=2,sg=0,ft=0,st=ok:0

                                      mysensors-0 2016-10-07 15:22:26.014 warn Serial data received: 0;255;3;0;9;TSP:MSG:SEND 0-0-10-10 s=2,c=1,t=2,pt=2,l=2,sg=0,ft=0,st=ok:0

                                      mysensors-0 2016-10-07 15:22:25.954 info Log :TSP:MSG:ACK msg

                                      mysensors-0 2016-10-07 15:22:25.928 warn Serial data received: 0;255;3;0;9;TSP:MSG:ACK msg

                                      mysensors-0 2016-10-07 15:22:25.884 info Log :TSP:MSG:READ 10-10-0 s=2,c=1,t=2,pt=2,l=2,sg=0:0

                                      mysensors-0 2016-10-07 15:22:25.874 warn Serial data received: 0;255;3;0;9;TSP:MSG:READ 10-10-0 s=2,c=1,t=2,pt=2,l=2,sg=0:0

                                      mysensors-0 2016-10-07 15:22:25.814 info Log :TSP:MSG:READ 10-10-0 s=3,c=1,t=2,pt=0,l=1,sg=0:0

                                      mysensors-0 2016-10-07 15:22:25.809 warn Serial data received: 0;255;3;0;9;TSP:MSG:READ 10-10-0 s=3,c=1,t=2,pt=0,l=1,sg=0:0

                                      mysensors-0 2016-10-07 15:22:15.577 info Log :TSP:MSG:SEND 0-0-10-138 s=3,c=1,t=2,pt=6,l=2,sg=0,ft=0,st=ok:0100

                                      mysensors-0 2016-10-07 15:22:15.572 warn Serial data received: 0;255;3;0;9;TSP:MSG:SEND 0-0-10-138 s=3,c=1,t=2,pt=6,l=2,sg=0,ft=0,st=ok:0100

                                      mysensors-0 2016-10-07 15:22:15.478 info Log :TSP:MSG:REL MSG

                                      mysensors-0 2016-10-07 15:22:15.474 warn Serial data received: 0;255;3;0;9;TSP:MSG:REL MSG

                                      mysensors-0 2016-10-07 15:22:15.449 info Log :TSP:MSG:READ 0-10-138 s=3,c=1,t=2,pt=6,l=2,sg=0:0100

                                      mysensors-0 2016-10-07 15:22:15.435 warn Serial data received: 0;255;3;0;9;TSP:MSG:READ 0-10-138 s=3,c=1,t=2,pt=6,l=2,sg=0:0100

                                      mysensors-0 2016-10-07 15:22:15.394 info Log :TSP:MSG:SEND 0-0-10-138 s=3,c=1,t=2,pt=6,l=2,sg=0,ft=0,st=ok:0100

                                      mysensors-0 2016-10-07 15:22:15.369 warn Serial data received: 0;255;3;0;9;TSP:MSG:SEND 0-0-10-138 s=3,c=1,t=2,pt=6,l=2,sg=0,ft=0,st=ok:0100 `

                                      Во вкладке "настройки драйверов" mysensors adapter вижу бледную надпись

                                      "Включить режим присваивания адресов"

                                      Сервер на малинке.
                                      1530_mys.png

                                      1 Reply Last reply Reply Quote 0
                                      • M
                                        Maxtox last edited by

                                        Какую библиотеку юзаешь? У меня по другому лог выглядит. Я на 2.0

                                        1 Reply Last reply Reply Quote 0
                                        • G
                                          Genvik last edited by

                                          @Maxtox:

                                          Какую библиотеку юзаешь? У меня по другому лог выглядит. Я на 2.0 `

                                          2.0

                                          1 Reply Last reply Reply Quote 0
                                          • M
                                            Maxtox last edited by

                                            Сегодня вечером гляну… Может mysensors что изменили а мы инфу от них не получили...

                                            Санкции наверно :roll:

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            731
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

                                            13
                                            106
                                            29447
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo