openHAB 2 идва с вграден binding NTP Binding. С негова помощ се визуализира текущи: час, ден и дата от календара. По подразбиране името на деня е на английски. Идеята е да се преведе на български.
Инсталация на NTP Binding в Paper UI на openHAB 2.
Настройка на NTP Thing.
Настройката задава зона, часови пояс, време на опресняване и конкретен адрес на NTP сървър (pool).
Превода се базира на карта и трансформация. Последната се постига, чрез инсталиране на Map Transformation.
Създадената карта за превод на дните на български качете в $OPENHAB_CONF/transform.
weekday.map
Sunday=Неделя Monday=Понеделник Tuesday=Вторник Wednesday=Сряда Thursday=Четвъртък Friday=Петък Saturday=Събота
Самия превод е правило зададено в раздел $OPENHAB_CONF/rules, като се спазва синтаксиса на JAVA.
weekday.rules
/* * BG превод именa на дните в openHAB * 2020 (C) Profruit blog */ rule "translate_day_of_the_week_in_BG" when Item Day_ENG changed then Day_BG.postUpdate(transform("MAP","weekday.map",now.toString("EEEE"))) //var vDay = transform("MAP","weekday.map",now.toString("EEEE")) //logInfo("Day","Day is: {}",vDay) end
Коментираната променлива vDay е активна само по време на настройка. Веднъж постигнато, я изключваме, за да не пълне логовете излишно.
Финал. Традиционните три файла.
weekday.sitemap
sitemap weekday label="Profruit_Home" { Frame label="" { Text item=Time Text item=Day_BG Text item=Date } }
weekday.items
// time DateTime Time "Час [%1$tH:%1$tM]" <time> { channel="ntp:ntp:local:dateTime" } // translation day in BG DateTime Day_ENG "[%1$tA]" {channel="ntp:ntp:local:dateTime"} String Day_BG "Ден [%s]" <day7> // date DateTime Date "Календар [%1$td.%1$tm.%1$tY ]" <calendar> { channel="ntp:ntp:local:dateTime" }
weekday.things
// NTP Binding add as Thingh ( NTP Server ) ntp:ntp:local [ hostname="nl.pool.ntp.org", refreshInterval=60, refreshNtp=30, locale="Europe/Sofia" timeZone="Europe/Sofia" ]
Поглед в weekday.things показва, че настройка на NTP Server може да се задава в този файл, освен в Paper UI.
Update 06.06.2020
Колкото и странно да звучи забравете превода с правило и карта. Нека остане като пример. Нещата са по-прости и само липсата на документация стимулира горния начин. Пример на руснак споделил своите конфигурационни файлове ме озадачи. Никакви трансформации и функции, а деня изписан на руски. Отново прерових форума на openHAB и попаднах на куриози на норвежец, настояващ дните му, да се изписват на английски, а не на родния му език. И така по следата и поредна порция загубено време ето как.Задаваме език, страна и часова зона в PaperUI на български.
Рестарт на сървъра. Резултатът е с изход 50/50. Честито, ако деня в вашия openHAB се изпише на български. В моя случай не излезе.
Търсим файл /etc/default/openhab2 . Той е с права 644. Спускаме по средата на файла и търсим израз EXTRA_JAVA_OPTS="".
Между кавичките добавяме израз -Duser.country=BG -Duser.language=bg.
Проба-грешка от моя страна и заработи. Съхраняваме измененията и рестарт на сървъра. Кеш на браузъра също.
Така изглежда в мобилната адаптация на openHAB.
Час, ден на български, ден-месец-година. Денят сложих в средата, че от толкова цифри мозъкът се взривява. Можете да ги подредите по ваш вкус и дори съкратите.
Краен резултат на традиционните три файла.
weekday.sitemap
Text item=dateTimeNTP
weekday.items
DateTime dateTimeNTP "Време [%1$tR %1$tA %1$td.%1$tm.%1$tYг]" <time> { channel="ntp:ntp:pool:dateTime" }
weekday.things
ntp:ntp:pool [ hostname="nl.pool.ntp.org", refreshInterval=60, refreshNtp=30 ]
weekday.rules и weekday.map в кошчето.
до нови срещи ^.^
0 Response to "Календар, ден и час в openHAB 2"
Публикуване на коментар