Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Haba

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    H
    • Profile
    • Following 0
    • Followers 0
    • Topics 2
    • Posts 57
    • Best 0
    • Groups 0

    Haba

    @Haba

    0
    Reputation
    27
    Profile views
    57
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    Haba Follow

    Latest posts made by Haba

    • RE: OwnTracks

      Экстрасенсов нет. Настроек программы не знаем, настроек роутера не знаем

      posted in ioBroker драйвера
      H
      Haba
    • RE: Драйвер Telegram Adapter

      актуально еще?

      тебе надо в options добавить клавиатуру с этими кнопками reply_markup : … описание кнопок.

      Т.к. ты этого не делаешь, драйвер предыдущие затирает

      posted in ioBroker драйвера
      H
      Haba
    • RE: Как отловить результат выполнения exec в родительской функции?

      Попробуй так, код не тестил. Могут быть ошибки

      function vol_down_up(cmd, callback) {
          exec(cmd, function callback(error, stdout, stderr){
              var str = stdout;
              var re = /VOL/;
              var tagList = str.split(re);
              curvol=tagList[1];    
              var a = parseInt(curvol)/2;
              console.log('vol str='+str);
              console.log('vol a='+a);
              setState("javascript.0.current_volume",a);
              callback (a);
          });
      }
      
      function set_volume(vol){
          target_vol=vol;    
          cmd = '{ echo "?V"; sleep 1;} | telnet 192.168.1.81 8102';
          exec(cmd, function callback(error, stdout, stderr){ 
              var str = stdout;
              var re = /VOL/;
              var tagList = str.split(re);
              curvol=tagList[1]; 
              var a = parseInt(curvol)/2;
              setState("javascript.0.current_volume",a);
              //var i =0;
              console.log('Start str='+str);
              console.log ('a='+a);
              console.log ('target_vol='+target_vol);
              var count = Math.abs(a-target_vol);
              console.log ('count='+count);
              var timerId;
              var cmd;
              if (a>target_vol){
                  cmd = '{ echo "VD"; sleep 1;} | telnet 192.168.1.81 8102';
                  timerId = setTimeout(function vol_down_up(cmd, a_return) {  
                      if (a_return <= target_vol){
                          clearTimeout(timerId); // если достигли нужного значения, выходим из рекурсии
                      } else timerId = setTimeout(vol_down_up(cmd, a_return), 1000); // или продолжаем вызывать функцию
                  }, 1000);
              }
              if (a<target_vol){ cmd="{ echo &quot;VU&quot;; sleep 1;} | telnet 192.168.1.81 8102" ;/timerid="setTimeout(function" vol_down_up(cmd,/a_return)/{/if/(a_return="">= target_vol){
                          clearTimeout(timerId); // если достигли нужного значения, выходим из рекурсии
                      } else timerId = setTimeout(vol_down_up(cmd, a_return), 1000); // или продолжаем вызывать функцию
                  }, 1000);
              } 
          })  
      }
      
      set_volume(45);</target_vol){>
      
      posted in ioBroker скрипты
      H
      Haba
    • RE: Функция отправки карты с точкой местонаходжения объекта (maps.yandex API)

      Продолжение темы в сторону контроля локаций.

      Ниже пример для трех человек. Каждому задается имя, индивидуальные зоны контроля на вход/выход, радиусы зон и т.п.

      вставляем скрипт:

      ! ```
      createState('location.user1'); createState('location.user2'); createState('location.user3'); ! var radius = 0.0014; /* 71,24035723 км = 1 град 1 км = 0,014036987 град 0,1 км = 0,001403699 град 0,05 км = 0,000701849 град */ ! // массив текущих локаций var currentLocations = { "user1" : "", "user2" : "", "user3" : "" }; ! // массив локаций для сравнения с текущими координатами var locations = { "user1" : { name : "Марфуша", // имя человека text : ["вошла в локацию ","вышла из локации "], // действие событие location : [ // локации: имя, координаты центра. Дополнительно можно задать другой радиус и действия/события для определенной локации {name : "Дом", coord : "45.225003,39.215152"}, {name : "Бассейн", coord : "45.235450,39.218855"}, {name : "Школа", coord : "45.22203,39.22134"} ] }, "user2" : { name : "Маша", text : ["вошла в локацию ","вышла из локации "], location : [ {name : "Дом", coord : "45.225003,39.215152"}, {name : "Работа", coord : "45.22203,39.22134"} ] }, "user3" : { name : "Иван", text : ["вошел в локацию ","вышел из локации "], location : [ {name : "Дому", coord : "45.225003,39.215152", radius : 0.014036987*5, text : ["подъезжает к ",""]}, // контроль зоны с радиусом 5 км и только на въезд {name : "Дом", coord : "45.225003,39.215152"}, {name : "Работа", coord : "45.04984,38.97755"} ] } }; ! on({id: /^javascript\.0\.location\./, change: 'any'}, function (gps) { //log (gps.id); var name = gps.id.substr(22); // парсим имя //log(name); var txt = ""; var current; //log("Текущее положение: " + currentLocations[name]); for (var i = 0; i < locations[name].location.length; ++i) { //log( "Локация: " + locations[name].location[i].name + " Координаты: " + locations[name].location[i].coord); var rad = radius; if (locations[name].location[i].radius !== undefined) rad = locations[name].location[i].radius; // присваиваем альтернативный радиус, если есть current = locationRegion(getState("javascript.0.location." + name), locations[name].location[i].coord, rad); var locName = locations[name].location[i].name; var action = locations[name].text[0]; if (typeof (locations[name].location[i].text) !== 'undefined') action = locations[name].location[i].text[0]; // присваиваем альтернативное действие, если есть if (current && (currentLocations[name] !== locName)) { if (action !== "") txt = locations[name].name + " " + action + locName; currentLocations[name] = locName; } action = locations[name].text[1]; if (typeof (locations[name].location[i].text) !== 'undefined') action = locations[name].location[i].text[1]; // присваиваем альтернативное действие, если есть if (!current && (currentLocations[name] === locations[name].location[i].name)) { if (action !== "") txt = locations[name].name + " " + action + locName; currentLocations[name] = ""; } //log ("txt: " + txt); } if (txt !=="") sendTelegram(txt); }); ! //определяем нахожение точки в заданной локации с радиусом function locationRegion(coordinate, location, radius) { var h; var result = false; // точка в локации: true - да, false - нет var coord = coordinate.val.split(','); var loc = location.split(','); h = Math.sqrt(Math.pow((parseFloat(coord[1])-parseFloat(loc[1])),2) + Math.pow((parseFloat(coord[0])-parseFloat(loc[0])),2)); //log("Гипотенуза равна = " + h); if (h > radius) { log("Точка не принадлежит кругу.\n"); result = false; } else { log("Точка принадлежит кругу.\n"); result = true; } return result; }
      ! результат примерно такой:
      1160_1.png [/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]

      posted in ioBroker скрипты
      H
      Haba
    • RE: Перенос iobroker на другой сервер

      так поставь виртуалку с линуксом

      posted in ioBroker установка и конфигурация
      H
      Haba
    • RE: Telegram 1.0.8 Polling Error

      cd /opt/iobroker

      npm install iobroker.telegram –production

      iobroker upload telegram

      iobroker restart

      posted in ioBroker Allgemein
      H
      Haba
    • RE: Telegram 1.0.8 Polling Error

      @looxer01:

      habe es gerade mit node 6.11.4 getestet.

      gleicher Fehler. Was kann ich noch liefern, um den Fehler einzugrenzen ?

      vG Looxer `

      Hi! Please test https://github.com/Haba1234/ioBroker.telegram

      Debugging muss aktiviert sein.

      posted in ioBroker Allgemein
      H
      Haba
    • Функция отправки карты с точкой местонаходжения объекта (maps.yandex API)

      Использую такой вариант определения местонахождения телефона (Andriod)

      1. ставим программу, которая будет в фоне отправлять текущие координаты с заданной периодичностью.

      Например tasker или как я использую Automagic Premium.

      ! ![](</s><URL url=)<link_text text="http://forum.iobroker.net/download/file ... af07e44eab">http://forum.iobroker.net/download/file.php?mode=view&id=15314&sid=66e7bf179150e8d0b12699af07e44eab</link_text>" /> ~~т.е. get запросом каждые 5 минут отправляем на IoBroker координкаты телефона на драйвер Simple API (должен быть запущен и настроен) в объект location.roman, который создали скриптом (см. ниже).

      2. Отправляем в телеграмм ссылку на картинку с координатами заданного объекта через драйвер JS

      3. Вторым сообщением отправляем определенный адрес местонахождения объекта и дату последнего обновления координат.

      Используется бесплатный https://tech.yandex.ru/maps/mapsapi/

      переменная tag это объект с координатами вида "25.22498,25.21571"

      createState('location.roman');
      
      function GPSsendMap(tag) {
          var location = tag.val.split(',');
          sendTo('telegram', {
              user: user,
              text : "https://static-maps.yandex.ru/1.x/?size=450,450&z=16&z=13&l=map&pt="+ location[1] + "," + location[0] +",flag"
          });
      
          geocode(location[1] + "," + location[0], 
              function(addr) {
                  sendTo('telegram.0', {
                          user : user,
                          text: "Адрес: " + addr + "\nОбновлено " + formatDate (tag.ts, "JJJJ.MM.TT SS:mm:ss"), 
                      });
              }, function (error) {
                  log (error);
              });
      }
      
      function geocode(coordinates, okCallback, errorCallback) {
          var addr = "Адрес не найден!";
          request ('https://geocode-maps.yandex.ru/1.x/?format=json&results=1&geocode=' + coordinates, function (error, response, body) {
          // Получаем ответ
              if (!error && response.statusCode === 200) {
                  // Парсим данные
                  var obj = JSON.parse(body);
                  addr = getKeyArray(obj,"AddressLine");
                  return okCallback(addr);
              } else {
                  return errorCallback(error);
              }
          });
      }
      
      function getKeyArray(obj, keyName) {
          var result = [];
          for (var attr in obj) {
              if (obj[attr] && typeof obj[attr] === 'object') {
                  result = result.concat(getKeyArray(obj[attr], keyName));
              }
              if (attr === keyName) {
                  result.push(obj[attr]);
              }
          }
          return result;
      }
      
      

      Функции можно вызывать например по нажатию кнопки или любому другому событию~~ 1160_gps.jpg
      1160_gps2.jpg

      posted in ioBroker скрипты
      H
      Haba
    • RE: Вопросы по написанию скриптов

      Получилось?

      Предполагаю что так: https://github.com/iobroker/ioBroker.ja … #setobject

      или https://github.com/iobroker/ioBroker.ja ... tendobject

      сам не пробовал, но скорей всего так:

      extendObject('mysensors.0.63.255_ARDUINO_NODE.I_BATTERY_LEVEL', {common: {custom: {sql.0 {enabled: false}}}});
      
      
      posted in ioBroker скрипты
      H
      Haba
    • RE: Вопросы по написанию скриптов

      оно?

      {
        "_id": "mysensors.0.61.255_ARDUINO_NODE.I_BATTERY_LEVEL",
        "common": {
          "name": "2.2.0-beta.I_BATTERY_LEVEL",
          "type": "number",
          "role": "value",
          "min": 0,
          "max": 100,
          "unit": "%",
          "def": 100,
          "read": true,
          "write": false,
          "custom": {
            "sql.0": {
      

      "enabled": true,

             "changesOnly": true,
              "debounce": 1000,
              "retention": 31536000,
              "changesRelogInterval": 0,
              "changesMinDelta": "",
              "storageType": ""
            }
          }
        },
        "native": {
          "id": "61",
          "childId": "255",
          "subType": "S_ARDUINO_NODE",
          "subTypeNum": 17,
          "varType": "I_BATTERY_LEVEL",
          "varTypeNum": 0
        },
        "type": "state",
        "acl": {
          "object": 1638,
          "state": 1638
        }
      }
      
      posted in ioBroker скрипты
      H
      Haba
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo