среда, 14 августа 2013 г.

Мониторинг событий XBMC

Я люблю на выходных посмотреть кино с пивом и раками. Кино, как водится, смотрят в темноте. А чтобы пойти и добавить себе пива, хорошо бы видеть дорогу, да еще и кино на паузу поставить.
И меня посетила мысль, ништяк было бы по событию постановки кина на паузу зажигать приглушенный свет в комнате, а при продолжении просмотра - гасить его.

XBMC штука прекрасная, а под Raspberry Pi вообще неописуемо восхитительная. И обновляется само, и пульта от ТВ по HDMI умеет слушаться, и потребляет всего 3.5Вт, и FullHD 35-гиговые тянет.
Сам медиацентр имеет на борту EventServer, под него даже написано немало клиентов, вот некоторые:
http://xbmc.svn.sourceforge.net/viewvc/xbmc/trunk/tools/EventClients/

Но есть непроверенное подозрение, возникшее при поверхностном знакомстве, что этот EventServer не будет уведомлять EventClient-а о каком то событии в XBMC, вызванном со стороны (например постановка на паузу с клавы или пульта телевизора).

Ну и раз PHP-клиент-демон нам не светит, значит будем писать плагин, плюющийся событиями в веб-дырку умного дома.
Быстрый старт по написанию плагинов есть на хабре
http://habrahabr.ru/post/166097/

Немного порыскав  поисках чего-то готового, нашел аддон, который уже умеет все что надо:  ISY Event Handler. Он был взят за основу, из него были выпилены модули log, event_actions и isy*, а вместо них написан свой event listener в виде простой функции отправки пост-запросом типа события по заданному в настройках урлу.

На иллюстрации показан момент старта XBMC и логи nginx+php тестовой страницы, куда постятся данные. Виден код события onStart и POST запрос.




Что в итоге

Плагин с минимумом настроек, а именно УРЛ, куда постятся коды событий, юзер и пароль для Basic-авторизации.
Поддерживаются события:
 - старт и выход из XBMC
 - запуск, пауза, продолжение, остановка видео
 - то же для аудио
Скачать плагин ZIP с Google.Disk


ну а управление светом это уже этап пройденный, из веб сразу отправляется команда нужному выключателю на включение или выключение. примерно так

SOLVED

UPD: а вот как это выглядит в натуре

пятница, 9 августа 2013 г.

Как добавить принтер CUPS из консоли

мой рабочий комп - 172.30.0.111 Win8, принтер на доступе Samsung ML-1660

это драйвер
http://www.samsung.com/ru/support/model/ML-1660/XEV-downloads
прямая ссылка
http://downloadcenter.samsung.com/content/DR/201001/20100121132724343/UnifiedLinuxDriver_0.86.tar.gz

консольные команды cups (Ctrl+F CUPS)
http://www.k-max.name/linux/osnovnye-komandy-linux-ili-shpargalka-nachinayushhego-linuksojda/#cups

lpadmin -x sams1660  ;удалить к ефениматери
lpc status  ; смотреть статус
lpinfo -h localhost -m ; список поддерживаемых моделей принтеров
lpadmin -p sams1660 -v "smb://172.30.0.111/Samsung ML-1660 Series" ; добавить принтер с удаленного IP открытый на доступ под заданным именем
lpoptions -d sams1660 ; установить принтер по умолчанию sams1660

чтобы работало lpadmin -v "smb://..." должен быть установлен пакет smbclient
если не найдена команда lpc - установить cups-bsd

добавление принтера расшаренного по smb. Имя sams1660 придумывается самостоятельно
lpadmin -E -p sams1660 -v "smb://172.30.0.111/Samsung ML-1660 Series"
cupsenable sams1660
cupsaccept sams1660
lpstat -a sams1660
отправляем чего-то на печать
lp /etc/fstab
не печатает, смотрим очередь, в очереди док есть
lpstat -o sams1660
смотрим логи
tail /var/log/cups/error_log
E [26/Jul/2013:18:08:05 +0400] [Job 1] Tree connect failed (NT_STATUS_BAD_NETWORK_NAME)
E [26/Jul/2013:18:08:05 +0400] [Job 1] Tree connect failed (NT_STATUS_BAD_NETWORK_NAME)
E [26/Jul/2013:18:08:05 +0400] [Job 1] Tree connect failed (NT_STATUS_BAD_NETWORK_NAME)
E [26/Jul/2013:18:08:05 +0400] [Job 1] Unable to connect to CIFS host, will retry in 60 seconds...

root@mxismb:/etc/cups# smbclient  //172.30.0.111/Samsung%20ML-1660%20Series
Enter root's password:    # тут ничего не вводил
Domain=[DELTA.NET] OS=[Unix] Server=[Samba 3.5.6]
tree connect failed: NT_STATUS_BAD_NETWORK_NAME

чето да..

smbclient  "//172.30.0.111/Samsung ML-1660 Series"
а вот так работает, только в /etc/cups/printers.conf не прокатывает
пришлось переименовать принтер на 172.30.0.111 в Samsung1660
поправил /etc/cups/printers.conf 
DeviceURI smb://172.30.0.111/Samsung1660

печать пошла

некоторые вопросы-ответы по проблемам samba между linux и windows