エントリー

2020年06月の記事は以下のとおりです。

何とか環境が

811.jpg

何回も試行錯誤して繋ぎなおして、やっと環境が整いました。

一番右側のモニターは、ノートPCに繋いでMouse without Bordersを使っていたんですが、文字しかコピペ出来ないので、R620にもう一つビデオカード追加して、4画面化(実際は一番右側を共有しているので、5画面ですが・・・)して、リモートディスクトップで繋ぐようにしました。

おかげで、色々とコピペ出来るようになったので、大変便利になりました。

まあ、基本的にメールやラインは、ノートPCの方が色々と都合がいいので、この形が自分的にベストな感じです。

ただ、R620君、ビデオカードが増えると、ファンが少し五月蠅くなったんですよ~

次は、防音対策しないと

録画用PC

  • 2020/06/24 13:35

810.jpg

EpgTimer+PT-1で録画用にしているPCがあるんですが、PCなんで当然他のアプリも起動しているわけです。


再生は、MPC-BEで再生しているんですが、一時停止や早送りなんかをいちいちマウス操作しないといけないのが面倒になってきました。

最近、こんなことばかり言ってるよなぁ~

専用PCにすればいいんでしょうけど、他のアプリも走っているんで、再生中にウインドウがアクティブじゃなくなっちゃうと、スペースキーとか受け付けないっていうか、別のアプリにキーを送っちゃうんです、ハイ
で、何とかならないかな~っていろいろ探していると、HidKeySequence.exeと、SendKey.exeを見つけた。

この2つを使って、10年前に購入した、USBテンキーを、ファンクションキーボードにしてみましょう。

HidKeySequenceは、キーボードデバイスを個別に認識するので、テンキーからのみ受け付けるようにできます。

押したテンキーを受け付けて、別のキーやマウスを含む動作を定義できます。
当初、マウスとのコンビネーションで設定していたんですが、連打するとダブルクリック扱いになって、別の動作が始まったるするんで、SendKeyの出番です。


SendKeyは、特定のアプリにキーコードを送ってくれるんでHidKeySequenceから、SendKeyに引数を付けて起動すれば、ウインドウがアクティブじゃなくても、動作させられます。


