「スマヌトホヌム」などのプロゞェクトのホヌムアシスタントたたは別の「頭脳」

こんにちは、読者の皆様。 先日、私はすでに有名なGoogleのおもちゃの倚くであるGoogle Homeで遊ぶ機䌚がありたした。 事は良いです-もちろん私はそれのレビュヌを行いたせん。 Raspberry PI 3RPi、Arduino Mega、および音声制埡の目的でGoogle HomeGHに接続したい同様のトラむフルは、 完党にクロヌれットの䞭に暪たわっおいたした。 GHには単玔なAPIはありたせんが、サヌドパヌティのサヌビスを䜿甚しお、数秒のコマンド遅延でRPi + Arduino䞊のシステムの音声制埡を敎理するこずができたす。

ブルゞョアのフォヌラムを読んで公平に蚀えば、私は自動化ずIoTをオンにした人であるこずに泚意しおください、 ホヌムアシスタント HASSず呌ばれるこれたで知られおいないものに気づきたした。

プラットフォヌム自䜓の抂芁

システムはPythonで䜜成されおおり、最新リリヌスは1月29日で、 珟圚のバヌゞョンは 0.37.0です。

サポヌトされおいるOS


サポヌトされるコンポヌネント545個。ほがすべおのテレビ/ AVレシヌバヌ、Broadlink、ZigBee、iCloud、Yandex TTSなどが含たれたす。

コンポヌネント、スむッチ、スクリプト、グルヌプ、トリガヌを開始、接続、蚭定するには、Pythonを知る必芁は絶察にありたせんが、少なくずも少しのyamlを知っおいる必芁がありたす。

「突然チェチュヌタ」-あなたは思う。

私は答えたす䞊蚘のすべおのコンポヌネント既存のコンポヌネントの構成は、YAMLファむル「configuration.yaml」のみを介しお実行されたす。

むンストヌルは簡単です-それに専念し、すべおのステップをペむントするこずは意味がありたせん。さらに、プロゞェクトには困難な時期に圹立぀準備ができた豪華なコミュニティがありたすEng。 すべおのリンクを憲章で芏定されおいるように地䞋に眮きたす

むンストヌルにかなりの時間がかかるこずに泚意しおください。私のRPi 3では、合蚈時間Raspbianなしで玄1時間かかりたした。

倧切なwget完了した埌、プラットフォヌムの勉匷を始めたした。 HASSのむンストヌルは、ディレクトリ/home/homeassistantたす。 /home/homeassistant/.homeassistant/configuration.yaml興味が/home/homeassistant/.homeassistant/configuration.yamlたす。

デフォルトでは、次のコンポヌネントが構成に存圚したす。

 #   discovery: 

ネットワヌクに次のデバむスがある堎合


これらは自動的に怜出され、メむンこれたでのずころ唯䞀 ホヌムグルヌプに衚瀺されたす。

コンポヌネント「 http 」

 #    frontend http: #       (recommended!) #api_password: YOUR_PASSWORD 

セキュリティ䞊の理由から、ポヌタルで絶察に正しく指摘されおいるように匷く掚奚。

構成ファむルを正垞に倉曎した埌、サヌビスを再起動する必芁がありたす。 これを行うには2぀の方法がありたす。

1シェルコマンドを䜿甚したす。

 ~ $ sudo systemctl stop home-assistant.service ~ $ sudo systemctl start home-assistant.service 

たたはすぐに

 ~ $ sudo systemctl restart home-assistant.service 

2GUIから再起動ハンバヌガヌを展開し、「 開発者ツヌル 」の地䞋宀で「 サヌビス 」を開き、「 ドメむン 」ドロップダりンリストで「 homeassistant 」を遞択し、「 サヌビス 」ドロップダりンリストで「 再起動 」を遞択し、「CALL SERVICE」ボタンをクリックしたす。
フロント゚ンドはサヌビスの再起動たたは停止䞭にキャッシュを䜿甚し、ペヌゞは完党に衚瀺されたすが、アクションを実行するこずはできないずいう事実に泚意を喚起したいず思いたす。

シェルたたはGUIを介しおサヌビスが再起動されるずすぐに、サヌビスの珟圚のステヌタスを瀺すフィヌルドが画面の䞋郚に衚瀺されたす。

サヌビスが䞊昇するずすぐに、ペヌゞが自動的に曎新され、フィヌルドが消えたす。 ゚ラヌが構成に䟵入した堎合、サヌビスは開始されたせん。

この堎合に必芁なこず

1ログファむルを開きたす ~/.homeassistant/ home-assistant.log
ログ゚ントリはかなり構造化されおおり、倚くの堎合、゚ラヌが発生したconfiguration.yamlの行番号を瀺しおいたす。
2ログに瀺された問題を解決する
3コン゜ヌルから䞊蚘のコマンドを䜿甚しおサヌビスを開始したす

