intraHouse - Сервер умного дома

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
intrahouse
Сообщения: 147
Зарегистрирован: 17 янв 2014, 11:07

Re: intraHouse - Сервер умного дома

Сообщение intrahouse » 19 окт 2018, 20:23

ellab писал(а):
19 окт 2018, 19:40
Очень ждем. Без него не можем поставить в проект.
Может как то финансово можно помочь? (по мере возможности конечно )
Спасибо конечно за предложение :D Пока не надо.
Будет лучше, если поможете с тестированием.
Последний раз редактировалось intrahouse 19 окт 2018, 20:34, всего редактировалось 1 раз.

intrahouse
Сообщения: 147
Зарегистрирован: 17 янв 2014, 11:07

Re: intraHouse - Сервер умного дома

Сообщение intrahouse » 19 окт 2018, 20:30

Erik писал(а):
19 окт 2018, 19:58
intrahouse писал(а):
19 окт 2018, 18:36

Есть контейнер мнемосхем, есть пользовательские виджеты. Если сделать их размер по вертикали больше размера Экрана, появится скроллинг.
Пользовательские виджеты сжимаются и втискиваются на 1 экран.
Галочки "вписать по ширине" и "вписать по высоте" у виджета на экране сняты.
Речь о приложении для андроид
Проверим.
Предлагаю перенести обсуждение функционала системы intraHouse на форум intraHouse.
Все-таки этот форум для MegaD

intrahouse
Сообщения: 147
Зарегистрирован: 17 янв 2014, 11:07

Re: intraHouse - Сервер умного дома

Сообщение intrahouse » 20 ноя 2018, 18:55

ellab писал(а):
19 окт 2018, 19:40
intrahouse писал(а):
19 окт 2018, 17:14
ellab писал(а):
18 окт 2018, 22:58
Очень помог бы плагин HTTP клиент. С ним можно много ограничений обойти. Например в плагине Megad нет команд меняющих уставу термостата. И запросить значение уставки в том же термостат можно только парсингом HTML кода страницы.
Когда планируете добавить ?
Для MegaD правильнее доработать плагин MegaD
По HTTP клиенту есть некоторые идеи. Сделаем. Надеюсь ждать придется не долго.
Очень ждем. Без него не можем поставить в проект.
Может как то финансово можно помочь? (по мере возможности конечно :D )
Плагин HTTP-Client опубликован. Можно пробовать: https://intrahouse.ru/product/plugin-http-client/

ellab
Сообщения: 35
Зарегистрирован: 11 июн 2013, 16:47

Re: intraHouse - Сервер умного дома

Сообщение ellab » 20 ноя 2018, 19:48

Уже скачали, обновилась. Вроде и плагин для MD обновился. Анонс видел а релиза нет.
Сразу не большой вопрос: отправить команду допустим кнопкой можно? Или там только на получение данных?
Извините если глупый вопрос, бегло прочитал описание на форуме

intrahouse
Сообщения: 147
Зарегистрирован: 17 янв 2014, 11:07

Re: intraHouse - Сервер умного дома

Сообщение intrahouse » 20 ноя 2018, 19:54

ellab писал(а):
20 ноя 2018, 19:48
Или там только на получение данных?
Да. Пока только получение.

ellab
Сообщения: 35
Зарегистрирован: 11 июн 2013, 16:47

Re: intraHouse - Сервер умного дома

Сообщение ellab » 21 ноя 2018, 16:21

Ну собственно работает. Будем активнее тестить.
Наверное лучше на форуме intrahouse.
Написал туда.

intrahouse
Сообщения: 147
Зарегистрирован: 17 янв 2014, 11:07

Re: intraHouse - Сервер умного дома

Сообщение intrahouse » 03 дек 2018, 19:12

intrahouse писал(а):
20 ноя 2018, 19:54
ellab писал(а):
20 ноя 2018, 19:48
Или там только на получение данных?
Да. Пока только получение.
Обновили плагин HTTP-Client.
Теперь можно посылать команды :D

intrahouse
Сообщения: 147
Зарегистрирован: 17 янв 2014, 11:07

Re: intraHouse - Сервер умного дома

Сообщение intrahouse » 24 дек 2018, 17:20

Опубликована новая версия системы intraHouse (4.4.6)
Появился механизм подготовки сценариев в виде блок-схем.
Подробнее можно почитать здесь https://ih-systems.com/ru/block-diagram/
scen101.jpg
scen101.jpg (86.96 КБ) 2047 просмотров

