ゆるブロ

ゆる~くてちたのIT系?ブログ

いろいろチャレンジしているけども記事にできていない件について

はじめに

最近ブログ更新できていないですが、訳があるということを記載しておきたい。

前から悩んでいたが、投稿しながらやると1日で進められるペースが落ちるのでどうしたものかと思っていたのだ。

結果、ある程度形になってから投稿することに決めた。

完走した感想

壮大な計画(盛りすぎ)が走っているので、こうご期待!!!

もうちょい(もうちょいではない)すればまとめて投稿できるかも。

HackRF Oneが届いたのでSoftware Defined Radioをとにかく動かしてみる件

はじめに

最近ずっとHackRF Oneが欲しくてほしくてたまらなかったのですが、ついに手に入れました。中華品をアリエクで購入しています。1か月かかりました。

開封報告等は後で記事にしようと思いますが、とにかく動かしてみようという回です。

参考文献

engineer-climb.com

上記を参考に内部クロック精度を上げるためのTCXOをアドオンしています。

 

engineer-climb.com

SDR Consoleというのを試しました。

 

完走した感想

うまく聞けました☺

招待制の投稿サイトを作ってみたくなった件

はじめに

先日、某友人と技術について熱い(?)議論をさせていただいたときに、思いついたサービスです。とあるアプリに向けたデータを投稿するサイトになります。

まあまずは技術的にどんな感じでできるのか試しにやってみようというところです。

ひとまず、Wordpress を使ってみようと思います。

本番はレンタルサーバでやればよいと思いますが、ひとまず家に転がっていたラズパイをつかって、dockerでサクッと構築できたらいいなってところです。

f:id:TeTiTa:20211114202123p:plain

Wordpress on docker into raspberrypi

参考文献

初期構築は以下がおすすめ。

qiita.com

docker-composeまでインストールできたら、次のサイトを参考にdocker-compose.ymlを作ってdocker-compose upすれば出来上がり。

raspida.com

私の場合、準備したのがラズパイ3B+だったのが影響したのか、DBがうまく起動しませんでした。そのため、dbをlinuxserver/mariadb:latestからjsurf/rpi-mariadb:latestに変更しました。あとは外部向けのportも少しいじっています。

参考:ラズパイのカーネル

Linux raspberrypi 5.10.78-v7+ #1484 SMP Thu Nov 11 16:34:56 GMT 2021 armv7l

画面のイメージは次のサイトを参考に変更してみました。

techlive.tokyo

Wordpressはテーマを変更。他はいじってません。

公開サイト名にDDNSドメイン名を指定。

宅内ルータにポート転送の設定を追加。

 

あとはBootstrapを使うとよりモダンなデザインになりそう??

getbootstrap.jp


WordpressAPIに対応しているので、コマンドで叩けばアプリ等から投稿とかもできそう。

kinsta.com

 

完走した感想

ひとまずWordpressをつかって招待制の投稿サイトはつくれそうな感じがしました。

今日イチ時間かかったのが、DB起動しなかったところは内緒!!
無料レンタルサーバ借りたら多分すぐにできたんだろうなあ(白目)

無料レンタルサーバ借りると広告出ちゃうんだけどね。

www.xfree.ne.jp

宅内NWにVPNで接続後Grafanaを読み込めない現象が多発した件

はじめに

SynologyのNASさんがVPNサーバになるので外出先から宅内NWにVPNで接続してGrafanaから電気の使用状況を確認できるとすごくハッピーだったんだけど、どうも最近調子が悪い様子。ブラウザが読み込み終わらない問題が多発するようになりました。

どうにか問題がわかって解決できました。うれしい。

参考文献

おそらくNW関連だとあたりをつけ、どうにかパケットキャプチャできないかと模索していたところ、NETGEARのGS305Eに出会いました。

こいつを使えばポートミラーリングができるため、イーサネットに流れるパケットを眺めて何か問題がわかるかもしれないと思いました。

ポートミラーリングさせて、Wiresharkでパケットを眺めていたところ、とあるフレームを発見。

[TCP Retransmission] 22 → 53136 [ACK] Seq=33724 Ack=3058 Win=64384 Len=1268 TSval=1780348413 TSecr=3536455

