Использование MegaD в openHAB
-
- Сообщения: 528
- Зарегистрирован: 09 авг 2016, 15:09
- Откуда: Сочи
Re: Использование MegaD в openHAB
У меня тоже inflixDB и Ubuntu
Re: Использование MegaD в openHAB
Не очень понял, а с этой строкой как взаимодействовать?Igor78 писал(а): ↑22 янв 2018, 16:06Прописал дисплей через HTTP binding:
String TST_SSD1306_Text "TST SSD1306 Text [%s]" { http=">[*:GET:http://10.5.5.31/sec/?pt=7&text=%2$s]" }
Работает
Сделал вывод часов на экране:
Код: Выделить всё
rule "Time to SSD1306"
when
Time cron "0 0/1 * * * ?" //каждую 1 минут
then
var String Hour = String::format( "%1$tk", new Date() ) //https://docs.oracle.com/javase/8/docs/api/java/util/Formatter.html
var String Minute = String::format( "%1$tM", new Date() )
sendHttpGetRequest("http://192.168.88.60/sec/?pt=3&text=sssssssssssss")
Thread::sleep(2000) //2000 миллисекунд в секундах
sendHttpGetRequest("http://192.168.88.60/sec/?pt=3&text=" + Hour + "-" + Minute)
end
Re: Использование MegaD в openHAB
xxx.rules:empenoso писал(а): ↑26 янв 2018, 11:55Не очень понял, а с этой строкой как взаимодействовать?Igor78 писал(а): ↑22 янв 2018, 16:06Прописал дисплей через HTTP binding:
String TST_SSD1306_Text "TST SSD1306 Text [%s]" { http=">[*:GET:http://10.5.5.31/sec/?pt=7&text=%2$s]" }
Работает
...
[/code]
...
sendCommand(TST_SSD1306_Text,"-25.3:") //на экране -25.3 градуса
sendCommand(TST_SSD1306_Text,"ssssss") //поле очищено
...
С уважением, Игорь
Re: Использование MegaD в openHAB
Да, спасибо. Попеременно вывожу на экран время и температуру:Igor78 писал(а): ↑25 янв 2018, 18:12
String TST_SSD1306_SmallText "TST SSD1306 SmallText [%s]" { http=">[*:GET:http://10.5.5.31/bis/?pt=7&text=%2$s&col=0&row=0]" }
-пишет надпись в верхнем левом углу
Number TST_SSD1306_Clear_SmallText_From "tmp [%s]" { http=">[*:GET:http://10.5.5.31/bis/?pt=7&text=_______ ... %2$s&row=0]" }
-очищает верхнюю строку начиная с заданной позиции за раз очищает около 40% строки
Код: Выделить всё
String P3_SSD1306_Text "Дисплей SSD1306 Text [%s]" { http=">[*:GET:http://192.168.88.60/sec/?pt=3&text=%2$s]" }
String P3_SSD1306_SmallText "Дисплей SSD1306 SmallText [%s]" { http=">[*:GET:http://192.168.88.60/sec/?pt=3&text=%2$s&col=30&row=0]" }
Код: Выделить всё
rule "Time to SSD1306"
when
Time cron "0 0/1 * * * ?" //каждую 1 минут
then
val Temp = String::format("%.0f", (P1_HTU21D_Temp.state as DecimalType).doubleValue )
var String Hour = String::format( "%1$tk", new Date() ) //https://docs.oracle.com/javase/8/docs/api/java/util/Formatter.html
var String Minute = String::format( "%1$tM", new Date() )
sendCommand(P3_SSD1306_SmallText,"___________________") //очистка верней строки
Thread::sleep(2000) //2000 миллисекунд в секундах
sendCommand(P3_SSD1306_Text,"ssssssss") //очистка основной строки
Thread::sleep(2500) //2500 миллисекунд в секундах
sendCommand(P3_SSD1306_SmallText, "Time")
sendCommand(P3_SSD1306_Text, Hour + "-" + Minute)
Thread::sleep(30000) //30000 миллисекунд в секундах
sendCommand(P3_SSD1306_SmallText,"___________________") //очистка верней строки
Thread::sleep(2000) //2000 миллисекунд в секундах
sendCommand(P3_SSD1306_Text,"ssssssss") //очистка основной строки
Thread::sleep(2500) //2500 миллисекунд в секундах
sendCommand(P3_SSD1306_SmallText, "Outdoor")
sendCommand(P3_SSD1306_Text, "s"+Temp+":")
end
Re: Использование MegaD в openHAB
Русские буквы непонятно как только и температура парсится с запятой "-6,34", а экран в таком виде не воспринимает - запятую пропускает и получается "-634" на экране . И очистка верней строки как будто через раз не доходит до конца - последние символы остаются иногда.
Пока температуру обрезаю до целого значения.
Пока температуру обрезаю до целого значения.
Re: Использование MegaD в openHAB
У меня выводится нормально:
Вот часть кода, где температура из Item типа Number преобразовывается в строку для вывода:
Код: Выделить всё
//OUTSIDE_BME280_Temp - Item типа Number
var String s
s = (((OUTSIDE_BME280_Temp.state as DecimalType)*10).intValue/10.0).toString+":" //оставляем один знак после запятой и преобразуем в строку
//форматируем пробелами
if (s.length == 4)s="ss"+s
else if (s.length == 5)s="s"+s
sendCommand(TST_SSD1306_Text,s) //выводим строку на экран
Код: Выделить всё
sendCommand(TST_SSD1306_Clear_SmallText_From,0)
sendCommand(TST_SSD1306_Clear_SmallText_From,40)
sendCommand(TST_SSD1306_Clear_SmallText_From,80)
С уважением, Игорь
-
- Сообщения: 528
- Зарегистрирован: 09 авг 2016, 15:09
- Откуда: Сочи
Re: Использование MegaD в openHAB
В доках openHAB пишут что уже нужно использовать такую конструкцию: testItem.sendCommand(“test”)
Последний раз редактировалось martiniman 28 янв 2018, 00:47, всего редактировалось 1 раз.
Re: Использование MegaD в openHAB
Пару дней уже работает все норм. Только вот задумался если дважды в минуту он обновляет картинку на экране это 2880 за сутки - надолго ли хватит экранчика?
Код: Выделить всё
rule "Time to SSD1306"
when
Time cron "0 0/1 * * * ?" //каждую 1 минут
then
var String Temp = (((P1_HTU21D_Temp.state as DecimalType)*10).intValue/10.0).toString+":" //оставляем один знак после запятой и преобразуем в строку
//val Temp = String::format("%.0f", (P1_HTU21D_Temp.state as DecimalType).doubleValue )
var String Hour = String::format( "%1$tk", new Date() ) //https://docs.oracle.com/javase/8/docs/api/java/util/Formatter.html
var String Minute = String::format( "%1$tM", new Date() )
sendHttpGetRequest("http://192.168.88.60/sec/?pt=3&disp_cmd=1&row=0") //очистка верней строки
//sendCommand(P3_SSD1306_SmallText,"___________________") //очистка верней строки
Thread::sleep(2000) //2000 миллисекунд в секундах
sendCommand(P3_SSD1306_Text,"ssssssss") //очистка основной строки
Thread::sleep(2500) //2500 миллисекунд в секундах
sendCommand(P3_SSD1306_SmallText, "Time")
sendCommand(P3_SSD1306_Text, Hour + "-" + Minute)
Thread::sleep(30000) //30000 миллисекунд в секундах
sendHttpGetRequest("http://192.168.88.60/sec/?pt=3&disp_cmd=1&row=0") //очистка верней строки
Thread::sleep(2000) //2000 миллисекунд в секундах
sendCommand(P3_SSD1306_Text,"ssssssss") //очистка основной строки
Thread::sleep(2500) //2500 миллисекунд в секундах
sendCommand(P3_SSD1306_SmallText, "Outdoor")
sendCommand(P3_SSD1306_Text, "s"+Temp)
end
-
- Сообщения: 528
- Зарегистрирован: 09 авг 2016, 15:09
- Откуда: Сочи
Re: Использование MegaD в openHAB
Я пару лет использую OLED 2.4 дюйма с припаяным к нему ESP8266 и прошивкой Макса wifi-iot.com, 2 шт, openHAB, тексты отправляю через MQTT.
Много чего на него выводит. Видео сниму.
Много чего на него выводит. Видео сниму.
Re: Использование MegaD в openHAB
OLED бояться не обновлений картинки, а длительного свечения на максимальной яркости.
Я бы рекомендовал выставлять минимальную достаточную яркость.
У меня экран работает с мая этого года. Светится постоянно. 100% времени. Значение яркости - 80. Днем видно прекрасно. Можно было бы и меньше.
Какой-то заметной деградации пока не наблюдаю.
А вот отверстие в корпусе проделать у меня получилось лучше...
-
- Сообщения: 528
- Зарегистрирован: 09 авг 2016, 15:09
- Откуда: Сочи
Re: Использование MegaD в openHAB
У меня повыгорали оледы, но не критично.
Я написал правило для openHAB, что-бы можно было добавлять любое кол-во дисплеев в группу и на всех будут отображаться сообщения от системы.
Страницы можно выбирать кнопкой.
Также выводятся алармы от системы, и на телевизор тоже выводится.
Вот видео:
https://www.dropbox.com/s/sbax0ak2ko79sk4/OLED.mp4?dl=0
Экраны такие https://www.ebay.com/itm/SPI-2-42-OLED- ... 1619452398.
А появились уже прям с ESP8266 https://www.ebay.com/itm/IoT-ESP8266-No ... Sw609Z4Y1R
Я написал правило для openHAB, что-бы можно было добавлять любое кол-во дисплеев в группу и на всех будут отображаться сообщения от системы.
Страницы можно выбирать кнопкой.
Также выводятся алармы от системы, и на телевизор тоже выводится.
Вот видео:
https://www.dropbox.com/s/sbax0ak2ko79sk4/OLED.mp4?dl=0
Экраны такие https://www.ebay.com/itm/SPI-2-42-OLED- ... 1619452398.
А появились уже прям с ESP8266 https://www.ebay.com/itm/IoT-ESP8266-No ... Sw609Z4Y1R
Re: Использование MegaD в openHAB
Помогите советом, управление светом реализовано через двухконтурные импульсные реле (таким образом есть обратная связь при замкнутом реле)
Импульсы с контроллеров реализованы правилом
rule "Pulse1"
when
Item GF_Corridor_Light1 received command
then
Out01.sendCommand(ON) //включаем выход, спим 10мс, выключаем выход
Thread::sleep(10)
Out01.sendCommand(OFF)
Обратная связь обеспечивается правилом:
rule "feedback1"
when
Item In01 received update
then
if (In01.state == CLOSED) //замыкается выход меги (была нажата кнопка на стене) обновляем статус выключателя
GF_Corridor_Light1.postUpdate(ON)
else
GF_Corridor_Light1.postUpdate(OFF)
так же пробовал использовать правило, при котором при получении обратной связи выход выключается - не всегда вовремя срабатывало, что могло привести к выгоранию реле, при данной схеме все работает как часы, приступил к реализации кнопки "Выключить все" и тут начались проблемы, правило:
rule "Alloff"
when
Item AllOff received command OFF
then //при срабатывании кнопки, перебираем всю группу выключателей в позиции "ON" и шлем им команду "OFF"
gLight.members.filter(item|item.state == ON).forEach[item | sendCommand(item, OFF)]
end
в данном случае можно выключить до 7 выходов, при большем количестве начинается вакханалия, не все выходы срабатывают или остаются включенными.
Уверен это изза использования команды Thread::sleep, но думаю и есть проблемы с биндингом, потому как не вовремя срабатывают входы, что не дает мне использовать правило с выключением по обратной связи.
Помогите решить проблему, плиз! У кого тоже импульсные реле, как решали проблему?
PS. По биндингу: заметил, что если прописывать thing через файл, и ставить refresh=0 при замыкании входа часто ничего не приходит, если настраивать через paper UI с refresh=0 дела куда лучше, но иногда ответ приходит с запозданием, что может быть слишком долго для бистабильного реле.
так же, если в items прописать канал биндинга, ничего не происходит, нужно все равно руками пробрасывать линки в paper UI
Импульсы с контроллеров реализованы правилом
rule "Pulse1"
when
Item GF_Corridor_Light1 received command
then
Out01.sendCommand(ON) //включаем выход, спим 10мс, выключаем выход
Thread::sleep(10)
Out01.sendCommand(OFF)
Обратная связь обеспечивается правилом:
rule "feedback1"
when
Item In01 received update
then
if (In01.state == CLOSED) //замыкается выход меги (была нажата кнопка на стене) обновляем статус выключателя
GF_Corridor_Light1.postUpdate(ON)
else
GF_Corridor_Light1.postUpdate(OFF)
так же пробовал использовать правило, при котором при получении обратной связи выход выключается - не всегда вовремя срабатывало, что могло привести к выгоранию реле, при данной схеме все работает как часы, приступил к реализации кнопки "Выключить все" и тут начались проблемы, правило:
rule "Alloff"
when
Item AllOff received command OFF
then //при срабатывании кнопки, перебираем всю группу выключателей в позиции "ON" и шлем им команду "OFF"
gLight.members.filter(item|item.state == ON).forEach[item | sendCommand(item, OFF)]
end
в данном случае можно выключить до 7 выходов, при большем количестве начинается вакханалия, не все выходы срабатывают или остаются включенными.
Уверен это изза использования команды Thread::sleep, но думаю и есть проблемы с биндингом, потому как не вовремя срабатывают входы, что не дает мне использовать правило с выключением по обратной связи.
Помогите решить проблему, плиз! У кого тоже импульсные реле, как решали проблему?
PS. По биндингу: заметил, что если прописывать thing через файл, и ставить refresh=0 при замыкании входа часто ничего не приходит, если настраивать через paper UI с refresh=0 дела куда лучше, но иногда ответ приходит с запозданием, что может быть слишком долго для бистабильного реле.
так же, если в items прописать канал биндинга, ничего не происходит, нужно все равно руками пробрасывать линки в paper UI
Re: Использование MegaD в openHAB
Про биндинг такая история - заметил подобное, но проблема похоже в самом сервере, данные прилетают на входящий сервер, отрабатываются, но ничего не происходит. При этом на 2.1 таких проблем небыло. Отловить что даёт такой эффект у меня никак не получается....
Отправлено с моего Mi Note 2 через Tapatalk
Отправлено с моего Mi Note 2 через Tapatalk
Re: Использование MegaD в openHAB
postUpdate не приводит к срабатыванию триггера "received command", может в этом проблема?
С уважением, Игорь
Re: Использование MegaD в openHAB
А он и не должен, он просто меняет иконку, когда нажимается кнопка на стенеpostUpdate не приводит к срабатыванию триггера "received command"
Проблему пока решил с помощью добавления пауз в правило
Код: Выделить всё
rule "Alloff"
when
Item AllOff received command OFF
then //при срабатывании кнопки, перебираем всю группу выключателей в позиции "ON" и шлем каждому команду "OFF" и ждем 100мсек
gLight.members.filter(item|item.state == ON).forEach[item | sendCommand(item, OFF) thread::sleep(100)]
end
Конечно можно опросить входы, и сформировать http команду с нужными портами и параметром р напрямую в мегу, но пока лень)
-
- Сообщения: 528
- Зарегистрирован: 09 авг 2016, 15:09
- Откуда: Сочи
Re: Использование MegaD в openHAB
Обязательно с большой буквы нужно:5kull писал(а): ↑06 фев 2018, 19:32Код: Выделить всё
gLight.members.filter(item|item.state == ON).forEach[item | sendCommand(item, OFF) thread::sleep(100)]
Код: Выделить всё
Thread::sleep(100)
-
- Сообщения: 528
- Зарегистрирован: 09 авг 2016, 15:09
- Откуда: Сочи
Re: Использование MegaD в openHAB
Добрый день. Несколько вопросов по текущей версии, хочу попробовать ваш биндинг.
Есть ли поддержка автором биндига в настоящее время (на гитхабе последняя дата обновления более года назад) ?
Все ли возможности Меги поддерживает биндинг?
Почему в правилах используется сначала postUpdate и сразу sendCommand?
Спасибо.
Re: Использование MegaD в openHAB
Версию 1.8 я не обновляю, по 2 версии предложений и жалоб пока нет. Что мне нужно коммитить туда? Про дисплей - решение найдено, поэтому я притормозил. Если актуально до сих пор - доделаю. Сложность только одна - у меня нет дисплея. Поэтому очень неудобно его тестировать
-
- Сообщения: 528
- Зарегистрирован: 09 авг 2016, 15:09
- Откуда: Сочи
Re: Использование MegaD в openHAB
О, а я прошел по ссылке в шапке, там ни слова о 2й версии...
Re: Использование MegaD в openHAB
Спасибо да как-то времени не хватает обновить первый пост Каюсь, моя вина...