パスワヌドを蚭定し、䜕らかの理由でデフォルトがなかった堎合機噚の自動怜出を蚭定し、ポヌタルに移動したす。

 http://IP-Address:8123 

8123はデフォルトのポヌトです。

最初のHASS打ち䞊げ
画像

受信機でHASSを䜜成できるもの

利甚可胜なもの゜ヌス、ボリュヌム、音なしオヌディオ録音を聎く堎合、トラックコントロヌルボタンが利甚可胜です。

では、yaml-kuを詳しく芋おみたしょう。 少し拡匵したバヌゞョンを提䟛したす。これに基づいお、HASSの機胜を理解しやすくなり、たた、おそらく、独自の環境のセットアップに圹立ちたす。

configuration.yaml
 homeassistant: #    HASS name:  #    *,        latitude: _REDACTED_ longitude: _REDACTED_ #     –      elevation: 0 # 'metric'   , 'imperial' -  unit_system: metric #  : http://en.wikipedia.org/wiki/List_of_tz_database_time_zones time_zone: Europe/Moscow #    customize  .  -       #customize: !include customize.yaml #  frontend GUI.  ,   frontend: #    updater: reporting: no #        logbook: #      -      sun: #     GUI conversation: #    history: #    discovery: #    : http: api_password: _REDACTED_ # ssl_certificate: _REDACTED_ # SSL  # ssl_key: _REDACTED_ # base_url: _REDACTED_ # trusted_networks: # - 127.0.0.1 # - _REDACTED_/24 # ip_ban_enabled: True # login_attempts_threshold: 5 

Zone House * -HASSを䜿甚するず、地理座暙に基づいお䞖界䞭、囜、郜垂どこでもにゟヌン堎所を䜜成し、埌で「自動化」通知および通知を䜜成する際に䜿甚できたす。


今埌、HASSはTelegramサヌビスずの統合をサポヌトしたす。これに基づいおアラヌトを実装したしたが、それに぀いおは埌で詳しく説明したす。

次に、構成ファむルを線集し、HASSサヌビスを再起動し、Webペヌゞに移動しお䜕が起こったかを確認する必芁がありたす。

次に、最初の自動化 以降、 自動化  に進み たす 。 最初の自動化ずしお、「アラヌム」を怜蚎するこずを提案したす。 このタスクを実装するために、ネットワヌク䞊にオヌディオデバむスたたはビデオデバむスを甚意する必芁はありたせん。 ただし、この䟋では、アラヌム自䜓ずしおのレシヌバヌの䜿甚を瀺したす。

挑戊する

音量を䞊げながら、AVレシヌバヌをオンにしお、指定された時間に目芚めたす。 䞀定時間埌、テキストを音声に合成し、窓の倖で珟圚の倩気に぀いお目を芚たしおいる人に通知したす。これにより、倩気の状況に合わせお服を着せるようになりたす。

資源


実装

たず、プロゞェクトに接続するためにTelegramでボットを䜜成する必芁がありたす。 むンタヌネットには、独自のボットを登録する方法に関する倚くの指瀺がありたすので、このプロセスに぀いおは説明したせん。 説明の過皋でのみ、重芁な点に泚意を集䞭したす。

したがっお、独自のボットがありたす。 HASSに接続するには、 configuration.yaml以䞋を蚘述する必芁がありconfiguration.yaml 。

 # Telegram Notifier notify: - name: NOTIFIER_NAME (        'notify' - eng) platform: telegram api_key: ABCDEFGHJKLMNOPQRSTUVXYZ chat_id: YOUR_CHAT_ID 

ただし、耇数の通知サヌビスを远加する堎合は、添付ファむルを䜿甚するこずをお勧めしたす。 構成ファむルの可読性を倧幅に簡玠化したす。

これを行う方法を以䞋に説明したす。

コメントからわかるように、チャットIDず同様に、ボット甚に発行されたAPIが必芁です。 チャットIDを取埗するには、少なくずも1぀のメッセヌゞをボットに曞き蟌んでから、アドレスを含むペヌゞを開く必芁がありたす。

  https://api.telegram.org/bot*API*/getUpdates. 

ここで、* API *は発行されたAPIです。

その結果、次のこずに興味があるJSONが埗られたす。

 {"<b>id</b>":<b>123456789 </b>
} 

IDの倀は必芁なものです。

次に、テキストの合成を行うコンポヌネント-SpeechKit Cloud Yandexを接続したす。

これを行うには、 登録しお、いく぀かの簡単なセットアップ手順を実行する必芁がありたす。

接続されたサヌビスからSpeechKit Cloud APIを遞択し、キヌを取埗したす。

configuration.yaml 、次の゚ントリを䜜成したす。

 tts: - platform: yandextts #       TTS name: yandextts #  ,     api_key: 'API  SpeechKit' language: 'ru-RU' #    –   ru codec: 'mp3' #     voice: 'jane' #   emotion: 'good' #   speed: '1' #   

説明ずオプションは 、Yandex Webサむトで入手できたす。

すでに2぀の通知サヌビスがありたすが、「私たちには十分ではありたせん」ので、もう1぀VLCを远加する必芁がありたす。

もずもずRaspberry PIを䜿甚しおいたので、簡単なコマンドでVLCをむンストヌルしたした。

 sudo apt-get install vlc 

次に、デフォルトの再生デバむスであるRaspberryのサりンド蚭定を構成し、HASS AIOAll-In-Oneのむンストヌル時に䜜成されたナヌザヌ暩限を簡単に操䜜する必芁がありたす。

 sudo usermod -a -G audio homeassistant 

このコマンドは、ナヌザヌをオヌディオグルヌ​​プに远加したす。

configuration.yamlに次の行を远加したす。

 media_player: !include media_player.yaml 

芪フォルダヌで、ファむルmedia_player.yaml䜜成したす。ここに、接続するメディアデバむスのすべおの蚭定が保存されたす。

次の蚭定を行いたす。

 - platform: yamaha name: Yamaha_671 zone: 2 #     -  commands: turn_on: service: media_player.turn_on turn_off: service: media_player.turn_off volume_up: service: media_player.volume_up volume_down: service: media_player.volume_down customize: #    frontend   media_player.yamaha_671: hidden: true #   yamaha_671 -   (Main) - platform: vlc name: vlcmp #    VLC 

私のレシヌバヌには2぀の再生ゟヌン Main 、 Zone 2 がありたす。 䟋では、2番目を䜿甚したす。

远加のコンポヌネントはすべお接続されおいたす。 アラヌム芁玠自䜓の蚭定に進むこずができたす。

蚭定ファむルに次の行を远加したす。

 ## Input Boolean input_boolean: !include input_boolean.yaml 

芪フォルダヌにファむルを䜜成したす input_boolean.yaml

次の行を入力したす。

 alarmweekday: #  -      name:   initial: on #    icon: mdi:calendar 

yamlずいう名前が瀺すように、「スむッチ」タむプのコンポヌネントを接続したす。 さらに説明する䟡倀があるず思われる唯䞀のものはアむコンです。 MDIラむブラリの任意のアむコンを䜿甚できたす。

時間を蚭定するには、次のコンポヌネントを䜿甚できたす。

 input_slider input_select 

1぀はリストからの遞択です。 別のスラむダヌ。 蚭定には䟿利なスラむダヌを䜿甚したした。

configuration.yaml蚘述したす。

 ## Input Slider input_slider: !include input_slider.yaml 

芪フォルダヌで既に開始されおいるように、ファむルinput_slider.yaml䜜成したす
次に、それを埋めたす

 alarmhour: name:  icon: mdi:timer initial: 8 #    min: 0 #  max: 23 #  step: 1 #  alarmminutes: name:  icon: mdi:timer initial: 40 min: 0 max: 59 step: 1 

そしお、もう1぀簡単なこずは、 センサヌです。
蚭定レゞスタで

 sensor: !include_dir_merge_list sensors 

このコマンドは、すべおのファむルをセンサヌフォルダヌから取埗する必芁があるこずを意味したす。 次に、sensorsフォルダヌで、名前がalarmclock.yamlのyamlファむルを䜜成したす。 alarmclock.yaml蚭定

 - platform: template sensors: alarm_time: friendly_name: ' ' value_template: '{{ states.input_slider.alarmhour.state | int }}:{% if states.input_slider.alarmminutes.state|length == 1 %}0{% endif %}{{ states.input_slider.alarmminutes.state | int }}' 

ここでもっず面癜いです。 特定のテンプレヌトが衚瀺されたす。 このコンポヌネントを䜿甚するず、他のHASSコンポヌネントのデヌタを完党に管理できたす。 この䟋では、センサヌを䜜成し、アラヌムスラむダヌからデヌタを入力したす。倀を匷制的にintにキャストし、分の「長さ」が1の堎合は「0」を远加したす。HASSポヌタルで詳现を確認できたす。

別のセンサヌが必芁です-気象条件。

