こんにちは、Habr!
私の名前はSerg Krivoblotskyであり、
毎月のハッカソンのアイデアは、私たちのチームに完全に定着しました。 月に一度、週末にチームが集まり、コードを書いたり、新しいテクノロジーを学んだり、アイデアを生み出したり、ピザを食べたりという形でエンターテイメントを楽しみます。 さまざまなタスクがありました。仮想プランニングポーカーから、小切手の価格認識と国民への転換まで。 通貨。 このすべての主な目標は、完成品をリリースすることではなく、必要に応じてMVPとも呼ばれるプロトタイプを作成することです。
アイデアの1つとその実装について、詳しく説明したいと思います。
共同作業や小規模オフィスにいるすべての人は、そのような行動のアルゴリズムに出くわしました。
- あなたはトイレに行きます
- おっと、忙しい
- あなたは職場に行きます。
- 無料になるまでお待ちください。
問題があります-解決策が必要です。 職場にいるとき、トイレが現在占有されているかどうかをすでに知っていれば、そこに行けば便利です。
これに必要なもの:
- 光センサー。 (点灯==トイレ使用中)
- 測定値を読み取ることができるデバイス。
- PHPおよびObjective Cのコード。
購入された:
- Pcduino
- 最も一般的なアナログ光センサー
- たくさんのワイヤーといくつかの抵抗器
進捗状況:
Hello Worldとして理解されているため、あまりコードを記述しません。 記事の最後に、Githubへのリンクがあります。
- センサーをpcduinoに接続します。
センサーは、0..4096の範囲の値を返します。
経験的に、トイレの照明をオンにすると、次のものが生成されることが判明しました。
> 3400-暗闇
<3400-ライト
- アパッチを上げます。 (以前はそこにubuntuを置いていました)。
- 読み取り値を読み取るためのコードをphpで記述します(GitHubへの記事リンクの最後)。
$this->port = (isset($_GET["port"]) && is_numeric($_GET["port"])) ? $_GET["port"]:2; $this->data = exec("cat /proc/adc".$this->port);
- クライアントだけでなく、モバイル用のAPIを作成しています。
$this->answer(array( 'light_value' => (int)$this->data, 'light_status' => (bool)$l_status, 'light_change' => (int)$l_change, 'sensor_status' => true ));
- 便利な方法でタイマーでデバイスに問い合わせます:
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];
- 投稿通知:
[self.notificationController deliverNotificationWithTitle:kBusyNotificationText andText:notificationText];
...一般的に、必要なのはこれだけです。 後で、タイマーの形式でいくつかの機能とポップアップ通知を無効にする機能を追加しました。
仕事の結果:
OSX:
iOS
ハッカソンのソース:
OSX:
github.com/Krivoblotsky/iToilet-Mac-OS
iOS
github.com/Krivoblotsky/iToilet
PHP:
github.com/Krivoblotsky/iToilet-PHP
しゅう