Falconの思うままに

PASCAL好きが、気ままにマニアックなネタを

CodeTyphonで開発する。

さて、CodeTyphon使ってますか?

なにそれおいしいの?状態かもしれないですが、

フリーなPascal統合開発環境です。

コードタイフーンでなくてコードデュポンとのことです。

このネタは私が崇める某サイトの説明ですが、お世話になっております。

でもアイコンは台風の絵ですよね...(笑)

 

Linuxのデスクトップアプリも開発できます。

ってこの記事にたどりついた人はCodeTyphonは何か知っているから

たどり着いたと思いますが、x86機でもラズパイでも動くバイナリを生成できます。

とりあえずラズパイのGUIで画面出さないといけなくなった人

は最適です。FA業界の人は需要がありますよね?

この世はネット接続前提が多いですが、オフラインでひっそり動くアプリも

まだまだあります。

 

さくっと開発を始めるには、Lazarusよりこちらをお勧めします。

どっちがいいとかの宗教論争する気はありません。

仕事をするにはどっちが最適かで判断した結果です。

 

というのは、Linux上での漢字入力がLazarusもCodeTyphonも実用的でない

状態なので、Windows上でのクロス開発が妥当だからです。

Windows上なら漢字は普通に入りますしユニコードなら問題ないので。

 

CodeTyphonはクロス開発環境がさくっと入ります。

FPCDeluxeとか使わなくてもオールインワンでいけます。

環境構築が抜群に楽です。

BigIDEでつくればコンポもいろいろ入ってますね。

 

動けばWindowsアプリ開発している感じでLinuxアプリが

作れてしまいます。

 

そうなればDelphiワールド全開でアプリを作ってください(笑)

仕事がすぐに終わります。

 

お薦めですが、マイナーです。もっと評価されてもいいんですが

Pascal言語というのがみなさんぐっとこないらしい。

begin .. endがねと言われてもこれがいいんです!!

今やハイライト表示などエディタ側が進化したので

カッコが多いとかbegin endが一杯とかはあまり問題ではないですよ

というかそういう場合ネストしすぎですな。

= と == 間違えたとかないし。

私はそんなネストしたプログラム書かないんで。

自分がわからなくなる物を使わないということで

バグから身を守りましょう。

 

RustとかGoとかPythonとかばりばりやるならPascalも触ってみてください。

ストレスなくプログラムできますよ。

教育用言語だといわれながらもどれだけ仕事してきたか。

シンタックスがST言語と同じですし。> ラダー屋さん。

 

自分が信じて使っている言語がマイナーで語る相手もいないので

ここに書くのですが、本当にPascal好きです。

20年以上前にもCでしか作れないと思っていたDBとのインターフェイス

GNU Pascalで書いたっけ。

 

でも人にメンテナンスしてもらわないといけないので

メジャーな言語で書かないといけないのかなあとも

思ってはいます。

 

 

外気温を計りたい

室内の温度を計るのはM5Stack + DHT22 なんかで実現できています。

 

これはこれで面白いのですが、外気温との差を知りたいと思っています。

 

外での機器設置ですが、雨、風があるので耐久性も考えるのと

電源確保が課題です。

 

どうしようと思っていたのですが、TWILITE ARIA

というのがあります。

 

四角い無線タグなんですが、温湿度センサがついています。

電池駆動なんで電源の心配もなく4年くらいは大丈夫とされています。

 

MONOSTICKは買ってあって、ラズパイに差せば、RS232C通信と

なるので、NodeRedからも問題なくアクセスできるはずです。

 

という訳で購入してみようかなと思っています。

外なんで、ケースに入れようかなと思っています。

鉄だと電波遮断してしまうんでブラスチックかな。

 

タッパーでいいでしょう(笑)

 

ちょっとあとは購入ボタンを押すだけ。

 

 

 

 

 

赤外線でエアコン制御

身近なIotの事例でエアコンのリモコン制御があります。

 

IR制御用のモジュール(アレクサ連携)が発売されていますよね。

 

最初、これを購入したのですが、

「エアコン」をオンして

とか定義してやるのですが、認識しなかったりします。

最初は珍しさでやるのですが、リモコンのが早いやとなりました。

そのうち外部からの制御なので、サーバートラブル

などで動かなかったりして、家の情報が外からコントロール

されるのがいやになります。

 

そこでM5StackのGlobe端子用赤外線モジュールを買っておいたのですが

しばらく放置してました。

 

久しぶりに記事をあさっているとM5Stack+赤外線モジュールの

記事があるじゃないですか。

 

じっくり読んでみて、まずは学習からやりました。

ESP用のモジュールでしたがなかなかよくできています。

 

学習結果でどこのエアコンかを判断して受信データ出してくれました。

それで、フォーマットにしたがってやるのですが、うまくいかないなあ

と思っていると、距離が短いそうです。

通常のリモコンの距離でやると届いてないことが判明。

 

かなり近くないと駄目です。

 

それはおいておいて、エアコンの場合、コマンドが複合の場合が

多いそうで、確かに、室温、暖房、ファン角度など

与えるパラメータが多い訳です。

 

アンドキュメントらしいですが、各エアコンごとに

クラス化されているみたいなので、

うちのは「SHARP」なので探すとありました。

 

エアコンのオンはこんな感じです。

   ac.setModel(sharp_ac_remote_model_t::A907);
   ac.setTemp(20);
   ac.setMode(kSharpAcHeat);
   ac.setPower(true);
   ac.setFan(3);
   ac.setTurbo(false);
   ac.setClean(false);
   ac.setIon(false);
   ac.on();
   ac.send();   

 

オフはこうです。

   ac.setPower(false);
   ac.off();
   ac.send();

 

これを送信すると見事動きました。

