M5Stack GRAYでUIFlowのBLE UARTを使う

M5Stack GRAY + UIFLowでも「BLE UART」パネルを使いたい!

前提

  • M5Stack GRAYはBluetooth対応
  • M5Stack GRAY用の最新ファームウェアはUIFlow v.1.9.6
  • UIFlow IDEではDeviceが「Fire」か「Core2」じゃないと「BLE UART」のパネルが出てこない!

手順

  1. M5Stack GRAYのファームウェアをUIFlow_Fire v1.7.5にする。
    ※v1.9.xだと、実行時にエラーが出る
  2. UIFlow IDEのDeviceはFireを選択

M5Stack用ジェスチャーユニットの値

M5Stack用ジェスチャーユニットを購入したが、各ジェスチャーに対応する値がどこにも書いてなかったので、自分で調べた結果のメモ。
販売サイトにはデフォルトジェスチャーとして9つ紹介されているが、その他にも4パターンが検知できる模様。

■無検知
None: 0

■基本動作
Up: 4
Down: 8
Right: 1
Left: 2
Forward: 32
Backward: 16

■回転動作
Clockwise: 64
Anti-Clockwise: 128

■連続動作
Wave: 256
Wave-Slowly-Left-Right: 3
Wave-Slowly-Up-Down: 12
Wave-Slowly-Forward-Backward: 48
Wave-Slowly-Disorder*: 512

*このモーションは検知できなかった。どういう動作を想定しているのか…

ラズパイ4 + Node.jsで OLEDディプレイを使う

OLEDモジュールをラズパイ4+Node.js環境で使うための覚え書。

作業環境

作業手順

1.OLEDディプレイを繋ぐ
2.Config画面を開いて、I2Cデバイスとの通信を有効化
$ sudo raspi-config

Interfacing Options -> P5 I2C -> YES

3.ラズパイをリブート
$ sudo reboot
4.I2Cデバイスのアドレスを確認
$ i2cdetect -y 1

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- 3c -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
5.モジュールをインストール

$ npm install raspi-io
$ npm install johnny-five
$ npm install oled-js
$ npm install pngparse png-to-lcd oled-font-5x7
6.スクリプトを作成
const five = require('johnny-five');
const raspi = require('raspi-io').RaspiIO;
const board = new five.Board({
	io: new raspi()
});

const Oled = require('oled-js');
const font = require('oled-font-5x7');

board.on('ready',() => {
	console.log('Connected to OLED, ready.');
	const opts = {
		width: 128,
	    height: 64, 
	    address: 0x3C
	};
	oled = new Oled(board, five, opts);
	oled.clearDisplay();
	oled.setCursor(1, 1);
	oled.writeString(font, 1,"Hello World!", 1, true, 2);
	oled.update();
});
7.スクリプトを実行
$ node ./index.js

おしまい!

参考サイト

ESP32-CAMのStream動画をA-FrameのVR空間に表示する

M5Camera Xの動画をA-FrameのVR空間内に表示させたいと思ったが、Motion JPEG stream形式だと、デフォルトの機能(image、video)では対応できなかった。

で、調べたところドンピシャのページを発見。仕組みはよく分からんけど、サンプル通りのコンポーネント作ったらすんなり表示できた!!

>> Use Motion JPEG stream as a source of 360 deg image

