iToilet. Офисный туалет свободен.

image

Привет,
Меня зовут Serg Krivoblotsky и я алкоголик iOS-разработчик. Я работаю в киевской компании Alterplay, которая специализируется на iOS разработке и дизайне для нашей платформы. «Люби то, что делаешь и делай то, что любишь», говорят у нас. Делаем. Любим.

Идея ежемесячных хакатонов прижилась в нашем коллективе на отлично. Раз в месяц, на выходных, собирается команда для развлечения в виде написания кода, изучения новых технологий, просто генерации идей, или поедания пиццы. Задачи бывали разные: от виртуального planning poker’а, до распознавания цены на чеке и конвертации в нац. валюту. Главная цель всего этого – не зарелизить готовый продукт, а скорее написать рабочий прототипа, a.k.a MVP, как хотите.
Об одной из идей и ее реализации, я бы хотел рассказать подробнее.

Каждый кто находится в co-working’е, или небольшом офисе сталкивался с таком алгоритмом своих действий:

  1. Подходишь к туалету
  2. Упс, занято
  3. Идешь на рабочее место.
  4. Ждешь до тех пор, пока не освободится.

Есть проблема – должно быть решение. Было бы удобно, если бы находясь на рабочем месте я бы уже знал, занят ли туалет в данный момент, стоит ли мне туда идти.

image
image

Что нам понадобится для этого:

  • Датчик света. (Свет включен == туалет занят)
  • Устройство, способное считывать его показания.
  • Немного кода на PHP и Objective C.

Было куплено:

  1. PCduino (Не реклама)
    image
  2. Самый обыкновенный аналоговый датчик освещенности
    image
  3. Множество проводов и несколько резисторов

Ход работы:
Кода писать много не буду, потому что он понятен как hello world. В конце статьи будут ссылки на Github.

  1. Подключаем датчик к pcduino:
    image
    Датчик вернет значения в диапазоне 0..4096.
    Импирическим путем было определено, что наша лампочка в туалете в включенном состоянии выдает:
    <3400 - темнота >3400 – свет
  2. Поднимаем apache. (предвариетельно туда ubuntu поставили).
  3. Пишем код на php, для считывания показаний (вконце статьи ссылки на GitHub):
    $this->port = (isset($_GET["port"]) && is_numeric($_GET["port"])) ? $_GET["port"]:2;
    $this->data = exec("cat /proc/adc".$this->port);
    
  4. Пишем API для мобильных, и не только, клиентов:

    $this->answer(array(
                'light_value' => (int)$this->data,
                'light_status' => (bool)$l_status,
                'light_change' => (int)$l_change,
                'sensor_status' => true
            ));
    
  5. Опрашиваем устройство любым удобным для вас спобом:
    OSX:

    NSURL *toiletURL = [NSURL URLWithString:kToiletURLString];
    NSError *requestError = nil;
    NSData *responseData = [NSData dataWithContentsOfURL:toiletURL options:NSDataReadingUncached error:&requestError];
    

    iOS:

    NSURL *url = [NSURL URLWithString:urlString];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    //Send NSURLSession dataTask
    [self sendRequest:request withCompletion:completion];
    

Результаты работы:
OSX:

iOS:

Исходники хакатона:
OSX:
github.com/Alterplay/iToilet-Mac-OS

iOS
github.com/Alterplay/iToilet

PHP:
github.com/Alterplay/iToilet-PHP

Участники проекта:

Дизайн:

Google+0LinkedIn0Twitter0Facebook0

4 thoughts on “iToilet. Офисный туалет свободен.

    1. За ссылку на компанию и pcduino. Долго общался с поддержкой, но ни к чему не пришли. На хабр статья вернется 14 числа. Да, коментов там достаточно:)

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>