It Hints
Search
Close this search box.

У меня друг скон­стру­и­ро­вал настоль­ные Smart часы с боль­шим цвет­ным LED экра­ном, с FM и Web радио, с про­гно­зом пого­ды, с будиль­ни­ка­ми и даже с тема­ми в виде игр, т.е. часы не толь­ко скуч­но пока­зы­ва­ют вре­мя, но и игра­ют сами по себе в тет­рис, Pong или в Arkanoid. Плюс часа­ми мож­но управ­лять по Bluetooth (хотя это лиш­нее). Всё это смот­рит­ся доволь­но забав­но. И мы ста­ли думать — какой бы ещё функ­ци­о­нал в них воткнуть.

И я пред­ло­жил — а давай у них будет бегу­щая стро­ка с самы­ми све­жи­ми ново­стя­ми по раз­лич­ным тема­ти­кам, что­бы мож­но было выби­рать по тема­ти­кам какие ново­сти долж­ны выво­дить­ся. Ну к при­ме­ру я хочу что­бы у меня выво­ди­лись ново­сти кос­мо­са, высо­ких тех­но­ло­гий, ново­сти игро­вой инду­стрии и наши реги­о­наль­ные ново­сти, ну и ещё пого­ду для сво­е­го региона.

Идея — огонь, толь­ко вот в часах, в кото­рых и без того мало памя­ти и так уже мно­го что пона­пи­ха­но (Web радио, FM радио, игро­вые темы и т.д.), то памя­ти что­бы заму­тить ещё и хотел­ки в виде ново­стей, да ещё с выбо­ром тема­тик, вооб­ще не оста­лось, что­бы вы пони­ма­ли — речь идёт о килобайтах.

И я поду­мал — а пусть они берут эту бегу­щую стро­ку с тек­сто­во­го фай­ла, т.е. всё что оста­нет­ся часам — это счи­тать стро­ку с ново­стью и выдать её в виде бегу­щей стро­ки, ни боль­ше ни мень­ше. Толь­ко вот отку­да счи­ты­вать файл, да и ещё что­бы он для каж­дых часов был свой. Тут и при­шла идея сде­лать под­нять под это дело сайт, а в каче­стве уни­каль­но­го эле­мен­та исполь­зо­вать MAC адрес часов. Поста­вил сво­е­му това­ри­щу сле­ду­ю­щую задачу.

- Часы долж­ны счи­ты­вать тек­сто­вую стро­ку с http://www.имя_сайта.домен/мак_адрес_часов/news.txt и пока­зы­вать её содер­жи­мое,  после чего счи­ты­вать этот файл зано­во и если содер­жи­мое отли­ча­ет­ся, опять пока­зы­вать его.

На что он ска­зал — эле­мен­тар­но, плюс ещё пред­ло­жил сде­лать обра­бот­ку послед­не­го бай­та, что­бы совсем не было скуч­но. Мы дого­во­ри­лись какие биты послед­не­го бай­та будут отве­чать за цвет, какие за включение/выключение Web и FM радио, какие за гром­кость. То есть с помо­щью послед­не­го бай­та тек­сто­вой стро­ки мож­но управ­лять часа­ми, т.е. включить/выключить FM или Web радио, задать гром­кость, поме­нять цвет стро­ки. А это уже откры­ва­ло дру­гие воз­мож­но­сти — т.к. стро­ка сама смо­жет управ­лять часа­ми, мож­но сде­лать управ­ле­ние часа­ми через интер­нет, доста­точ­но сге­не­ри­ро­вать нуж­ный (в зави­си­мо­сти от того что мы хотим) послед­ний байт и мож­но будет к при­ме­ру вклю­чить любое Web радио на нуж­ной нам громкости.

Мне толь­ко оста­лось заму­тить сайт и скрипт кото­рый бы гене­ри­ро­вал нуж­ные ново­сти. Но всё ока­за­лось несколь­ко труд­нее чем казалось.

Да, я сде­лал гене­ра­цию нуж­ных ново­стей, т.е. сна­ча­ла сде­лал подо­бие про­фи­ля для каж­дых часов. Про­филь это пап­ка на сер­ве­ре в виде mac адре­са. В этот про­филь гене­ри­ро­вал­ся файл setting.ini кото­рый содер­жал в себе тема­ти­ку ново­стей для дан­ных часов и цвет кото­рым отоб­ра­жать дан­ные ново­сти. Содер­жи­мое setting.ini вышло вот такое:

