Re: intraHouse - Сервер умного дома
Добавлено: 19 окт 2018, 20:23
Проверим.Erik писал(а): ↑19 окт 2018, 19:58Пользовательские виджеты сжимаются и втискиваются на 1 экран.intrahouse писал(а): ↑19 окт 2018, 18:36
Есть контейнер мнемосхем, есть пользовательские виджеты. Если сделать их размер по вертикали больше размера Экрана, появится скроллинг.
Галочки "вписать по ширине" и "вписать по высоте" у виджета на экране сняты.
Речь о приложении для андроид
Плагин HTTP-Client опубликован. Можно пробовать: https://intrahouse.ru/product/plugin-http-client/ellab писал(а): ↑19 окт 2018, 19:40Очень ждем. Без него не можем поставить в проект.intrahouse писал(а): ↑19 окт 2018, 17:14Для MegaD правильнее доработать плагин MegaD
По HTTP клиенту есть некоторые идеи. Сделаем. Надеюсь ждать придется не долго.
Может как то финансово можно помочь? (по мере возможности конечно )
Обновили плагин HTTP-Client.
Если iH Cherry, то у плагина надо открыть "Расширения" и вбить туда запросы, которые отсылает MegaD серверу: А вообще, лучше идите на форум iH - там уже много информации есть!gis писал(а): ↑01 янв 2019, 19:47Всех с наступившим НОВЫМ ГОДОМ! Потихоньку осваиваю мегу и intraHouse. Подключил герконы, но на мнемосхеме состояние иконок меняется только, если явно задать интервал опроса герконов. Подскажите новичку: посылает ли мега на сервер информацию сразу при изменении состояния порта? Если да, то где это настраивается в меге и intraHouse?
Код: Выделить всё
/**
* @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});
}
});
Код: Выделить всё
//Вывод команд на дисплей
this.ClearOLED(); //Очищаем первую строчку
this.startTimer("T2", 0.3, "SendTextToOLED");
this.startTimer("T3", 0.5, "SendValueToOLED");
if(!this.oled_state) { //Если дисплей выключен
//то включаем его после обновления параметра
this.startTimer("T4", 0.7, "TurnOnOLED");
}
Код: Выделить всё
$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:");
Код: Выделить всё
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.
Код: Выделить всё
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
Да, порт занят influxdbintrahouse писал(а): ↑11 апр 2019, 11:46Можно посмотреть лог /opt/intrahouse-c/log/ih.log
Или выслать его нам на support@ih-systems.com