Size: a a a

ioBroker smarthome

2021 May 17

A

Anzor in ioBroker smarthome
т.е. Read - это статус, то откуда хомкит читает состояние объекта (он отдельным объектом в иоб у меня идет), а Write это именно команда прилетающая из хомкит, пишется так же в другой объект в иоб
источник

ИК

Илья Киров in ioBroker smarthome
теперь понял. у меня другая ситуация, но симптомы похожие :)
источник

A

Anzor in ioBroker smarthome
а в иоб статус объекта обновляется, если вручную управляли шторами?
источник

ИК

Илья Киров in ioBroker smarthome
да
источник

A

Anzor in ioBroker smarthome
погодь, а ты курент статус учитываешь?
источник

ИК

Илья Киров in ioBroker smarthome
да, стараюсь вроде :)
источник

A

Anzor in ioBroker smarthome
там же с этими воротами и жалюзями кучу всего нужно учитывать, впрочем, как и почти со всеми "сложными" устройствами
источник

ИК

Илья Киров in ioBroker smarthome
там как-то раз на раз не приходится
источник

ИК

Илья Киров in ioBroker smarthome
ну вот у меня только Цель и Текущее
источник

A

Anzor in ioBroker smarthome
давай гляну, я эту (или этого) яшку, уже в доль и поперек изучил
источник

A

Anzor in ioBroker smarthome
можешь показать настройки устройства?
источник

ИК

Илья Киров in ioBroker smarthome
мне блин неудобно, когда пользуюсь не я :)
источник

A

Anzor in ioBroker smarthome
стикер i know that feeling bro
источник

A

Anzor in ioBroker smarthome
не нашел его )
источник

AF

Alex F. in ioBroker smarthome
я как пользовался скриптом для ворот так и пользуюсь, в яшке нормально отрабатывает и открытие и закрытие
источник

A

Anzor in ioBroker smarthome
у тебя наверное не испльзуется мультистейт
источник

AF

Alex F. in ioBroker smarthome
я не знаю)  скрипт сам все стейты создал)
источник

AF

Alex F. in ioBroker smarthome
я только акторы подвезал
источник

A

Anzor in ioBroker smarthome
что за "волшебный скрипт"?
источник

A

Anzor in ioBroker smarthome
createState("gate_0.current"); // текущее состояние
createState("gate_0.target"); // целевое состояние

// сбрасываем состояние в 0, по прошествии 300мс
on({id: "mqtt.0.gate.gpio.13", ack: false, val: 1}, function (obj) {
  setStateDelayed("mqtt.0.gate.gpio.13", 0,  300);
});

on({id: "mqtt.0.gate.gpio.12", ack: false, val: 1}, function (obj) {
  setStateDelayed("mqtt.0.gate.gpio.12", 0,  300);
});

// если изменилось состояние открытости
on({id: "mqtt.0.gate.is_open", ack: false, val: 1}, function (obj) {
  // "открылся"
  setState("javascript.0.gate_0.current", 0, true);
});

on({id: "mqtt.0.gate.is_open", ack: false, val: 0}, function (obj) {
  // "закрылся"
  setState("javascript.0.gate_0.current", 1, true);
});

// если установили цель - открыть, значит посылаем сигнал на открытие
on({id: "javascript.0.gate_0.target", ack: false, val: 0}, function (obj) {
  setState("mqtt.0.gate.gpio.12", 1);
});

// если установили цель - закрыть, значит посылаем сигнал на закрытие
on({id: "javascript.0.gate_0.target", ack: false, val: 1}, function (obj) {
  setState("mqtt.0.gate.gpio.13", 1);
});

on({id: "mqtt.0.gate.in_progress", ack: true, change: 'any'}, function (obj) {
  // если выставился режим "в процессе", то значит процесс пошел
  if (obj.state.val === 1) {
      // если целевой режим "открытие", то выставим состояние
      const target = getState("javascript.0.gate_0.target");
      if (target.val === 0) {
          // "открывается"
          setState("javascript.0.gate_0.current", 2, true);
      } else {
          // "закрывается"
          setState("javascript.0.gate_0.current", 3, true);
      }
  }
  // если сбросился режим "в процессе", то значит процесс закончен
  if (obj.state.val === 0) {
      // если целевой режим "открытие", то выставим состояние
      const target = getState("javascript.0.gate_0.target");
      if (target.val === 0) {
          // "открылся"
          setState("javascript.0.gate_0.current", 0, true);
      } else {
          // "закрылся"
          setState("javascript.0.gate_0.current", 1, true);
      }
  }
});
источник