Понеділок, 9 січня 2012 р.

LED-лампи в Україні

Досі доводилося тримати в руках LED-лампи, придбані виключно за кордоном через різного роду онлайн-магазини (див. тут, тут і тут). Сьогодні ж, тиняючись у відділі освітлення одного відомого вітчизняного будівельного гіпермаркету, несподівано наткнувся на LED-лампу на вітрині. При тому, що раніше, скільки не задавав продавцям питання, казали, що не продають, бо їх ніхто не бере - дорого. Не міг оминути такої нагоди, взяв одну на пробу.
Лампа виробництва MAXUS, "вироблено в КНР". Шкода, що ще не в Україні, зате вже можна будь-коли піти і придбати її в магазині, а не чекати кілька тижнів посилки. Крім того, на упаковці є українська адреса підприємства, яке приймає пропозиції та скарги від споживачів. Це плюс, збережу чек, три роки гарантії - немало. По ціні споживачі також не в мінусах. Коштує лампа 159 грн. ($19,7). Ціна найбільш близького по конструкції і параметрах аналога, знайденого на DealExtreme - $21,9 (плюс певний процент на конвертацію, якщо ваша банківська картка не доларова).
Конструкцію видно з фото:
Корпус явно з металу, основа схожа на кераміку. Світлодіоди розміщені на алюмінієвій круглій пластині і прикриті матовою колбою, виготовленою швидше за все з пластику.
Заявлені параметри:
  • Цоколь: E27
  • Енергоспоживання: 9 Вт
  • Світловий потік: 860 люмен
  • Кольорова температура: 6500 К
  • Кількість світлодіодів: 9
  • Сила струму: 47,7 ма
  • Напруга: 220-240 В
  • Частота: 50/60 Гц
  • Кут розсіювання: 120 градусів
  • Ресурс: 50 000 годин
Позиціонується як аналог лампи розжарення 60 Вт. Можна погодитись, суб'єктивно світить на заявлені вати.
Світло біле, приємне. Матова колба розсіює ефективно - окремі світлодіоди не виділяються.
Після 10 хвилин роботи стало зрозуміло, чому корпус такої конструкції. Лампа відчутно гріється - втримати за корпус неможливо. Заміряв температуру датчиком цифрового мультиметру - 55 градусів. Просунув датчик всередину, до алюмінієвої основи, на якій розміщені світлодіоди - 62 градуси. Враховуйте цю особливість - не використовуйте в закритих світильниках. Цікаво, що колба була ледь теплою.
В продажу є LED-лампи цього ж виробника і з іншими цоколями - компактним E14, та ще менш поширеними.
Наявність LED-ламп у вітчизняних магазинах означає, що тепер цей товар в Україні сертифікований для використання в наших електромережах. Тобто, економити дозволяється офіційно :-), усе що ви економили на самостійно ввезених лампах - було на ваш страх і ризик. Якщо вірити запевненням виробника, за час роботи однієї ції лампи вам довелося б замінити 50 звичайних ламп розжарення. Що ж, перевіримо - запишемо день початку роботи і подивимось скільки вона прослужить.

Субота, 7 січня 2012 р.

Sleeptracker в Linux

