この原理に基づいて多くのスマートアラームが構築されています。 それらは、デスクトップガジェットまたは時計の形で提供されるほか、スマートフォン用のアプリケーションでもあります。 彼らの仕事の原理は非常に単純です。 彼らは厳密に指定された瞬間に目を覚ますのではなく、何らかの動きを期待して目覚めることが望ましい期間に目を覚ます。 人が動き始めると、レム睡眠段階が始まり、彼を目覚めさせる時が来ました。
私の部屋では、モーションセンサーの1つがベッドの真上にぶら下がっています。 スマートホームについての記事でこれについて少し話しました。

最近、ログを調べてみたところ、私が一人で寝ているとき、このセンサーからの動きの履歴に睡眠のフェーズが非常にはっきりと見えることに気付きました。 これは驚くべきことではありません。たとえ私がカバーの下に横たわっているとしても、私の動きを非常によく捉えています。 すぐに考えが浮かびました-なぜ目覚まし時計を「スマート」にしないのですか?
モーションセンサー
多くの人が私のセンサーの配置方法を尋ね、回路を求めました。 実際、すべてがどこでも簡単ではありません。 私は最寄りの電気設備店に行き、照明をつけるために通常の家庭用モーションセンサーを購入しましたが、約200ルーブルかかりました。 彼は3つの結論がありました:一般的な、220Vの電力と出力。 ただし、私の目的では、このような電圧の切り替えはまったく役に立ちませんでした。 センサーを分解すると、脳と電源の2つのボードが内部にありました。 最初は約9Vの電圧で駆動され、動きがある場合に出力論理ユニットを提供しました。 2つ目は、コンデンサの電力のためにこれらと同じ9ボルトを供給し、電磁リレーで負荷を切り替えました。 その結果、コンデンサー電源を備えたボードは、マイクロコントローラーを備えたボードに置き換えられました。

マイクロコントローラーのタスクは非常に簡単です。モーションセンサーからの論理ユニットを待って、それに関する情報をスマートホームネットワークに送信しますが、それは1分に1回だけです。 これはすべて12ボルトで動作し、私からすべてのデバイスに供給されます。
アラームスクリプト
私の家のすべてのデバイスはLinuxベースのルーターに接続されており、目覚めに関与しているのは彼であるため、残りのすべての詐欺はシェルスクリプトの記述に帰着します。
alarm.shは、適切なタイミングでcronを介して起動される目覚まし時計を担当し、パラメーター内で目覚め方を正確に転送します。 これで、このスクリプトは、目覚めなければならない間隔が始まるときに実行されるはずです。 30分間続けます。 午前9時30分までに目を覚ます必要がある場合、アラームは9:00に設定する必要があります。
スクリプトは次のようになりました。
#!/bin/sh # MAX_TIME=1800 # FLAG_FILE=/tmp/motion.flag # crontab -l | grep -v alarm.sh | crontab - # -, , if [ -f $FLAG_FILE ]; then rm $FLAG_FILE fi # for i in `seq 1 $MAX_TIME`; do # , , if [ -f $FLAG_FILE ]; then break fi sleep 1 done # , if [ "$1" -eq 1 ] then radio.sh & fi # , if [ "$2" -ge 1 ] then sleep 1 light.sh $2 & fi # , if [ "$3" -eq 1 ] then /usr/local/sbin/wakemypc fi # TODO:
スマートホームデバイスからのパケットに応答するスクリプトで、フラグを作成しました。
# $3 - , 21 - if [ "$3" -eq 21 ] then touch /tmp/motion.flag fi
興味があれば、これはradio.shでラジオをオンにする方法です:
#!/bin/sh # - echo "04040C017A850976">/tmp/clunet.fifo sleep 10 for i in `seq 1 80`; do # 0.5 dB, echo "04040C017A851AE5">/tmp/clunet.fifo sleep 6 done
PHPスクリプトは、 alarm.shをcrontabに追加するため、Webインターフェースを介してアラームを設定できます。

または、Androidアプリから:

実際、モーションセンサーとリモートコントロールが直接接続されているため、このような目覚まし時計はLinuxを使用せずにルーターなしで作成できますが、そのためには、元々設計されていなかった時間をカウントする方法を何らかの方法で教える必要があります。
IPカメラを使用する
理論的には、スマートな目覚まし時計の場合、ベッドに送る場合は赤外線照明付きのIPカメラを使用できます。

ほとんどのカメラでは、動きを追跡することができます。 カメラの管理パネルは次のようになります。

はい、中国語の不器用な英語:)ご覧のとおり、動きが検出されたときに要求されるURLを指定できます。 小さなことは、PHPスクリプトを記述することです。呼び出されると、フラグが作成されます。
カメラの利点は、理論的には、通常のセンサーが反応する熱を隔離するため、カバーの下の動きも見ることができることです。 ただし、実際には、全体的な感度と信頼性ははるかに低いことが示されています。
まとめ
このようなアラームはおはようございます。 感覚は非常に独特です。 たとえば、夢の中で、私は左右にひっくり返ることができ、その間にアラームが鳴り、その結果、ベッドの上ではなくベッドの上で目覚める可能性が高くなります:)
残念ながら、スマートな目覚まし時計を作成するこのアプローチは、見事な隔離状態で寝ている人にのみ適しています。
ラジオの形の独立した目覚まし時計も、音量を徐々に上げていくので、とても快適だと言わなければなりません。 健全な睡眠中、彼はすぐに目を覚まさず、静かな音楽が夢を突破し、徐々に増加し始めます。 ただし、受信機の電源を入れたときの音から目覚めることはよくあります。
記事を書いている間、それは朝の7番目でした。 おはようございます、Habr :)