Back to page

− Links

 Print 

徒然日記 nao-pon's blog :: XOOPS マニア

UsersWiki:nao-pon/blog

Table of contents
  • 徒然日記 nao-pon's blog
    • 徒然なるままに・・・
    • タグクラウド
    • 最近書いた日記

徒然日記 nao-pon[1]'s blog RSS of nao-pon/blog[2] anchor.png[3]

Page Top

徒然なるままに・・・ anchor.png[4]

<<[5] 2021.8[6] >>[7]
[nao-pon/blog[8]]
Sun Mon Tue Wed Thu Fri Sat
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
Page Top

タグクラウド anchor.png[10]

001HT[11] 16bit[12] 64GB[13] Aichi Prefecture[14] Amazon[15] Android[16] Apache[17] APC[18] Biglobe[19] BIND[20] BLE[21] BLHeli[22] Bug[23] Bugfix[24] ca.crt[25] CanonFD[26] Canon FD[27] Cat[28] CCS811[29] Chrome[30] ckeditor4[31] Copy.com[32] CSS[33] CVS更新[34] DesireHD[35] DIY[36] Draw[37] e-Tax[38] eBay[39] Eclipse[40] EGit[41] elFinder[42] Enbug[43] ESP-32[44] ESP32[45] ESP8266[46] ESPHome[47] ESXi[48] exiftran[49] favicon[50] FCKeditor[51] ffmpeg[52] Flickr[53] getID3()[54] Git[55] GitHub[56] Google Analytics[57] GoogleAnalytics[58] GoogleDrive[59] GoogleMapsAPI[60] GPG[61] Hass.io[62] HA端子[63] HDD換装[64] HomeAssistant[65] HTTPタイムアウト[66] HypCommon[67] HypCommonFunc[68] HypCommonPreLoad[69] HypConf[70] HypRss2Html[71] HypSimpleAmazon[72] i-name[73] IE9[74] IP[75] iPad[76] iPhone4[77] iPod[78] IPv6[79] IR-Remote[80] Japan[81] JavaScript[82] jQuery[83] jQuery mobile[84] Kitanagoya[85] LED電球[86] LINE[87] Lipo[88] Lipoバッテリ[89] Lollipop[90] make[91] Meter[92] MicroSD[93] Mobile[94] Moblog[95] Moblog.001HT[96] mod_xsendfile[97] NEX-5[98] Nginx[99] OpenID[100] OSC[101] Panasonic[102] PCRE[103] PGP[104] PHP[105] PHP 5.6[106] PHP 7[107] Picnik[108] PPPoE[109] Preload[110] QuickPic[111] RaspberryPI[112] RATOC[113] RC[114] REMOTE_ADDR[115] rooted[116] RS-WFIREX4[117] setup[118] SmartPhone[119] SoftBank[120] SoloMaxxRevolution[121] SoloRevo[122] SoroRevo[123] SpamAssassin[124] SPF[125] SSD[126] SSL[127] Stagefright[128] SVN[129] SwitchBot[130] Tasker[131] Tasmota[132] Tasmota-IRHVAC[133] Theme[134] Tips[135] Toshiba[136] TVネタ[137] USB[138] UTF-8[139] V6プラス[140] Vine[141] VW[142] Web[143] WebWatch[144] Webサーバー[145] WiFi[146] Windows[147] WizMobile[148] X-elFinder[149] X-Road[150] X-Sendfile[151] XCL[152] XCL2.2[153] xelFinder[154] XOOPS[155] XOOPS X[156] XoopsX[157] XOOPSコアハック[158] Xperia[159] XperiaZ[160] Xperia Z[161] xpWiki[162] xpWikiレンダラー[163] YouTube[164] おいしい[165] おすすめ[166] おもちゃ[167] お勧め[168] お気に入り[169] お正月[170] お店[171] お土産[172] たぐめも[173] ねこ[174] ほにゃゃらら[175] アーカイブ[176] アニメ[177] アフィリエイト[178] アプリ[179] イオンカード[180] イベント[181] イルミネーション[182] インターネット[183] インテリア[184] エアコン[185] オススメ[186] カスタマイズ[187] キャッシュバック[188] クリスマス[189] グッズ紹介[190] コマンド[191] コミック[192] コミット[193] サーバー[194] サムネイル[195] シェルスクリプト[196] ショッピング[197] ジョーク[198] スナップ[199] スパム[200] スパムアサシン[201] スパム対策[202] スマホ[203] セキュリティ[204] センサー[205] センター[206] ソロレボ[207] タブレット[208] チケットエラー[209] テーマ[210] テスト[211] テレビ[212] デザート[213] デジカメ[214] トイヘリ[215] トラブル[216] ドライブレコーダ[217] ドライブレコーダー[218] ドラマ[219] ドラレコ[220] ナショナル[221] ネタ[222] ネット[223] ネットワーク[224] ノート[225] バグ修正[226] パソコン[227] ブックマーク[228] ブラウザ[229] ブラシレス[230] プリロード[231] プログラミング[232] プロポ[233] ヘリ[234] ホームオートメーション[235] マイクロヘリ[236] マウス[237] メールサーバー[238] メモ[239] メモ書き[240] モジュール[241] ユーザー専用エリア[242] ラジコン[243] ラジヘリ[244] ランチ[245] リバースプロキシ[246] リリース[247] リリース情報[248] ルンバ[249] ログイン[250] 暗号化[251] 映画[252] 温湿度計[253] 仮想サーバ[254] [255] 家IoT[256] 家電[257] [258] 花 @new[259] 海外通販[260] 絵文字[261] 開発[262] 確定申告[263] 覚え書き[264] 覚書[265] 管理用[266] 寄稿[267] 岐阜[268] 気になるモノ[269] 気候[270] 気象[271] 疑問[272] 魚眼[273] 共有サーバー[274] [275] 携帯[276] 携帯対応[277] 携帯対応レンダラー[278] 計画[279] 軽井沢[280] 健康[281] 健康食品[282] 健忘録[283] 検索ワードハイライト[284] 玄関飾り[285] 工作[286] 今週の切花[287] 差分[288] 作業[289] 雑記[290] 仕事[291] 試験用頁[292] [293] 自宅サーバ[294] 自宅サーバー[295] 自転車[296] 社会ネタ[297] [298] 車載カメラ[299] 趣味[300] 修理[301] [302] 重要伝統的建造物群保存地区[303] 出張カキコ[304] [305] 障害[306] [307] 新製品[308] 世界遺産[309] 政治[310] 正規表現[311] 脆弱性[312] 赤外線リモコン[313] 設定[314] 扇風機[315] 中国製[316] 天気[317] 天候[318] 天体ショー[319] 電飾[320] 東京スカイツリー[321] 東芝[322] 桃ラー[323] 動画[324] 独り言[325] 南砺市[326] 年中行事[327] 年末年始[328] 買い物[329] 美味しい[330] 病院[331] 富山県[332] 分解[333] 文字化け[334] 本職[335] 名古屋[336] 夜景[337] 遊び[338] 欲しい[339] 旅行[340] 料理[341]
Page Top