gis
Сообщения: 33
Зарегистрирован: 17 дек 2018, 15:26
Откуда: Калужская область

Re: intraHouse - Сервер умного дома

Сообщение gis » 01 янв 2019, 19:47

Всех с наступившим НОВЫМ ГОДОМ! Потихоньку осваиваю мегу и intraHouse. Подключил герконы, но на мнемосхеме состояние иконок меняется только, если явно задать интервал опроса герконов. Подскажите новичку: посылает ли мега на сервер информацию сразу при изменении состояния порта? Если да, то где это настраивается в меге и intraHouse?

Alex_Jet
Сообщения: 913
Зарегистрирован: 12 янв 2014, 18:00
Откуда: Россия, г.Томск

Re: intraHouse - Сервер умного дома

Сообщение Alex_Jet » 02 янв 2019, 07:52

gis писал(а):
01 янв 2019, 19:47
Всех с наступившим НОВЫМ ГОДОМ! Потихоньку осваиваю мегу и intraHouse. Подключил герконы, но на мнемосхеме состояние иконок меняется только, если явно задать интервал опроса герконов. Подскажите новичку: посылает ли мега на сервер информацию сразу при изменении состояния порта? Если да, то где это настраивается в меге и intraHouse?
Если iH Cherry, то у плагина надо открыть "Расширения" и вбить туда запросы, которые отсылает MegaD серверу:
iH_Cherry_Плагины_Расширения.JPG
iH_Cherry_Плагины_Расширения.JPG (66.14 КБ) 1978 просмотров
А вообще, лучше идите на форум iH - там уже много информации есть!

Alex_Jet
Сообщения: 913
Зарегистрирован: 12 янв 2014, 18:00
Откуда: Россия, г.Томск

Re: intraHouse - Сервер умного дома

Сообщение Alex_Jet » 02 янв 2019, 08:20

"Мультикнопка" для отображения различных параметров на OLED. Давно хотел чтобы OLED, подключенный по I2C к MegaD мог отображать разные параметры и подписи к ним. Пока реализовал такой режим с несколькими оговорками:
1. Одинарный клик - отображается а) Температура в комнате, б) Влажность в комнате, в) Уровень СО2 в закольцованном режиме по нажатию кнопки. Если дисплей был выключен то первым параметром отображается именно Температура в помещении.
2. Двойной клик - отображается температура на улице
3. Удержание кнопки - выключение дисплея.

Конечно обновления выбранных показаний через какой-то промежуток времени нет (cron), но уже лучше чем просто постоянный показ единственной температуры с возможностью только выключить/включить дисплей. Автоматическое отключение OLED так же пока не сделал - не могу до конца разобраться как в JS прервать работу таймера если снова нажата кнопка.

В iH Cherry нужно создать устройство "Датчик дискретный" и назвать его, например, BUTTON. Это устройство в каналах плагина MegaD привязать к нужному каналу DI. А в расширениях прописать "трапы", которые приходят от MegaD чтобы сервер iH их отрабатывал соответствующим образом. Кстати, расширение "Кнопка OFF", как прописано у меня, добавлять не обязательно поскольку в сценарии есть функция ClearState сбрасывающая состояние кнопки в 0. Поскольку после Click1 и Click2 MegaD не посылает никакого атрибута, который говорит о том, что кнопка вернулась в свое первоначальное состояние...
iH_Cherry_Плагины_Расширения_Мультикнопка.JPG
iH_Cherry_Плагины_Расширения_Мультикнопка.JPG (21.33 КБ) 1977 просмотров
Собственно код самого сценария. Пока все устройства привязаны в сценарии явно. Когда разработчик iH добавит возможность выбора плагина и его канала через который должен будет работать сценарий, то можно будет сделать мультисценарий - в "Список устройств" выбрать наборы кнопка/датчики/плагин/номер канала для каждого помещения где установлен OLED с кнопкой и по одному и тому же сценарию будут отображаться нужные параметры на нужных OLED.

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

/** 
* @name Обновление данных на OLED гостевой 
* @desc При однократном нажатии кнопки OLED отображает параметры микроклимата данного помещения. При двойном нажатии кнопки
*       OLED отображает уличную температуру. При удержании кнопки дисплей выключается. 
* @version 4 
*/

