Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Русский
    3. ioBroker
    4. Ошибка
    5. ioBroker ошибки
    6. Ошибка создания объекта в OWFS

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Ошибка создания объекта в OWFS

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

      @Bluefox:

      @Haus:

      @Bluefox:

      Потому что ты сказал в настройках это читать.

      Есть новая версия на гит Где я такое говорил?
      😄

      в настройках

      Ты настроил драйвер так, что бы он читал эту переменную. Удали её из конфига. `
      Чего та недопонимаю, ставлю новый owfs.2, включаю, захожу в настройки по умолчанию, нажимаю read получаю на DS18B20 два параметра 28.FFF67D3B0400/temperature, 28.FFF67D3B0400/fasttemp

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

        @Haus:

        @Bluefox:

        @Haus:

        Где я такое говорил? `
        😄

        в настройках

        Ты настроил драйвер так, что бы он читал эту переменную. Удали её из конфига. Чего та недопонимаю, ставлю новый owfs.2, включаю, захожу в настройки по умолчанию, нажимаю read получаю на DS18B20 два параметра 28.FFF67D3B0400/temperature, 28.FFF67D3B0400/fasttemp
        Нажать на удалить не пробовал?

        Сначала создаются возможные полезные значения, а тебе выбирать, хочешь ты их читать или нет
        48_2016-07-29_23_32_51-iobroker.admin.png

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

          @Bluefox:

          @Haus:

          @Bluefox:

          😄

          в настройках

          Ты настроил драйвер так, что бы он читал эту переменную. Удали её из конфига. Чего та недопонимаю, ставлю новый owfs.2, включаю, захожу в настройки по умолчанию, нажимаю read получаю на DS18B20 два параметра 28.FFF67D3B0400/temperature, 28.FFF67D3B0400/fasttemp
          Нажать на удалить не пробовал?

          Сначала создаются возможные полезные значения, а тебе выбирать, хочешь ты их читать или нет `
          Не знаю кому и зачем нужен fasttemp. Закомментировал в admin````
          'heat_index',
          'humidex',
          'light',
          'temperature',
          //'fasttemp',
          'set_alarm',
          'date',

          1 Reply Last reply Reply Quote 0
          • J
            jeorgep last edited by

            DS2408 в OWFS:

            (http://owfs.org/uploads/DS2408.3.html#sect10)

            PIO используются для записи в них 0/1

            sensed используются для чтения информации с портов

            latch используются для получения информации об изменении состояния порта

            (бит 1 указывает, что состояние изменялось)

            Для очистки состояния latch применяется запись в любой из latch портов. Например:

            echo 1 > latch.0

            При этом очищаюся ВСЕ восемь latch портов, то-есть для сохранения информации

            об изменениях состояний портов со времени последней очистки - необходимо сохранить latch.ALL

            и лишь потом производить очистку.

            Перед использованием DS2408 необходимо провести ее инициализацию:

            echo 1 > out_of_testmode

            И для использования функции запись в порт - необходимо включить strobe:

            echo 1 > strobe

            В iobroker нужно использовать как минимум PIO и sensed - для возможности записи/чтения в порт.

            1 Reply Last reply Reply Quote 0
            • J
              jeorgep last edited by

              После установки версии 0.2.2 проблема с созданием объектов решилась.

              Но очень долгая реакция на изменение состояния порта (sensed) в DS2408,

              где-то 30 сек или больше, что недопустимо например для датчика движения и включения света.

              У меня датчики HC-SR501 подключены к портам DS2408.

              Параллельно запускаю скрипт:

              #!/bin/bash
              while true; do
                ALL=`cat /mnt/1wire/29.XXXXXX000000/sensed.ALL`
                echo $ALL
                sleep 1
              done
              

              И наблюдаю в закладке 'Objects' когда изменяется состояние (например value.sensed.4).

              Задержка до пол-минуты относительно скрипта.

              Реально такая задержка не позволит использовать драйвер OWFS для реакции на быстрые события.

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

                @jeorgep:

                После установки версии 0.2.2 проблема с созданием объектов решилась.

                Но очень долгая реакция на изменение состояния порта (sensed) в DS2408,

                где-то 30 сек или больше, что недопустимо например для датчика движения и включения света.

                У меня датчики HC-SR501 подключены к портам DS2408.

                Параллельно запускаю скрипт:

                #!/bin/bash
                while true; do
                  ALL=`cat /mnt/1wire/29.XXXXXX000000/sensed.ALL`
                  echo $ALL
                  sleep 1
                done
                

                И наблюдаю в закладке 'Objects' когда изменяется состояние (например value.sensed.4).

                Задержка до пол-минуты относительно скрипта.

                Реально такая задержка не позволит использовать драйвер OWFS для реакции на быстрые события. `
                Привет,

                Может есть возможность проверить удалённое подключение или большее количество датчиков на 127.0.0.1, у меня Read addresses "Найдено 0 сенсор(a/ов).

                1 Reply Last reply Reply Quote 0
                • J
                  jeorgep last edited by

                  ` > Привет,

                  Может есть возможность проверить удалённое подключение или большее количество датчиков на 127.0.0.1, у меня Read addresses "Найдено 0 сенсор(a/ов). `

                  Привет,

                  я не совсем понял вопрос.

                  Если про мое подключение - используется Orange Pi+2.

                  Как мастер - использую восьмиканальный DS2482-800 (http://datasheets.maximintegrated.com/e … 82-800.pdf).

                  Ибо 1-wire не любит подключения звездой, а в моем случае сервер с мастером находятся посередине топологии, пришлось использовать ее.

                  Реакция на уровне файлов OWFS или owserver неплохая - где-то на уровне секунды (точнее не замерял).

                  Датчиков используется много разнообразных.

                  И если для датчиков температуры, влажности, протечки воды, утечки газа - задержка в пол минуты допустима,

                  то для включалелей света или датчиков движения на портах DS2408 - она критична.

                  Жена не будет пол минуты после входа в помещение ждать пока загорится свет 🙂

                  В результате параллельного запуска скрипта и привязаного обьекта в ioBroker -

                  определил, что запаздывание от датчика движения происходит где-то до присвоения значения обьекту в ioBroker-е.

                  То-есть скрипт уже давно показал, что состояние изменилось, а в ioBrokere оно остается неизмененным еще где-то 30 сек.

                  Можно конечно обрабатывать состояние на уровне Bash или написать скрипт на Питоне и уже после

                  обработки изменять состояние переменной в ioBroker - но тогда драйвер OWFS не нужен.

                  1 Reply Last reply Reply Quote 0
                  • A
                    Alekseym6 last edited by

                    у меня при записи через FS(добавил строчки в драйвер) - реакция на изменении менее 1 сек. 7 шт DS2413(движение, стиральная машина, нагреватель воды, насос подкачки воды и т.д.). порт А вход с детектора движения, В выход на реле.

                    1 Reply Last reply Reply Quote 0
                    • J
                      jeorgep last edited by

                      > у меня при записи через FS(добавил строчки в драйвер) - реакция на изменении менее 1 сек. 7 шт DS2413(движение, стиральная машина, нагреватель воды, насос подкачки воды и т.д.). порт А вход с детектора движения, В выход на реле.

                      Клас!

                      делись строчками в драйвере 🙂

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

                        @Alekseym6:

                        у меня при записи через FS(добавил строчки в драйвер) - реакция на изменении менее 1 сек. 7 шт DS2413(движение, стиральная машина, нагреватель воды, насос подкачки воды и т.д.). порт А вход с детектора движения, В выход на реле. `
                        Какой адаптер, как подключен?

                        1 Reply Last reply Reply Quote 0
                        • A
                          Alekseym6 last edited by

                          адаптер DS9490B, DS9490R USB to 1-Wire.

                          подключение датчиков звездой, DS2413(7 шт), DS2405, питание 5В на DS18B20(21 шт), кабель UTP5. максимальная длинна 30 метров до бани.

                          запускаю сервис owserver owfs

                          добавил запись значений через FS в /opt/iobroker/node_modules/iobroker.owfs/main.js

                          var fs = require('fs');

                          …

                          function writeWire(wire, value) {

                          if (wire) {

                          adapter.log.debug('Write /' + wire.id + '/' + (wire.property || 'temperature') + ' with "' + value + '"');

                          var path1wire = "/var/1-wire";

                          if (wire.property == "sensed.BYTE") {

                          var pathfs = "/" + wire.id + "/PIO.BYTE";

                          } else if (wire.property == "PIO.BYTE") {

                          var pathfs = "/" + wire.id + "/PIO.BYTE";

                          } else {

                          var pathfs = "/" + wire.id + '/' + (wire.property || 'temperature');

                          }

                          path1wire = path1wire + pathfs;

                          var dataV = parseInt(value);

                          adapter.log.debug(path1wire + ' with "' + dataV + '"');

                          // Пишем в файл.

                          fs.writeFile(path1wire, dataV, function(err, written) {

                          if (err) {

                          // Произошла ошибка при записи

                          adapter.log.warn('Cannot write value of ' + path1wire + ': ' + err);

                          }

                          });

                          client.write('/' + wire.id + '/' + (wire.property || 'temperature'), value, function(err, message) {

                          adapter.log.debug('Write /' + wire.id + '/' + (wire.property || 'temperature') + ':' + message);

                          //no idea what is received here

                          if (err) {

                          adapter.log.warn('Cannot write value of /' + wire.id + '/' + (wire.property || 'temperature') + ': ' + err);

                          }

                          });

                          }

                          }

                          1 Reply Last reply Reply Quote 0
                          • J
                            jeorgep last edited by

                            > добавил запись значений через FS в /opt/iobroker/node_modules/iobroker.owfs/main.js
                            Спасибо! буду пробовать

                            ` > подключение датчиков звездой, DS2413(7 шт), DS2405, питание 5В на DS18B20(21 шт), кабель UTP5. максимальная длинна 30 метров до бани.

                            запускаю сервис owserver owfs `
                            У меня тоже UTP5 до 20 м в луче звезды.

                            питание 9В и около датчиков ставлю стабилизатор 7805 - копейки стоит, а душе спокойнее 🙂

                            Раньше при питании 5В и включениях реле - бывали сбои.

                            Все на одном UPS ES 550G.

                            Мне больше нравится DS2408S - 8-канальный ключ. Часть портов использую на вход

                            (датчики движения, герконы, выходы компараторов датчиков дыма/газа, протечки, фотодиоды и т. п.)

                            часть на управление (светодиоды - индикация, реле, тиристоры).

                            В DS2408 есть приятная особенность - alarm.

                            Раньше, когда моя система была на Raspberry Pi и самописных Python/bash скриптах -

                            ресурсов катастрофически не хватало, и удобно было в цикле просматривать лишь папку alarm

                            и при возникновении алармов про изменение состояния порта -

                            уже распарсывать инфу по отдельным портам, вместо того, чтобы бегать по всем папкам.

                            Для датчиков освещения, влажности, поточных значений датчиков газа/дыма - использую DS2438.

                            Для отсылки срочных сообщений - GPRS Shield на SIM900.

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

                              @Alekseym6:

                              адаптер DS9490B, DS9490R USB to 1-Wire.

                              подключение датчиков звездой, DS2413(7 шт), DS2405, питание 5В на DS18B20(21 шт), кабель UTP5. максимальная длинна 30 метров до бани.

                              запускаю сервис owserver owfs

                              добавил запись значений через FS в /opt/iobroker/node_modules/iobroker.owfs/main.js `
                              Alekseym6, в ioBroker в драйвере owfs есть кнопка "Read addresses" она у тебя находит датчики и ключи?

                              1 Reply Last reply Reply Quote 0
                              • J
                                jeorgep last edited by

                                > добавил запись значений через FS в /opt/iobroker/node_modules/iobroker.owfs/main.js
                                Наверное тогда нужно закомментировать строки:

                                client.write('/' + wire.id + '/' + (wire.property || 'temperature'), value, function (err, message) {
                                ...
                                });
                                

                                Чтобы не было попытки клиентом переписать повторно значение.

                                И добавить для чтения что-то вроде:

                                function readWire(wire) {
                                    if (wire) {
                                        var path1wire = "/mnt/1wire";
                                        var pathfs = "/" + wire.id + '/' + (wire.property || 'temperature');
                                        path1wire = path1wire + pathfs;
                                        fs.readFile(path1wire, 'utf8', function (err,result) {
                                            if (err) {
                                                adapter.log.warn('Cannot read value of ' + path1wire + ': ' + err);
                                            }
                                        });
                                
                                

                                Закомментировав:
                                ` > client.read('/' + wire.id + '/' + (wire.property || 'temperature'), function(err, result) {

                                …

                                }); `

                                Вечером дома протестирую

                                1 Reply Last reply Reply Quote 0
                                • A
                                  Alekseym6 last edited by

                                  адаптер owfs не обновляю, версия 0.0.2. кнопки поиска нет.

                                  строчку не исключаю - для проверки

                                  1 Reply Last reply Reply Quote 0
                                  • J
                                    jeorgep last edited by

                                    Мои изменения в <u>/opt/iobroker/node_modules/iobroker.owfs/main.js</u>

                                    (версия 0.2.2 (2016-07-29))

                                    var fs = require('fs');

                                    Функция writeWire

                                    ! function writeWire(wire, value) {
                                    ! if (wire) {
                                    ! adapter.log.debug('Write /' + wire.id + '/' + (wire.property || 'temperature') + ' with "' + value + '"');
                                    ! var path1wire = "/mnt/1wire";
                                    ! if (wire.property == "sensed.BYTE") {
                                    ! var pathfs = "/" + wire.id + "/PIO.BYTE";
                                    ! } else if (wire.property == "PIO.BYTE") {
                                    ! var pathfs = "/" + wire.id + "/PIO.BYTE";
                                    ! } else {
                                    ! var pathfs = "/" + wire.id + '/' + (wire.property || 'temperature');
                                    ! }
                                    ! var pathfile = path1wire + pathfs;
                                    ! var dataV = parseInt(value);
                                    ! adapter.log.debug(pathfile + ' with "' + dataV + '"');
                                    ! // Write to file
                                    ! fs.writeFile(pathfile, dataV, function(err, written) {
                                    ! if (err) {
                                    ! // Write error
                                    ! adapter.log.warn('Cannot write value of ' + pathfile + ': ' + JSON.stringify(err));
                                    ! adapter.setState('wires.' + wire._name, {val: 0, ack: true, q: 0x84});
                                    ! } else {
                                    ! if (wire.property.indexOf('PIO') === -1) {
                                    ! adapter.setState('wires.' + wire._name, parseFloat(value) || 0, true);
                                    ! } else {
                                    ! adapter.setState('wires.' + wire._name, !(value === '0' || value === 0 || value === 'false' || value === false), true);
                                    ! }
                                    ! }
                                    ! });
                                    ! /*
                                    ! client.write('/' + wire.id + '/' + (wire.property || 'temperature'), value, function (err, message) {
                                    ! if (message !== undefined) {
                                    ! adapter.log.debug('Response for write /' + wire.name + '/' + (wire.property || 'temperature') + ': ' + message);
                                    ! }
                                    ! // no idea what is received here
                                    ! if (err) {
                                    ! adapter.log.warn('Cannot write value of /' + wire.id + '/' + (wire.property || 'temperature') + ': ' + JSON.stringify(err));
                                    ! adapter.setState('wires.' + wire._name, {val: 0, ack: true, q: 0x84});
                                    ! } else {
                                    ! if (wire.property.indexOf('PIO') === -1) {
                                    ! adapter.setState('wires.' + wire._name, parseFloat(value) || 0, true);
                                    ! } else {
                                    ! adapter.setState('wires.' + wire._name, !(value === '0' || value === 0 || value === 'false' || value === false), true);
                                    ! }
                                    ! }
                                    ! });
                                    ! */
                                    ! }
                                    ! }

                                    Функция readWire

                                    ! function readWire(wire) {
                                    ! if (wire) {
                                    ! /*
                                    ! client.read('/' + wire.id + '/' + (wire.property || 'temperature'), function(err, result) {
                                    ! result.value = result.value || '0';
                                    ! result.value = result.value.trim();
                                    ! adapter.log.debug('Read ' + result.path + ':' + result.value);
                                    ! if (!err) {
                                    ! if (wire.property.indexOf('PIO') !== -1) {
                                    ! adapter.setState('wires.' + wire._name, (result.value == '1'), true);
                                    ! } else {
                                    ! adapter.setState('wires.' + wire._name, parseFloat(result.value) || 0, true);
                                    ! }
                                    ! } else {
                                    ! adapter.setState('wires.' + wire._name, {val: 0, ack: true, q: 0x84}); // sensor reports error
                                    ! adapter.log.warn('Cannot read value of /' + wire.id + '/' + (wire.property || 'temperature') + ': ' + err);
                                    ! }
                                    ! });
                                    ! */
                                    ! var path1wire = "/mnt/1wire";
                                    ! var pathfs = "/" + wire.id + '/' + (wire.property || 'temperature');
                                    ! var pathfile = path1wire + pathfs;
                                    ! // Read from file
                                    ! fs.readFile(pathfile, function (err,data) {
                                    ! var result = data;
                                    ! adapter.log.debug('Read ' + pathfile + ':' + result);
                                    ! if (!err) {
                                    ! if (wire.property.indexOf('PIO') !== -1) {
                                    ! adapter.setState('wires.' + wire._name, (result == '1'), true);
                                    ! } else {
                                    ! adapter.setState('wires.' + wire._name, parseFloat(result) || 0, true);
                                    ! }
                                    ! } else {
                                    ! adapter.setState('wires.' + wire._name, {val: 0, ack: true, q: 0x84}); // sensor reports error
                                    ! adapter.log.warn('Cannot read value of ' + pathfile + ': ' + err);
                                    ! }
                                    ! });
                                    ! }
                                    ! }

                                    В настройках адаптера OWFS в ioBroker:

                                    Timeout(ms): 3000

                                    Poll interval(sec): 2

                                    Работает неделю без сбоев.

                                    Реакция на read/rwite где-то около секунды-двух.

                                    это приемлемо для обработки сигнала от датчиков движения.

                                    Конечно это будет работать лишь на локальной системе.

                                    Поэтому правильнее бы в настройки адаптера OWFS вывести возможность

                                    выбора - локальное включение или удаленная работа по tcp (IMHO)

                                    И нужно учесть, что при такой частоте опроса увеличивается нагрузка на процессор.

                                    Но в моей Orange Pi+2 это практически не ощутимо

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

                                      @Bluefox:

                                      @Haus:

                                      Главное посмотри почему с удалённого неработает `
                                      Поменяй в файле /etc/owfs.conf

                                      # With this setup, any client (but owserver) uses owserver on the
                                      # local machine...
                                      !server: -s 4304
                                      
                                      

                                      и

                                      ####################### OWSERVER ########################
                                      
                                      server: -p 4304
                                      
                                      

                                      У тебя только локальный доступ настроен `
                                      Локально или нелокально все равно больше одного-трёх "Read addresses" не читает. При этом owfs, majordom, demo(Андрея) находит всегда и визде.

                                      1 Reply Last reply Reply Quote 0
                                      • K
                                        kID last edited by

                                        А вот подскажите пожалуйста

                                        Раньше драйвер, в случае невозможности считать данные с датчика, тут же рапортовал об ошибке в логе, с указанием адреса датчика.

                                        А вот в новой версии такого не происходит. Отключил датчик, а брокер в объектах сообщает его последнее значение.

                                        Как вернуть сообщение об ошибке. Я подозреваю где-то возможно указать время в течение которого драйвер пытается считать значения не выдавая ошибку. Однако я не нашел где:(

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

                                        Support us

                                        ioBroker
                                        Community Adapters
                                        Donate

                                        789
                                        Online

                                        31.7k
                                        Users

                                        79.8k
                                        Topics

                                        1.3m
                                        Posts

                                        5
                                        74
                                        16691
                                        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