RPiで小さなセキュリティシステムを実行したように。 パート2

こんにちは、ホーカーズ! 前回の記事で、セキュリティシステムプロジェクトの鉄の部分と、この鉄で動作するPythonシステムについて少し話しました。 この記事では、サーバー側に関する話を続けます。



画像






セキュリティシステムはWi-Fiの範囲外に配置され、モバイルインターネットは低速でのみ使用されるため、データ交換は可能な限り低速にする必要があると判断しました。 この場合、最も簡単な解決策はデジタルコードの使用です。 つまり サーバー1に送信し、モーションセンサーが機能していることを理解します2-煙センサーなど、イベントごとにコードがあります。 次に、サーバーはコードを復号化し、iOSアプリケーションのプッシュ通知の形式で、すでにテキストの形式で必要と考えるものを送信します。 さらに、各イベントはRPi側のログとサーバーログの両方に記録されます。このログはアプリケーションでも表示できます。 ところで、Pythonのサーバーでのすべての作業はRequestsを使用して行われます。



サーバーはPHPで作成され、MySQLもそこに存在し、ログと現在の設定を保存します。 ちょうど2つのテーブル、ここにそれらの1つがあります:







すべてのリクエストは通常​​のPOSTを使用して受け入れられ、JSONに送信されます。 次のようになります。



print json_encode(getRequest($_POST));
      
      





動作するために、サーバーはそれほど多くのメソッドを必要としません:





さて、設定に関して、私は長い間、アプリケーションからセキュリティシステムの制御を実装する方法について考え、設定がサーバーに保存され、セキュリティシステムが1分ごとに更新する場合、この方法は私に非常に適しているという結論に達しました。 つまり アラームをオフにしたい場合、最悪の場合、1分後にオフになります。 同時に、彼女はオフになったことを私に通知するので、不快な驚きはありません。



また、サーバーは、RPiが毎分RPiがオンラインで何も起こらなかったことを報告するようにします。 これが5分以内に発生しない場合、サーバーはアラームを鳴らします。 このチェックはcronを使用して行われます



 */5 * * * * php /aliceserver/checkAlice.php
      
      





彼は5分ごとに簡単なチェックスクリプトを実行します



 include_once $dir . 'defines.php'; include_once $dir . 'db.php'; $db = new DataBase; $db->connect(); $query = "SELECT alice, UNIX_TIMESTAMP(online) online FROM " . SQLTableStatus; $result = $db->query($query); $alice_is_on = $result[0]['alice']; $online = (time() - $result[0]['online'] < 5*60); if ($alice_is_on and !$online) { include_once $dir . 'send_push.php'; $text = "Alice offline!"; $query = "INSERT INTO `" . SQLTableLog . "` (text, sender) VALUES ('$text', 1)"; $db->query($query); send_push_message($text, AppToken, 'alice_offline.caf', $dir); } $db->disconnect();
      
      





プッシュ通知の送信はApnsPHPを使用して実装されます。 Appleサーバーへのプッシュ通知の送信に少なくとも一度遭遇したことのある人は、おそらくこの素晴らしいオープンソースソリューションに精通しているでしょう。 それが何であるかを知らない人にとっては、現時点ではこれは通知を簡単に送信できる最高のラッパーの1つであり、設定には最小限の時間と労力しかかかりません。



これで、サーバー部分についての話は終わりです。次回は、iOSアプリケーションがどのように作成されたかを説明します。 ご清聴ありがとうございました。可能であれば、コメントでハードウェアとソフトウェアに関するすべての質問にお答えします。



All Articles