Home Assistant/Hass.io
■ このスレッドは過去ログ倉庫に格納されています
オープンソースのスマートホームプラットフォームであるHome Assistant(HA)と、
そのディストリビューションであるHass.ioについて語るスレです。
公式サイト
https://www.home-assistant.io/ SmartIRコンポーネント(https://github.com/smartHomeHub/SmartIR/)を使って、HAが対応していないclimate/media_player/fan機器を、
CUIツール経由でコントロールする方法を書いてみる。
MQTTを使うので、Hass.ioのMosquittoアドオンなど、何らかのMQTTブローカーの設定がすでにできていることが必要。
githubのドキュメントに従ってSmartIRをインストールした後、こんな感じで設定を記述。
configuration.yaml
smartir:
climate:
- platform: smartir
device_code: 1000
controller_data: somewhere/topic
shell_command:
control_cmd: /somewhere/somecommand {{ arg }} automation.yaml
- alias: 'climate control'
trigger:
platform: mqtt
topic: "somewhere/topic"
action:
- service: shell_command.control_cmd
data_template:
arg: '{{ trigger.payload }}' custom_components/smartir/codes/climate/1000.json
{
"manufacturer": "hoge",
"supportedModels": [
"hoge"
],
"supportedController": "MQTT",
"commandsEncoding": "Raw",
"minTemperature": 14,
"maxTemperature": 32,
"precision": 1,
"operationModes": [
"auto"
],
"fanModes": [
"auto"
],
"commands": {
"off": "args1",
"auto": {
"auto": {
"25": "args2"
}
}
}
} これで、エアコンをオフにしたときargs1、運転モード自動・ファンモード自動・25度に設定したときにargs2という
文字列がMQTTのsomewhere/topicというトピックにパブリッシュされる。
automation.yamlの方ではこのトピックに何かサブスクライブされたら、その内容をshell_command.control_cmdの引数として渡して実行するよう定義。
つまり、エアコンオフのときは /somewhere/somecommand args1 が実行される。
うちではshell_commandに赤外線発光のためのコマンドを定義しているけど、NatureRemoとかの場合はshell_commandじゃなくてrest_commandの
payloadパラメータにargsを渡すようにするとよいのかも。 >>3-6
家電スレでRemoの質問をした物です。
サンプルコードまで載せていただいて、とても参考になります!
こんなコミュニティが今まで無くて苦労してました。
ありがとうございます!!! スレタイにあるHass.ioってHome Assistantの略称じゃなくて、複数ある配布形態の内の1つ
https://www.home-assistant.io/hassio
Hass.ioと書かれたらUbuntuのPython venvにマニュアルインストールしてる身からすれば違うだろと感じる >>3
サンプルではAuto 25℃だけですが、温度や風量を指定したい場合は変数を増やす感じでしょうか?
{
"OperationModes": ["cool", "heat"],
"FanModes": ["soft", "hard"],
"commands": {
"off": "args1",
"cool": {"soft": {"26": "args2","27": "args3"},
"hard": {"26": "args4","27": "args5"}},
"heat": {"soft": {"26": "args6","27": "args7"},
"hard": {"26": "args8","27": "args9"}}}
} >>13
やったぁぁぁぁ!できましたぁ!!!
エアコンがHAから制御できてめっちゃ感動しました!!
1から教えて下さってありがとうございました。 うーん、温度制御がうまく行かない。
Rest_commandで返ってきたJsonレスポンスってどうやって見るんだろう? お!
できた!
テンプレートの使い方が間違ってました。
お騒がせしました あとは、Google Home 等で制御した時などの、Stateを同期させる方法を考えねば。 NatureRemoとGoogle Homeをリンクさせるのではなくて、HAとGoogle Homeを
リンクさせればよいですよ。
(Google Homeは、HAでexposeした機器に対して操作を実行する)
https://www.home-assistant.io/components/google_assistant/ >>18
あ、そうか!
Climateをexposeすれば良いのか。
でも、今のところRemoアプリのルールが動いてるから、その辺をAutomationに移行させてからですなぁ。
今のところちょっとわからないのは、ダイキンのエアコンの場合、ドライやオートの温度設定が-5〜5度の設定範囲に切り替わるんですけど、これをどうやって対応させるのかです。jsonを新たに作って、コントロールを分ければ良いのかな? 我が家はまさにダイキンのエアコンですが、相対温度でしか温度設定できないモードでは、
例えば25度をプラスマイナスゼロ度設定に割り当てて、その上下の温度をプラスマイナスの
相対設定に割り当ててます。
どのみちHAやGoogle HomeアプリのUIは、相対温度設定には対応していないので。
ボイスコントロールのときは「OK Google、エアコン1度上げて」で済みます。 raspiとnoderedの組み合わせ最強。
導入も拡張も保守も簡単。 Hass.ioのNodeRedアドオンって、通常版とほぼ同じ機能ですかね? smartIRの./codes以下に置くコードファイルの書式の全オプションってどこかに解説ありますか?
検索してもなんかコミュニティに誘導されちゃうので上手く探せません。 まあ標準のコンポーネントじゃないし、情報は多くはないだろうけど、githubのドキュメントと
サンプルでは足りないの?何がしたいの? HA自体はClimateコンポーネントの中でswing_modeという状態を持つことが
できるようになっているけど、smartIRがそれに対応していないですね。
fan_modeを使ってごまかすか、パッチを書くしかないかと。 設定項目の全組み合わせの信号を網羅して強引にHAに対応させてる今の仕様だと
風向を増やすだけで設定ファイルの中身が数倍に膨れ上がるから意図的にオミットしてんじゃないか
実際のところ中身をちょっと書き換えれば対応自体はできそうだけどそれやるくらいならエアコンの信号を合成するカスタムコンポーネントを一から書いた方が早いかもしれない >>26-27
難しそうですね。ありがとうございます。
上で初制御できて喜んでた者ですが、似た仕様で複数コード作って、同じようにConfig弄ったらどっちも動かなくなったので、現在嵌り中orz。 Mosquittoアドオンてパブリッシャーだけぶっ壊れるってあるのか。ブローカーが生きてて手動でトピック送信したら普通に制御できたんで嵌ってた。 初歩的な質問ですみません。
Smart_IRのClimateコンポーネントをautomationで自動化したいんですが、
例えば28度以上で冷房オン、27度以下で冷房オフみたいな事をさせたい場合、
アクションでclimate.set_temperatureを使ってターゲットの温度を25度、target_highを28度、target_lowを27度 hvac_modeをcool等と設定すれば、27〜28度の間で自動でオンオフ出来るんでしょうか?
また、そのアクションを実行したい場合、トリガーは温度センサーのNumelicStateで良いのでしょうか? target_high/target_lowは、あくまでエアコン側の設定(エアコンの温度設定を
上限下限で設定できるものが海外にはよくある)
NumelicState を見て、28を超えたら好みの運転モードで動かすように
Automation書けばいいけど、そもそもエアコンというのは設定した室温に
維持するための装置なわけで、そのオンオフをHAにやらすのは
ナンセンスな気がする。 うちのエアコンは設置場所のせいか性能のせいか分からないけれど、同じ設定温度でも時間帯によって実際の室温に結構ムラが出るから
一定周期で温度をチェックして指定の値になってなかったら設定温度を±1するって自動化を組もうとしたことはある
ただピッっていう操作音を消せない機種だったから実際に動かしたら鬱陶しくなりそうでやめたんだけれども いろいろ試しましたが、トリガーがうまく作動しなかったりしたので、諦めました。
あとHAを再起動する度に全てのエアコンがオンになるので、管理し難くなったのでclimateコンポーネント自体削除しました。 >>36
再起動する度にNatureRemoAPIにPOSTしてるっぽいです。
AirconSetting APIは"button=power-off"以外のデータをPOSTするとエアコンがONになってしまう。 ちゃんとconfig書けてれば再起動のたびにAPI叩くなんてことしないけれど…。
まだ残ってるなら関連するconfig全部貼ってみ。 >>38
改行が多いので2chに上げ難いですね。
Github以外でソースアップできるとありますかね? Automationのオンオフをするだけでもエアコンがオンになる。 mqtt使ったことないから詳しくは知らんけど
オートメーションをオンにした瞬間ブローカーのRetain機能で以前発行されたac_study/topicが再発行されてんじゃない? >>43
トピック監視してますが、新たに発行されてないですね。
Rest_commandが勝手に実行されて、空データをPOSTしてる感じです。 config的には問題なさそうなので、>>43のretainが悪さしているに一票。
適当なMQTT subscriberでac_study/topicをsubscribeしてみたら、
誰もpublishしてないうちにbutton=power-offと読めたりしない?
だとして、smartIRはretain=trueでpublishしないんだけど、broker側で
強制的にretainすることなんてできたっけ。 新たに発行されてるかどうかじゃなくて、以前に発行されたペイロードが
broker側で保持されてて、新規にsubscribeした (= automation を
オンにした)ときに、publishされたのと同じ動作をしてるんじゃない、ということ。
でも、空データをPOSTしてるということは、ペイロードには空文字が
入ってるってことになるね…。
デバッグログは? >>45
別アプリで監視してたらトピックの発行がなかったのですが、0.99からHAでListenできるようになったので、色々試したらRetain=trueでbutton=power-offが発行されてました。
おそらくSmartIR弄り始めたときにテストでパブリッシュしたのが残っているっぽいです。これってずっと残るんでしょうかね?
でもオフのトピックなのに起動するのは何故なんだろう? 手っ取り早いのは、mosquitto_pub を入れて
mosquitto_pub -t study_topic -r -n
とすれば retain で発行されたtopicは消えるので、
> でもオフのトピックなのに起動するのは何故なんだろう?
とりあえずretainで残ってるゴミは全部消してみたら? >>48
アドバイスありがとうございます!
トピックを削除することができ、再起動してもAutomation弄っても勝手にエアコンが起動することが無くなりました。
本当にありがとうございました。 ブローカーの記録をメモリ保持だけにしてブローカー落としちゃえ >>50
ブローカーはHass.ioのアドオンですが、メモリ保持などのオプションが見当たらなかったです。 諸兄の皆様のアドバイスのおかげでエアコンが解決しました。ありがとうございました。
次は照明が問題です。いくつかの照明はSONOFF_BASICを仕込んでMQTTで制御していますが、
赤外線リモコンで制御するタイプの照明のSTATEを管理する良い方法はありますでしょうか? たぶん壁スイッチか元のリモコンで操作した時の事を言ってるんだと思うけど、照度計か電力計を使う、HAと連携をとれる物理スイッチを使うというのが手っ取り早いかな >>53
壁スイッチから向こう側に触れることができないので、現実的には照度計が簡単そうですかね。 いや、aqara wireless remote switchみたいなのを追加したらってこと
スイッチの付け替えはそちらの理解通り簡単ではないからね >>55
こんなんあるんですね。興味湧いてきました。
これってXiaomi介さずにHAから直接Zigbeeで統合できるのでしょうか。 xiaomiのサーバーを介さずということならhubのバージョンというかロットによっては可能だし、zigbee2mqttの対応リストにあるからそちらでも可能 https://www.home-assistant.io/components/xiaomi_aqara/
ここのTroubleshootingに場合によっては連携不能って思われることが書いてあるだけで実際はどうなのかわからない
参考までに先月買ったgatewayは書いてある手順通りにportを開けて使用してます ニュートラル不要の壁スイッチSonoffがあった!
https://youtu.be/4f34SPqP4-A
これなら、N線引っ張ってくる工事しなくても良さそうですが、普通のLEDシーリングライトって、付属のコンデンサ取り付けられる所が無さそう? Nature Remo API で 照明を作成したいのですが、不明な点があります。
エアコン以外のAPIはボタンごとにURLが異なるので、Rest commandでオンとオフそれぞれを記述して、Switchコンポーネントで割り当てようと思ったのですが、platformにRest commandを割り当てる方法が見当たりません。
RESTful Switch も調べたのですが、前述のとおりURLが異なるので、オン/オフの設定方法が不明です。
なにか良い方法をご存じの方いらっしゃいましたら、ご教示いただけると幸いです。 フロントエンドでスイッチ作る場合はinput_booleanをひとつ用意して
それがON→OFFになったときとOFF→ONになったときをそれぞれトリガーにしたオートメーションを書いて作る感じ。 オンオフそれぞれ別のRest Switchをまず定義して、Template Switchを新たに定義して、
このturn_on/turn_offそれぞれでRest Switchを割り当てればいい。 >>61
あー!なるほど!
Lightコンポーネントでオン/オフはservice:input_boolean.turn_on/turn_offを割り当てればよいのか!!
ちょっと試してみます。ありがとうございました。 初代のラズパイModel B+で使ってるんだけど、Pythonを3.6から3.7にアップグレードしたり、最新のHASSにアップデートしたら、コンパイルなどに無茶苦茶時間がかかってほぼ一日がかり。
HAはバージョンが上がってどんどん重くなっている気がする。
やはり、ラズパイを3以上のに買い換えるべきか。
消費電力増えるのも金使うのも嫌なのだが。
みんなやっぱりラズパイは3以上の使ってるの?
ラズパイZeroだとスペックあまり変わらないから、やっぱり非力なんだろうな。 >>62
Rest Command,Automation,Lightコンポーネントと3つも跨っていろいろ複雑になったので
シェルスクリプト作って、Command line Switchで落ち着きました。
せっかくアドバイスもらったのにゴメン 最終的にはCommand Line SwitchでどうにでもなってしまうのがHAのよいところ ラズパイZero WでHass.ioを動かすのはキツイ?
そもそもDocker非対応スペックだけど HAとhass.ioの違いも微妙だけど、HAはゼロWで動いてるよ
Raspbian Buster LiteにHAと某691氏システムと、dasherしか使ってないけど HAの推奨環境を改めて見ると、ラズパイは3以上が推奨で、初代やZeroはテスト環境以外では推奨しないって書いてあったね。
https://www.home-assistant.io/hassio/installation/
自分がHAを導入したのは2年以上前で、hass.ioは使っていない。
その頃の推奨環境をウェブアーカイブで確かめてみると、初代もZeroもOKだった。
結局、サポートするデバイスがどんどん増えて、重くなったんだなぁと。
まあ、一旦起動してしまえば初代ラズパイでも特に問題なく動いているように思うけど、バージョンアップで再ビルドが必要になると、すごく時間が掛かる。
アップデート作業は昼間にはやらずに寝る前に実行させるということにして我慢して運用すればいいのか。
ただ、ログを見ると、やたらとコンポーネントのセットアップに時間が掛かりすぎているというタイムアウトのWARNINGが記録されているので、これは初代ラズパイが非力なせいなのかも。
ラズパイ3の人はログにタイムアウトが記録されてたりしませんか?
素直にラズパイ3に買い換えてhass.ioを入れた方が幸せなのかも。
それとも、GPIOを使わないのであれば、うちには他にも仮想マシン上のLinuxサーバー環境があるので、そちらに移した方がいいのか。
それだとお金掛からないし、将来的にHAが肥大化しても対応しやすそう。
悩ましいところ。 >>69
上記リンクはhass.ioを導入するための推奨環境でした。
hass.io以外でもやはりラズパイ3以上推奨でした。
https://www.home-assistant.io/docs/installation/ 自分もそこ見てZeroだと無理なんだろうなって思った
やっぱZeroは厳しそうね
サンクス NanoPi NEO2 python3.6 venvでアップデートに小一時間
まあ許容範囲 pi 3B+今から買うくらいならしばらく待ったほうがいいと思うけど…
有線LANアップデート版もうそろそろ技適取れると思うし どこで見たか忘れたけど3B+は世界的に不足してて在庫がなくなったら次の入荷は2021年って買いてあったの見た >>72
これ安くていいね。
WiFiとかの余分な物が付いてないし。
HA動かすならば、こういうのでいいんだよな。 初歩的な質問ですみません、AutomationのConditionで*月〜*月のような設定って可能ですか?? >>78
condition: template
value_template: "{{ 5 <= now().month <= 11 }}"
って設定するのが一番簡潔に済むんじゃないか
設定期間内で年を跨ぐ場合とかはちょっと注意がいるけど >>79
ありがとうございます。
関数とかもあるんですね。勉強になりました。 言語とか全く勉強したことないんですけど、最近ホームアシスタントとか、オートメーションに興味が湧いてきたんです。どういった言語を勉強すれば皆さんのように使いこなせるようになるでしょうか?
ゼロからの人に参考になりそうなものを教えてもらえるとありがたいです。。。 >>81
英語かな
オライリーとか読めばなんとかなんじゃないの(適当) >>81
そもそも基本的な自動化は別にプログラミング言語とか知らなくても組めるように出来てるんで、まずは公式HPの説明読み込んで使い方を理解するのが先だと思う。
その上でゼロから言語を学びたいってことならPythonでいいんじゃないか?分かりやすくを念頭に置いて作られてる言語だし、HomeAssistant自体もPythonで作られてるし。
テンプレート構文を多用する必要のある自動化とかはAppDaemon使って直接Pythonスクリプト書いた方が圧倒的に楽に組めるし、コンポーネントを自作できるようになるとやれる事の幅が一気に広がって色々捗るぞ 残念ながらHAの日本語での情報は少ないので、公式英語ページを(翻訳サイト通してでも)読む根気は必須かなあ。
あと、設定ファイルはYAMLで書くので、YAMLの文法は知っておいた方がいい。 >>86
YAMLの文法と言っても必要なのはインデント揃えるくらいだよ >>81
まずはラズパイ買ってOSをインストールしてみて。
それならググれば日本語でいっぱい情報があるから。 このスレは親切な人が多いっぽいから、上手く動かないと言ってコンフィグ貼れば誰かしら
教えてくれると思うけど、いちから手取り足取り学べる状況では残念ながらないよね日本では >>90
日本以外だと手とり足取り教えてもらえるのかな?
インターネットなんてある程度は国境フリーなんだから、その手とり足取り教えてもらえる国のフォーラムで質問したらいいね >>86
熱意というか、やりたいという気持ちが高まれば自分で調べてなんとかできる。
YAMLなんて全く分からないド素人だったが、ラズパイ導入からHass.ioのインストール・運用まで全部ネットで知識を得た
あと、このスレの回答がとても参考になってステップアップできた。 テンプレートを書くならJinja2も勉強しないといけない
YAML, Jinja2, Python, JSON, ... ぶっちゃけ機械翻訳かければ余程のことがない限り理解出来るので英語力ゼロでもなんとかなる 一般的な言語の質問ならスタックオーバーフローとかteratailで聞けばレス付くから10年前よりはだいぶ優しい世界になったと思うの
勉強なんて気合い入れてしなくてもなんか動くものがすでにあってパラメータをちょっといじったら自分の好きになるみたいなのもあるし Tuya SmartのWiFi壁スイッチがいろいろと出回っていてAmazonでも買えたので試しに使ってみた。
https://nwzimg.wezhan.hk/contents/sitefiles3603/18017975/images/1922294.jpg
基本的な作りはsonoff T1 USタッチスイッチと同じみたいだが、こちらは315MHzは使えずWiFiのみ。
こちらの方が少し安い感じ。
tuya-convertを使ってファームウェアをtasmotaに書き換えてMQTTスイッチとしてHAでコントロールできるようになった。
1回路のスイッチのテンプレートは tasmota wikiに上がっていた「KYGNE CD-301」のものがそのまま使えた。
ただし、3回路のテンプレートが無かったので自分で作った。
以下のとおり。
{"NAME":"Tuya CD303","GPIO":[157,57,255,19,23,18,0,0,17,21,58,22,56],"FLAG":0,"BASE":18}
ファームウェア書き換えるのが結構面倒だが、簡単に入手できるスマートスイッチとして活用できると思う。 ■ このスレッドは過去ログ倉庫に格納されています