最近書いた日記 anchor.png[342]

 

HomeAssistant 統合の Tasmota-IRHVAC の不具合修正 anchor.png[343]

210701-195557.png[344]

HomeAssistant のサービス呼び出しで、エアコンの温度設定があるけど、ここのモード設定が効いていないことに気づいたのでその修正をした。


 

Tasmota を 9.4.0 から 9.5.0 へアップデート anchor.png[346]

エアコンのWiFi化は、Tasmota をカスタマイズした独自ビルドを使っているけど、Tasmota 9.5.0 がリリースされたので、アップデートした。

次に実行するときは、多分忘れているだろうから、自分用の覚書を書いておく。

Page Top

自前 GitHub リポジトリ anchor.png[348]

IRremoteESP8266 は、とにかく最新版を使うようにしている。

master ブランチは upstream の master を参照している。

1
2
3
4
5
6
git diff > _diff1.txt
git checkout master
git pull
git checkout mitsu_pana_custom
git rebase master
git diff > _diff2.txt

で、_diff1.txt と _diff2.txt を比較して、問題なくカスタマイズ分が反映されているか確認する。

 diff _diff1.txt _diff2.txt > _diff3.txt
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
2c2
< index f194430..9284250 100644
---
> index 316d756..4a05193 100644
75c75
< @@ -1375,12 +1429,13 @@ void IRac::midea(IRMideaAC *ac,
---
> @@ -1367,12 +1421,13 @@ void IRac::midea(IRMideaAC *ac,
90c90
< @@ -1394,10 +1449,12 @@ void IRac::mitsubishi(IRMitsubishiAC *ac,
---
> @@ -1386,10 +1441,12 @@ void IRac::mitsubishi(IRMitsubishiAC *ac,
105c105
< @@ -1613,8 +1670,8 @@ void IRac::panasonic(IRPanasonicAc *ac, const panasonic_ac_remote_model_t model,
---
> @@ -1605,8 +1662,8 @@ void IRac::panasonic(IRPanasonicAc *ac, const panasonic_ac_remote_model_t model,
116c116
< @@ -1626,6 +1683,11 @@ void IRac::panasonic(IRPanasonicAc *ac, const panasonic_ac_remote_model_t model,
---
> @@ -1618,6 +1675,11 @@ void IRac::panasonic(IRPanasonicAc *ac, const panasonic_ac_remote_model_t model,
128c128
< @@ -2304,11 +2366,11 @@ bool IRac::sendAc(const decode_type_t vendor, const int16_t model,
---
> @@ -2296,11 +2358,11 @@ bool IRac::sendAc(const decode_type_t vendor, const int16_t model,
142c142
< @@ -2609,7 +2671,7 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
---
> @@ -2601,7 +2663,7 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
151c151
< @@ -2665,7 +2727,7 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
---
> @@ -2657,7 +2719,7 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
160c160
< @@ -2827,7 +2889,7 @@ bool IRac::cmpStates(const stdAc::state_t a, const stdAc::state_t b) {
---
> @@ -2819,7 +2881,7 @@ bool IRac::cmpStates(const stdAc::state_t a, const stdAc::state_t b) {
227c227
< index 99b103f..4cfb3d6 100644
---
> index 20fd7d0..0cbc259 100644
248c248
< index 3ec5303..523ebd0 100644
---
> index 5d16c85..acf57a5 100644
251c251
< @@ -551,6 +551,8 @@ namespace irutils {
---
> @@ -552,6 +552,8 @@ namespace irutils {

問題ない。

1
2
3
4
git checkout development
git pull
git checkout irremote_full_custom
git marge master

今回は大丈夫だったけど、lib/lib_basic/IRremoteESP8266 でコンフリクトが生じるかも知れない。
そんなときは、次のようにとりあえず development 側を適用しておけばいいかな。知らんけど。

Everything is expanded.Everything is shortened.
1
2
3
 
 
 
git checkout --theirs lib/lib_basic/IRremoteESP8266
git add lib/lib_basic/IRremoteESP8266
git commit

違った!そういえば、platformio_override.ini で lib_extra_dirs を違うディレクトリを指定してあり、IRremoteESP8266 の Git ディレクトリにシンボリックを張ってあった。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
[env:tasmota-ircustom]
build_flags             = ${common.build_flags} ${irremoteesp_full.build_flags} -DFIRMWARE_IR_CUSTOM
 
[env:ir_jema_bridge]
extends                     = env:tasmota-ircustom
lib_extra_dirs              = lib/lib.bak
 
[env:ir_jema_bridge_ccs811]
extends                     = env:tasmota-ircustom
lib_extra_dirs              = lib/lib.bak, lib/lib_i2c
;build_flags                 = ${env:tasmota-ircustom.build_flags} -DUSE_CCS811_V2
;build_flags                 = ${env:tasmota-ircustom.build_flags} -DUSE_CCS811_V2_10SEC
build_flags                 = ${env:tasmota-ircustom.build_flags} -DUSE_CCS811_V2_60SEC

xdrv_05_irremote_full.ino をカスタマイズした、xdrv_05_irremote_full_custom.ino をビルドに使っているので、内容を確認してカスタマイズ分が反映されているか確認する。

今回は Settings.param が Settings->param に変更になっていたので、それを WinMerge でさくっと修正した。

同様に、カスタマイズで使用している xsns_31_ccs811_v2_10sec.ino と xsns_31_ccs811_v2_60sec.ino も確認。
今回、こちらは大丈夫だった。

lib/lib_basic/IRremoteESP8266 を nao-pon/IRremoteESP8266 の mitsu_pana_custom[349] で上書きする。

git commit

これで OK かな。

とりあえず、

pio run

でビルドしてみる、大丈夫っぽい。

OTA で更新可能にしてるので、試しに一台アップデートしてみたところ、問題ないようだったので全台アップデートした。

  • OTA URL は下記で公開しています。よろしければ使ってください。ただし、自己責任でお願いします。

    Panasonic, Mitsubishi, Toshiba のエアコンが有効になっています。

    HomeAssistant との統合は、Tasmota-IRHVAC をこの拡張分に対応させた nao-pon/Tasmota-IRHVAC[351] を使用してください。

    • http://hypweb.net/tasmota/firmware/ir_jema_bridge.bin.gz
    • http://hypweb.net/tasmota/firmware/ir_jema_bridge_ccs811.bin.gz (CCS811 1分間隔更新)

 

ミンティア[MINTIA] で WiFi 6ボタンスイッチを作った :-D anchor.png[352]

Google Home や Alexa と HomeAssistant を統合しているので、声で大体のことはできる・・・けど。
声を発声して、アシスタントに認識させるのが、面倒くさいと感じる。なんてわがままな! :lol:
だって、正しく認識してくれないと、もう一度言い直したり、見当違いのスイッチを ON/OFF されたり・・・

そこで、やっぱり物理ボタンですよ!

ちょうど手元にミンティアとESP-32が転がっていて・・・。ん?これ入るんじゃね?って思ったところ。

おぉー!やっぱりピッタリじゃないですか!厚みが若干きついけど。

で、結果こうなりました。やっぱりボタンで操作できるのは快適です。USB電源はいるけどね。

DSC_3857.JPG[353]DSC_3856.JPG[354]

ボタンの穴あけを少し失敗したけど、今度作るときはもう少しきちんと作ろう!

ボタンを押すと青いLEDが光ります。

Page Top

いるもの *1 anchor.png[355]

Page Top

ESPHome の設定 anchor.png[358]

esp32_ble_tracker は、手元に Qmote-S があったので、うまく使えないかな?と思って試してみたけど、検知範囲が狭くてほぼ使えなかった。残念。

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
substitutions:
  devicename: switch_box_11
 
esphome:
  name: $devicename
  platform: ESP32
  board: wemos_d1_mini32
  on_boot:
    - priority: 1000
      then:
        - while:
            condition:
              not:
                api.connected:
            then:
            - switch.turn_on: led
            - delay: 500ms 
            - switch.turn_off: led
            - delay: 500ms
 
wifi:
  networks: !include common/wifi.networks.yaml
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap: !include common/wifi.ap.yaml
 
  manual_ip:
    static_ip: 192.168.1.xx
    gateway: 192.168.1.1
    subnet: 255.255.255.0
 
captive_portal:
 
# Enable logging
logger:
 
# Enable Home Assistant API
api:
 
ota:
 
esp32_ble_tracker:
  id: ble_tracker
 
  on_ble_manufacturer_data_advertise:
    - mac_address: 88:4A:XX:XX:DE:52
      manufacturer_id: 004C
      then:
        - lambda: |-
            if (id(qmote_de52_click).state == false) {
              id(qmote_de52_click).publish_state(true);
              id(qmote_de52_click).publish_state(false);
            }
    - mac_address: 88:4A:XX:XX:99:BB
      manufacturer_id: 004C
      then:
        - lambda: |-
            if (id(qmote_99bb_click).state == false) {
              id(qmote_99bb_click).publish_state(true);
              id(qmote_99bb_click).publish_state(false);
            }
    - mac_address: 88:4A:XX:XX:9F:03
      manufacturer_id: 004C
      then:
        - lambda: |-
            if (id(qmote_9f03_click).state == false) {
              id(qmote_9f03_click).publish_state(true);
              id(qmote_9f03_click).publish_state(false);
            }
  
binary_sensor:
  - platform: gpio
    pin:
      number: GPIO23
      inverted: True
      mode: INPUT_PULLUP
    name: "$devicename btn1"
    on_press:
      then:
        - switch.turn_on: led
    on_release:
      then:
        - switch.turn_off: led
  - platform: gpio
    pin:
      number: GPIO19
      inverted: True
      mode: INPUT_PULLUP
    name: "$devicename btn2"
    on_press:
      then:
        - switch.turn_on: led
    on_release:
      then:
        - switch.turn_off: led
  - platform: gpio
    pin:
      number: GPIO18
      inverted: True
      mode: INPUT_PULLUP
    name: "$devicename btn3"
    on_press:
      then:
        - switch.turn_on: led
    on_release:
      then:
        - switch.turn_off: led
  - platform: gpio
    pin:
      number: GPIO33
      inverted: True
      mode: INPUT_PULLUP
    name: "$devicename btn4"
    on_press:
      then:
        - switch.turn_on: led
    on_release:
      then:
        - switch.turn_off: led
  - platform: gpio
    pin:
      number: GPIO05
      inverted: True
      mode: INPUT_PULLUP
    name: "$devicename btn5"
    on_press:
      then:
        - switch.turn_on: led
    on_release:
      then:
        - switch.turn_off: led
  - platform: gpio
    pin:
      number: GPIO26
      inverted: True
      mode: INPUT_PULLUP
    name: "$devicename btn6"
    on_press:
      then:
        - switch.turn_on: led
    on_release:
      then:
        - switch.turn_off: led
  - platform: template
    id: qmote_de52_click
    name: "$devicename Qmote de52 Click"
    filters:
      delayed_off: 800ms
    on_press:
      then:
        - switch.turn_on: led
    on_release:
      then:
        - switch.turn_off: led
  - platform: template
    id: qmote_99bb_click
    name: "$devicename Qmote 99bb Click"
    filters:
      delayed_off: 800ms
    on_press:
      then:
        - switch.turn_on: led
    on_release:
      then:
        - switch.turn_off: led
  - platform: template
    id: qmote_9f03_click
    name: "$devicename Qmote 9f03 Click"
    filters:
      delayed_off: 800ms
    on_press:
      then:
        - switch.turn_on: led
    on_release:
      then:
        - switch.turn_off: led
 
sensor:
  - platform: wifi_signal
    name: "$devicename WiFi"
    update_interval: 60s
    unit_of_measurement: "%"
    filters:
      - lambda: x = 2 * (x + 100); if (x < 0) {x = 0;} else if (x > 100) {x = 100;} return x;
 
switch:
  - platform: restart
    name: "$devicename Restart"
  - platform: gpio
    pin:
      number: GPIO2
    name: "$devicename LED"
    id: led

 

SwitchBot 温湿度計を ESP32 でモニタリング anchor.png[359]

SwitchBot の温湿度計[360]は、リーズナブルで家庭で使うには問題のない精度があるので、なかなか便利です。

この温湿度計は、公式の API (Meter BLE open API)[361] が公開されていて、BLE Advertisement パケットをリッスンすることで、温湿度データを取得できます。

これを、ESP32 を使い HomeAssistant で利用できるようにしました。ESP32 のファームには ESPHome を使用しています。

210317-224349.png210317-224648.png

Page Top

ESPHome 用 yaml の該当部分の抜粋 anchor.png[362]

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
substitutions:
  devicename: switchbot_meter
 
sensor:
  - platform: template
    name: "$devicename Humidity"
    id: humidity0
    unit_of_measurement: '%'
    accuracy_decimals: 0
    icon: "mdi:water-percent"
  - platform: template
    name: "$devicename Temperature"
    id: temperature0
    unit_of_measurement: '°C'
    accuracy_decimals: 1
    icon: "mdi:thermometer"
  - platform: template
    name: "$devicename BT RSSI"
    id: rssi0
    unit_of_measurement: 'dB'
    accuracy_decimals: 0
    icon: "mdi:bluetooth"
  - platform: template
    name: "$devicename Battery"
    id: battery0
    unit_of_measurement: '%'
    accuracy_decimals: 0
    icon: "mdi:battery"
 
esp32_ble_tracker:
  scan_parameters:
    duration: 60s
  on_ble_advertise:
    - mac_address: f4:42:fa:b4:72:2a
      then:
        - lambda: |-
            for (auto data : x.get_service_datas()) {
                if(data.data.size() == 6) {
                  float temperature = (float)(data.data[4] & 0b01111111) + ((float)(data.data[3] & 0b00001111) / 10);
                  if (!(data.data[4] & 0b10000000)) {
                    temperature = -temperature;
                  }
                  int8_t humidity= data.data[5] & 0b01111111;
                  int8_t battery = data.data[2] & 0b01111111;
                  int8_t rssi=x.get_rssi();
                  id(humidity0).publish_state(humidity);
                  id(temperature0).publish_state(temperature);
                  id(rssi0).publish_state(rssi);
                  id(battery0).publish_state(battery);
                }
            }

シンプルですね。カスタムコンポーネントを作るまでもないので、lambda を使いました。


 

東芝エアコンのエントリーモデルもWiFi化 anchor.png[363]

家中のエアコンのWiFi化を進めています。先日は東芝のエントリーモデルのエアコンRAS2558VをWiFi化しました。

いつものように、IRremoteESP8266 ですぐできると思ったのですが、IRremoteESP8266[365] が東芝エアコンのリモコンのIR信号を認識しません。

調べていくと、kToshibaAcMinGap で指定している値が大きすぎることに気付きました。この値を調整することで、正常に認識できるようになります、

Issue を立てました。

開発者の crankyoldgit はすぐに対応してくれました。素晴らしい!

他にも気になるところがあったので、次の Issue も立てましたが、全て解決してくれました。素晴らしい!

おかげで、いつもの通りHA端子ブリッジを備えた、IRコントローラを作成して、無事に Tasmota 経由で HomeAssistant からコントロールできるようになりました。

Tasmotaの設定は、いつもの通り -> 2021-02-11[369]


テンプレート[371]

テンプレート(Moblog)

#pagecss


*1 価格は購入時のもの
*2 Aliexpress で買ったけど、技適マークはついていました。

Last-modified: 2008-10-03 (Fri) 23:57:20 (JST) (4687d) by nao-pon