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

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

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

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

      @Bluefox:

      @Haus:
      owfs 0.2.1

      Зачем при read датчик выдаёт fasttemp?

      Я уже выкладывал log Response for write /Sensor2_temperature/temperature: true ????

      ! inMem 2016-07-29 13:33:19.406 debug message owfs.1.* owfs.1.wires.Sensor2_temperature val=24.5, ack=true, ts=1469788399389, q=0, from=system.adapter.owfs.1, lc=1469788399389
      ! owfs-1 2016-07-29 13:33:19.383 debug Read /28.FFF67D3B0400/temperature:24.5
      ! inMem 2016-07-29 13:33:18.575 debug message owfs.1.* owfs.1.wires.Sensor1_fasttemp val=24.5, ack=true, ts=1469788398559, q=0, from=system.adapter.owfs.1, lc=1469788398559
      ! owfs-1 2016-07-29 13:33:18.551 debug Read /28.FFF67D3B0400/fasttemp:24.5
      ! inMem 2016-07-29 13:32:49.589 debug message owfs.1.* owfs.1.wires.Sensor2_temperature val=0, ack=true, ts=1469788369575, q=0, from=system.adapter.owfs.1, lc=1469788369575
      ! owfs-1 2016-07-29 13:32:49.566 debug Response for write /Sensor2_temperature/temperature: true
      ! inMem 2016-07-29 13:32:49.507 debug message owfs.1.* owfs.1.wires.Sensor1_fasttemp val=0, ack=true, ts=1469788369492, q=0, from=system.adapter.owfs.1, lc=1469788369492
      ! owfs-1 2016-07-29 13:32:49.487 debug Response for write /Sensor1_fasttemp/fasttemp: true
      ! inMem 2016-07-29 13:32:49.479 debug message owfs.1.* owfs.1.wires.Sensor2_temperature val=24.5, ack=true, ts=1469788369458, q=0, from=system.adapter.owfs.1, lc=1469788369458
      ! owfs-1 2016-07-29 13:32:49.387 debug Read /28.FFF67D3B0400/temperature:24.5
      ! inMem 2016-07-29 13:32:48.612 debug message owfs.1.* owfs.1.wires.Sensor1_fasttemp val=24.5, ack=true, ts=1469788368599, q=0, from=system.adapter.owfs.1, lc=1469788368599
      ! owfs-1 2016-07-29 13:32:48.589 debug Read /28.FFF67D3B0400/fasttemp:24.5
      ! owfs-1 2016-07-29 13:32:48.509 debug Write /28.FFF67D3B0400/temperature with "0"
      ! owfs-1 2016-07-29 13:32:48.466 debug Write /28.FFF67D3B0400/fasttemp with "0"
      ! inMem 2016-07-29 13:32:48.450 debug message owfs.1.* owfs.1.wires.Sensor2_temperature val=0, ack=null, ts=1469788368431, q=0, from=system.adapter.owfs.1, lc=1469788368431
      ! inMem 2016-07-29 13:32:48.407 debug message owfs.1.* owfs.1.wires.Sensor1_fasttemp val=0, ack=null, ts=1469788368378, q=0, from=system.adapter.owfs.1, lc=1469788368378
      ! owfs-1 2016-07-29 13:32:48.231 info starting. Version 0.2.1 in /opt/iobroker/node_modules/iobroker.owfs
      ! owfs-1 2016-07-29 13:32:48.139 debug statesDB connected
      ! owfs-1 2016-07-29 13:32:48.120 debug objectDB connected
      ! host-Server1 2016-07-29 13:32:46.864 info instance system.adapter.owfs.1 started with pid 3576
      ! host-Server1 2016-07-29 13:32:44.896 info instance system.adapter.owfs.1 terminated with code 0 (OK)
      ! owfs-1 2016-07-29 13:32:44.873 info terminating

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

        > Зачем при read датчик выдаёт fasttemp?
        Потому что ты сказал в настройках это читать.

        Есть новая версия на гит

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

          @Bluefox:

          > Зачем при read датчик выдаёт fasttemp?
          Потому что ты сказал в настройках это читать.

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

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

            @Haus:

            @Bluefox:

            > Зачем при read датчик выдаёт fasttemp?
            Потому что ты сказал в настройках это читать.

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

            в настройках

            Ты настроил драйвер так, что бы он читал эту переменную. Удали её из конфига.

            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

              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
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            782
                                            Online

                                            31.7k
                                            Users

                                            79.9k
                                            Topics

                                            1.3m
                                            Posts

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