これで、外部からMQTTなり、WebAPIなりで制御できます。

スマホでボタン作ろうと思います。

 

M5Matrixなんですが、小さいですし、そもそも

赤外線LEDあるらしいので

単体でもできると思っています。

 

夢が膨らみますね。

 

UIFlowでやろうと思ったのですが、素直に

Arduino IDEでやろうと思います。(笑)

 

ArduinoWifiでつながってくれていると

なかなか便利です。

 

インフラはWifiでプロトコルはMQTTが

相性がいいです。

 

RasPi4,Arduino,M5Stack,MQTT,NodeRed,TMS WebCore

辺りの技術がでてきます。

 

 

 

 

M5Stackでリモコン送信をやる?

お金をかけずに自宅をHAというのが

目的の方多いと思います。

 

Iot機器を買って組むのも1つの方向ですが、

連携とか細かいことをやろうとすると、

いったん自宅外のサーバーを経由して制御されているのが、

いやになります。

 

機器ごとにアカウント登録したりして、そのうち放置となります。

サービス流量で使えなくなる可能性もあるので、

自前でやりたいですね。

 

そこでM5Stackシリーズの活用となります。

この手の制御は得意なものになります。

IRの送信きっととグローブ端子付きなのが

うってつけです。

 

制御はラズパイという定番でやりましょう。

 

UIFlowでリモコンやりたかったけどちょっとむずかしそうですね。

リモコンライブラリを呼べるとかあるのかな。

 

研究します。

 

 

 

M5Stack UIFlowを使う

今日は一日M5Stackで遊んでいました。

 

UIFlowがあるのを知っていたのですが、そんなに便利なものとは

思っていませんでした。

 

M5StackはArduino系のマイコンです。

M5Stack Core2を買ってありました。

長らく放置していたのですが、UIFlowを動かせるというのを

思い出して取り組んでみました。

 

用はPython Runtimeをファームとしていれてあって

Pythonが走るということのようです。

UIFlowはPythonに変換されて実行されます。

GUIでプログラムがさくっと組めるのが特徴です。

 

難しくなったら素直にArduino IDEで書くか、

pythonで書くのかのどちらかでしょう。

 

画面の配置がGUIでできるのがいいですね。

ディスプレイを持つとこの辺りもコーディングしないといけないので

助かります。

 

まあそれでUI Flowを触ってみましたが、

最初とっつきが悪かったですが、慣れるとわかってきました。

Pythonへの出力をみて、納得していました。

 

これじゃあコード直書きのほうが早いという衝動を

押えてFlowを入れていきます。

 

なれればノーコードで組めるのがNodeRedっぽくて

好きです。

 

MQTTで情報を取得して、表示します。

MQTTをサブスクライブしているので、イベントドリブンになりますね。

MQTTブローカーを介して、データが伝播していく様は

非常に刺激的です。

 

温度データですが、マイコンへの表示、スマホへの表示

InfluxDBへの記録とラズパイ間の転送など

MQTTのメリットが生かされています。

 

マイコンなんで電源断で壊すこともないし

いい感じですね。

 

とりあえず温度モニタとして作ってみましたが、

MODBUSとかも使えるみたいで

面白いです。

 

M5Atomにラダーを入れて動かしていますが、

M5Core2はUIFlowにしてみました。

 

こういうところ楽しめるので面白い!!!

 

ラズパイUbuntuでGrafanaのインストール

さてRaspi4BでUbuntuを入れている方向けです。

 

InfluxDBを入れてGrafanaが使いたくなった人向けです。

 

InfluxDBを入れます

sudo apt-get install influxdb

sudo apt-get install influxdb-client

ではいります。

 

grafanaですが

wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -

echo "deb https://packages.grafana.com/oss/deb stable main"  |  sudo tee -a /etc/apt/sources.list.d/grafana.list

sudo apt-get update

 

sudo apt-get install grafana

sudo systemctl start grafana-server

sudo systemctl enable grafana-server

でPort3000で起動します。

 

いつもはapt-get一発で入れている私なので、ちょっと調べないと

入らなかったです。

 

chronografを使うというのがあるみたいなのですが、入ってないみたい。

これは引き続き調査中、まあCLIが動くんでいらんという感じですが。

 

現在、NodeRedからInsertできているので快適です。

NodeRedにInfluxDBを組み込む

さて、NodeRedで温度をArduinoから取得していまして、

自宅の複数地点で計測しています。

これをMQTTでラズパイに集めています。

受信側はMoqsuittoで受けてNodeRedで受信(Subscribe)しています。

 

この構成でデータを統合して一括でIBM Cloud上のNodeRedへ

送信しています。 WebAPIを使っています。

 

それでスマホからWebSocketでIBM Cloudへつないでリアルタイムに

温度情報を更新しています。

 

Arduino -> ラズパイ-> IBM Cloud -> スマホ

と連携させた事例となります。

 

NodeRedを複数地点で動かして連携するのが、楽しいですね。

MQTT,http,WebSocketなどの技術をさくっと使えるのがNodeRedの

生産性が高さですね。

 

本題ですが、まあこれだけでも満足していたのですが、欲がでます。

 

InfluxDBというのを知り、NodeRedからも使えるので

使ってみました。

おもしろいですね。スキーマ定義しなくていいとは、

JSON Objectにしてそのまま Payloadにして投げると

もう書込完了となりました。 手軽すぎる!!!

 

ということで瞬殺で実現できるので、おすすめです。

可視化ツールに興味があります。

やってみますか。

そうそうOpenPLCも興味がありNodeRedと連携も面白いと

思っています。

キーワードは

OpenPLC,Python, NodeRed,MQTT,WebSocket,http,

NGInx,TMS WebCore,Arduinoといったところでしょうか。