const button = Device("BUTTON1_01");
const dt = Device("STEMP1_01");
const dh = Device("SHUMIDITY1_01");
const dco2 = Device("SENSORA1_01");
const dt_s = Device("STEMP4_01");

startOnChange(button); 

script({
    button_state: 0,  //Переменная параметров
    oled_state: 0,    //Переменная состояния OLED
    plugin: "megad5", //Переменная названия плагина
    channel: 31,      //Переменная номера канала плагина
    text: "",
    col: 0,
    value: "",
    unit: "",
  
    start() {
      let name = button.name;
      let mode = button.value;
      let value = 0; //Переменная для выбора параметров
      
      if(mode == 1) {
        //Если OLED был выключен то отображаем первый параметр
        if(!this.oled_state) {
          value = mode;
          this.button_state = value;
        }
        else { //Перебор параметров при каждом нажатии кнопки
          value = this.button_state + 1;
          if(value > 2) this.button_state = 0;
          else this.button_state = value;
        }
      }
      else value = mode;
      
      this.log(name+ ", режим = " +value);
      
      //Перебор параметров для вывода на OLED
      switch(value) {
        case 1: this.SendData1();
                break;
        case 2: this.SendData2();
                break;
        case 3: this.SendData3();
                break;
        case 4: this.SendData4();
                break;
        case 5: this.SendData5();
                break;
      }
      
      if(mode > 0) {
        this.startTimer("T1", 0.5, "ClearState");
      }
    },
    
    SendData1() {
      let text = "Температура";
      let value = dt.value;
      let unit = "grad";
      this.DataToOLED(text, value, unit, this.plugin, this.channel);
    },
    
    SendData2() {
      let text = "Влажность";
      let value = dh.value;
      let unit = "percent";
      this.DataToOLED(text, value, unit, this.plugin, this.channel);
    },
    
    SendData3() {
      let text = "Уровень_СО2,_ppm";
      let value = dco2.value;
      let unit = "ppm";
      this.DataToOLED(text, value, unit, this.plugin, this.channel);
    },
    
    SendData4() {
      let text = "На улице";
      let value = dt_s.value;
      let unit = "grad";
      this.DataToOLED(text, value, unit, this.plugin, this.channel);
    },
    
    SendData5() {
      this.TurnOffOLED();
    },
    
    DataToOLED(text, value, unit, plugin, channel) {
      let iconv = require("/opt/intrahouse-c/backend/node_modules/iconv-lite");
      let buf = iconv.encode(text, "cp866");
      this.text = buf.toString("latin1");
      
      //Центрирование параметра на OLED
      let length = this.text.length;
      let col = (128 - length*6)/2;
      this.col = col.toFixed(0);
      
      //Форматирование цифровых значений
      let str = ""; //Вспомогательная переменная
      if(value < 100) value = value.toFixed(1);
      str = value.toString();
      if(str.length < 4 && value > 0) this.str = 's+' +str;
      else if(str.length < 4) this.str = 'ss' +str;
      else if(str.length < 5) this.str = 's' +str;
      else this.str = str;
      
      //Выбор единицы измерения
      if(unit == "grad") this.unit = ":";
      else if(unit == "percent") this.unit = "%"; //"%"
      else if(unit == "ppm") this.unit = "s"; //"p"
      
      //Вывод команд на дисплей
      this.ClearOLED(); //Очищаем первую строчку
      this.startTimer("T2", 0.3, "SendTextToOLED");
      this.startTimer("T3", 0.5, "SendValueToOLED");
      if(!this.oled_state) {  //Если дисплей выключен
        //то включаем его после обновления параметра
        this.startTimer("T4", 0.7, "TurnOnOLED");
      }
    },
    
    ClearState() {
      this.assign(button, "value", 0);
    },
    
    ClearOLED() {
      this.pluginCommand({unit: this.plugin, command: '/sec/?pt=' +this.channel+ '&disp_cmd=1&row=0'});
    },
    
    TurnOnOLED() {
      this.oled_state = 1;
      this.ControlOLED(this.plugin, this.channel, this.oled_state);
    },
    
    TurnOffOLED() {
      this.oled_state = 0;
      this.ControlOLED(this.plugin, this.channel, this.oled_state);
    },
    
    SendTextToOLED() {
      this.pluginCommand({unit: this.plugin, command: '/sec/?pt=' +this.channel+ '&text=' +this.text+ '&col=' +this.col+ '&row=0'});
    },
    
    SendValueToOLED() {
      this.pluginCommand({unit: this.plugin, command: '/sec/?pt=' +this.channel+ '&text=' +this.str+this.unit});
    },
    
    ControlOLED(plugin, channel, cmd) {
      this.pluginCommand({unit: plugin, command: '/sec/?cmd=' +channel+ ':' +cmd});
    }
});
Еще момент - не смог добавить русские подписи...почему-то iconv-lite не хочет работать как надо, либо вся проблема в скорострельности node.js. Кстати, именно из-за скорострельности node.js и его "параллельной работе" пришлось наделать кучу таймеров для вывода данных на дисплей, иначе либо концовка надписей/показаний не отображались, либо отображалась абракадабра, либо "улетала" подпись после отображения.

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

      //Вывод команд на дисплей
      this.ClearOLED(); //Очищаем первую строчку
      this.startTimer("T2", 0.3, "SendTextToOLED");
      this.startTimer("T3", 0.5, "SendValueToOLED");
      if(!this.oled_state) {  //Если дисплей выключен
        //то включаем его после обновления параметра
        this.startTimer("T4", 0.7, "TurnOnOLED");
      }