В середині грудня вже минулого року випадково на очі трапилося досі невідоме слово Sleeptracker. Погуглив. Виявилося, що це такий наручний годинник-будильник, який (як обіцяють) розбудить так, що на сон зовсім не хилитиме, ви практично одразу відчуєте приплив енергії, матимете підвищену працездатність ну і ще чимало рекламних бонусів. Годинник розроблений у США, але в Україні теж доступний. На офіційному сайті викладені принципи роботи: http://www.sleeptracker.com.ua/how-it-works.php
Як виявилося, тема популярна - можна знайти безліч теоретичних статей у журналах і практичних тестів у блогах комп'ютерників. Є й інші пристрої, чия робота базується на цих же принципах - схожий на класичний будильник aXbo (www.axbo.com.ua), гаджет для Android/BlackBery/iPhone WakeMate (wakemate.com).
Мене це зацікавило дуже - проблема сонливості в першій половині дня для комп'ютерників актуальна. Кому не хочеться підвищити свою продуктивність, прокинувшись зранку живчиком? Два дні читав аналізи, відгуки. Придбання WakeMate не розглядав через відсутність пристрою, із яким в парі його можна використовувати. А aXbo мені не сподобався зависокою ціною, неможливістю визначення "вікна" для прокидання (жорстко зашито 30 хвилин) і суто психологічно якось некомфортно було б спати, знаючи, що на зап'ясті щось фонить в ефір в радіодіапазоні. Тому замовив Sleeptracker Elite Men's. Від дорожчого (і старішого) Pro-годинника він нічим крім дизайну не відрізняється, а у найдешевшого Standard немає вібродзвінка і можливості підключення до комп'ютера - нащо таке комп'ютернику? :-)
Посилку отримав в офісі служби поштової доставки на другий день. В коробці пристойного дизайну (не retail-варіант) були знайдені:

  • сам годинник Sleeptracker
  • кабель для підключення до USB-порта комп'ютера
  • товарний чек
  • гарантійний талон від продавця
  • коротка російськомовна інструкція, доступна на сайті
  • англомовна брошюра
  • картка з інформацією про те, що програмне забезпечення доступне з сайту, а CD висилають за окремими запитами
  • рекламний буклет рідною мовою:

Дизайн самого годинника, м'яко кажучи, не видався вершиною ергономіки. Навіть було відчуття "дежавю" з 1990-тих. Та що вже говорити, в дизайн фірма не вклалася зовсім. На вигляд - китайський хронометр з претензією на "спортивний" вигляд, хоча всі знають, що ціна таким - кілька баксів. На кришці чесно написано - Made in China. Але байдуже, зараз там роблять усе, і не для того він був куплений щоб "під костюм" носити, а виключно заради функціоналу. Ще на тій же кришці написано Water resistant to 10m, так що годинник можна використовувати як спортивний, хоча є сумніви щодо доцільності такої його ролі.

Одягнув на руку. Годинник ВЕЛИКИЙ. Хотілося б спати з чимось меншим. Браслет - звичайний, теж без багаторічних ергономічних досліджень. Потрібен курс звикання - годинника на руці не ношу вже багато років. Вирішив почати заздалегідь, вдягнувши задовго до сну.

Акумулятор типорозміру AA поруч - для масштабу. Годинник працює від елемента CR2032. Так, точнісінько така 3-вольтова літієва "батарейка", яка у більшості домашніх комп'ютерів опікується роботою енергонезалежного годинника. Заміна проблемою не стане.
Потестив сигнал будильника. Його звуком переймалися не більше ніж дизайном годинника - примітивна пищалка бадьорості зранку точно не додасть, тому вирішив, що будитиме мене вібросигнал. І от що було.