[TCP Dup ACK 94298#1] 53136 → 22 [ACK] Seq=3058 Ack=33724 Win=121984 Len=0 TSval=3536469 TSecr=1780348195 SLE=37528 SRE=38180 SLE=34992 SRE=38180

ICMP 590 Destination unreachable (Fragmentation needed)

どうやらVPN接続によってヘッダが付きまくったせいでMTU(Maximum Transmission Unit)値よりも大きいパケットが流れてしまっていたようです。これに気が付くまでかなりかかっちゃいました。エラーメッセージはその理由を整理することが大切だと再確認させられる事象でした。なんだかいつもエラーメッセージを読み飛ばしてしまう癖が。。。
まあでも、HTTPとTCPプロトコルについて勉強になったのでよかったですが。以下サイトが役に立ちました。

milestone-of-se.nesuke.com

原因が分かったので、以下のアプローチでパラメータのチューニングをしてみました。

OpenVPNのtun-mtu値

community.synology.com

VPNセンターのconfが特殊な場所にあったため

qiita.com

⇒Permission deniedが出ちゃうときのお供

qiita.com

⇒チューニング方法

 

②サーバのeth0のmtu値

実は①だけでは解決しなかったため、大元のサーバがあるところのeth0のmtu値を強制的に変えてしまいました。パワープレイすぎるかな…?

やり方は以下の通り。

  1. パソコン(A)でWiresharkを起動してパケットを見る
  2. パソコン(B)でVPN接続して対象のサーバへSSH接続
  3. パソコン(B)でちょうどフラグメントが起きそうな結果を表示させる⇒パソコン(A)でTCP Retransmissionが多発⇒パソコン(B)で途中からコンソールが動かなくなる
  4. パソコン(A)で対象のサーバへSSH接続(!!ローカルから直接!!)
  5. パソコン(A)で以下コマンドを実行してeth0のmtu値を変更
    sudo ifconfig eth0 mtu XXXX
  6. XXXXを少しずつ変えて、パソコン(B)のコンソールが表示される値を探る
  7. いい感じにコンソールが表示できればOK

 

完走した感想

 無線ルータをちょっと良いものに変えてからこの現象が起こるようになって前は起こらなかったのにとおもっていたのですが、大きなファイルがブラウザのキャッシュに残っていれば(家のNWにいるときにダウンロードした状態)、表示ができたんだなあと原因から推測することができました。なるほどそういうことだったか。
いやーーーーここ数か月の悩みが消えてうれしいぞ!

AWS IoTにマイコンを使ってつなぐ第1回(/全X回)

はじめに

まえがき

お久しぶりです。長期休暇じゃないとやりたいことができない社畜の鏡ですおはこんばんにちわ(死語)。
コロナ2年目のGWは昨年と同様にどこにも行けないので作業(モンハン)が捗ります。
ですが、このGWはモンハン以外の技術も身に着けたいので流行りのAWS沼に踏み込んでいこうと思います。簡単に済ませるつもりが壮大になりましたとさ。

3回ぐらいでどうにかならんかなと思っていますけども、どうなることやら。。。

導入

ラズパイで家の中のいろいろなデータを収集するのは楽しいけども、データを確認するためには宅内NWに入らないといけないのが厄介です。毎回VPN張ってみるのはやはりめんちい。。。
いろいろ調べてみると、流行りのクラウドサービスは簡単に(?)FreeRTOSマイコンをつなげることができるらしいのでやってみようと思います。ゆくゆくはAWS上でデータが確認できると良いかもです。基本はAWSチュートリアルに沿ってやります。

ゴール

  • 目的の整理⇒第1回
  • AWSの登録と費用⇒第1回
  • 開発環境の準備
  • マイコンの準備
  • 接続の検証

 ゴール意識をもってやりましょか!

第1回はAWSの準備でおなか一杯になりました。ごめんね!

参考文献

目的の整理

drow.ioでイメージを作成してみました。多分こんな感じ??表現が間違っていたら指摘ください。

AWSの登録と費用

アカウントの作成をします。以下を参照しました。

気になった点を列挙しておきます

〇住所:英語表記なので慣れてないと難しいかも?ググればいろんなブログが出てきます
プルダウンから国を探しますが、英語表記でソートされているのでジャマイカの下に日本があります

〇クレカ:バーチャルカードでもいけました

〇サポート:ベーシック一択(他はお金かかるので)

aws.amazon.com

登録後ちょっとするとメールがくるので待ちます。

メール受信後、ログインします。ルートユーザかIAMユーザか選択を迫られます。公式からルートユーザは使うなと言われるので自分用のユーザを作成します。

AWS Identity and Access Management (IAM) は、AWS リソースへのアクセスを安全に管理するためのウェブサービスです。IAM を使用して、リソースを使用するために認証 (サインイン) され、許可された (アクセス許可を持つ) ユーザーを制御します。

AWS アカウントを初めて作成する場合は、このアカウントのすべての AWS サービスとリソースに対して完全なアクセス権限を持つシングルサインインアイデンティティで始めます。このアイデンティティAWS アカウント ルートユーザー と呼ばれ、アカウントの作成に使用した E メールアドレスとパスワードでのサインインによりアクセスします。強くお勧めしているのは、日常的なタスクには、それが管理者タスクであっても、ルートユーザーを使用しないことです。代わりに、最初の IAM ユーザーを作成するためだけに ルートユーザー を使用するというベストプラクティスに従います。その後、ルートユーザー認証情報を安全な場所に保管し、それらを使用して少数のアカウントおよびサービス管理タスクのみを実行します。

ユーザ追加の方法は以下を参照しました。

docs.aws.amazon.com

追加するポリシーと方法の例は次になります。

IAMユーザーアカウントにAWSIoTおよびFreeRTOSへのアクセスを許可するには、次のIAMポリシーをIAMユーザーアカウントに添付します。

AmazonFreeRTOSFullAccess

AWSIoTFullAccess

AmazonFreeRTOSFullAccessポリシーをIAMユーザーに添付するには

IAMコンソールを参照します、およびナビゲーションペインから[ユーザー]を選択します。

検索テキストボックスにユーザー名を入力し、リストから選択します。

[権限の追加]を選択します。

[既存のポリシーを直接添付する]を選択します。

検索ボックスに「」と入力AmazonFreeRTOSFullAccessし、リストから選択して、[次へ:確認]を選択します。

[権限の追加]を選択します。

AWSIoTFullAccessポリシーをIAMユーザーにアタッチするには

IAMコンソールを参照します、およびナビゲーションペインから[ユーザー]を選択します。

検索テキストボックスにユーザー名を入力し、リストから選択します。

[権限の追加]を選択します。

[既存のポリシーを直接添付する]を選択します。

検索ボックスに「」と入力AWSIoTFullAccessし、リストから選択して、[次へ:確認]を選択します。

[権限の追加]を選択します。

 追加できれば作成したユーザに権限が付くはずです。

f:id:TeTiTa:20210502170302p:plain

 

さて次は費用の話。FreeRTOSは無料ですが、AWS IoT Coreは有料です。ただ、無料枠があるのである程度は無料でできそうです。リージョン毎に少しだけ値段が違います。今回1台だけ使うので無料枠内で収まるはずです。来月の請求が楽しみです(笑)

AWS IoT Core の AWS 無料利用枠
接続時間 2,250,000 分
メッセージ 500,000 件
レジストリまたはデバイスシャドウのオペレーション 225,000 回
トリガールール 250,000 件、実行アクション 250,000 件


例えば、50 台のデバイスを使うワークロードを実行する場合、無料利用枠では各デバイスを以下のように使用できます。

毎日 24 時間接続
1 日あたり 300 件のメッセージ交換 (メッセージサイズが 5 KB 以下の場合)
1 日あたり 130 回のレジストリまたはデバイスシャドウオペレーションの実行 (レジストリまたはデバイスシャドウのレコードサイズが 1 KB 以下の場合)
アクション 1 件を実行するルールの 1 日あたり 150 件の実行 (処理するメッセージサイズが 5 KB 以下の場合)


AWS 無料利用枠は、AWS アカウントを作成した日から 12 か月間ご利用いただけます。無料使用の有効期限が切れた場合、またはアプリケーション使用が無料利用枠を超えた場合は、上記の料金をお支払いいただきます。無料利用枠は、GovCloud (米国) 以外のすべての AWS リージョンに適用されます。使用量はすべてのリージョンの合計が毎月計算され、自動的に請求額に適用されます。無料利用枠は積算されず、1 つの請求期間から次の請求期間に繰り越されないことにご注意ください。

 

aws.amazon.com

料金例も載っています。 以下の例で1,876.60 USD/月とのこと。1台当たりにすると0.0018766 USD=0.21円になります。わあやすい(棒)

AWS IoT Core の全コンポーネントを使用するワークロードの料金例
100,000 台のデバイスAWS IoT Core に 30 日間連続の接続を維持します。毎日、各デバイスがサイズ 1 KB のメッセージ 325 件を交換します。交換するメッセージ 325 件のうち、100 件ではデバイスシャドウの更新がトリガーされ、200 件では 1 つのアクションを実行するルールがトリガーされます。

完走した(まだしてない)感想

疲れました。
1回の投稿で終わらせるつもりだったのですが、調べていくうちにあれもこれもぶっこみたくなったので分割してお送りします。最後まで見てね!頑張るから!(笑)

Jetson nanoでTesseract-OCRを試す

はじめに

Jetson nanoを2年ぐらい前に買ったんだけど、タンスの肥やしになっていました。
もったいないので、何かにつかえないかなーと。

あ、この記事と関係ないですが、家のWi-Fiルータを強そうなもの(WXR-5700AX7S)に変えました(笑)
最近ルータに接続させる機器が増えすぎてて、古い機種だと処理しきれていなかったぽい気がしたので。よくよく考えると同時接続数が25ぐらいになるので、30台以上を処理できるものにしました。こっちは後で記事にしようかな?

参考文献

forums.developer.nvidia.com

qiita.com

完走した感想

入力画像

f:id:TeTiTa:20210201111538p:plain

入力画像

出力結果

 

f:id:TeTiTa:20210201111708p:plain

出力結果

動くところまでは持ってこれました
何にどう使うのかはこれから考えるとしましょう