昨日のラ・イパルタ・コルベリーナじゃないようなやつですが、良く見ると時計のところの月が間違ってますね。
どうしてそうなるのか?というと、Little Mustapha's Black-holeの何時だか解らないCanvas時計のコードからコピペしたからに違いないのですが。
あの時計は数字で時間を表すことが滅多にないので、普通にgetMonth()でやると、実際の月マイナス1になるというのを忘れていたのです。
修正のためにJavaScriptのファイルを開いたら、getMonth()のところだけ、謎の括弧で囲われてたりしてますが。
恐らく元のコードもコピペで、括弧の外に何か計算とかが書いてあったのかも知れません。
こういう感じだと、ちょっとずつ間違っているものが新しいコードにコピーされていって、新しいコードでさらにちょっと間違えたりして、ということの繰り返しで、最終的には文明が崩壊するかも知れませんし、コピペは問題なのです。
そして、そのたのJavaScriptですけど、簡単に出来ると思ってたら、変なところで手こずって、まだ見た目ではなにも変わってない状態だったり。
けっこう面倒なことになってきています。
ということなのですが、ラズパイでやってるアレコレとか、予定では去年のうちに終わってる感じだと思っていたのですが。
面白いけど、結構面倒なことも多かったりするので、ダラダラ長くやってしまいますね。
ブラウザで操作できるようにする、というのもすぐ出来ると思ったら、まだ半分ぐらいですし。
さらに、去年の12月に出来ているはずだったベランダのアレもまだですし、余った木材で予定している更なる企みは、もしかするともっと時間がかかったりしそうですけど。
そして、去年は一休み期間という事になっていたメインの創作も、自粛のアレの影響で一休みしないまま再開しないといけませんし。
ゲームでイライラしている場合ではなくなってきましたね。
<!-- とか書いておきながら、Xbox Live Gold の特典でダウンロードしてあった「The Raven Remastered」というのを始めてみたりしているのですが。推理で事件を解決するやつっぽいのですが、英語なので大変なのです。でもイライラすることはなさそうですけど。-->
スキャナでアレのアレをパソコンに取り込んでいたのですが。
いつもはJPEGでやるのですが、今回はアート(!)なので、圧縮しない感じでTIFFでやることにしたのです。
何枚もあるから面倒だなあ、とか思いながらやっていたのですが、そういう感じの時に限って間違ったりします。
一枚ずつファイル名に番号を振りながら保存するつもりが、原稿セットしてスキャンされるのを待って、というのを繰り返していると、ファイル名を変えるのを忘れたり。
これはやり直し、とか思ったのですが。その前にファイル名がすでに存在する時には警告が出るんじゃないか?ということになって。
これはパソコンのせいだってことにしようとしたら、そうでもなくて、実はTIFFって一つのファイルに複数ページの画像を保存できるんですね。
なので、同じ名前で次々にスキャンしていくと、新しいページとして保存されることが解ったのです。
こんなことなら、もっとスキャナを活用すべきだったと思ったのですが、買って10年以上経ってやっと気付いたのでした。
それはどうでもイイのですが、今度はそのTIFFファイルから一枚ずつページを取り出すのが面倒じゃないか?って事になってきます。
最初の数枚はMacの「プレビュー」で開いて一枚ずつ保存してみたのですが、これじゃスキャン時の便利さが台無しだ!という感じで面倒くさい。
それで調べてみたら、ImageMagickに "tiffsplit" という、まさにコレなコマンドがあることが解ったのでやってみたら、一瞬で終わりました。
面倒なことも実は楽に出来たりするので、とりあえず方法がないか調べるというのは重要ですね。
そして、何がスキャンされたのか?というと、貴重なコンセプトアート(!)なので、乞うご期待。
そして、これは骨組みであり、枠組みでもある。
どっちでもイイのですが、ラ・イパルタ・コルベリーナじゃなくなるかも知れないラズパイを、スマホなどからブラウザで操作したいので作っているHTMLファイルなのです。
上の三行はこれまでのテスト用のが残されているだけですが、下はかなり最終形態に近いものなのです。
こんなのは項目を並べただけ、という感じなのですが、見えないところではちゃんとHTMLが書いてあるので、CSSとJavaScriptで操作パネル風になるはずなのですけど。
ただ、こういうのっていつまでにやらないといけない、というのがないので気がつくと全然やってないとかいうことも多いんですよね。
しかもいつものLittle Mustapha's Black-holeでやってるHTMLとはちょっと方向性が違うので、考えるのも大変ですし。
でも、上の画像の状態から、ちょっとずつ形が出来ていくのは面白いかも知れないので、頑張ってやるのです。
<!-- こういうのは凝り始めると面倒な事になるのですが、凝りたくなる要素が沢山あるので困る。-->
ということで、ラズ・コル・ベリー・パイ・タナ(仮)の続きですが。
とりあえず書かないと始まらない(というか終わらない)ので、自動的にアレコレするpythonスクリプトを書いたのですが。
夕方アレコレの自動化スクリプトを書き終わって、夜のアレコレ自動化スクリプトはほぼコピペで出来てしまうことに気付いたり。
でも、こういうものをコピペで作るのはマズいやり方という事でもあるので、共通して使える部分をモジュールとして別のスクリプトから読み込む事に。
だいぶ良くなったので、夜のアレコレ自動化スクリプトを書こうと思ったのですが、これはオブジェクト指向の勉強をした時に出てきた例題にソックリな気がしてきて。
そっちのやり方の方が格好いいのではないか?とか思ったりしているのですが。
でも、ここからさらに書き直すのは面倒になっているので、エリオットにはなれない気がしてきました。
別にならなくても良いのですが、エリオットとは「MR.ROBOT」の主人公のあの人です。
<!-- コルタナの乗っかっているRaspberry Pi Zeroの正式名称をそろそろ考えるべきなのですが、重要度が低いのでやるのを忘れます。-->
<!-- 追記:どうでもイイですが、オブジェクト指向な書き方を短いスクリプトでやるのは大げさという事だ、という事が書いてあったのを思い出したので、今のままでもエリオットになれるかも知れない。-->
コルタナが乗っかっているRaspberry Pi Zeroであるところのラズ・コ・ベ・ルタ・リー・ナ・パイ(仮)ですが。
リモコンで照明やエアコンの基本操作をしたり、時間や気温などを喋ったり表示したり、やりたいことは出来るようになっているのです。
あとはそれらを自動的にやってくれるボクのAI!にするだけなのですが。
自動的にやるのって、なんか良く考えたら難しいですよね。
最初は単純に考えてcrontabでやったら良いと思っていたのですが、それだと決まった時間にしか動かないので、自動的だけど、こっちの都合では自動的ではないような。
意味が解らないかも知れませんが、目覚まし時計はセットした時間に鳴るけど、それは自動的に鳴っているのではなくて、私がセットしたから鳴っているのだ、という感覚と言えば解るでしょうか。
私の目指す自動的は、目覚まし時計が私の起きたい時間を推測して、勝手に鳴ってくれるという自動的なのです。
もちろん、そんなことをRaspberry Piでやるのは私には無理に違いないのですが、時間が来たらプログラムを実行するというだけでなくて、もう少し柔軟にしたいとか。
いくつかの条件を決めておいて、それに応じて何かを実行するということなら出来るはずなのですが。
でも、思い付く方法があまり格好良くない感じで。
Pythonの本をさらに読んだらヒントが見つかるのか?とか。
<!-- 前に書いたPythonの本は基本的なところは読み終わって、マニアック編に入りつつあるのですが、今私がやりたいこととはちょっと違うというのもあって、あまり読めてないですが。マニアック編の先は長いので、もしかするとその中にヒントが隠されているかも知れないですね。-->
スピーカーを接続したラズベリー・コルタナ・パイ(仮)ですが。
ちょっとずつ喋るようになっています。
ちょっとずつというのは、ちょっとずつ学習しているワケではなくて、仕様上ちょっとずつしか喋れないからですが、それはどうでもイイのです。
Googleが文字数制限付きで無料でスピーチ機能を提供しているということですが、いちいちネット経由とか、制限とかアレですし。
コルタナはマイクロソフトだからGoogleはダメなんじゃないか?という変なこだわりもあるので使ってないのです。
それで、ローカルでなんとかなるOpen JTalkを使うことにしました。
基本は男性の声なのですが、音声のファイルをダウンロードすると女性の声にも出来たり。
ただし、色々パラメータを調節してもコルタナっぽい声にはなりません。
そして、恐らくソフトで使っている辞書に載ってないから、ということだと思いますが、英語はあまり得意ではないようです。
なので、英語の混ざったフレーズを喋らせようとすると英語部分はアルファベットで1文字ずつ読むのですが。
なぜかその時は全体的に声が震えているような。
気のせいなのか、どうなのか。
せっかく喋るようになったのですが、こっちの声を聞き取るためのマイクを付ける(USB的)余裕がないので、声で対話とかは出来たりはしないですけど。
(というか、Raspberry Pi Zeroだと音声を合成するのにけっこう時間がかかるので、マイクがあっても対話にははなりそうにない。)
あんまり喋ってばかりもうるさそうですし、いつどんな情報を喋ってもらうのか、考え中です。
<!-- そういえば、男性の声だったらDoomに登場するVEGAっぽいかも、とか思ってしまったのですが、それだとコルタナが乗っかってる意味がなくなるのに気付きました。-->
間に合うのかどうかは知りませんが、出来る限りのことはしているのです。
というか、日付が変わってもう23日とか。
その他のことも色々やってないままなので焦りますよね。
マズいと思っているのですが、全然やる気がないのですけど。
一応色々と考えて、しかも書き始めてもいるのですが。
これまで気付いていなかったのですが、ずっと家にいたりすると、アイディアって出てこないようです。
家にいるから、というよりは刺激がないって事なのかも知れませんけど。
とはいっても、今から外に出るワケにもいきませんし、絞り出してひねり出すしかないのですけど。
でもなぜか部屋の片付けだけは捗っているとか。
まいっちゃいます。
正解はこちら!
ということで、どの問題に対しての正解かは知りませんが極秘に、そして少しずつバラしながら進められていたラズパイで何かを企むやつはコレだったのです。
魔改造版コルタナ?
<!-- LEDを点灯させると股間に光が当たるのは元々の仕様なので、私のせいではありません。-->
何がどうなっているのか?というと、メインはコルタナよりも下の部分なのですが。
Raspberry Pi Zero にこれまで時々登場してきたディスプレイとかリモコンの送受信のとか。あとは湿温度計も付いているのです。
なぜか盛り沢山な感じなのですが、最初の計画ではせっかく光るのに光らせてないコルタナの台座部分のLEDをどうにかする、ということでもありました。
台座を調べてみると、電池から直接並列つなぎになってるだけの簡単構造だったので、ケーブルを取り替えたりする工作をしただけで、あとは基本的なRaspberry Piのエルチカだったのです。
でも、せっかくRaspberry Pi を使うのだから、ということで、どんどん機能が増えていってしまうのですけど。
今のところ全ての機能が調整中でもあるので、どうなるのか心配していて下さい。
<!-- というか、ディスプレイを固定するのに苦労した話を書くはずだったのが、すっかり忘れてました。それはまた今度。-->
あるいは出来ている事になっている。
ということで、圧縮チューブがなかなか届かないので、フライングでPythonのクラスに挑戦して、ラズパイにつないだ液晶に文字を表示してみたのですけど。
実行する度にエラーが出てたのですが、間違いがすぐに解るようなエラーだったので、一回ごとに直していったら上手くいきました。
ただ、液晶に文字を表示するサンプルのコードを強引にクラスにした感じなので、ホントにコレであっているのか?とか。
しかも自分で書いたのは「self.」を付け足したところだけ、といっても過言ではないのですけど。
とりあえずは、文字を表示したり、バックライトのオンオフしたりするコードが使い回せるということになったので、色々と液晶を活用出来るはずなのです。
<!-- 液晶に表示されている単語が間違っているような気もするのですが、どうでしょうか。-->
ということで、昨日書いた強く念じるホームですが。
ゴチャゴチャしている机の上を利用して、LEDの付いているブレッドボードを45度ぐらいに傾けて置いて使ってみたら、一発で照明が消えました!
というか、上手く動くようにするというのは、そういうことではない気もしますが。
でも結構部屋の端の方にある場所からちゃんと使えたということは、光量はそれなりということなのかも知れません。
とはいっても、コレだとLEDのが向いている方向の機械しか動かせないですし。
今の所LEDが2つ付いているので、それぞれに角度をつけたら2つの機械ぐらいは動かせるかも知れませんけど。
LED四つを四方向に向けるのが一番良さそうなのですが、これ以上LEDを増やすには回路を難しくしないといけないとかで。
もっと簡単に出来ると思ってたのですが、スマートホームにするためにはスマートにやらないとダメみたいです。
ということで、最近のラズパイなのですが。
というか、ラズパイで何かをしてることをここに書いていたか忘れてますが、何かをしているのです。
その中の一つにラズパイをリモコン送信機にして家電を操作しよう!というのがあるのです。
上手くいけば温度計モジュールとかと連携して、室温によって自動的にエアコンのスイッチが入ったり、時間で照明をオンオフしたり。
スマートホームが激安で出来てしまうのです。
それで、色々と調べて、家電のリモコンのコードをラズパイで読み取ったり、読み取ったものを送信するのに赤外線のLEDを点滅させたりすることは出来るようになったのです。
それって、もう完成じゃん!って感じなのですが、試しに照明を動かそうとしても、LEDが受光部まで届いてないのか、上手く動きません。
でも照明の方に向きを変えて何度かやると上手くいくのですが。
いちいち向きを調整しないといけないとか、全然スマートじゃないですし。
LEDの光を拡散させるキャップというのを試してみたのですが、今度は光が弱くなって向きを調整しても動かなくなりました。
なんか、これはテレビのリモコンが壊れた時に、ボタンを押しながら「つけー!」って念じている時みたいな状態だったりするのですが。
あんまり念じていると、私のサイキックな力が強化されて、念力で家電が動かせるようになったりするかも知れませんが。
それはないと思うので、ちゃんと動かす方法を考えないといけません。