Как стать автором
Обновить

Пишем простое, но полезное приложение для Nokia N900 за 20 минут

Время на прочтение3 мин
Количество просмотров5K
Приветствую, уважаемый хабраюзер!
В данной заметке я расскажу об интересных свойствах операционной системы 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
#
#### КОНЕЦ ####


Как это работает?

Хотелось бы остановиться на двух строчках:

  1. status=`hal-get-property --udi /org/freedesktop/Hal/devices/bme --key maemo.charger.connection_status`	
    

    Данная команда использует HAL чтобы узнать подключена ли подзарядка к телефону. Необходимый udi я узнал, кажется, здесь, а нужный ключ командой
    lshal | grep charge

  2. 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
Теги:
Хабы:
+25
Комментарии43

Публикации

Истории

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн