ESP32-WROVER-IEを買う。
2023.08.09


ArduinoでWiFi接続しデータをサーバーに転送、
メールで情報を送信したいという話がでてきました。
でも私は扱ったことが無いので、いろいろ躓きまくりです(;´Д`)

一番悩ませられたのが、技適の問題。
Arduinoで一般的に使われているモジュールはESP8266や
MKR WiFi 1010を使ったものが多いですが、
これらは技術基準適合証明、いわゆる技適が取得されてないので
国内で使用することはできません。
いきなり躓いたわけですが、ちょっと調べていくうちに、
Arduinoではなく、ESP32シリーズならWiFiを搭載しており、
技適も取れているということを知りました。
Arduinoではないけど、使い方やプログラム、ライブラリ等、
ほぼ一緒なので問題ないでしょう。
で、選んだESP32はコレ

ESP32-WROVER-IE 8MB FLASH【ESP32-DEVKITC-VIE】

互換製品がたくさんありますが、なぜ正規品を選んだかというと
互換品はWiFiがまともに動くものは少ない(特に感度問題)、
書き込みエラーが起きることがある。
USB変換チップにCP2102ではなくCH340を使っているものがある。
なにかしら正規の方法とは違う手段でないと機能しない部分がある。
などで

値段も数百円しか違わないなら
正規品を買っといたほうが安心。
あと技適を本当にとっているか互換品は怪しいというのもあります。
ESP32-WROVER-IEは令和3年4月28日に取得しています(211-200403)

あとWROOMではなく、WROVERを選んだのはメモリの問題。
WROVERには32mbit spi psramが追加装備されているのです。
これだけならなんのこっちゃという感じですが、
仕様で搭載メモリのところに8MB FLASHと書かれていても実際に使えるのは4MB程度らしいので、
重いデータを扱うとなるとパワー不足。それを補うための拡張メモリとして
psramが8MB(実際は4MB?)付いていると考えればまぁ大きく外れてはいないでしょう。
将来カメラを接続して画像を送信なんてことを始めるならメモリは多いに越したことはないですからね(;'∀')

ではIEを選んだ理由はなにか?
それは電波状況が悪い場合、外付けアンテナを接続できるので保険として重要だと思ったから。
基板のアンテナ部分だけだとどうも頼りないですからね。

さて次に考えるはセキュリティのこと。
WiFi接続に必要なSSIDや暗号キー、
メール送信に必要なアドレスとSMTPのサーバーアドレスとパスワード、
これらをソースに入れ込むのは安全なのだろうかと・・
さらに設置場所を変えるたびに、ソースを書き換えコンパイルするのかと・・
それはちょっと勘弁してほしいところ。
なので、WPS接続で何とかできないかと思案する・・(;'∀')
どうやらライブラリはあるっぽい。
なんか救われた気がする。

ESP32からのメール送信はどうしようか。
接続するWiFi先でいちいちプロバイダメールを確認するわけにもいかないので、
フリーで取得できるなかから最も信頼できるものを選ぶしかないか・・・
Microsoft、Google、Yahooあたりか。
どれもすぐ仕様変更したり、突然本人確認ができるまで停止とかやりかねないので
信頼は薄いんだけど、やむを得ないか。
メールのパスワードをソースに入れ込むのはやむを得ない(;´Д`)

そして、どうせならってことで1分ごとに情報をレンタルWebサーバーに送って
スマホかPCで情報のログも閲覧できればなんて要望もでたり・・
そうなると、サーバー側でもある程度処理するプログラムを
用意しておかないといけないな・・ウホ

ちなみにESP32のデータシートはこちら
https://www.espressif.com/sites/default/files/documentation/esp32-wrover-e_esp32-wrover-ie_datasheet_en.pdf

Amazonでは売ってませんね。今のところマルツで買うのが良さそうです。
【Python】スクレイピングしたあとのデータ保存
2023.07.05
うまくいかないグチです(;´Д`)
年のせいか物覚えと理解力の低下が著しいです・・

スクレイピングといえば、Rubyか、Pythonが流行りと聞いて
どうせならとPythonでSeleniumとBeautiful Soupを試してます。
私の得意言語、Delphiで出来ればいいのだけどいいライブラリが無いのでね仕方ないね(;´Д`)

試してみて思ったこと・・・
Pythonでも1つで完璧にこなすのは無理なのね(;´Д`)


Seleniumはブラウザのバージョンと合致したドライバーを持っていないと使えない弱点があり、
動作も遅い。
しかし最近はJava Scriptを通さないと重要な部分は見せないページが増えてきたので、
Seleniumの機能が無いと始まらない(;´Д`)


Beautiful Soupは軽快且つ単独でHTMLを読みにいき
解析を行ったあとに対して検索を行うので
ドライバーがいらない快適性があるも、
Xpathに対応してないので、
裏技的にlxmlで変換してからなんて面倒なことをする・・
素人にはこれがストレス極まりない(;´Д`)

そして、SeleniumとBeautiful Soupどちらをうまく使っても
XPATHで拾えないデータが結構出てくる。
もちろんCSSセレクタ使ってもダメ・・・
これがまたストレス(;´Д`)
データを捨てるわけにもいかないので、
階層を一つ上げて全部を吸い上げ、コードでゴリゴリ分解とか
ホームページの仕様変更に耐性が弱すぎるので
信用に値しないものを作る意味は?と考え込む・・
そして拾ったデータを整理し2次元配列に仕舞い込んで
最後、CSV出力しようと思ったときにもうまくいかないで躓く・・・
慣れない言語をあつかうときの窮屈感たるや吐き気を催すレベル(;´Д`)
とりあえず、一般的なCSV吐き出しで使われる

csv.writer(出力ファイル)

と私は相性が悪いらしい・・・・
delimiterとquotecharを設定してもうまく機能しない・・・
空白が文字コード化されて保存されたり面倒くさい事件が多く起きる。
しかもカンマで区切ってほしいのにスペースでも区切ってしまう現象もおきて
文字列がコマ切れ状態に(;´Д`)

これについては解決策を見つけることができて、
煩わしいことをきれいに全部解決してくれたpandasに拍手。

import pandas as pd

columns = ["date", "serial", "name", "tanka", "kosu", "kingaku"]
df = pd.DataFrame(配列 , columns=columns)
df.to_csv('d:\output.csv' , index=False, encoding="shift_jis")


これだけで配列があっさりCSVファイルを出力できるのでコードもすっきり。
項目名がいらないのならさらに1行消せる。大満足(;´Д`)

しかしXPathもCSSセレクタでも拾えないデータはどうしようか・・・
ある意味これが対策されているってことなんだと思うけど、
正規表現でなら正確に抜け出せるのだろうか・・

1つ1つ解決していくのにえらい時間かかる。
まだまだ迷走中(;´Д`)
APC Smart-UPS 500 LCD 修理
2023.06.25


注文してから23日
ようやくリレーが届きました。
Aliexpressにしてはまだいい方か・・・(;´Д`)
その間、近くに雷が落ちて数時間停電があったんだよね・・
幸いPCを動かしている時間帯だからよかったものの、
やはりUPSは大事だなと・・(;´Д`)



部品を取り外すということで、基板を前回よりも扱いやすい状況まで剝き出しにします。
とにかく外すコネクタが多い(;´Д`)
似たようなコネクタがいっぱいあるのでわからなくならないようにマーキングは必須。
できれば写真取りもね。
交換するリレーは赤丸を付けた2つ。どちらが異常なのか特定できればよかったのだけど、
なかなかに難しい(;´Д`)
もしかしたらこの2つじゃない可能性も無きにしもあらず。



8ピンのリレーを外すのは困難を極めた(;´Д`)
故意なのか偶然なのか、微妙にピンを曲げられているので、
スッポンではハンダがきれいに吸いきれないし、部品も抜けてこない。
一度ハンダを盛ってから吸い取ろうと試みるも、元のハンダと盛ったハンダが馴染まず融合しない(;´Д`)
電動のハンダ吸い取り機なら楽なのだろうか?
ハンダこてでハンダを溶かしつつ、ピンを正しい形に矯正というのを同時にやって、
ようやくきれいに吸えた(;´Д`)



6本の方も割と苦労した(;´Д`)



フラックスをふんだんに使ったので基板が汚れてしまった(;´Д`)
IPAできれいに拭きふき。
新しいリレーをつけて基板を元通りへ。


バッテリーも外装も付けて全部元通りにして、電源投入。
あれ?おかしい(;´Д`)
交流電源が来てないってエラーが・・・・
コネクタをつけわすれたかな?
またバラすのメンドクサイ!!

今日はもう時間がないので
確認は後日・・・(;´Д`)

- CafeNote -