В php все отлично работает без каких либо задержек:

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

$my_temp = number_format($temp_bme280, 1); // Получаем значение из базы и форматируем его
if ( strlen($my_temp) < 4 && $my_temp > 0 )
$my_temp = "s+$my_temp";
elseif (strlen($my_temp) < 4 )
$my_temp = "ss$my_temp";
elseif (strlen($my_temp) < 5 )
$my_temp = "s$my_temp";

$text = "Улица";
$text = iconv("utf-8", "cp866", $text);
$length = strlen($text);
$col = (128 - $length*6)/2;
$col = round($col);

file_get_contents("http://192.168.11.25/sec/?pt=31&disp_cmd=1&row=0");
file_get_contents("http://192.168.11.25/sec/?pt=31&text=" .$text. "&col=" .$col. "&row=0");
file_get_contents("http://192.168.11.25/sec/?pt=31&text=$my_temp:");
Update1: научился выводить русские буквы. Код поправил - надо было указать кодировку для toString.
Последний раз редактировалось Alex_Jet 03 янв 2019, 19:37, всего редактировалось 1 раз.

gis
Сообщения: 33
Зарегистрирован: 17 дек 2018, 15:26
Откуда: Калужская область

Re: intraHouse - Сервер умного дома

Сообщение gis » 02 янв 2019, 11:21

ОГРОМНОЕ спасибо за информацию. Разобрался с расширениями. Они у меня не работали, так как я ожидал ответ от сервера типа "/megad.php?pt=", а по факту приходило "/megad_1.php?pt=". Почему так - для меня большая загадка. Предполагаю, что это названия скрипта в настройках MegaD. В описании плагина об этом ни слова. Вообще с документацией и описанием у intraHouse большая беда. Тратишь много времени, чтобы разобраться со всеми нюансами. Для начинающих пользователей не все вещи очевидны, как это кажется разработчикам.

Alex_Jet
Сообщения: 913
Зарегистрирован: 12 янв 2014, 18:00
Откуда: Россия, г.Томск

Re: intraHouse - Сервер умного дома

Сообщение Alex_Jet » 02 янв 2019, 18:13

gis писал(а):
02 янв 2019, 11:21
Предполагаю, что это названия скрипта в настройках MegaD.
Да, этот именно так. Ведь MegaD отправляет сообщения серверу, а не наоборот. Поэтому плагин MegaD тут не при чем!!!

intrahouse
Сообщения: 147
Зарегистрирован: 17 янв 2014, 11:07

Re: intraHouse - Сервер умного дома

Сообщение intrahouse » 31 янв 2019, 13:52

Обновлен плагин для работы с контроллером MegaD
  • Добавлена отправка команды плагину из сценария — любые запросы, которые принимает MegaD
  • Восстановление состояния выходов при перезагрузке контроллера
  • Добавлен параметр — Отправлять время на контроллер
  • Добавлен параметр — Интервал отправки запросов (мсек)
  • Чтение датчиков I2C (и другие запросы, возвращающие одно значение, а не список)
  • Добавлена функция обработки данных на плагине
