Много писать не буду, так как спать уже собрался.
Но чуть-чуть интересностей кину. Во-первых строках.... Короче, есть такая радость - http://easy.garage.maemo.org/ и делает это радость такой своего рода интерфейс верхнего уровня для мультимедии таблеток. Аля звук с микрофона забрать, да проиграть его потом, видео, фото, блютузы да жопарезы и всё в одном комплекте. Вся это радость работает под питоном. Так что имея на таблетке питон, скажем 2.5, и поставив этот пакет, можно будет управлять всем и вся прям не отходя от кассы. Одно только смутило - уж слишком оно всё "высокоуровневое", meaning that it's not for us.... Бр... точно спать пора. По-буржуски забатрачил чавости.... Не даёт эта штука снять просто уровень громкости скажем. А даёт только записать всё это в файл. Но и не мы пальцем деланны, поэтому переходим к пункту два.
Пункт ДВА. Перешли! УРА!!! Есть такая программа maemo-recorder. Счас ссылкой брошусь - https://garage.maemo.org/projects/maemo-recorder/ - етати домашняя страница проэкта. А на маемо.орг, для установки - вот пожалуйте:
http://maemo.org/downloads/product/OS2008/maemo-recorder/ не знаю, хотите ставте, хотите - нет. Дело то житейское. Запись с микрофона в разных форматах, жаль мп3 пока не пишет, хотя авторы и запланировали реализовать в скором будущем. По информации из форумов 70 минут звука с его помощью влезает в 6ти метровый файл. Как я понял, это благодаря гадкому 8кГц-му звуку. Хотя если его же с таблетки и играть, то вроде и ничего так будет... но суть то не в том. Нашлись исходники этой радости:
http://repository.maemo.org/extras-devel/pool/diablo/free/source/m/maemo-recorder/
Писанно на си. Просто, но со вкусом. А теперь зачем это всё нужно.
Задался я тут вопросом о своём сне. Да, да... стар я уже стал, на пенсию пора скоро будет, как-никак через два месяца уже целых 26 годков стукнет... Сильно так стукнет видимо... Но не об этом сейчас.
Сплю я значит, и думаю, а хорошо ли это я сплю?... Правильно ли?... И полез я тогда в интернет... после просыпания конечно же. И нашёл там пару систем, вроде SleepTracker Pro - часики такие с акселерометром. Думал на эту тему, но ничего так и не придумал. Готовых систем, кроме этой за $175, да ещё парочки не дешевле данной, вообщем ничего нету нормального, да по корману для студента. А с этих систем перепрыгнул на програмные HappyWakeUp для сотовых телефонов. Суть которой мониторинг громкости звука с микрафона телефона. Звук есть - значит клиент ворочается или бухтит что-то во сне. Значит клиент находиться в активной фазе сна, а значит его самое время будить, если он умудрился это сделать в нужный интервал времяни, скажем, в полчаса до заданного пробуждения. Идея... ну может и сработает... всякое же бывает. Только вот автор... морда европейская... денег просит, и даже шаравары не даёт попробовать... да и денег то 79 европейского эквивалента тубриков. Много вообщем. Так что, подитоживая.
Написал я много, как оказалось, и не по сути. А суть такая, что на два дня я проподаю запускать симуляции с параллельными температурными обменами реплик с Марков цепями, будь они не ладны. А на выходных попробую сотворить свой эквивалент этого СчастливогоПРобуждения для таблетки. А вдруг я однажды тоже проснусь счастливым... Счастья полные штаны... Тьфу... не из той оперы. Всё! всем пока. Не помянайте лихом!
Wednesday, February 11, 2009
Friday, January 2, 2009
Первый пост про температуру...

