2020.3.21 大学のネットワークで同じことをしたが、デバイスを検出できない。 セキュリティの関係で、Wifiルーターが SSDP/UPnP を無効にしている? (大学のネットワークではうまくいかない。自宅では正常に動作) 原因は、Wifi ルータの dhcp が、10.*.*.* network で、かつ固定IPの 172.*.*.* network (rapberry pi) と同じでないから。10.*.*.* の固定IPに変更予定(Covidの関係で対応が遅れている。)
2023.8.10 Ver. 4.0 スマホの接続を変えたら、設定が全てなくなったのでやり直し。
2020.3.13 ver 3.00 alexa-local を node-red-contrib-amazon-echo に変更。メモリー使用量を減らし、現在は正常に動作(自宅のネットワーク)。
2019.6.12 ver 2.00 kernel を新しくすると動かなくなった問題の対策を追加。
2019.5.4 ver 1.01 by R. Saito
このページは、赤外線(波長940nm)リモコンを
(1)アマゾンエコードット(音声)と
(2)Webページで操作する設定方法の記録です。
すでにWeb 上にいっぱいある情報を収集しただけです。多くの情報が すでになくなっているものもあります。
しかし、情報が正確でないものが多く、また、多くの人にとっておすすめの 方法ではありません。
ですが、動作はしていますので、まとめたものが必要だと思いました。
すべてを実行するのに、2ヶ月ぐらいかかりました。またお金も1万円以上かかります。
大変でしたが、勉強になりました。もっとスマートにできればいいですね。
echo dot + node red または Web page から LED シーリングON・OFF動作している。
使用しているのは raspberry pi zero wh + amzon echo dot + 自作赤外線発生ボード(送信のみ)+ 市販赤外ボード(試験、受信)
市販赤外ボードは赤外線の強度が弱い → 自作ボードによって8畳のどこにあってもOK
lircd (irsend) が現状の raspberry OS で使えない。 → 古いOSに戻すことで使えた。
https://raspibb2.blogspot.com/2019/06/kernel-419raspbian-stretchbusterlirc.html (新しいOSでもlircd を再構築すると動くらしい。まだ試していない 2020.3.22)
node-red で uk のサーバーだと遅い → node-red-contrib-amazon-echo でlocal net で OK echo-dot の node-red のスキルは不使用。
node-red-contrib-amazon-echoでデバイスが認識できない → node-red 配線前にデバイスをecho dot で認識させる。デバイス名をローマ字にしないと文字化けする。echo dot の名前は日本語に変更できる。
node-red-contrib-amazon-echo と apache2 が port 80 を競合 → apache2 のポートを8080に変更。node-red-contrib-amazon-echo では 80->8111 ポートにiptable で変換して使用。
一部のリモコンの信号が認識できない → mode2 コマンドを利用
raspberry pi zero が、数日利用で固まってしまう。→ GUIを使わない、Swapを使わない。その他の不要なservice を停止。現在は 80MB のメモリー使用で安定。
これ以外の対応は多く紹介されているけど、上の条件を同時に満たすのは難しい。
下記は時系列の対応です。
2020. 3. 17 alexa-local が使えなくなっていた(echo dot の仕様変更が原因)ので、node-red-contrib-amazon-echo に変更した。raspberry pi 使用メモリー節約。3.18 動作した。
2019.6.11 1ヶ月以上安定して動いていたのが突然動かなくなりました。sudo apt upgrade が原因 kernel を動作していた古いバージョン4.14.98にして復活。
2019.4.30 正しく動作しています。忘れないうちに、記録します。
情報の整備は、まだ完了していません。少しずつ記録します。
lirc を使わないで、raspberry pi の GPIO を直接操作。(最新のOSを使用)
(2020.3.20 下記Webページ発見。lircd を作り直す。新しいOSに組み込んでほしい)
→ https://raspibb2.blogspot.com/2019/06/kernel-419raspbian-stretchbusterlirc.html
→ wiringPi がある。https://tool-lab.com/raspi-gpio-controlling-command-2/ c コマンドで GPIO port に赤外線の情報を流せばよい。iresend のソースを見る必要があり。(2020.3.22)
irsend.c scanir.c が現在入手できない(どなたかお持ちのかたはメールください)。
node-red 上から exec を使わないで、直接 GPIO を動作したい。
Bluetooth 機器で赤外線の信号を出す装置。
赤外線の動作は、Raspberry Pi zero WH で行う。(消費電力0.25W)
赤外線のコマンドは irsend を使う。このため irsend が使える古いOSを使う。
kernel 4.14.98 を用いる。そうでないと lirc-dev が動作しない。(Raspberry pi 古いカーネルに戻す、で検索。)。
(将来の課題として irsend を使わないで実行したい。)
実際に使う赤外線のコントローラーは自作する。(赤外線LEDの数を増やすことができる)
アマゾンエコーとの接続は Node-red を使う。(設計が簡単)
node-red-contrib-amazon-echo で Echo Dot から デバイスの認識をする。
Web ページでも赤外線の操作できるようにして、スマホで操作可能にする。
apache2 のポートを 80 から8080に変更 (alexa の80と競合しないように)
node-red-contrib-alexa-local を使わない。(Alexa Echo Dot の仕様の変更による。)
node-red-alexa-home-skill-bridgeをつかない。(uk のサーバーに接続するため遅い)
基本的に、local net から使う。外からは、ssh tunnel で接続する。(安全)
Raspberry Pi Zero WH は、消費電力が USB テスターで測定したら、0.25W でした。
動作において全く問題がなく、Wifiが使えるので、電源さえ確保すれば部屋のどこにでも おけます。スマホの予備バッテリーでも、1ヶ月は充分に動作します。予備バッテリーで 動作させると、移動させて試験するときに便利です。
OSを入れるMicroSDは16GBで少し高速のものを使いました。8GBでも問題ありませんが、いろいろインストールすると、6GB ぐらい使いますので、安全を見たほうが良さそうです。
OS kernel 4.14.98 の Rasbian を入れました。”Raspberry pi OS 古いkernel 4.14.98 install" で検索可能です。
Raspberry Pi Zero WH の最初の難関は、USBキーボードとマウスを同時に使えないことです。Wireless キーボードとマウスならば使えました。それ以外の方法もWeb上に公開されています。Wifi と real-VNC server をインストールすれば、そのあとは Windows 10 のパソコンから遠隔操作が可能になりますので、あまり投資をしないで突破したいです。
最終的には GUI や X windows を使わない形(すべてコマンドで行う) にしました。
以下必要な作業をメモします(詳細は必要がありましたら、追加しますが、 Webで検索可能な内容は省略。すべての作業をするのに3ヶ月かかった。)
OSを16GB SDカードに書き込む。OSのインストール。
WifiのIPアドレスを固定アドレスにする。(ssh や、Web server 対応にするため)
sudo apt-get update sudo apt-get upgrade (カーネルのVersion を変えると irsend が使えなくなる) sudo rpi-update a08ece3d48c3c40bf1b501772af9933249c11c5b (kernel 4.14 に戻す) sudo apt-get install emacs (emacs:標準のエディターです) sudo apt-get install real-vnc (パソコン上で Raspberry piの操作をするため) sudo apt-get install npm (Node-red: 仮想的に回路を作るソフト) sudo apt-get install apatch2 (Web server) sudo update-rc.d apache2 defaults (Apatch2 の update) sudo apt-get install lirc (赤外線を動作させるためのライブラリー) sudo apt-get install php5 (Web で PHP を実行)
最初は、Raspberry_Pi_IR_Control_Expansion_Board を買って動作試験をしました。
https://www.amazon.com/Raspberry-Controller-Transmitter-Transceiver-Geekworm/dp/B076BDR34K
中国からの輸入で、説明書も全くありませんでしたが、動作しました。 説明書を下記Webページからダウンロードして動作するところまで確認しました。
http://www.raspberrypiwiki.com/index.php/Raspberry_Pi_IR_Control_Expansion_Board#LIRC_Software
説明書どおりですが、説明書の 3.irrecord の部分の部分が不十分ですので、他のページを参考にして、どういう応答があるかを理解する必要がありました。日本語の詳細は
Raspberry Piで学習リモコン
https://qiita.com/gao_/items/e8394656003f349952d6
を参照するのが良いと思います。
また、すべてのリモコンがirrecord で動きません。あるときは、Raw dataとして irrecord を動かす必要があります。また irrecord で学習できないリモコンもありました。最後の部分は、mode2 コマンドを用いて学習することを書いたページがありますので、そこを参照すれば良さそうです。(最後の部分は、まだ完了していません。)最終的には、この基板は既存のリモコンの学習専用として使います。
http://www.raspberrypiwiki.com/index.php/Raspberry_Pi_IR_Control_Expansion_Board
基板は動作をしますが、赤外線LEDが1つしかなく、信号強度も弱いので1つの電灯だけON・OFFできますが、複数の機器を同時にすることはできないので、おすすめできません。
そこでLEDの数を増やし、電流も大きくして自作をすることにしました。自作のページはいろいろありますが、秋月通商ですべて揃うものとして、赤外線LEDドライブ回路の決定版
というページの回路をまず、ブレッドボード上で動作を確認し、更に LED+27Ωの 部分を3つ並列にしても安定して動作することを確認しまして、ユニバーサル基板 (ブレッドボード配線パターン)Dタイプ 47x36mm を半分にカッターでカットシたもの にハンダ付けして回路を作りました。基盤にピンソケット(メス)2x8 (通販コード C-2761) をはんだ付けします。この際、ピンソケットの部分の配線がつながっているところをカッターで切って、テスタターで導通しないことを確認して使いました。
また、トランジスタとLEDは半田を盛る側に取り付けます。最初に半田付けをするときに、熱対策をしなかったため、トランジスタとLEDが熱で壊れてしましました。2回めは、トランジスターを軽く濡れたテッシュを重ねたものを洗濯バサミではさんで、加熱しないようにし、さらにトランジスターの足の部分をピンセットでハサミさらに論文バサミのような強めの洗濯バサミで挟んで、足から熱伝導で熱が伝わるのを阻止した状態で半田付けしましたので、熱による半導体の劣化を防ぐことができました。
秋月通商で購入したもの、抵抗4.7k(通販コードR-07831)、1kΩ(R-07820) 27Ω(R-07960) ,MOSFET(I-09723)3個、(I-06026) 3個、赤外線940nm (I-03261) 2袋、ピンソケット(C-02761)3個、基盤(P-08242)2個、
その他raspberry pi ブレッドボード配線ができるキットが必要です。いろいろ お金がかかります。1万円ぐらいは必要になります。趣味としては高いですね。 部品は余らしても良いですので、余分に買っておいたほうが安全です。
http://akizukidenshi.com/catalog/g/gP-08242/
回路の詳細が知りたい場合には、rsaito@flex.phys.tohoku.ac.jp までメールをくださいませ。基本的には、上記Webページの回路です。
赤外線を学習するときは irrecord を使います。
sudo /etc/init.d/lircd stop irrecord -d /dev/lirc0 tv.conf
Raspberry Piで学習リモコン
https://qiita.com/gao_/items/e8394656003f349952d6
に詳細があります。そこからの、孫コピペです。
1.Enterキーを2回押して、リモコン学習を開始します。 2.学習したいリモコンのボタンを何度も押して学習します。 複数のボタンを学習したい場 合は、学習したいリモコンの ボタンを何度も押してください。 ボタンを押すたびに「.」が1個表示されるため、 "Please keep on pressing buttons like described above." と表示されるまで、ボタンを押し続けます。 3."Please keep on pressing buttons like described above." が表示されたら、10秒間待ちます。 4."Please enter the name for the next button"が表示されたら、 登録したいボタン名(on, off など)をを入力してEnterを押します。 5.登録したいリモコンボタンを押して、登録します。
irrecord では、2.のいろいろなキーを . が2行埋まるまで 入力するというところがあります。その部分が動かない場合には、 後述の方法で解決できます。
でできた conf ファイルを /etc/lirc/lircd.conf に追加すれば動きます。
sudo /etc/init.d/lircd restart (irsend が使えるようにします。) irsend SEND_ONCE tv on (tv on のコマンドを一回送ります。)
pi@raspberrypi:~ $ cat /etc/lirc/lircd.conf # Please take the time to finish this file as described in # https://sourceforge.net/p/lirc-remotes/wiki/Checklist/ # and make it available to others by sending it to # <lirc@bartelmus.de> # # This config file was automatically generated # using lirc-0.9.4c(default) on Wed Nov 14 07:31:26 2018 # Command line used: -n -d /dev/lirc0 /home/pi/fan.conf # Kernel version (uname -r): 4.14.79+ # # Remote name (as of config file): fan # Brand of remote device, the thing you hold in your hand: # Remote device model nr: # Remote device info url: # Does remote device has a bundled capture device e. g., a # usb dongle? : # For bundled USB devices: usb vendor id, product id # and device string (use dmesg or lsusb): # Type of device controlled # (TV, VCR, Audio, DVD, Satellite, Cable, HTPC, ...) : # Device(s) controlled by this remote: begin remote name fan bits 64 flags SPACE_ENC eps 30 aeps 100 header 3467 1754 one 429 1313 zero 429 442 ptrail 428 gap 78737 toggle_bit_mask 0x0 frequency 38000 begin codes jaku 0x40040B210C445032 0x00000000BEC2FA7D kiru 0x40040B210CCC0CE6 0x00000000BEC2FA7D soft 0x40040B210C8450F2 0x00000000BEC2FA7D kyou 0x40040B210C245052 0x00000000BEC2FA7D 3h 0x40040B210CC20CE8 0x00000000BEC2FA7D 6h 0x40040B210C620C48 0x00000000BEC2FA7D timer1h 0x40040B210C820CA8 0x00000000BEC2FA7D timeroff 0x40040B210C020C28 0x00000000BEC2FA7D end codes end remote begin remote name tvold bits 32 flags SPACE_ENC|CONST_LENGTH eps 30 aeps 100 header 8988 4484 one 559 1675 zero 559 570 ptrail 559 gap 107670 toggle_bit_mask 0x0 frequency 38000 begin codes on 0x0CF300FF 0xBEFB0A7C ch1 0x0CF308F7 0xBEFB0A7C ch2 0x0CF38877 0xBEFB0A7C ch3 0x0CF348B7 0xBEFB0A7C ch4 0x0CF3C837 0xBEFB0A7C ch5 0x0CF328D7 0xBEFB0A7C ch8 0x0CF3E817 0xBEFB0A7C chp 0x0CF39A65 0xBEFB0A7C chm 0x0CF35AA5 0xBEFB0A7C otop 0x0CF3906F 0xBEFB0A7C otom 0x0CF350AF 0xBEFB0A7C mute 0x0CF3D02F 0xBEFB0A7C end codes end remote 以下 begin remote .... end remote で挟まれた部分を追加する。 begin remote name tv bits 32 flags SPACE_ENC|CONST_LENGTH eps 30 aeps 100 header 8988 4485 one 563 1670 zero 563 568 ptrail 558 repeat 8989 2257 gap 107693 toggle_bit_mask 0x0 frequency 38000 begin codes ch1 0x0CF308F7 0xBECFA22C ch2 0x0CF38877 0xBECFA22C ch3 0x0CF348B7 0xBECFA22C ch4 0x0CF3C837 0xBECFA22C ch5 0x0CF328D7 0xBECFA22C ch6 0x0CF3A857 0xBECFA22C ch7 0x0CF36897 0xBECFA22C ch8 0x0CF3E817 0xBECFA22C ch9 0x0CF318E7 0xBECFA22C ch10 0x0CF39867 0xBECFA22C ch11 0x0CF358A7 0xBECFA22C ch12 0x0CF3D827 0xBECFA22C on 0x0CF300FF 0xBECFA22C chp 0x0CF39A65 0xBECFA22C chm 0x0CF35AA5 0xBECFA22C otop 0x0CF3906F 0xBECFA22C otom 0x0CF350AF 0xBECFA22C mute 0x0CF3D02F 0xBECFA22C end codes end remote # これは Raw-code で学習した例です。 begin remote name led flags RAW_CODES eps 30 aeps 100 gap 10982 begin raw_codes name mode 1981 1028 5429 1010 1478 532 1448 538 418 577 438 555 417 574 417 579 436 556 441 558 1410 574 439 555 439 554 437 585 385 579 420 575 440 533 1430 584 1429 553 1405 580 441 570 401 578 417 575 439 556 415 578 440 559 444 539 440 558 437 558 417 575 440 549 421 578 439 552 443 536 1432 574 1408 577 439 554 1410 592 1414 559 416 576 1429 560 1408 578 415 name all 2009 1009 5434 1035 1427 561 1409 577 436 558 445 550 440 554 416 576 418 554 467 559 1408 575 464 528 418 577 429 566 417 578 438 551 419 578 1431 563 471 497 460 556 1434 552 449 543 421 578 441 551 417 576 421 581 474 517 438 555 417 577 444 579 412 555 480 512 441 553 441 561 440 550 417 577 1454 532 1412 578 1428 564 436 557 1431 556 1454 539 415 name oyasumi 1941 1039 5424 1017 1432 576 1409 577 416 578 420 577 458 529 445 555 437 557 436 561 1427 556 417 576 439 556 438 552 443 553 416 576 419 575 1458 534 486 505 416 577 417 576 1430 559 416 578 439 553 439 556 416 581 470 519 455 537 443 550 416 577 442 555 438 554 440 554 438 558 472 517 438 561 434 558 449 522 1451 557 439 555 1430 556 1430 560 418 name bright 2012 1007 5428 1037 1456 533 1427 562 416 577 440 554 439 554 418 578 416 578 415 584 1404 577 420 576 416 578 438 558 415 577 440 531 440 578 1452 540 448 543 439 554 439 556 436 558 451 543 439 555 1405 580 441 557 452 539 440 553 420 576 418 577 416 577 453 538 444 553 427 571 448 543 416 577 440 554 1412 578 1453 533 428 566 438 557 1432 537 462 name dark 1979 1038 5432 1008 1452 558 1435 554 443 554 417 577 418 577 416 555 438 558 435 581 1452 516 459 552 420 577 417 579 436 558 439 556 435 554 1437 537 469 555 405 575 419 577 418 577 437 555 418 552 443 577 1455 516 466 544 441 552 421 573 420 557 456 554 443 553 418 577 442 557 474 495 438 578 440 553 1452 515 1456 557 434 539 1430 579 439 554 441 end raw_codes
end remote
赤外線を出すときは、もし tv のリモコンを登録して on という名前をつけたとき
sudo /etc/init.d/lircd restart サービスの開始 irsend LIST "" "" 登録 conf のリスト irsend LIST tv "" tv として登録されたボタンのリスト irsend SEND_ONCE tv on tv の on のコマンドを一回送る。
の操作でできます。
pi@raspberrypi:~ $ irsend LIST "" "" tvold tv fan led pi@raspberrypi:~ $ irsend LIST tv "" 000000000cf308f7 ch1 000000000cf38877 ch2 000000000cf348b7 ch3 000000000cf3c837 ch4 000000000cf328d7 ch5 000000000cf3a857 ch6 000000000cf36897 ch7 000000000cf3e817 ch8 000000000cf318e7 ch9 000000000cf39867 ch10 000000000cf358a7 ch11 000000000cf3d827 ch12 000000000cf300ff on 000000000cf39a65 chp 000000000cf35aa5 chm 000000000cf3906f otop 000000000cf350af otom 000000000cf3d02f mute pi@raspberrypi:~ $
irrecord で学習できない場合には以下の方法があります。
(1) irrecord -f -d /dev/lirc0 raw.conf でRaw Mode で実行する。
(2) mode2 コマンドを使ってその後編集。
(2) の方法は、
https://qiita.com/ww24/items/32d2a78c20e6dcc2e68c
に詳細があります。
mode2 -d /dev/lirc0 | sed -ue '1d' | tee aircon_on.txt
でリモコンの一つのボタンを押す。できた aircon_on.txt を編集(最初の大きな数字の行は削除)
cat aircon_on.txt | awk '{if(NR % 30) ORS=" "; else ORS="\n"; print $2}' | cat -; echo
4 桁ぐらいの数字の列ができるので、config file を作り、/etc/lirc/lircd.conf に追加する。
begin remote name aircon flags RAW_CODES eps 30 aeps 100 gap 200000 toggle_bit_mask 0x0 begin raw_codes name on 460 383 496 368 485 376 487 411 454 394 469 25241 3474 1717 450 1244 484 383 483 379 510 351 490 1246 483 376 578 353 418 381 481 385 483 1249 482 378 485 1255 471 1302 430 379 491 1247 499 1226 480 1253 478 1248 486 1242 478 384 487 405 473 1235 477 378 486 382 484 381 484 378 496 370 485 384 482 378 483 379 537 331 481 378 526 1211 480 380 482 1263 495 355 486 378 486 381 482 1245 484 1250 476 388 477 382 489 417 444 384 477 383 485 384 481 394 468 384 479 377 492 381 481 395 475 425 489 344 506 379 446 391 475 379 483 1248 486 1241 486 1304 425 383 481 1291 434 384 484 1250 483 1245 478 34546 3488 1684 477 1248 489 377 484 382 479 405 457 1255 488 373 497 369 478 382 487 380 494 1241 482 377 480 1266 468 1248 480 379 485 1249 481 1244 485 1250 487 1239 480 1263 478 367 484 384 484 1244 484 386 480 385 480 395 465 382 507 356 498 370 485 378 483 380 484 390 484 375 485 376 507 1230 479 380 486 380 484 382 496 364 487 1247 482 378 485 379 487 380 485 382 478 384 483 380 486 391 471 385 479 382 481 384 482 381 482 383 488 383 478 385 484 378 489 374 488 376 487 388 476 379 483 1263 483 368 477 1250 480 381 520 1213 478 384 485 34546 3487 1688 479 1246 482 383 481 382 508 358 484 1255 469 385 485 384 480 391 471 381 482 1252 481 381 478 1251 483 1244 493 403 451 1250 478 1251 477 1249 485 1265 458 1251 483 380 485 381 508 1225 486 378 487 370 485 406 462 380 485 380 482 400 462 392 474 387 476 389 478 381 486 377 489 378 483 385 486 373 484 381 480 386 484 381 484 385 518 1208 487 399 459 382 483 1268 468 386 471 477 387 1249 483 382 505 357 481 1249 480 1253 479 1250 478 383 581 1154 477 385 477 383 485 380 482 383 507 391 459 368 482 386 485 377 511 361 477 382 488 1241 484 1268 485 1221 482 1247 504 362 484 1247 481 381 482 1246 483 1250 482 1246 483 1244 483 1248 479 383 483 384 480 380 486 384 480 384 478 384 481 415 450 383 485 379 484 382 482 385 477 386 481 378 487 1248 486 1243 480 384 482 394 470 390 474 383 482 383 485 381 479 382 480 384 484 384 481 382 482 1250 482 1247 481 407 456 384 480 383 516 349 483 383 504 358 482 385 519 339 494 398 458 389 497 362 482 417 466 362 484 382 520 345 507 358 614 251 484 1243 486 378 486 382 480 408 458 382 481 383 479 1255 479 1247 482 384 479 417 496 334 485 378 480 385 534 329 521 344 487 1247 479 385 478 385 484 379 498 365 482 430 440 379 484 396 468 378 483 387 501 1230 484 1245 476 1256 479 378 484 1248 479 1250 482 1244 481 end raw_codes end remote
これを、sh script に組み込んで、tv-on.sh のようにして、 このスクリプトを、Webや echo dot -> node-red から起動するようにします。
# TV turn off tv-on.sh if [ $1 = "on" ] then irsend SEND_ONCE tv on # TV turn on elif [ $1 = "off" ] then irsend SEND_ONCE tv on fi
次は、ch-local.sh です。これは数値を引数 $1 としてチャンネルを変更します。 bash では、数値の比較は "=" でなく "-eq" を使うことに注意が必要です。
# TV channel selection # Sendai version. 1, 2, 3, 5, 8 # 11:Mute 12:Volup 13:Voldown # echo $1 >> /home/pi/ch.log if [ $1 -eq 1 ] then irsend SEND_ONCE tv ch1 # elif [ $1 -eq 2 ] then irsend SEND_ONCE tv ch2 # elif [ $1 -eq 3 ] then irsend SEND_ONCE tv ch3 # elif [ $1 -eq 5 ] then irsend SEND_ONCE tv ch5 # elif [ $1 -eq 8 ] then irsend SEND_ONCE tv ch8 # elif [ $1 -eq 11 ] then irsend SEND_ONCE tv mute # elif [ $1 -eq 12 ] then irsend SEND_ONCE tv otop # elif [ $1 -eq 13 ] then irsend SEND_ONCE tv otod else exit 0 fi
Alexa を用いた動作の前に、Webページで動作することを確認します。
apatch2 (Web server) をインストール(上記の sudo apt-get install apatche2) して、http://192.168.XXX.XXX/index.html がスマホなので見えることを確認します。
port を80から8080に変更します。そのために2つのファイルを変更
/etc/apache2/ports.conf
Listen 80 -> Listen 8080
/etc/apache2/sites-enabled/000-default.conf
VirtualHost *:80> -> <VirtualHost *:8080>
apache2 を再起動
sudo service apache2 stop
sudo service apache2 start
IPaddress:8080 で、Home Page が見えること。 IPaddress で Home Page が見えないこと。
を確認します。
また、動作hは PHP を使いますので、php もインストール (sudo apt-get install php)します。
このインストールの仕方は、"Raspberry pi Web server", "Raspberry pi PHP" で検索可能です。
Webページの画面が変化しないで、コマンドを実行するのは難しかったです。いろいろなページを参考に次のような1ページだけの index.html ファイルを作ってみました。 1 箇所 IP address を編集する必要があり。
<html lang="ja"> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title></title> <!-- <script type="text/javascript" src="/cmd.js"></script> --> <script type="text/javascript"> /* refered from : http://www.gesource.jp/programming/javascript/20060503.html \ */ /* http://www.gesource.jp/programming/javascript/20060501.html */ function createXMLHttpRequest() { if (window.XMLHttpRequest) { return new XMLHttpRequest(); } else if (window.ActiveXObject) { try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e2) { return null; } } } else { return null; } } const server_addres = "http://192.168.10.50:8080"
const light_on = "/led.php" const light_off = "/led-off.php" const tv_on = "/tv-on.php" const tv_1 = "/tv-1.php" const tv_2 = "/tv-2.php" const tv_3 = "/tv-3.php" const tv_4 = "/tv-4.php" const tv_5 = "/tv-5.php" const tv_8 = "/tv-8.php" const v_p = "/v-p.php" const v_d = "/v-d.php" const v_0 = "/v-0.php" function lightOn() { var url = light_on; cmd(url); } function lightOff() { var url = light_off; cmd(url); } function TvOn() { var url = tv_on; cmd(url); } function Tv1() { var url = tv_1; cmd(url); } function Tv2() { var url = tv_2; cmd(url); } function Tv3() { var url = tv_3; cmd(url); } function Tv4() { var url = tv_4; cmd(url); } function Tv5() { var url = tv_5; cmd(url); } function Tv8() { var url = tv_8; cmd(url); } function Vp() { var url = v_p; cmd(url); } function Vd() { var url = v_d; cmd(url); } function V0() { var url = v_0; cmd(url); } function cmd(url) { var request = createXMLHttpRequest(); var send_address = server_addres + url request.open("GET", send_address, true); request.send(""); } function sleep(ms) { var d1 = new Date(); while (true) { const d2 = new Date(); if (d2 - d1 > ms) { break; } } } </script> </head> <table border="0" cellspacing="0" cellpadding="1"> <tr> <th> <form name="light-on"> <input type=button style="width:200px;height:150px;font-size:2.5em" val ue="電灯 ON" onclick="lightOn()"> </form> </th> <th> <form name="light-off"> <input type=button style="width:200px;height:150px;font-size:2.5em" val ue="電灯 OFF" onclick="lightOff()"> </form> </th> <th> <form name="TV-ON"> <input type=button style="width:200px;height:150px;font-size:3.0em" val ue="テレビ" onclick="TvOn()"> </form> </th> </tr> <tr> <th> <form name="TV-1"> <input type=button style="width:200px;height:150px;font-size:4.5em" val ue="1ch" onclick="Tv1()"> </form> </th> <th> <form name="TV-2"> <input type=button style="width:200px;height:150px;font-size:4.5em" val ue="2ch" onclick="Tv2()"> </form> </th> <th> <form name="TV-3"> <input type=button style="width:200px;height:150px;font-size:4.5em" val ue="3ch" onclick="Tv3()"> </form> </th> </tr> <tr> <th> <form name="TV-4"> <input type=button style="width:200px;height:150px;font-size:4.5em" val ue="4ch" onclick="Tv4()"> </form> </th> <th> <form name="TV-5"> <input type=button style="width:200px;height:150px;font-size:4.5em" val ue="5ch" onclick="Tv5()"> </form> </th> <th> <form name="TV-8"> <input type=button style="width:200px;height:150px;font-size:4.5em" val ue="8ch" onclick="Tv8()"> </form> </th> </tr> <tr> <th> <form name="Vup"> <input type=button style="width:200px;height:150px;font-size:4.5em" val ue="音+" onclick="Vp()"> </form> </th> <th> <form name="Vdown"> <input type=button style="width:200px;height:150px;font-size:4.5em" val ue="音−" onclick="Vd()"> </form> </th> <th> <form name="Vmute"> <input type=button style="width:200px;height:150px;font-size:4.5em" val ue="無音" onclick="V0()"> </form> </th> </tr> </table> </html>
この中で、php ファイルが複数参照されます。その例として led.php を示します。 他も irsend の部分を変えればできます。
<?php $results = shell_exec('irsend SEND_ONCE led mode'); echo $results; ?>
すべて、ファイルは /var/www/html に置きます。
プログラムを変更するには、Table の部分、function の部分、constant の部分の3ヶ所を変更して、該当する php ファイルを作ります。
Amazon Echoとラズパイで、音声で照明をon/offする
を参照して Node-red を Raspberry Pi にインストールします。
https://qiita.com/kikuzo/items/753b5065dde9633bda18
bash <(curl -sL https://raw.githubusercontent.com/node-red/raspbian-deb-package/master/resources/update-nodejs-and-nodered) sudo systemctl enable nodered.service
参照した Web ページは、Node-RED Alexa Home Skill Bridge を使っていて、uk へのサーバーを使っています(これでも動作します)が、ローカルのサーバー内だけで 済ませたいので、node-red-contrib-amazon-echo 1.10 を使います。(2020.3.20現在)
sudo npm install node-red-contrib-amazon-echo
(node-red-contrib-amazon-echo をインストールします。)
sudo node-red-stop sudo node-red-start (node-red を再起動します)
PC 上から、raspberry pi の IPaddress:1880 で Node-red のサーバーに入ります。
右上の三本線を押して、パレットの管理を選択
ノードの追加タブ node-red-contrib-amazon-echo を入力し、追加ボタンを押す。
(注:前は node-red-contrib-alexa-local でしたが、ある場合には削除します。)
(注:ここで node-red-contrib-lirc も追加しておくと、irsend コマンドを 直接操作できる。Execがいらない?まだ試していない。2019.5.29 追記)
ここから先の作業は、https://vogel.at.webry.info/201910/article_3.html?1570354755
を参考にしました。port80 から port8111 へ変更
sudo iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT sudo iptables -A PREROUTING -t nat -i wlan0 -p tcp -d 172.17.4.125 --dport 80 -j REDIRECT --to-port 8111 sudo sh -c "iptables-save > /etc/iptables/rules.v4" sudo apt-get install iptables-persistent
2行目で無線LANを使っているので、wlan0 を使います。ip address は raspberry pi のlocal network 上の ip address です。4行目でこの設定が再起動で消えないようにする。
2020.3.21 大学のネットワークで echo dot を使おうとすると、デバイスが検出できない。(解決していない)
その理由の候補として、local network 上に別のWorkstation 上のWeb serverがport 80 を使っている。このポートを変えることはできないので、対応ができない? ルーターをつけてecho dot と、raspberry pi zero wh を独立したネットワーク上に移動する必要があるかも。
Node-red の作業は、amazon echo hub, amazon echo device
ノードを貼り付けて、線でつなぎます。
貼り付けた amacon echo hub をクリックしてポートを8111にします。
Node-red の経験がある人は、線でつないでからデバイスの認識を
Echo Dotから行うと思いますが、なぜかこれだとうまくいきません。 上記Webページの通り、amazon echo hub, amazon echo device だけをパレット に置いた状態で、echo dot から認識させてください。
また amazon echo device デバイス名を日本語にすると文字化けしますので、 ローマ字で行って、後で Echo Dot で認識したあと、Echo Dot の方の名前を 日本語に直しました。
amazon echo HUB --> amazon echo device --> Exec (その他にある) | --> msg.payloadg
amazon echo device (並列に複数可)をダブルクリック 名前を Denkiにします。
amazon echo HUB は、1個のみです。
Execをダブルクリックで コマンドとして /home/pi/led-local.sh を入力します。
Debug はそのまま msg.playload の値を表示します。
led-local.sh の中身は、on と off によって分岐しています。
# LED turn off if [ $1 = "off" ] then irsend SEND_ONCE led mode sleep 1 irsend SEND_ONCE led mode # LED turn on elif [ $1 = "on" ] then irsend SEND_ONCE led mode fi
led-local.sh を実行可能にします。
chmod +x /home/pi/led-local.sh /home/pi/led-local.sh on
で動作確認できます。
チャンネルを変更する場合には、
amazon echo device ---> Change (機能にある)---> Exec (その他にある) | --> Debug
amazon echo device をダブルクリック 名前に channelを入力。
Change をダブルクリック 名前 channel 値を代入 msg.playload 対象の値 msg.bri
Execをダブルクリックで コマンドとして /home/pi/ch-local.sh を入力します。
デブロイして デバイス チャンネルを完成します。
# TV channel selection # Sendai version. 1, 2, 3, 5, 8 # 11:Mute 12:Volup 13:Voldown # echo $1 >> /home/pi/ch.log if [ $1 -eq 1 ] then irsend SEND_ONCE tv ch1 # elif [ $1 -eq 2 ] then irsend SEND_ONCE tv ch2 # elif [ $1 -eq 3 ] then irsend SEND_ONCE tv ch3 # elif [ $1 -eq 5 ] then irsend SEND_ONCE tv ch5 # elif [ $1 -eq 8 ] then irsend SEND_ONCE tv ch8 # elif [ $1 -eq 11 ] then irsend SEND_ONCE tv mute # elif [ $1 -eq 12 ] then irsend SEND_ONCE tv otop # elif [ $1 -eq 13 ] then irsend SEND_ONCE tv otod else exit 0 fi
msg.bri の値は数値ですので -eq で比較します。
chmod +x /home/pi/ch-local.sh /home/pi/ch-local.sh 3
上記のFlowの設定を書き出したもの(JSONと呼ばれるもの?)が以下のとおりです。 これをコピーして Node Red 上の右上の三本線で読み込みをすれば、フローが できます。
[{"id":"d8cf2a31.5fe2b","type":"exec","z":"b3255512.5622c8","command":"/home/pi/led-local.sh","addpay":true,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"LED ライト","x":576.3333129882812,"y":119.33334350585938,"wires":[[],[],[]]},{"id":"e362862b.f30d98","type":"exec","z":"b3255512.5622c8","command":"/home/pi/tv-local.sh","addpay":true,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"寝室のテレビのオンオフ","x":555.3333129882812,"y":437.3333435058594,"wires":[[],[],[]]},{"id":"e97e1d60.054a58","type":"debug","z":"b3255512.5622c8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":564.3333129882812,"y":48.333335876464844,"wires":[]},{"id":"ceb21bdb.2fb7b","type":"debug","z":"b3255512.5622c8","name":"tv","active":true,"tosidebar":true,"console":false,"tostatus":true,"complete":"payload","x":523.3333129882812,"y":356.3333435058594,"wires":[]},{"id":"1ae45a0c.ba9366","type":"debug","z":"b3255512.5622c8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","x":520.3333129882812,"y":544.3333435058594,"wires":[]},{"id":"2234de73.706d02","type":"change","z":"b3255512.5622c8","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"bri","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":323,"y":591.3333129882812,"wires":[["1f8d315e.39ef6f","1ae45a0c.ba9366"]]},{"id":"1f8d315e.39ef6f","type":"exec","z":"b3255512.5622c8","command":"/home/pi/ch-local.sh","addpay":true,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"チャンネルの切り替え","x":539.3333129882812,"y":637.3333740234375,"wires":[[],[],[]]},{"id":"8ec5529b.b9b6e8","type":"exec","z":"b3255512.5622c8","command":"/home/pi/hotman.sh","addpay":true,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"ホットマンのオンオフ","x":542.8309631347656,"y":284.323486328125,"wires":[[],[],[]]},{"id":"78d10466.12e0ac","type":"debug","z":"b3255512.5622c8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":558,"y":212,"wires":[]},{"id":"6b6114b2.2395dc","type":"amazon-echo-hub","z":"b3255512.5622c8","port":"8111","processinput":"0","discovery":true,"x":85,"y":200,"wires":[["bb3df021.1e7f38","11a9bcff.41d57b","8e8c12af.36185","fd26196e.93cd48"]]},{"id":"bb3df021.1e7f38","type":"amazon-echo-device","z":"b3255512.5622c8","name":"denki","topic":"","x":357.5,"y":89,"wires":[["d8cf2a31.5fe2b","e97e1d60.054a58"]]},{"id":"11a9bcff.41d57b","type":"amazon-echo-device","z":"b3255512.5622c8","name":"hotman","topic":"","x":307.5,"y":206,"wires":[["78d10466.12e0ac","8ec5529b.b9b6e8"]]},{"id":"8e8c12af.36185","type":"amazon-echo-device","z":"b3255512.5622c8","name":"telebi","topic":"","x":303.5,"y":320,"wires":[["e362862b.f30d98","ceb21bdb.2fb7b"]]},{"id":"fd26196e.93cd48","type":"amazon-echo-device","z":"b3255512.5622c8","name":"channel","topic":"","x":265.5,"y":416,"wires":[["2234de73.706d02"]]}]
スマホに Alexa アプリをいれる。
(追記:node-red-contrib-amazon-echo の場合には echo dot に Node-red というスキルが不要です。 Node-redのスキルを入れるとアカウントの入力が必要ですが uk のサーバー上 でのアカウントですので関係ありません。
デバイスが見つからない時は、
amazon echo HUB --> amazon echo device
以外の配線をすべて消去して、再度 デバイスの検索を行ってください。
アプリの左上の三本線をおして、設定→デバイスの設定→ + を押す。
デバイスを追加→セットアップするデバイスの種類で一番下 その他 を選択
デバイスを検出 (20秒待つ)新しいデバイスが登録される。必要に応じて 自分で設定したグループ( 821セミナー室 など) に入れる。
Raspberry pi の電気とチャンネルが見つかります。 (注:node-red-contrib-amazon-echo を用いた場合です。
(注: alexa-home-skill の場合には、uk のサーバーにログインする必要があります.alexa-home-skill で定義したデバイス、とnode-red-contrib-amazon-echo で定義したデバイスは同じ名前でも違うデバイスですので、混乱しないように必ず片方を利用してください。node-red-contrib-amazon-echo のほうが良いです。node-red-contrib-amazon-echo の欠点は、新しいデバイスを見つけるには、同じ local-net 上で作業をしなければいけません。外部のネットから、作業をするときには、ssh のトンネルを使う方法がありますが、ここでは省略します。 )
アプリ上の デバイス 電気 ON で 電気が動作することを確認します。
アプリの左上の三本線をおして、定形アクションを選択して→ + を押す。
実行条件を設定 → + を押す。アレクサ つけて を入力
アクションを追加 →+ を押す。スマートホーム、デバイスをコントロール
電気 を選択
電源を選択 オン 次へ
保存すると、アレクサ電気 で電気がON OFFできます。ONとOFFのコマンドが違う 場合には、アレクサつけて、アレクサ消して、のように別のアクションで登録
チャンネルの場合には
アレクサ NHK を入力
アクションを追加 + スマートホーム、デバイスをコントロール
チャンネルを選択
明るさを選択 3
でできます。アレクサ 電気、 アレクサ NHK で動きます。
https://qiita.com/tstkkmd/items/10fb586be83de96bfe24
自宅と職場のように、2ヶ所で Echo dot + raspberry pi を使う場合には、
まず、自宅用と職場用の gmail account を作ります。
スマホでは、アレクサアプリ 左上の三本線 設定
の一番下に、〇〇さんではありませんか?というところで、別のアカウントの設定にできます。職場のローカルネットで、職場のRaspberry Piのデバイス(Node-red)を見つけます。
PC に teraterm pro をインストールして、設定→sshポート転送
ローカルの"localshot" のポート8880 からリモートの192.168.XX.XX:1880
のように転送設定し、設定ファイルを保存します。teraterm の SSH で自宅から、職場のローカルネットにログインできれば、自宅のPCの Web 上で localhost:8880 を開くと、職場の Node-red の編集ができます。また、試してはいませんが、自宅から職場のリモートの操作も アレクサアプリでできると思います。
これを Amazon voice service というらしいです。この設定方法はかなり試行錯誤しました。
Raspi2にAlexa Voice Service(AVS)を 〜Raspi2にAlexa Voice Service(AVS)をインストール編〜
https://qiita.com/areaz_/items/8e949d45f8afe73dbc76
で解決しました。Raspberry piの特定の directory ~/rasp3-alex 上に必要な ファイルは、3つの sh file と config.json というファイルです。
wget https://raw.githubusercontent.com/alexa/avs-device-sdk/master/tools/Install/setup.sh \ wget https://raw.githubusercontent.com/alexa/avs-device-sdk/master/tools/Install/genConfig.sh \ wget https://raw.githubusercontent.com/alexa/avs-device-sdk/master/tools/Install/pi.sh
これで一つのコマンドで、setup.sh, genConfig.sh, pi.sh がダウンロードできます。
config.json ファイルもダウンロードして持ってくるのですが、そのためには
Raspi2にAlexa Voice Service(AVS)を 〜AVS設定編〜
https://qiita.com/areaz_/items/60cbdf8059881ee33ec3
に従って作る必要があります。
そのあとは、Raspi2にAlexa Voice Service(AVS)を 〜Raspi2にAlexa Voice Service(AVS)をインストール編〜 を見ながら作業します。
sudo bash setup.sh config.json (途中で agree, enter, yes などを入れます)
sudo bash startsample.sh | grep "To authorize"
で code を https://amazon.com/us/code 上で入力 Allow で登録されます。
C-c で再度
sudo bash startsample.sh を実行
$ sudo bash startsample.sh
2019.6.11 この日突然 irsend が動かなくなった。
pi@raspberrypi:/etc/rc5.d $ irsend SEND_ONCE 821-l on hardware does not support sending Error running command: Input/output error
uname -r でカーネルのバージョンを確認
kernel が 4.19.42+ の場合には、lirc-dev がなくなったのが原因らしい。 (下記追記の記事による)。
下記追記にあるように、gpio-ir を使う提案がある。 試したがうまく行かなかった。(上記エラーは消えたが、irsend で信号が 送られない。)
2019.6.12 kernel を古いVersion に戻すことで復活した!!!
下記Webページを参照した。Raspberry Pi2(使っていなかったもの) のカーネルのバージョンであった、4.14.98まで戻す。
http://marm.cocolog-nifty.com/jokanaan/2018/04/rpi-update-f6e1.html
sudo rpi-update a08ece3d48c3c40bf1b501772af9933249c11c5b
で 4.14.98まで戻す。(やたらに apt upgrade をすべきでない。)
uname -a で確認
pi@raspberrypi:~ $ uname -a Linux raspberrypi 4.14.98+ #1200 Tue Feb 12 20:11:02 GMT 2019 armv6l GNU/Linux
もどった。lirc ももとに戻す必要がある。(2019.6.11 下記でPatch を当ててしまった。)
sudo apt-get remove lirc (apt-get purge lirc だと設定ファイルまで消してしまう。) sudo apt-get install lirc
/boot/config.txt をもとに戻す
dtoverlay=lirc-rpi,gpio_in_pin=18,gpio_out_pin=17
再起動 sudo /etc/init.d/lircd status irsend LIST "" "" で古い設定が残っていることを確認。
irsend SEND_ONCE led mode で動作を確認。良かった!
動いている Raspberry pi にやたらに sudo apt upgrade をすべきでないことが わかった。デバイスがなくなっている場合がある。
(追記部分、lirc にパッチを当てて gpio-ir で irsend を動かすもの)
以下は 2019.6.11 に lirc にパッチを当てるという方法を試した記録。 エラーはなくなったが、赤外線が出ないようで、うまく行かなかった。 おすすめできない。
https://qiita.com/f_t812/items/304d9558ec74db7309fd
https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=235256
sudo su -c "grep '^deb ' /etc/apt/sources.list | sed 's/^deb/deb-src/g' > /etc/apt/sources.list.d/deb-src.list" sudo apt update sudo apt install devscripts sudo apt build-dep lirc mkdir build cd build apt source lirc wget https://raw.githubusercontent.com/neuralassembly/raspi/master/lirc-gpio-ir.patch patch -p0 -i lirc-gpio-ir.patch cd lirc-0.9.4c debuild -uc -us -b cd .. sudo apt install ./liblirc0_0.9.4c-9_armhf.deb ./liblirc-client0_0.9.4c-9_armhf.deb ./lirc_0.9.4c-9_armhf.deb
インストールのあと、/boot/config.txt に以下を追加
dtoverlay=gpio-ir,gpio_pin=18 dtoverlay=gpio-ir-tx,gpio_pin=17
irrecord, mode2 を使う場合には /etc/lirc/lirc_options.conf を以下のようにする
driver = default device = /dev/lirc1
irsend を使う場合には、/etc/lirc/lirc_options.conf を以下のようにする
driver = default device = /dev/lirc0
いずれの場合にも lircd を再起動する。
/etc/init.d/lircd stop /etc/init.d/lircd start /etc/init.d/lircd status
irsend コマンドでエラーがでなくなったが、赤外の信号が出て反応してないようだ。 問題は、解決していない。
feijoa.jp/laboratory/raspberrypi/infrared/
で送信プログラムを使うことも考えて見る必要があるかも。
2つ原因があった。
一つは アマゾンエコーがデバイスを探すときに、2019.9まではすべてのポートで検索していたが、2019.9以降は、80番のポートしか探さない。対策は、下記にある。
https://vogel.at.webry.info/201910/article_3.html?1570354755
node-red-contrib-amazon-echo で、8111ポートを見るようにして、 port 80 を 8111 に iptable で変更する必要がある。(詳細は上記Webページ、 注意:上記Web ページのコマンド中の eth0 を wlan0 にしないと、無線LANのポートの変更が実行されない!)
echo dot が80番ポートを使うと、apache2 (web server) のポートを8080に変更する必要あり。(この説明は、このページの上の方で説明)
(注:一つのNICで2つのip address を指定して、片方の ipaddress だけポート80をあけるということもできるらしいが、raspberry pi zero wh の wlan0 が可能かどうか不明)
このページ通りにすれば動作する。途中デバイスの探索されない問題があって 数日かかったが、node-red の配線をする前に検索をすればうまくいくことが分かった。 また検索された、デバイスが文字化けするので最初はローマ字のデバイス名にして echo dot で検索されてから echo dot のほうだけ日本語にすればよいことが分かった。
もう一つはメモリー使用量が多くスワップを使いすぎ。 メモリー(512MB)が足りない。GUI 他を切って、メモリー使用量を100MBにする。 80MB が node-red.
http://denshikousaku.net/extend-life-expectancy-of-raspberry-pi-sd-card
SD カードがお釈迦になった?SDカードの寿命を増やす必要あり。
sudo apt-get remove dphys-swapfile
SWAP を使わないようにする。(メモリー使用量が下がったので不要)
cat /proc/meminfo
SwapTotal: 0 kB SwapFree: 0 kB
0 になった。
SSDを利用?
さらにメモリー消費をへらす。 http://www.neko.ne.jp/~freewing/raspberry_pi/raspberry_pi_free_memory_disable_service/
https://www.dogrow.net/linux/blog75/
GUI を使わない。ssh pi@IP-address で login. メモリーの節減になる。
sudo raspi-config ⇒ Boot Options を選択 ⇒ Desktop / CLI を選択 ⇒ Console を選択
Finish して再起動。空きメモリ98MB キャシュ利用267MBになった。
http://denshikousaku.net/save-raspberry-pi-memory
rapberry pi メモリ節約 で検索。最小限の動作にする。
使用メモリが毎日少しずつ増えている。/run directory が増えている。対策が必要。
その前に alex-local を node-red-contrib-amazon-echo に変更する。
https://qiita.com/naka-kazz/items/9dce91beaf46a91b4c86
を参考にした。
2020.3.19 の段階で、電気のオンオフは動作している。
pi@raspberrypi:/etc/init.d $ sudo /etc/init.d/netfilter-persistent save [....] Saving netfilter rules...run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables save run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables save done. pi@raspberrypi:/etc/init.d $ sudo /etc/init.d/netfilter-persistent reload [....] Loading netfilter rules...run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables start run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables start done. pi@raspberrypi:/etc/init.d $ sudo iptables
記録ですので、いろいろ間違っている点もあると思います。質問がある場合には、 メール(このHome Pageにアドレスがあります)をいただければ、お返事いたします。 全くの初心者ですので、技術的な質問にはお答えできません。また、これより良い方法がいろいろあると思いますが、対応しない予定です。rsaito at flex.phys.tohoku.ac.jp