Подробнее о плагине MegaD https://ih-systems.com/ru/product/plugin-megad/

intrahouse
Сообщения: 147
Зарегистрирован: 17 янв 2014, 11:07

Re: intraHouse - Сервер умного дома

Сообщение intrahouse » 04 апр 2019, 13:02

Опубликован новый плагин CCTV для получения изображения с IP камер в браузерах (Safari, Chrome) на компьютерах, планшетах и смартфонах.

Транспортные протоколы: TCP, UDP
Прикладные протоколы: RTSP, HTTP
Форматы сжатия: H264, MJPEG, JPEG

- Плагин выполняет роль стрим-сервера. По запросу подключается к камере и раздает поток активным клиентам.
- Плагин всегда забирает только один поток с камеры и раздает его всем активным клиентам.
- При отсутствии активных клиентов плагин отключается от камеры и уходит в режим ожидания.
- Плагин не производит транскодирование видео потока, что позволяет экономить ресурсы сервера.
- Для работы плагина не требуются какие либо дополнительные программы (FFmpeg и пр.)

Подробнее: https://ih-systems.com/ru/product/plugin-cctv/

martiniman
Сообщения: 252
Зарегистрирован: 09 авг 2016, 15:09
Откуда: Сочи

Re: intraHouse - Сервер умного дома

Сообщение martiniman » 11 апр 2019, 10:54

Добрый день.
Выполнил "curl -sL https://git.io/fN1JN | sudo -E bash -s ru"

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

Synchronizing state of intrahouse-c.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable intrahouse-c
Created symlink /etc/systemd/system/multi-user.target.wants/intrahouse-c.service → /etc/systemd/system/intrahouse-c.service.
Created symlink /etc/systemd/system/mysql.service.wants/intrahouse-c.service → /etc/systemd/system/intrahouse-c.service.
● intrahouse-c.service - intrahouse-c
   Loaded: loaded (/etc/systemd/system/intrahouse-c.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2019-04-11 09:46:50 MSK; 26ms ago
 Main PID: 23211 (node)
    Tasks: 6 (limit: 4915)
   CGroup: /system.slice/intrahouse-c.service
           └─23211 /opt/intrahouse-c/node/bin/node /opt/intrahouse-c/backend/app.js prod

апр 11 09:46:50 zbox2 systemd[1]: Started intrahouse-c.

-----------------------------------------------------------------------------------

 Web interface: http://192.168.53.166:8088/pm/ 
 Complete! Thank you.
И ни с localhost, ни с другого адреса на http://192.168.53.166:8088/pm/ web интерфейса нет.

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

hh@zbox2:~$ ps aux | grep intrahouse
root     24744  0.0  0.4 1049804 39084 ?       Ssl  09:50   0:00 /opt/intrahouse-c/node/bin/node /opt/intrahouse-c/backend/app.js prod
Что делать?

intrahouse
Сообщения: 147
Зарегистрирован: 17 янв 2014, 11:07

Re: intraHouse - Сервер умного дома

Сообщение intrahouse » 11 апр 2019, 11:46

Можно посмотреть лог /opt/intrahouse-c/log/ih.log
Или выслать его нам на support@ih-systems.com

martiniman
Сообщения: 252
Зарегистрирован: 09 авг 2016, 15:09
Откуда: Сочи

Re: intraHouse - Сервер умного дома

Сообщение martiniman » 11 апр 2019, 14:29

intrahouse писал(а):
11 апр 2019, 11:46
Можно посмотреть лог /opt/intrahouse-c/log/ih.log
Или выслать его нам на support@ih-systems.com
Да, порт занят influxdb

intrahouse
Сообщения: 147
Зарегистрирован: 17 янв 2014, 11:07

Re: intraHouse - Сервер умного дома

Сообщение intrahouse » 11 апр 2019, 14:35

Порт можно изменить в файле: /opt/intrahouse-c/config.json
Потом перезагрузить систему: sudo service intrahouse-c restart

Ruslan
Сообщения: 597
Зарегистрирован: 06 янв 2014, 20:44

Re: intraHouse - Сервер умного дома

Сообщение Ruslan » 11 апр 2019, 18:25

Интересно, из-под виртуальных машин кто-нибудь пробовал запускать intraHouse (и если да, то каких)? Ну и каковы результаты (хотя бы кратко: успешно/неуспешно)?

Ответить