Страница 24 из 124

Re: Простые устройства / Simple Devices

Добавлено: Пт окт 20, 2017 11:06 am
Gelezako
TransMatrix писал(а): 1.2. Свойство Ulica.Pressure не меняется, хотя датчик выставлен как "основной сенсор помещения" - полагаю тупо не так назвал?
если я всё правильно понял, то вот в чём ваша проблема. Модуль "простые устройства" работает с классом SDevices, но так же есть отдельный класс Rooms. У них разный набор свойств,методов и объектов. Это 2 класса никак не связаны. Если вы добавили датчик через "простые устройства", то вся информация с датчика будет доступна только внутри этого классаа и не стоит ожидать что в классе Rooms (в вашем случае Ulica.Pressure) что-то будет обновляться.
TransMatrix писал(а): 2. SonOff на прошивке "arendst/Sonoff-Tasmota". Подключены по MQTT.
Включение-выключение и статус - с определенных полей берет запись. Со значениями ON и OFF!!! А у простых устройств - 0 и 1!
Сижу, думаю как поменять. Пока две версии: или костыли, или плюнуть таки на эту "простоту"...
лучше использовать логические значения 0 и 1 для переключения. ON и OFF - зло:)
TransMatrix писал(а): 3. Датчики от этого самого SonOff... Эта добрая душа их передаёт "скопом" в записи SENSOR как "{"Time":"2017-10-20T08:22:37", "BME280":{"Temperature":26.4, "Humidity":40.9, "Pressure":1000.0}, "TempUnit":"C"}" - дешифровку в прошлой реинкарнации я освоил и поделился. Понять-бы, как теперь подружить его с "простыми" устройствами...
Что бы подружить с "простыми устройствами" есть 2 варианта.
1 Либо ваше железо изначально должно присылать уже распарсенные значения, а в "простых устройствах" вам останется только выбрать соотвествующие датчики.
2. Парсить JSON строку уже на стороне МЖД, вручную распихивать по свойствам, а уже потом в "простых устройствах" при добавлении устройств указывать эти свойства. Но при таком случае модуль "простые устройства" автоматически удалит ваши старые свойства и всёё перенесут в свой класс SDevices. (я тоже был сильно удивлён такому поведению и тоже не люблю модуль за это, но видимо по архитектуре так надо)
TransMatrix писал(а): Не, я не спорю - можно "по старому" реализовать, но смысл тогда от "простых устройств"???
Как я понимаю, этот модуль задумывался как самый лёгкий способ без программирования добавить устройство. Но ваще устройство должно быть простым :)
Если ваше устройство сложное, а вы пытаетесь использовать софт, который был написать для просто, то возникают вот такие проблемы :)

Я могу ошибаться, сам вот только только начал изучать как работает модуль, так что гуру поправьте.

Re: Простые устройства / Simple Devices

Добавлено: Пт окт 20, 2017 11:19 am
nick7zmail
TransMatrix писал(а): 2. SonOff на прошивке "arendst/Sonoff-Tasmota". Подключены по MQTT.
Включение-выключение и статус - с определенных полей берет запись. Со значениями ON и OFF!!! А у простых устройств - 0 и 1!
Сижу, думаю как поменять. Пока две версии: или костыли, или плюнуть таки на эту "простоту"...
Согласен, что on/off - Зло, но если надо - создайте в классе свойство mqtt_value к примеру, привяжите к нему метод (mqtt_value_updated), и надпись ON/OFF передавайте в mqtt_value, а в методе напишите

Код: Выделить всё

If($params['NEW_VALUE']=='ON') {
$this->setProperty('status', 1);
} else {
$this->setProperty('status', 0);
}
Тогда простое устройство заработает нормально...если отправлять в MQTT надо тоже ON/OFF-сделать тоже самое, только наоборот if status==1 - setProperty(..., 'ON')

Re: Простые устройства / Simple Devices