Ну вот и наступил долгожданный 2009ый. За окном проливной дождь, и зарядил он так на несколько дней к ряду, если верить прогнозу погоды на моей таблетке (Nokia N810).
Пару дней назад, когда она мне только пришла по почте - перерыл в ней просто кучу настроек и вроде даже настроил её, что называется, "под себя". Хотя, как мы знаем, это процесс бесконечный, и такого рода настройки могут ковыряться очень долго, а точнее до тех пор, пока не потеряется интерес ко всему происходящему.
Так, пора уже и о самой теме начать писать. Поэтому плавно перехожу от погоды, к датчику внутренней температуры, которую нашёл я в этом самом плагине. Т.е. таблетка умеет выводить температуру на своём процессоре на экран. И возникла идея. Коли таблетка не сильно греется в режиме ожидания - значит показания этой температуры будут сильно походить на комнатную температуру, а следовательно можно будет проследить какая же у меня температура в комнате, пока я сплю.
Пожалуй будет разумным сразу дать скрипт, который я использую, а потом можно будет разжевать что же он делает.
#!/bin/bash
begin=`date +%Y-%m-%d-%H-%M-%S`;
while true;do
tempr=$(cat /sys/devices/platform/i2c_omap.1/i2c-1/1-0048/temp1_input)
echo "$(date +%Y/%m/%d-%H:%M:%S) $(expr $tempr / 1000).$(expr $tempr % 1000)" >>$begin.dat
sleep 60
done
Вот собственно оно и есть. А теперь по порядку...
Я использую баш, т.к. ну уж очень сильно я к нему привык на работе. И как-то не могу придумать ничего лучше чем он. Хотя есть подозрение, что этот скрипт сработает и с родным шелом Н810.
Так оно и есть. Для исторической справедливости я оставлю первую строчку, которая просто говорит системе какой шел (оболочку) система должна использовать для выполнения последующих команд. Но Вы, если у вас не стоит BASH шела, можете просто не включать эту строчку в скрипт - и он всё равно будет работать даже с таблеточным busybox'ом.
Следующая строчка просто присваивает переменной begin значение строки в виде текущей даты. Сделал я это для того, что бы потом называть файлы, в которые пишутся данные, именно этим названием, т.е. датой. Так проще будет разобраться когда же данные записывались.
Далее - мой любимый бесконечный цикл. =)
В переменную tempr вчитывается значение температуры на процессоре. Именно эта строчка и есть сердце скрипта. Cat - команда вывода в терминал содержимого файла, указанного после этой команды. Т.е. в файле /sys/devices/platform/i2c_omap.1/i2c-1/1-0048/temp1_input храниться значение температуры процессора в цельсиях, умноженная на 1000. Т.е. например файл может содержать строку "23750", что будет означать текущую температуру процессора 23.75 градуса Цельсия.
Последующая строка просто выводит результаты нескольких операций в файл. Echo "str" - выведет строку "str" в терминал; echo "str" >> filename - эта же команда перенаправить вывод текста в файл, причём >>, т.е. двойной знак больше говорит о том, что файл будет дописываться, одинарный же знак больше приведёт к тому, что файл будет перезаписываться каждый раз и как результат - в файле будет только одна строка.
Команды в форме $(command) - выполняют команду указанную в скобках и выдают значение вывода команды как текстовую строку. Поэтому команда $(date +%Y/%m/%d-%H:%M:%S) просто выведет текущее значение времяни в указанном формате, т.е. год/месяц/день-час:минута:секунда. А т.к. это команда находиться внутри команды echo с перенаправлением в файл записи - то значит в файл запишиться текущее время в том формате, который мы запросили. Последующие две команды просто производят математические операции. Т.к. в файле температура записанна в 1000 раз больше, чем мы хотели бы, то разумно её поделить на эту самую тысячу. Первая команда просто выдаст целую часть от деления, а вторая его остаток.
Sleep 60 - говорит скрипту поспать 60 секунд. Команда эта хорошая, тем что не нагружает никак процессор в это время. А скрипт просто пойдёт дальше выполнять свой while-цикл, после ожидания 60 секунд. Значение задержки можно поменять по вашему усмотрению.
Done - это команда в паре с do говорит где начинается и заканчивается while цикл.
Вот и всё. Скрипт готов и работает. Что бы его запустить - просто переходим в папку со скриптом, допустим вы назвали его как temp.sh, тогда команда запуска будет: sh temp.sh
Скрипт начнёт работать, но не будет выводить ничего на экран... - скучно. Одно только хорошо, что его в любой момент можно прервать, нажав cntr+c.
Но мы же люди граммотные, и можем запустить скрипт в фоновом режиме: sh temp.sh &
Что бы его остановить - я поступаю следующим образом - запускаю ps из терминала. Эта команда показывает все запущенные процессы. Обычно к самому концу вывода программы я и обнаруживаю запущенный свой скрипт, например так: 6466 root 1916 SW sh temp.sh
Первое число - это PID процесса. Что бы закончить процесс набираем kill -9 6466. Т.е. мы убиваем процесс с параметром -9 и указываем какой процесс убивать его PIDом.
Что бы вывести график температуры на рабочем компьютере (линуха на борту), я использовал стоящий почти везде gnuplot. Делаем следующее, т.к. все файлы писались с именами в виде "дата-время.dat", то копируем все эти файлы к себе на компьютер, например использую scp. Далее пишим все результаты в один файл (это не обязательно, просто я хотел посмотреть статистику за несколько дней). Команда:
for i in *.dat;do cat $i >>temperature.all;done
объединит все файлы с разрешением .dat в один файл - temperature.all.
Далее, если на компьютере уже стоит gnuplot, то можно просто записать все нижеприведённые команды в файл, скажем plot.gnuplot и запустить командой gnuplot plot.gnuplot
set xdata time
set timefmt "%Y/%m/%d-%H:%M:%S"
set format x "%a-%H:%M"
plot 'temperature.all' using 1:2 with boxes
pause -1
Чуть про этот файл по-подробнее: говорим gnuplot'у, что x данными является время. Вторая строка показывает в каком формате это врями записанно. Третья строка говорит в каком формате мы хоте ли бы видеть эти данные на графике. Далее само рисование данных из файла temperature.all использую первый и второй столбец, и рисовать будем "коробочками". Здесь так же можно использовать lines, points вместо boxes, кому как больше нравиться.
Pause -1 просит gnuplot остаться интерактивной. Т.е. не закрываться. При этом можно будет поменять размеры окна, перерисовать его и т.д. - это уже на ваше усмотрение.
Subscribe to:
Comments (Atom)