Четвер 22.12.2011. To bed: 23:30; alarm: 07:00; window: 0:30
Прокинувся від вібрації будильника о 06:37. Ніякого особливого приливу бадьорості, про який так захопливо писали в інших відгуках. За відчуттями раніше в такі моменти я б вирішив ще доспати. Але, як того вимагала інструкція, піднявся одразу і хвилин за 5-10 прийшло розуміння, що момент був саме той: в голові туман розвіявся і настала ясність, якої я в такий час раніше не відчував. Бажання "зрушити гори" теж прийшло :-)
П'ятниця 23.12.2011. To bed: 23:30; alarm: 07:00; window: 0:30
Набув свідомості до настання заданого "вікна", о 06:28. Думав - чи не піднятися самостійно. Але стало цікаво. Лежав, ворушився, дивився на годинник, чекав сигналу. Вібробудильник спрацював о 06:45. Піднявся, прислухався до відчуттів. Бажання зрушити гори не помітив, але подивився на акваріум і поміняв у ньому воду, до чого руки не доходили вже кілька вихідних. Все-таки час підйому SleepTracker підібрав краще за мене.
Субота 24.12.2011. To bed: 23:30; alarm: 08:00; window: 0:30
Вихідний день. Переглядаючи напередодні графіки сну, помітив, що сплю лише трохи більше семи годин. Вирішив поспати подовше і задав час пробудження на годину пізніше - 08:00. Вранці, коли зазвичай треба було вставати на роботу, сон був неспокійний - чи то напівдрімота чи то напівпробудження. Та й акваріум, у якому о 06:00 вмикається освітлення і компрессор, заважав. Віброудильник спрацював за пару хвилин до крайнього терміну. Відчуття як після звичайного пробудження під стандартний будильник. Висновки: 1) усунути фактори, які заважають сну (пересунути час вмикання акваріумного обладнання) і 2) краще раніше лягти, ніж пізніше встати.
Неділя 25.12.2011. To bed: 22:40; alarm: 07:00; window: 0:30
Свідомість протестувала проти такого раннього підйому у вихідний день, але протест був відхилений. Пробудження охарактеризував би просто як нормальне, без припливу ентузіазму. Залишки сну розігнав фізичною розминкою. Самостійно в такий час та ще й у вихідний піднятися навіть би й не подумав. Напевне, як завжди, долежав би до останнього, що мало б гарантованим наслідком важку голову на першу половину дня і небажання що-небудь робити на другу. Доброю ідеєю було раніше лягти, це відбилося на сні в кращу сторону - періоди глибокого сну переважали і були вони довші.
Понеділок 26.12.2011. To bed: 22:20; alarm: 06:30; window: 0:30
Вже звичні відчуття: підйом по дзвінку вібробудильника суб'єктивно не дуже бажаний, але за 10-15 хвилин настає повне просвітлення і готовність до роботи.
Вівторок 27.12.2011. To bed: 22:40; alarm: 06:45; window: 0:30
Схоже, задані параметри підібрані оптимально. Будильник спрацював задовго до гранично виставленого часу, щойно почав ворушитися. Вже звичне пробудження з думкою "можна було б поспати ще" через 10-15 хвилин змінюється станом високої дієздатності. Хоча сон був гіршим як за суб'єктивними відчуттями, так і об'єктивно - на графіку. Засидівся за комп'ютером і пропустив оптимальний момент засинання. Висновок: вкладатися спати тоді, коли дійсно хочеться спати.
Думаю, наведеної інформації достатньо щоб склалося враження про Sleeptracker. Він справді допомагає. Ні, він не дозволить якимось магічним чином спати менше і не врятує від хронічного недосипання. Але момент для пробудження він підбере якнайкраще. І дозволить об'єктивно відстежувати якість сну та свідомо керувати факторами, які на нього впливають.
До годинника звик. Спати не заважає. Вдома ношу на руці постійно.

Так ми підійшли до питання моніторингу показників Sleeptracker. На офіційному сайті доступне для завантаження програмне забезпечення, але на даний момент лише для ОС Windows і Mac. Що ж робити нам, залишеним поза увагою користувачам Linux? Goggle на запит "Sleeptracker Linux" в числі перших відображає посилання на програму SleepArchiver. Програма написана на Java, тобто, кросплатформна. Отримання даних з годинника передбачене, але у мене воно чомусь не діяло. І хтозна як його задіяти - серед конфігурованих параметрів немає жодного, який міг би допомогти. Добре, що є можливість вносити дані вручну - кілька днів користувався цією функцією щоб оцінити перспективи. І зрозумів, що перспектив ніяких. Це суто архіватор. Просто зберігає поденно введені дані, із візуалізацією періодів сну. Ніяких аналітичних функцій немає.

Продовжив пошуки. І знайшов вже не програму, а французький онлайн-сервіс sleeptracker.net. Після реєстрації можна так само вводити показники вручну: ви оцінюєте якість сну, якість пробудження, вказуєте додаткові фактори, які мали місце до і під час сну, вводите параметри, зчитані з дисплею Sleeptracker, залишаєте короткі коментарі - окремо приватні і публічні. Тому сервіс цей буде корисний також і користувачам Sleeptracker Standard - у вас є можливість купити цю дешевшу модель, якщо вібродзвінок вам не потрібен і ви не проти вводити дані руками.

Мене ж це не влаштовувало. На сайті сервісу, в розділі Download розміщені посилання для роботи з різними системами. Викачана програма для Linux виявилася Python-сценарієм. Я щодня намагався його задіяти, але успіху добився відносно недавно. Причиною була банальна неуважність.
  1. На кліпсі з контактами є наклейка Sleeptracker Must be in DATA Mode, яку я помітив не одразу. До речі, в інструкції є попередження, що годинник для зчитування показників треба переводити в режим DATA.
  2. USB-шнур системою був розпізнаний як TTY-пристрій:
    [1171566.033047] usb 4-1: new full speed USB device using ohci_hcd and address 35
    [1171566.237981] usb 4-1: New USB device found, idVendor=0403, idProduct=6001
    [1171566.237984] usb 4-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
    [1171566.237987] usb 4-1: Product: FT232R USB UART
    [1171566.237988] usb 4-1: Manufacturer: FTDI
    [1171566.237990] usb 4-1: SerialNumber: A6005nu9
    [1171566.246043] ftdi_sio 4-1:1.0: FTDI USB Serial Device converter detected
    [1171566.246086] usb 4-1: Detected FT232RL
    [1171566.246088] usb 4-1: Number of endpoints 2
    [1171566.246090] usb 4-1: Endpoint 1 MaxPacketSize 64
    [1171566.246092] usb 4-1: Endpoint 2 MaxPacketSize 64
    [1171566.246094] usb 4-1: Setting MaxPacketSize 64
    [1171566.252084] usb 4-1: FTDI USB Serial Device converter now attached to ttyUSB1
    Тому варто переконатися, що користувач, під яким ви працюєте в системі, має права на цей пристрій:
    user@system:~$ ls -l /dev/ttyUSB1
    crw-rw---- 1 root dialout 188, 0 січ  1 12:11 /dev/ttyUSB1
    user@system:~$ groups
    users dialout audio video cdrom games plugdev scanner
  3. І нарешті, слідкуйте за номерами пристроїв. У мене в системі вже був /dev/ttyUSB0, до якого скрипт звертається за умовчанням. Тому довелося у файл src/communication.py внести зміни, вписавши новий /dev/ttyUSB1.
Коли все зроблено як слід, задача суттєво спрощується. Скрипт запитує ваші реєстраційні дані для sleeptracker.net, зчитує інформацію і відкриває в браузері сайт, передаючи при цьому зчитані дані. Залишається лише поставити оцінку своєму самопочуттю та при потребі - прокоментувати.
Крім такої зручності, сервіс надає ще й серйозну аналітику, підкріплену очевидними графіками. У вас буде можливість побачити свою статистику на фоні усереднених даних інших користувачів (звичайно ж, знеособлено).  Ви наочно спостерігатимете, як змінюються показники в історичній перспективі та оціните тренди (тенденції), що дозволить вплинути на гігієну сну з упередженням, ще до того як почнете відчувати негативний вплив шкідливих факторів.

Приємних сновидінь, легких пробуджень і продуктивних днів!

Неділя, 13 листопада 2011 р.

Світло зі Сходу +

Потестивши світлодіодні китайські лампи відносно невеликої потужності (див. тут і тут), вирішив, що пора економити по-серйозному :-). У квітні цього року замовив через eBay все у тих же китайських друзів світлодіодну лампу з такими заявленими характеристиками:
  • Цоколь: E27
  • Енергоспоживання: 13 Вт
  • Світловий потік: 1400 люмен
  • Кольорова температура: 6500 К
  • Кількість світлодіодів: 216
На eBay зараз такої вже нема, але ідентичну знайшов на DealExtreme, фотографії взяв звідти:

На останньому фото лампа має якийсь синюшний відтінок, хоча насправді це не так. Коли увімкнув, спектр виявився дійсно холодним, але не настільки.

Маркування на корпусі немає ніякого - ні вольтажу, ні інших електричних характеристик, ані світлових.
З першого разу увімкнути не вдалося. Навіть подумав, що прислали зіпсований екземпляр. Але виявилось, що просто нижній контакт цоколю не так сильно виступає, як у звичайних ламп розжарення. Чищення контактів патрону від багаторічного нагару та відгинання його контактів дозволило побачити світло. Обережно! Знеструмлюйте мережу при будь-яких електромонтажних роботах!