[テンキーのEnterで一時停止・解除を設定する場合]
SendKeys.exe "MPC-BE" [#32]


これで、一時停止が出来るようになりました。


他のキーも割り当てて、快適になりました。


これ、すっごく便利、他のアプリでも使えそうです。


テンキーがプログラムファンクションキーになるんです、あとはいつかシールでも作って貼ろうかな。

モニターの取り付け位置変更

809.jpg

キーボードやマウスを机から追い出したんですが、モニターは増えていきます。

実際、目の前に6面あります・・・・( ノД`)シクシク…

そうなると、机の上がまた圧迫されてきたので、モニターアームを導入しました。

2面×3本です

しかし、違うメーカーのモニタって、VISAの取り付け位置がこんなに違うとは思ってなかったです。

多少誤差があっても、センター付近だと思っていたんですが、LGのモニターと、LENOVOのモニターで、60~70mm取付位置が違うんです。

仕事で、縦で使用する事もあるんですが、LENOVOだと、大きく頭を振る形になります。

LGだと、ほぼセンターを中心に回転するんですが。

さて、そのモニターの中に、1つだけちょっとインチ数が小さい、モニター兼テレビがあるんですが、これがどうしても高さが合わなく、下のモニターと干渉してしまうので、VISAブラケットの取り付け位置を変更しました。

高さ変更するVISAブラケットも売ってるんだけど、高いのよコレ、モニターアームもう一個買えちゃう。

って訳で、ホームセンターで良さげなステー探してきました、本当は200mmのものが欲しかったんですが、150mmしか無かったので、とりあえず購入。

これで、35~40mmしか移動出来なかったんですが、後はアームの調整機能で、ギリ合わせた感じです。

実はこの後、このステーを、LENOVOのモニターに移動して、今度は35mm下げました。

今日手に入れた、IODATAのモニターが、LENOVOモニターよりちょうど35mm低かったんで・・・・(写真撮り忘れたので、テレビの方の写真です)

温度管理

サーバーを見に行かなくて良くなったんで、もう一つやりたかった事をやろうかと。

約10年以上前なんですが、猛暑の夏を乗り切れなかったPCが1台、月曜日に出勤すると、ブルースクリーンが出ていて、色々調べているとメモリーが熱でやられていました。

次の年から、サーバー機に入れ替えたおかげで、その後の猛暑も乗り越えてきたんですが、朝出勤するとファンが全開でとっても五月蠅い。

さらに、部屋が排熱でとっても熱い・・・

今年は猛暑だと言う噂もあるし、サーバーが増えたことと、常時電源が入っている、PCもあるので何とかしなければ。

KURO-RSは持っているんですが、エアコンの赤外線リモコンは、情報量が多いため、未対応。

って事で、トラ技やCQなんかとタイアップしている、ビット・トレード・ワンの赤外線リモコンキットを購入してみました。(AD00020)

このキット、フリスクサイズの基盤なんで、老眼の私には半田付けが辛い・・・

何とか完成して、HPからソフトをダウンロードして、テスト、無事動作の確認が出来ました。

ハード面は何とかなりそうなので、ソフトにかかります。

まず、温度の取得です。

USB温度計を購入しようかとも思ったんですが、PC内部には色々と温度センサーがあるんで、使えるものを探してみます。

CPUやGPUは負荷状態でかなり変動するので使えない、マザーボードの温度かHDDの温度が良さそう。

室温を色々と変えて、関係性をモニタリングしてみると、HDD温度が室温+10℃ぐらいでで推移していて、これが使えそうです。

当然、正確に+10℃ではなくバイアスがかかっているんですが、筐体の中の温度と言うことで、これを使おうと思います。(うちのマザーボードの温度は、良くわからない動きをするので・・・)

って分けで、HDDのS.M.A.R.Tから温度情報を取得します。(C#)

                ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\WMI", "SELECT * FROM MSStorageDriver_ATAPISmartData");
                foreach (ManagementObject queryObj in searcher.Get())
                {
                    byte[] arrVendorSpecific = (byte[])queryObj.GetPropertyValue("VendorSpecific");
                    int tempIndex = Array.IndexOf(arrVendorSpecific, (byte)194);
                    hddchk[0] = arrVendorSpecific[tempIndex + 5].ToString() ;
                }

さて、この情報を元に赤外線リモコンでエアコンを入れれば・・・・

提供されているDLLって、32ビットなんだよ~、アプリは64ビット

リモコンアプリのソースも公開されているんで、USBデバイスを直接操作って手もあるんですが、何か方法を考えてみます。

BtoIrRemoconってプロンプトアプリがあるんですが、うちの環境では何故かうまく動作しないんで、作ってみました。

[C# x86]

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using Microsoft.Win32.SafeHandles;
using USB_IR_Library;

namespace IRCommand
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            int i_ret;
            SafeFileHandle handle_usb_device = null;    // USB DEVICEハンドル
            string[] cmds = System.Environment.GetCommandLineArgs();
            byte[] data = new byte[103];
            byte[] code = new byte[100];
            if (cmds.Length > 1)
            {
                for (int i = 0; cmds[1].Length / 2 > i; i++)
                {
                    data[i] = Convert.ToByte(cmds[1].Substring(i * 2, 2), 16);
                }
                int mode = (int)data[0];
                int ilen1 = (int)data[1];
                int ilen2 = (int)data[2];

                for (int i = 0; i < 100; i++)
                {
                    code[i] = data[i + 3];
                }

                try
                {
                    // USB DEVICEオープン
                    handle_usb_device = USBIR.openUSBIR(this.Handle);
                    if (handle_usb_device != null)
                    {
                        // USB DEVICEへ送信 パラメータ[USB DEVICEハンドル、フォーマットタイプ、送信赤外線コード、赤外線コードのビット長]
                        switch (mode)
                        {
                            case 1:
                                i_ret = USBIR.writeUSBIRex(handle_usb_device, USBIR.IR_FORMAT.AEHA, code, ilen1, ilen2);
                                break;
                            case 2:
                                i_ret = USBIR.writeUSBIRex(handle_usb_device, USBIR.IR_FORMAT.NEC, code, ilen1, ilen2);
                                break;
                            case 3:
                                i_ret = USBIR.writeUSBIRex(handle_usb_device, USBIR.IR_FORMAT.SONY, code, ilen1, ilen2);
                                break;
                            case 4:
                                i_ret = USBIR.writeUSBIRex(handle_usb_device, USBIR.IR_FORMAT.MITSUBISHI, code, ilen1, ilen2);
                                break;
                        }
                    }

                }
                catch
                {
                }
                finally
                {
                    if (handle_usb_device != null)
                    {
                        // USB DEVICEクローズ
                        i_ret = USBIR.closeUSBIR(handle_usb_device);
                    }
                }
            }
            Application.Exit();
        }
    }
}

フォームには何も入れない空です。
フォームアプリにしたのは、この先何か追加するかもしてないからです。
これに、赤外線リモコンのアプリで取得したコードを引数で与えると、動作しました。
あとは、アプリからプロセス起動させれば、温度によって、エアコンを入れたり、消したり出来るようになりました。
あと一つ問題は、設置場所です。

ネット上では、赤外線の出力が弱いという噂がありましたが、近づけても動作しない時がありました。

通常砲弾型のLEDの場合、先端から直進する部分が一番出力が強く、角度が付くと、減衰していくんです。

このキットに含まれているLEDは、50% Power Angle が15degなんで、ほぼ直進するはずなんdすけど、離して変な角度のほうが認識率が高い(反射かな)

猛暑が来るまで色々と探ってみます。

サーバーのRAID状態

  • 2020/06/09 07:49

807.jpg

R620を導入して、色々と整理していったんですが、ソフトRAIDのサーバー3台の、RAID状態を確認するのが面倒になってきました。

ほんの数分の作業なんですが、なんとなく毎日やるのが面倒・・・歳かな

ターミナルでサーバーにログインして、cat /proc/mdstat するだけなんですけどね。

ハードRAIDのサーバーは、表示ランプやLCDがあるので一目瞭然なので楽なんです。

もう一台、データ収集用PCが常時稼働していて、これでサーバ容量の監視をしているんですが、これにちょっと組み込んでみようかと。

ちなみに、組み込むのは、時代遅れのCoreDuo2 Q6600 Windows7のマシンなんですが、色々あってアップグレード出来ないんです(最近までWindowsVistaでした笑)

 

そうと決まれば、さっそく組み込みです。

ソースがC#なので

                for (int iloop = 1; iloop < 4; iloop++)
                {
                    ConnectionInfo info = new ConnectionInfo(ipAdd[iloop], 22, "****", new AuthenticationMethod[] { new PasswordAuthenticationMethod("USER", "PASSWORD") });
                    SshClient ssh = new SshClient(info);
                    ssh.Connect();
                    if (ssh.IsConnected)
                    {
                        SshCommand cmd = ssh.CreateCommand("cat /proc/mdstat");
                        cmd.Execute();
                        var stdOut = cmd.Result;
                        var stdErr = cmd.Error;
                        if (stdOut != string.Empty)
                        {
                            string[] rd = stdOut.Split('/');
                            string[] rd1 = rd[1].Split('[');
                            string[] rd2 = rd1[1].Split(']');

                            hddchk[iloop] = rd2[0];
                        }
                        ssh.Disconnect();
                    }
                }

を、1日1回実行する関数に追加(ユーザー名とパスワードはひみちゅ)

iloop=0は自分自身でRAIDが無いので除外です。

正直、正規表現など使えば、取得した文字列の分解はもっと簡単になるんでしょうけど、フォーマットが変わったときのデバッグ用です。

あくまで、自分用なので・・・・客先用だとちゃんとしますよ。

これで、いちいち確認に行かなくても良くなりました。

 

R620 DVD交換

806.jpg

R620のDVD-ROMですが、手に入れた当初から壊れてて動作しなかったんです。

まあ、OSやアプリのインストール自体は、USBをブータブルディスクにしたりして、何とかなったんですが、やっぱり少し面倒って事で取り換えることにしました。

最初は、そこらへんに転がっているジャンクのノートPCのDVD-Rでもって思ってたんですが、9.5mmの薄型なんですよR620って。

 

現役ノートから外すわけにもいかないので、とりあえずオークションで1,000円で落札です。

ブルーレイも考えたんですがね、USBメモリーの高容量化やUSB-HDDがあるんで、とりあえずはDVD-Rにしました。

 

ビデオカードも追加したし、音源も追加したし。

大きい・重い・多少うるさい・起動に時間がかかるってのを気にしなければ、快適になりました。

ページ移動

  • 前のページ
  • 次のページ
  • ページ
  • 1

ユーティリティ

新着コメント

Re:2017ふれまにっ杯募集
2017/01/30 from tatsuru3284
Re:ついに
2016/03/18 from redinpules.stt.TV
Re:ついに
2016/03/17 from Tatsuru
Re:ついに
2016/03/17 from redinpules.stt.TV
Re:県オープンの余韻
2016/02/18 from Tatsuru

過去ログ

Feed