Приветствую, уважаемый хабраюзер!
В данной заметке я расскажу об интересных свойствах операционной системы Maemo с точки зрения
системного администратора Unix. Цель заметки — показать удобство написания приложений под данную ОС.
Писать приложение мы будем на Shell. А почему бы и нет? — ведь для Maemo это родная среда!
В качестве примера хочу привести shell-скрипт, решающий простую задачу: автоматическое подключение к домашней точке доступа Wi-Fi при зарядке телефона. Этот скрипт может пригодиться тем, кто любит вешать на телефон различные задачи на ночь: например, обновление RSS-каналов, синхронизация с Google-календарем, обновление софта, и т.д.
Чтобы не быть голословным, приведу сразу весь скрипт:
Хотелось бы остановиться на двух строчках:
Думаю, касательно остальной части скрипта вопросов возникать не должно.
Далее, необходимо заставить работать скрипт постоянно в фоне и добавить в «автозапуск»:
В заметке показан один из простых способов добавления приятных фич в свой N900. Данный скрипт не дописан: он плохо себя ведет, если рядом нет домашней точки доступа. Но данная проблема легко решается, если вы полны энтузиазма и владеете основами программирования. ;)
Надеюсь, данная заметка поможет новичкам в мире Maemo сделать первый шаг к написанию своей полезной утилиты.
В следующий раз я расскажу о том, как писал приложение Outcoming Call Vibro.
Ссылки:
— Phone Control
— D-Bus Scripts
В данной заметке я расскажу об интересных свойствах операционной системы Maemo с точки зрения
системного администратора Unix. Цель заметки — показать удобство написания приложений под данную ОС.
Писать приложение мы будем на Shell. А почему бы и нет? — ведь для Maemo это родная среда!
В качестве примера хочу привести shell-скрипт, решающий простую задачу: автоматическое подключение к домашней точке доступа Wi-Fi при зарядке телефона. Этот скрипт может пригодиться тем, кто любит вешать на телефон различные задачи на ночь: например, обновление RSS-каналов, синхронизация с Google-календарем, обновление софта, и т.д.
Open Source
Чтобы не быть голословным, приведу сразу весь скрипт:
#!/bin/sh
############ КОНФИГ #############################
# Время "спячки" скрипта между попытками (в секундах)
sleeptime=60
# id вашей сети. Узнать можно командой gconftool -R /system/osso/connectivity/IAP
WIFI_ID="56b4d822-edd4-4692-baf2-25b0711d1e7b"
#
#################################################
temp=1
# Начинаем бесконечный цикл
while [ $temp = "1" ]; do
# узнаем статус зарядки - connected или disconnected
status=`hal-get-property --udi /org/freedesktop/Hal/devices/bme --key maemo.charger.connection_status`
if [ $status = "connected" ]; then
echo "Charger found! Trying to connect to home wifi..."
# Подключаемся
dbus-send --system --print-reply --type=method_call --dest=com.nokia.icd /com/nokia/icd com.nokia.icd.connect string:"$WIFI_ID" uint32:0
#
fi
#спим
sleep $sleeptime
done
#
#### КОНЕЦ ####
Как это работает?
Хотелось бы остановиться на двух строчках:
-
status=`hal-get-property --udi /org/freedesktop/Hal/devices/bme --key maemo.charger.connection_status`
Данная команда использует HAL чтобы узнать подключена ли подзарядка к телефону. Необходимый udi я узнал, кажется, здесь, а нужный ключ командой
lshal | grep charge
-
dbus-send --system --print-reply --type=method_call --dest=com.nokia.icd /com/nokia/icd com.nokia.icd.connect string:"$WIFI_ID" uint32:0
Здесь мы подключаемся к D-Bus и посылаем запрос на подключение к сохраненной точке доступа. Команду можно найти в очень полезном для новичков мануале Phone Control официальной Wiki Maemo.
Думаю, касательно остальной части скрипта вопросов возникать не должно.
Установка
Далее, необходимо заставить работать скрипт постоянно в фоне и добавить в «автозапуск»:
- Даем скрипту имя wifi-on-charge.sh и помещаем в /usr/bin/
- Даем права на исполнение: chmod +x /usr/bin/wifi-on-charge.sh
- Создаем скрипт для запуска (не уверен, что оптимальный вариант, но я делаю так):
#!/bin/sh /usr/bin/nohup /usr/bin/wifi-on-charge.sh > /dev/null 2>&1 &
- Даем права на исполнение chmod +x /usr/bin/run-wifi-on-charge.sh
- В директории /etc/event.d создаем текстовый файл wifi-on-charge с содержанием:
# start on started hildon-desktop exec /usr/bin/run-wifi-on-charge.sh #
- Перезагружаем аппарат, проверяем: после вставки кабеля подзарядки в течении 60 секунд должно произойти подключение к Wi-Fi
Заключение
В заметке показан один из простых способов добавления приятных фич в свой N900. Данный скрипт не дописан: он плохо себя ведет, если рядом нет домашней точки доступа. Но данная проблема легко решается, если вы полны энтузиазма и владеете основами программирования. ;)
Надеюсь, данная заметка поможет новичкам в мире Maemo сделать первый шаг к написанию своей полезной утилиты.
В следующий раз я расскажу о том, как писал приложение Outcoming Call Vibro.
Ссылки:
— Phone Control
— D-Bus Scripts