Корпус лампи - посередньої якості пластик. Якщо при вкручуванні докласти до нього зусилля, чути тріск і відчувається як деформується.
Лампа схожа на конструктор "зроби сам" - монтується з кількох плат та простенького драйвера. Якість монтажу типово китайська. В моїй був недопаяний контакт, тому періодично три сегмента то вмикалися, то вимикалися. Це вдалося полікувати, знявши верхню круглу кришку (вона нічим не приклеєна) і припаявши браковане з'єднання. Про конструкцію лампи дасть уявлення фото, надіслане одним з користувачів DealExtreme:
Загалом же після самостійного усунення недоліків більш як семимісячною роботою лампи цілком задоволений. Зрозуміло, сама вона житлову кімнату не освітлить - потоку в 1400 люмен для площі ~15 м.кв. явно недостатньо. Тому розраховуйте потрібну кількість залежно від площі.
Ціна питання на той час разом з доставкою складала приблизно $23 (~190 грн.)

Зараз такі мають бути дешевшими, бо в продажу є лампи вже на сучасніших світлодіодах.
Ось днями я такі й отримав з того ж Китаю через той же eBay. Наведу фотографії з сайту продавця.

E27 13W 86 LED Corn Light Bulb Warm White Lamp 220-230V

Заявлені характеристики:
  • Цоколь: E27
  • Вольтаж: 220-230 В
  • Енергоспоживання: 13 Вт
  • Світлодіоди: 86 шт. SMD 5050
  • Світловий потік: 1550 люмен
  • Кольорова температура: 3000-3500 K
  • Термін служби: близько 30 000 годин
Очевидно, що конструкція подібна до попередньої (в описах фігурує Corn Light Bulb - лампа-кукурудза). А світлодіоди вже нові, ефективніші - їх менше.
Схоже, китайці вчаться робити якісно - в цій лампі вже контакти не відходять, корпус не тріщить при вкручуванні. Правда цоколь такий самий - контакти в патроні також довелося підгинати. Можливо, причина в древніх патронах, може з сучасними світильниками такої проблеми немає? У будь-якому випадку вона швидко вирішується.
Світло лампи на сайті описане як warm white - біло-гаряче. Суб'єктивно воно сприймається просто як біле.
Хтозна, можливо наші очі звикли до жовтуватих відтінків ламп розжарення і люмінісцентних компактних "економок", тому в перші секунди після вмикання такої світлодіодної лампи виникає відчуття "хотілося б світліше". Але дуже швидко очі адаптуються і розумієш, що справа просто в незвичному спектрі. Світловий потік в півтори тисячі люмен, наприклад, для кухні (~ 8 м.кв.) більш ніж достатній.
Ціна з доставкою $21,11; з картки було знято 179,93 грн.

1080LM 60 LED SMD E27 Screw Corn Light Bulb 200-230V H4394

Заявлені характеристики:

  • Вольтаж: 200-230 В
  • Енергоспоживання: 10 Вт
  • Кількість світлодіодів: 60 шт.
  • Цоколь: E27
  • Світловий потік: 1080 люмен
  • Кольорова температура: 6500-7000 K
  • Розміри: 110 * 50 мм (довжина*діаметр)
  • Вага: 83 г
  • Розміри упаковки: 130 * 60 * 60 мм
  • Вага в упаковці: 112 г

Особливо описувати тут вже нема чого, лампа - копія попередньої, лише менша кількість світлодіодів (60) дає менший світловий потік. Ну і відповідно менша ціна: $12,96 з доставкою, з зареєстрованої в PayPal картки знято 107,17 грн.

Надалі купуватиму виключно світлодіодні лампи. Шкода, що доводиться замовляти аж в Китаї. З радістю купував би вітчизняні, але немає.
Лампи розжарення ("Ілліча") найдешевші, та лякають своєю неефективністю, перетворюючи левову частку споживаної енергії не у світло, а в тепло.
Компактні люмінісцентні "економки", які зараз наводнили наш ринок, на практиці не такі вже й економні - в кращому випадку дослужують років до двох (сам відстежував), і під кінець цього терміну, якщо ще залишаються працездатними, світять дуже тьмяно, довго розігріваючись. А найстрашніше - забруднюють нашу землю, бо їх нема де утилізувати. А в них ртуть.
Усіх названих недоліків світлодіодні лампи позбавлені. Декого може злякати ціна, але зважаючи на термін служби світлодіодів в підсумку отримуємо економію.

Пʼятниця, 18 лютого 2011 р.

Time-lapse (покадрове) відео в Linux: монтаж