Добавлено: Пт окт 20, 2017 11:21 am
TransMatrix
Класс Rooms - "родной" для системы. При наличии привязки сенсора к комнате (свойство "Местоположение) и установленной галочке "Основной сенсор помещения" - должен обновлять соответствующий параметр помещения - температуру, влажность, присутствие и т.д.
Он, собственно, это и делает, но для ряда датчиков - тупо нет в комнатах соответствующего свойства и непонятно, как оно должно называться!

Насчёт ON-OFF и прочия - это тонкости ПРОШИВКИ и что-то сильно менять там я не могу, чтобы не было мучительно больно при обновлении GIT!
UPD: Через MQTT командами cmnd/%имя девайса%/StateText1 и StateText2 - задаём 0 и 1: это, собственно, ответы статуса реле - вместо OFF и ON!
Надо будет статейку набить, пожалуй, в ВиКи...

Re: Простые устройства / Simple Devices

Добавлено: Пт окт 20, 2017 1:27 pm
Gelezako
[quote="nick7zmail"]

Код: Выделить всё

If($params['NEW_VALUE']=='ON') {
$this->setProperty('status', 1);
} else {
$this->setProperty('status', 0);
}
ээм, этот код содержит небольшую ошибку, если по какой-то причине устройство ответит не ON и не OFF, а любое другое, к примеру из-за плохой связи или ошибки в ПО самого устройства, то ваш мный дом всегда будет воспринимать такой ответ как выключить. Поэтому, моё мнение нужно явно задавать, примерно вот так:

Код: Выделить всё

If($params['NEW_VALUE']=='ON') {
$this->setProperty('status', 1);
} else If($params['NEW_VALUE']=='OFF'{
$this->setProperty('status', 0);
}

Re: Простые устройства / Simple Devices

Добавлено: Пт окт 20, 2017 1:31 pm
Gelezako
TransMatrix писал(а):Класс Rooms - "родной" для системы. При наличии привязки сенсора к комнате (свойство "Местоположение) и установленной галочке "Основной сенсор помещения" - должен обновлять соответствующий параметр помещения - температуру, влажность, присутствие и т.д.
не понимаю почему вы считаете что он должен это делать?
TransMatrix писал(а): Он, собственно, это и делает, но для ряда датчиков - тупо нет в комнатах соответствующего свойства и непонятно, как оно должно называться!
всё верно, ничего не работает потому что нет ни свойств, ни реализации, не то что "для ряда датчиков", там нет ничего вообще, ни для каких датчиков. Всё что есть в этом классе, это предзабитые объекты для самых распространённых помещений и небольшая логика для определения что в нём кто-то есть.

Re: Простые устройства / Simple Devices

Добавлено: Пт окт 20, 2017 1:52 pm
nightwind
Gelezako писал(а): не понимаю почему вы считаете что он должен это делать?
вот почему

Код: Выделить всё

if ($linked_room && $this->getProperty('mainSensor')) {
  if ($this->class_title=='STempSensors') {
   sg($linked_room.'.temperature',$value);
  } elseif ($this->class_title=='SHumSensors') {
   sg($linked_room.'.humidity',$value);
  }
 } 
это в php файлах простых устройств смотреть надо

Re: Простые устройства / Simple Devices

Добавлено: Пт окт 20, 2017 2:01 pm
Gelezako
nightwind писал(а):
Gelezako писал(а): не понимаю почему вы считаете что он должен это делать?
вот почему

Код: Выделить всё

if ($linked_room && $this->getProperty('mainSensor')) {
  if ($this->class_title=='STempSensors') {
   sg($linked_room.'.temperature',$value);
  } elseif ($this->class_title=='SHumSensors') {
   sg($linked_room.'.humidity',$value);
  }
 }
это в php файлах простых устройств смотреть надо
как этот код связан с классом Rooms ?

Re: Простые устройства / Simple Devices

Добавлено: Пт окт 20, 2017 7:56 pm
TransMatrix
Gelezako писал(а):как этот код связан с классом Rooms ?
$linked_room - сюда передано свойство "Местоположение" объекта, которое является одним из "Расположений", которые в свою очередь - класс Rooms! По факту - $linked_room, это один из объектов класса Rooms!

Используя при поиске по объектам свойство $linked_room мы можем выбрать, к примеру, все объекты в комнате и включить их или выключить. Ясен пень - если не забыли указать местоположения!

Благодаря этому свойству и привязываются датчики к комнатам...

Re: Простые устройства / Simple Devices

Добавлено: Сб окт 21, 2017 2:42 pm
T-REX-XP
Можете добавить поддержку штор в этот модуль?? Купил шторы Xiaomi, если нужна какая то информаци для отладки, с радостью предоставлю.
Спасибо.

Re: Простые устройства / Simple Devices

Добавлено: Сб окт 21, 2017 8:34 pm
TransMatrix
Можно мааааленький вопрос?
Почему для датчиков "Тип условия" ТОЛЬКО выше и ниже, но нет "Равно"???

Собственно, хотел создать устройство "Приемник" типа "Датчик состояния", привязать его к принятому сигналу по value и при совпадении сигнала с определённым - какое-то действие...
Но там только "больше" и "меньше"!