auto;4
internet;2
space;7
games;5
MyCity;7

Это зна­чит что пер­вая новость будет “авто ново­сти” крас­ным цве­том, потом ново­сти интер­не­та зеле­ным цве­том и т.д. когда все ново­сти закон­чат­ся всё пой­дёт зано­во, толь­ко уже ново­сти будут новые.

Далее я напи­сал скрипт кото­рый раз в час соби­ра­ет все ново­сти всех кате­го­рий в еди­ный файл. Ново­сти берут­ся из RSS Яндекс ново­стей. Полу­ча­ет­ся боль­шой файл око­ло одно­го мега­бай­та, со все­ми ново­стя­ми. Обо­звал его news.ini и выгля­дит он так.

auto_1;Продажи Автоваза снилизись на 80% из за падения спроса на новые автомобили
auto_2;Авто Ваз анонсировала новую Лада гранта за 2 миллиона рублей ...
auto_3;Tesla Model X стал первым серийным автомобилем с разгоном до сотни за 0.9 секунд
internet_1;Компания Google обновила браузер Chrome до новой версии в которую встроили средства для разработчиков
internet_2;Facebook выпустил новые очки виртуальной реальности за 15 долларов;
internet_3;Роскомнадзор введёт уголовную ответственность за просмотр Youtube
space_1;Компания Джефа Безоса подала новый иск против Илона Маска, за то что Nasa выбрала SpaceX в качестве подрядчика на постоянные рейсы на Плутон
space_2;Запущенный Илоном Маском гиперкар - вышел за пределы астероидного поля.
space_3;Роскосмос сделали усовершенствованную версию робота Фёдора.

То есть что­бы счи­тать первую новость доста­точ­но най­ти в этом спис­ке “новость_номер ново­сти” и пока­зы­ва­лись они в сле­ду­ю­щем порядке

новость1_1
новость2_1
новость3_1
новость4_1
...
новость1_2
новость2_2
новость3_2
новость4_2
...
новость1_3
новость2_3
новость3_3
новость4_3

и так пока не закон­чат­ся все ново­сти из теку­щей кате­го­рии, т.е. если к при­ме­ру в кате­го­рии “новости2” все­го 3 ново­сти, а в дру­гих они ещё есть, то кате­го­рия где они закон­чи­лись, там ново­сти начи­на­ли пока­зы­вать­ся сна­ча­ла, а где не закон­чи­лись они про­дол­жа­лись, т.е.

новость1_4
новость2_1
новость3_4
новость4_4

И всё бы оно ниче­го, но как узнать — было ли про­из­ве­де­но чте­ние фай­ла на сер­ве­ре ? и кем имен­но было про­из­ве­де­но чте­ние ? т.е. кем был счи­тан файл http://site.ru/mac/news.txt ?

Нуж­но что­бы сер­вер нам об этом сооб­щил. Выход я нашел сле­ду­ю­щий — посто­ян­но счи­ты­вать послед­нюю стро­ку лога web сер­ве­ра access.log и если в ней содер­жит­ся запись о mac адре­се, news.txt и код отве­та от сер­ве­ра что всё удач­но счи­та­лось, а зна­чит в пап­ку с mac адре­сом нуж­но выдать сле­ду­ю­щую новость. Как это сде­лать на Linux систе­ме я не знаю, но за то по Windows могу напи­сать что угод­но. В дан­ном слу­чае это про­грамм­ка кото­рая посто­ян­но висе­ла в памя­ти и 100 раз в секун­ду (пото­му что смарт часов окно 5–6 шт и что­бы успе­вать кон­тро­ли­ро­вать логи) счи­ты­ва­ла послед­нюю стро­ку лога.

Друзья - если вы нашли для себя что то полезное и хотите помочь проекту развиваться дальше, Вы можете задонатить любую сумму на поддержку. Деньги пойдут исключительно на оплату доменного имени, хостинга, а так же на мотивацию.

Facebook
Twitter
Email
VK
WhatsApp
Telegram