Як в Linux підготувати матеріал для покадрового відео та що з цього вийшло - описано у двох попередніх постах. Залишилося лише розкрити карти і розказати як відео було змонтоване. Виявилося, що дуже просто. Можна обійтися лише утилітою mencoder. Якщо в системі встановлений mplayer, то і mencoder є напевне - вони завжди йдуть у парі. Запускаєте команду з приблизно такими параметрами:
mencoder "mf:///home/user/timelapse/*.jpg" -mf fps=15:type=jpg \
    -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vbitrate=7000 \
    -vf scale=640:480 \
    -o timelapse.avi
і отримуєте на виході .avi-файл з якісним mp4-відео. Назви і значення параметрів говорять самі за себе. Якщо ні - то man mencoder.
Мені думається, що за розвитком кошенят протягом місяця цікавіше буде спостерігати, якщо в куточку відображатиметься дата зйомки. Без часу (лічильник, який постійно мотилятиме цифрами, відволікатиме), сама лише дата. Тому перед монтажем вирішив обробити фотографії - масштабувати і вписати в кожну мітку дати. Для цього є консольна утиліта convert з набору ImageMagick. Сценарій:
#!/bin/bash

SRCDIR=~/timelapse
PREDIR=~/tlpre

[ ! -d ${PREDIR} ] && mkdir ${PREDIR}