AFRAME.registerComponent('box', {
    schema: {
        width: { type: 'number', default: 1 },
        height: { type: 'number', default: 1 },
        depth: { type: 'number', default: 1 },
        color: { type: 'color', default: '#AAA' }
    },

    init: function () {
        var data = this.data;
        var el = this.el;

        this.loader = new THREE.TextureLoader();

        this.geometry = new THREE.BoxBufferGeometry(data.width, data.height, data.depth);
        this.material = new THREE.MeshPhongMaterial({
            map: this.getImage()
        });
        this.material.needsUpdate = true;
        this.mesh = new THREE.Mesh(this.geometry, this.material);
        el.setObject3D('mesh', this.mesh);
    },

    tick: function (time, timeDelta) {
        this.mesh.material.map.img = this.getImage();
        this.mesh.material.map.needsUpdate = true;
    },

    getImage: function() {
        return this.loader.load("ストリーム動画のパス");
    }

サンプルでは立方体だが、下記の部分をいじれば、他のプリミティブでもいける。

this.geometry = new THREE.BoxBufferGeometry(data.width, data.height, data.depth);

synology NAS Web Stationのhtml内でphpを実行する。

完全に自分めも

1.sshでNASにログインする

2. /var/packages/Webstation/target/misc/VirtualHost-apache24.mustache を編集
<FileMatch “\.(php[345]? | phtml|html)$”>

htmlを追加

3.php72_fpm_mustache を編集
security.limit_extension = .php .php3 .php4 .php5 .phtml .html

.htmlを追加

4. 管理画面のパッケージセンターでApacheとphpを再起動

Apache PHPともに複数バージョン入れている場合はすべて対応が必要。
新しいパッケージを追加して処置を忘れていると access denied.のエラーになる。
DSMのバージョンアップした際も同じく処理が必要。

ターミナルに画像を表示する

ラズパイのカメラで撮影した画像を楽に確認する方法を探してたら、ターミナルに画像を表示するって素敵な方法がありました!MacでiTerm2を使ってる人限定だけど、コマンド2行書くだけで、導入も超簡単!
こりゃ便利だわー!

>> Mac の iTerm2 で画像をコンソールに表示する

ffmpegの作業色々

雑多な動画処理でよく使うffmpegのメモ

■SNSやyoutubeに動画をアップする際、余計な生活音がはいっているので削除したい。

ffmpeg -i hoge.mp4 -vcodec copy -map 0:0 out.mp4

■容量の大きすぎる動画を適当にサイズ指定して圧縮する。

ffmpeg -i hoge.mp4 -bufsize 20000k -maxrate 25000k -acodec copy -aspect 16:9 -s 1280x720 out.mp4

■他の作業に与えない程度にCPUの使用割合を下げてエンコードする。
※別途「cpulimit」をインストールしておく。

cpulimit -l 400 -- ffmpeg -i hoge.mp4 out.mp4

Core i7クアッドコアの場合はフルで使って800なので、上記は約半分の値となる。

RM Mini 3(黒豆)をGogole home miniで使う。

RM Mini 3(黒豆)を設定しようと「e-control」ってアプリ入れて普通に使おうとすると「正規品ではないため日本国内で利用できません」って出てきて、どうにもできない。

  1. スマホの言語設定を日本語にしてやる。
  2. ヴァージョン3.7.8以前のe-controlアプリを入れる。

ネットで調べると、上記の2種類の方法があり、どちらでも黒豆の設定や制御は可能だった。
だが、せっかく対応した筈のGoole Home miniが認識してくれない。

どうも、ユーザー登録データがLinkJapan側に行っちゃう様で、Google homeのデバイス登録時に、IDとPWがちゃんと認証されないっぽい。

….という訳で、e-conrolの利用は諦めてIntelligent Home Center(IHC)ってアプリを入れてみたら、すべての問題がすんなり解決した。以下、その手順。

  1. BroadLinkオフィシャルサイトからIHCのapkをダウンロード
    日本のGoogle Playからはダウンロードできない。
  2. すでに黒豆をあれこれ設定してたら、リセットボタンを押して一旦初期化。
  3. IHCを起動して、Wifiの設定とユーザー登録を行う。
  4. 照明やエアコンなどのリモコンを、どんどん登録していく。
  5. Goole Homeアプリから > メニュー > スマートホーム > デバイス追加(プラスボタン) > BroadLink Smart Homeを選択
  6. 上記2で登録したユーザーIDとPWを入力
  7. 上記4で設定したデバイスが表示されたら、成功!

これで、Google homeから黒豆を操作する事ができた!
なお、Goole Homeはなぜかエアコンと照明だけしか認識してくれないので、テレビとかのリモコンも照明として設定しないと行けないので、ご注意を!

WordPressのデータベースのバックアップ

WordPressのアップグレードや、テーマの大幅な更新を行う前にバックアップを行うことが大事です。

プラグインで行う

BackWPupをインストールして「新規ジョブを追加」。
バックアップするテーブルを全部選択されていることを確認しておきます。
バックアップしたデータはローカルフォルダ他クラウドにも保存出来ますが、とりあえずイレギュラーで容量も少ないので、今回は「メールでバックアップを送信」にしておきます。

コマンドラインで行う

複数案件を管理しているとプラグインでいちいち設定するのも面倒なので通常はコマンドラインで行います。

指定のデータベースをバックアップ

$ mysqldump -u root -p DB名 > dump_YYMMDD_DB名.sql

戻す場合は

$ mysql -u root DB名 < dump_YYMMDD_DB名.sql