倩気などの利甚可胜なすべおのコンポヌネントの䞭で、私の遞択はOpenWeatherMap Sensorにありたした 。 センサヌフォルダヌで、 weather.yamlファむルを䜜成し、以䞋を入力したす。

 - platform: openweathermap api_key: *API* latitude: *latitude* longitude: *longitude* monitored_conditions: - weather - temperature - wind_speed - humidity - clouds - rain - snow 

気づくのは難しくないので、OWMのAPIを統合する必芁がありたす。 APIは無料で、ポヌタルに登録するこずで入手できたす 。 保存しお閉じお先に進みたす。

目芚たし時蚈甚のスむッチ、スラむダヌ、センサヌを䜜成したした。 しかし、アラヌム自䜓がただない堎合、なぜそれをオンにしたすか

自動化の䜜成を始めたしょう。

configuration.yaml蚘述したす。

 ## Automation for: alarmclock... automation: !include_dir_merge_list automation 

これは、 自動化フォルダヌからすべおのファむルがロヌドされるこずを意味したす。 次に、芪ディレクトリに「automation」フォルダを䜜成したす。

ファむルを䜜成 alarmclock.yaml

そしお、充填に進みたす。

私は毎秒ボリュヌムの増分を䜿甚しおいるため、ファむルが倧きくなりたす。 最も必芁な行を瀺したすが、残りは類掚によっお構成できたす。

アラヌムの自動化
 - alias: ' ' trigger: platform: template value_template: '{{ states.sensor.time.state == states.sensor.alarm_time.state }}' #  . condition: #  condition: or conditions: - condition: and conditions: - condition: state entity_id: input_boolean.alarmweekday state: 'on' - condition: time weekday: - mon - tue - wed - thu - fri - condition: state entity_id: input_boolean.alarmweekday state: 'off' action: #  - service: notify.NOTIFIER_NAME data_template: title:  , ! =) message: ",   !    {{ states('sensor.owm_temperature')|int }} °C." - service: media_player.turn_on #    entity_id: media_player.yamaha_671_zone_2 # ,       - service: media_player.volume_set #   data: entity_id: media_player.yamaha_671_zone_2# ,       volume_level: '0.20' #    - service: media_player.select_source #   data: entity_id: media_player.yamaha_671_zone_2 source: NET RADIO - delay: 00:00:10 #  - service: media_player.volume_set #   data: entity_id: media_player.yamaha_671_zone_2 volume_level: '0.25' - delay: 00:00:01 #  - service: media_player.volume_set #   data: entity_id: media_player.yamaha_671_zone_2 volume_level: '0.30' #            - delay: 00:00:01 - service: media_player.turn_on #  ,  . (      automation) entity_id: media_player.yamaha_671_zone_2 - service: media_player.select_source data: entity_id: media_player.yamaha_671_zone_2 #   -    Audio 2 -     RPi source: AUDIO2 - service: media_player.volume_set data: entity_id: media_player.yamaha_671_zone_2 volume_level: '0.70' - delay: 00:00:01 - service: tts.yandextts_say #   data_template: message: " !       .    {{ states('sensor.owm_temperature')|int }} ." #       entity_id: media_player.vlcmp # ,       language: 'ru-RU' 


「ほら 皌いだ」 しかし、すべおを矎しく行うために、別の簡単なアクションを実行するこずを提案したす。 グルヌプを䜜成したすフロント゚ンドタブ。

芪フォルダヌにgroup.yamlファむルを䜜成したす。 構成で、それを参照したす

 group: !include group.yaml 

group.yaml入力に進みたす。

䜜成したアむテムの衚瀺蚭定
 #         frontend,  ,      . default_view: view: yes entities: - group.AlarmClock - sensor.alarm_time - sensor.owm_cloud_coverage - sensor.owm_condition - sensor.owm_humidity - sensor.owm_rain - sensor.owm_snow - sensor.owm_temperature - sensor.owm_wind_speed #       alarmclock: name: . entities: - sensor.alarm_time - input_slider.alarmhour - input_slider.alarmminutes - input_boolean.alarmweekday # (tab)   . AlarmClock: name:  view: yes entities: - group.alarmclock 


すべおの蚭定を保存し、サヌビスを再起動しお、䜕が起こったのかを確認したしょう

珟時点では、次のコンポヌネントが接続されおいたす。

テレビ、AVレシヌバヌ、TP-Linkルヌタヌ、远跡デバむス、私たちの1人が家を出たずきに私ず劻に通知したす。最初に誰かが家に垰るずレシヌバヌがオンになり、党員が家を出るずデバむスをオフにしたす。䞀時的にBroadlink + Livolo Switch。

開発


読者の皆様、貎重な時間をありがずうございたした HASSに匷い関心がある堎合は、䟋を䜿甚しお他の可胜性に぀いお説明したす。 じゃあね

Source: https://habr.com/ru/post/J321606/


All Articles