for f in ${SRCDIR}/*; do
    FNAME=`basename $f`
    FDATE=`basename $f .jpg | awk -F "_" '{print $1 }'`
    echo ${FNAME}
    convert $f -resize 640 -fill black -draw "roundRectangle 5,5,87,25,2,2" \
                -pointsize 14 -fill white \
                -draw "text 10,20 \"${FDATE}\"" $PREDIR/${FNAME}
done

І вже з підготованих таким чином фотографій монтую фільм:
mencoder "mf:///home/user/tlpre/*" -mf fps=25:type=jpg \
    -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vbitrate=7000 \
    -o timelapse25.avi

Параметр fps=25 (кількість кадрів за секунду) підібраний так, щоб загальна тривалість відео вклалася у 15-хвилинне обмеження на YouTube.

Німе кіно зараз не в моді. Тому з допомогою Audacity підготував аудіодоріжку, звівши кілька вподобаних треків з magnatune.com в один .wav-файл. Озвучує ролик все та ж утиліта mencoder:
mencoder timelapse25.avi -o kittens-day-to-month.avi \
    -ovc copy -oac pcm \
    -audiofile kittens-day-to-month.wav

Відео готове до відвантаження на YouTube. Сервіс сам перекодує його у підходящий для транслювання формат. З цього можна скористатися щоб не гаяти час на ще одну операцію. Якщо потрібне відео в гіршій якості і меншого об'єму (наприклад, для завантаження на інші сервіси, з жорсткішими обмеженнями - video.bigmir.net, clip.net.ua), можна просто встановити додаток до Firefox - Easy Youtube Video Downloader та викачати свій ролик з YouTube.
В процесі дуже допомогли матеріали сторінок http://www.moreno.marzolla.name/software/time_lapse_movies/ та http://wiki.quakeworld.nu/Mencoder_howto.

Пʼятниця, 11 лютого 2011 р.

Time-lapse (покадрове) відео в Linux: результат

Результат обробки фотографій, відзнятих як описано у попередньому дописі:

Пʼятниця, 28 січня 2011 р.

Як стати Спілбергом з фотоапаратом, або Time-lapse (покадрове) відео в Linux

Як усім дітям, мені в дитинстві подобались мультфільми. Іноді навіть хотілося створити власну анімацію. Часом задумувався - а чи не назнімати кадриків фотоапаратом, потім склеїти фотоплівки щоб вийшов суцільний фільм. Але перші приблизні розрахунки кількості кадриків і відповідно фотоплівки розвіювали усі сподівання :-)
Та прогрес не стоїть на місці і нинішні технології дають змогу робити покадрове відео без значних затрат. У цьому можна переконатися, якщо на YouTube зробити запит "time lapse": http://www.youtube.com/results?search_query=time+lapse&aq=f
Ролики зустрічаються там такі вражаючі та цікаві, що вгамувати бажання відзняти щось подібне самому важко. Хоча бути митцем дано не кожному, то вже інший бік питання. Мова піде про технічну сторону.

Очевидно, що для реалізації задуманого необхідними є три речі: комп'ютер, фотоапарат і програма. Якщо по комп'ютеру особливих питань немає, то програма із фотоапаратом повинні вміти спілкуватися між собою. Фотоапарат, який я мав, на жаль, був всього лише старенькою цифромильницею, для якої розробник не передбачив програмного інтерфейсу: вона просто підключалась USB-шнурком і комп'ютер бачив її як флеш-носій. Тому для мене було два можливі сценарії.

Перший - розробити програмно-апаратний додаток до цифромильниці, подібний до описаного тут: http://www.instructables.com/id/Time-lapse-add-on-to-a-Rollei-digicam/.
Цей шлях був би істинно хакерським, бо довелося б вирішувати чимало електронно-механічних проблем. Та на жаль, я не мав достатньо часу і впевненості, що моя реалізація буде красивою. Тому пішов іншим шляхом - швидшим, простішим, хоча й коштовнішим.

Всезнаючий гугль підказав, що найкращою програмою для керування цифровими фотокамерами в Linux є gPhoto2. В моїй Slackware вона вже була. Залишалася дрібничка - знайти цифрову камеру. Важливо щоб це не просто була підтримувана програмою камера, таких багато: http://www.gphoto.org/proj/libgphoto2/support.php. В межах поставленого завдання набагато важливіше здатність до того, що називається Remote Capture - керувати з комп'ютера налаштуваннями камери та власне фотографуванням. Список таких камер вже значно менший: http://www.gphoto.org/doc/remote/. Наклавши цей список на місцевий сайт оголошень http://nayarmarku.pl.ua/, на їх перетині отримав непоганий варіант - Canon PowerShot SX100 IS, який і придбав, не те щоб задарма, але суттєво дешевше нового, і в гарному стані.

Ніяких налаштувань мені робити не довелося - Slackware була готова до роботи з gPhoto2. Програма працює в командному режимі. Отримати перелік опцій фотоапарата:
gphoto2 --list-config
Перелік цей залежатиме від конкретної моделі. Побачити значення тії чи іншої опції дозволить команда
gphoto2 --get-config option
змінити:
gphoto2 --set-config option=value

Є опція, властива лише камерам Canon - capture. Коли задати її значення on, лінзи об'єктива приводяться в робоче положення ("виїжджають"). Значення off відповідно ховає об'єктив. Також Canon-камерам, та деяким Nikon властива опція capturetarget, яка може приймати значення sdram або card, відповідно визначаючи місце для збереження фотографій - внутрішня пам'ять чи флеш-картка.

Трохи поекспериментувавши, визначився з переліком підходящих опцій. Ось сценарій, з допомогою якого в даний момент робиться серія фотографій:

#!/bin/bash

STOREDIR=~/timelapse

[ ! -d ${STOREDIR} ] && mkdir -p ${STOREDIR}
cd ${STOREDIR}

gphoto2 --set-config capturetarget=0 \
        --set-config shootingmode=3 \
        --set-config zoom=7 \
        --set-config shutterspeed="1/60" \
        --set-config aperture="8" \
        --set-config flashmode=1 \
        --set-config assistlight=1 \
        --set-config iso="100" \
        --filename "%Y-%m-%d_%H%M%S.jpg" \
        --capture-image-and-download

Тут послідовно задані опції:
  • зберігати фотографії у внутрішній пам'яті фотоапарата - все рівно ми їх одразу ж завантажуватимем у комп'ютер
  • режим зйомки - із ручним заданням параметрів
  • експериментально підібране значення zoom для вдалого кадру
  • швидкість затвору
  • величина діафрагми
  • спалах увімкнутий
  • еквівалентна чутливість
Параметром --filename визначений формат імені файлу, в який зберігатиметься фотографія. Для зручності подальшої роботи в назві файлу відображена дата та час зйомки. А останній параметр, --capture-image-and-download, змушує фотоапарат сфотографувати і одразу ж завантажити фотографію, після чого звільнити від неї пам'ять.

Сценарій запускається періодично через cron. Існує альтернатива - спеціальні ключі gPhoto2, -F та -I, які задають відповідно необхідну кількість знімків (0 - необмежено) та інтервал в секундах між знімками. Але тоді існуватиме небезпека, що у випадку форс-мажору процес буде безповоротно обірваний. Тому, хоча cron і обмежує мінімальний інтервал однією хвилиною, але по-перше, мені цього достатньо, а по-друге, так надійніше. Висмикне хтось USB-шнурок з комп'ютера, зойкне, вставить назад - і зйомка продовжиться. Зникне електронапруга, з'явиться знову - комп'ютер стартує і cron так само справно колекціонуватиме фотографії, такі як ця:

Такими простими інструментами здійснюється накопичення фотографій. До завершення запланованої кількості залишається ще близько тижня, тому про те, як перетворити фото на відео, говорити не можу - ще не маю практики. Про це згодом. Поки що зверну увагу на бонус: якщо у нас є процес, який постачає актуальні фотографії, то чому б не використати ці фотографії для моніторингу? Треба лише доповнити сценарій кількома рядками, які визначатимуть найсвіжіше фото у каталозі, генеруватимуть з нього дещо менше зображення для публікування та мініатюру, приблизно так:

FFILE="`ls -1 -t 2*.jpg | head -n 1`"
DATETIME=`basename ${FFILE} .jpg | \
    awk -F "_" '{print $1 " " substr($2,1,2) ":" substr($2,3,2) ":" substr($2,5) }'`
convert ${FFILE} -resize 320 -quality 50 \
    -pointsize 20 -fill yellow -draw "text 10,30 \"${DATETIME}\"" 0.jpg
convert ${FFILE} -resize 1024 -pointsize 20 \
    -fill yellow -draw "text 10,30 \"${DATETIME}\"" 1.jpg

... і опублікувати підготовані таким чином фотофайли для загального (або за бажанням - обмеженого) доступу. Отак:


Дизайн в стилі "швидкість & функціонал" :-)
Отак і за двома зайцями можна погнатися - і time-lapse-відео підготувати, і організувати нагляд за домашніми улюбленцями будь-коли і будь-де.
Лише не забувайте про безпеку - читайте інструкцію до свого фотоапарата та дотримуйтесь безпечної відстані, використовуючи фотоспалах при зйомці дітей та тварин.

Четвер, 27 січня 2011 р.

Маловідомий SSH - 2

Часто трапляється так, що коли на горизонті з'являється дещо нове й цікаве, одразу ж, наче на якесь ментальне замовлення, починає проявлятися нова інформація на цю цікаву тему, з найрізноманітніших джерел. Так у мене і з SSH - не встиг написати попередній пост про свої "відкриття" в Secure Shell, як на очі трапилась публікація OpenSSH Tips and Tricks: Beyond Secure Shell, а там нові бонуси.

Бонус перший - X Forwarding.
Полягає він у тому, що з'єднавшись із віддаленою машиною, можна працювати не лише з програмами текстового режиму, а й запускати графічні утиліти. Потрібні лише дві прості умови.

По-перше, на віддаленій машині в конфігу sshd (/etc/ssh/sshd_config) повинна бути увімкнута відповідна опція:
X11Forwarding yes
Опцію цю можна вмикати не всім, а лише обраним, наприклад так:
Match User user
    X11Forwarding yes

По-друге, конектитись слід з особливим ключем:
ssh -X user@remote.host

І тепер можна вводити будь-які команди.  Наприклад, запустити gkrellm і промоніторити свій комп'ютер:
Або переглянути відео з IP-камери в локальній мережі, недоступній назовні:

Відгук відносно "важких" програм буде довгим - відчуваються накладні затрати на шифрування. Зате з'єднання гарантовано захищене. Можна, наприклад, безпечно запустити домашню програму homebank щоб підвести фінансовий підсумок дня.

Бонус другий - sshfs.
Обмінюватися файлами по SSH можна не лише командою scp, а й через звичні операції на локальній файловій системі, якщо встановити FUSE-модуль sshfs та примонтувати з його допомогою каталог віддаленого комп'ютера.
В Slackware встановлення багато часу не відібрало - є готовий пакунок на slackbuilds.org - http://slackbuilds.org/repository/13.1/system/sshfs-fuse/.

В користуванні ssh-монтувалка елементарна:
sshfs user@remote.host: mountpoint
... і ви одразу ж бачите файли віддаленого комп'ютера в каталозі mountpoint та розпоряджаєтесь ними на свій розсуд.