Приветствую, уважаемый хабраюзер!В данной заметке я расскажу об интересных свойствах операционной системы 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
