選択定年生活記

32年間勤めた会社を選択定年で退職
2年間の沈黙を破り場違いの仕事を開始
これって選択定年生活?

Android Studio は意外と使いやすかった

2018-08-30 | 選択定年生活

最近、膀胱の調子が良くないので、7年ぶりに専門医で検査したところ、前立腺が前回に比べて直径で1センチ大きくなっていると判明。

治療の必要は無いらしい。老化現象なので治療の方法は無い、と翻訳した方が正解かも。

これは、排尿の仕方、特に夜間尿に注意しておかないといけないと思い、トイレの回数をスマホで記録しようと一念発起。

スマホのアプリを作るには、Android Studio を使えばよいという知識はあったが、JAVAなんてさわった事ないし、と思いつつ、手探りで研究。

activity_mainで画面を作って、MainActivity で処理を記述すればよいというのが分かって、意外と使いやすいという事に気が付いた。

画面はGUIで作れるし、処理の記述はネットでググれば、親切にサンプルプログラムをのっけてくれている人がいるし。

で、あれやこれやで作ったのがこれ。

小便は PISS、大きいのは CRAP、 同時は Both。それを日時と一緒に記録するという単純なもの。

これだと、夜中に小便に起きて、朝になったらそのことを忘れていても、記録として残るから正確です。

その後、Android Studio をいろいろ研究して、改良したのがこれ。

時間だけでは、起きていたのか、寝ているときに起きてしたのかが分からないので、

Awake 起きている時、inBed 寝ていた時

という選択肢を追加しました。

Piss や Crap は下品な言い方らしいので、Pee と Poo に変えたりなんかして。

内部的には、データの保存をテキストファイルから sqlite に変えたり、CSV形式でデータをSDカードに出力したりなんかして改良しています。

改めてデータを眺めてみると、夜間尿は一晩で1回のペースなので、今のところ大丈夫そうです。あくまでユリーフという薬を飲んでいるからという前提ですけどね。

世の中には、こういうアプリを使いたい人があるかもと、Playストアにアップロードしようとしたけれど、登録料$25が必要という事でやーめた。

 


解決済み → KB4340917で不具合 run・execメッソッドがウィルス扱いに

2018-08-10 | 選択定年生活

2018 年 8 月 12日

障害の出たスクリプトを走らせたところ、問題なく走りました。

WindowsDefenderの方で、何らかの修正をしてくれたのだと、勝手に解釈。

終わりよければ、すべて良し。

MICROSOFTに感謝。

↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ 

2018 年 7 月 25 日 — KB4340917 (OS ビルド 17134.191)を適用したところ、VBスクリプトのrun・execメッソッドがウィルス扱いされるようになった。

無理に実行すると、WindowsDefenderが反応し、ユーザーアカウントコントロールが勝手に書き換わる。

もちろん、スクリプトは、エラーを吐いて、中断。

回復には、再起動の必要がある。

   これって、不具合でしょ?
                          

それとも、run・execメッソッドを意図的に動作不能にしている?

セキュリティー強化も結構だけれど、使えないパソコンになるのでは本末転倒。
死んだら、腹が減らないという、例の屁理屈みたい。

VBスクリプトをJAVAに書き換えて、実行ファイル化するしかないのかも。


Freenasのrsyncの動作が気が遠くなるほど遅い

2017-01-27 | 選択定年生活
Freenasが動作しているPCから、rsyncで、Freenasが動作している別のPCに、LAN経由で大量(2TB)のファイルをコピーさせたところ、2日連続で動作させてもまだ終わらない。
少しづつ、少しづつコピーしている。

送り側のPCで、Display System Process を確認したら、rsyncのプロセスのWCPUの値が100%に貼りついている。
ファイルサーバー専用に自作したPCで、CPUオンボードの非力なもの。
そこがネックになっている。

という事で、rsyncの設定で、Compressのチェックを外して立ち上げなおしたところ、スピードが10倍になった。WCPUの値は70%前後。

ファイルサーバー専用といえども、CPUは力のあるものが必要なんですね。高くなるけど。

Freenasでrsyncのプロセスを停止する

2017-01-27 | 選択定年生活
Freenasは、GUIでrsyncをコントロールできるところが便利。
ところが、途中で中断するメニューがない。

解決方法は意外と簡単。

メニューにある「Display System Process」でモニタを開き、実行中のrsyncのPIDを調べる。
コンソールを開いて、 kill 4567 (PIDが 4567 の場合)を実行するだけ。
すると、rsyncが停止する。

よく考えてみれば、基本中の基本の操作でした。

FreeNasのスクラブをコントロールする

2016-12-19 | 選択定年生活
FreeNasは、定期的にスクラブを実行する機能を備えている。
24時間稼働させる場合は、それでよいけれど、必要な時に電源をオン・オフする環境の場合は、都合が悪い。
メインマシンから定期的にスクラブを実行させる方が、都合がよい。
メインマシンのタスクに、スクリプトを登録し、それを定期的に実行させる。

スクラブの実行は、FreeNas側で「onoffcheck3」のスクリプトでタイミングを監視させている。
メインマシン側は、FreeNasを立ち上げ、cifsの共有フォルダに「scrubstart.ini」と「scrubing.ini」のファイルを保存するだけで良い。

月1回、朝7時から開始したら、おおよそ12時ごろには終了する。(環境によって違う)

タスクスケジューラに「scrubstart.vbs」を登録する。
スクリプトの中で「scrubstartmsg.vbs」を実行して、「スクラブ中」のメッセージを表示する。
スクリプトの中で「scrubend.vbs」を実行して、スクラブが終了しFreeNasの電源が切れるか、5時間ほど経過したときに、「スクラブ中」のメッセージを消す。




===== scrubstart.vbs =================================================================================

Option Explicit


Dim WshShell
Dim strProcessName
Dim objWMIService
Dim colProcesses
Dim objProcess
Dim strComputer
Dim iBTN
Dim strWolFrn
Dim objFS
Dim objNewFile
'
Const strMyServer1 = "FreeNAS"
Const MyServerIP1 = "http://192.168.10.35"
Const strShutdownini1 = "\\frnsmb1\shutdown\shutdown.ini"
Const strScrubingini1 = "\\frnsmb1\shutdown\scrubing.ini"
Const strScrubstartini1 = "\\frnsmb1\shutdown\scrubstart.ini"
'
Const strMyServer2 = "FreeNAS2"
Const MyServerIP2 = "http://192.168.0.73"
Const strShutdownini2 = "\\Freenas2\shutdown\shutdown.ini"
Const strScrubingini2 = "\\Freenas2\shutdown\scrubing.ini"
Const strScrubstartini2 = "\\Freenas2\shutdown\scrubstart.ini"

'
Const MyMagicSendPgm ="""D:\MyProgram Files\wol193\wol.exe"" /open=""D:\MyProgram Files\wol193\wol.ini"" /wake=1 "
Const strMsgCmd = "D:\MyWscript\SCRUB_STARTMSG.vbs"
Const strMsgClose = "D:\MyWscript\SCRUB_END.vbs"

'
Set WshShell = WScript.CreateObject("WScript.Shell")
'作業開始のメッセージを表示
WshShell.RUN strMsgCmd

'スクラブ開始の指令
Call FreenasPowerOn( strMyServer1 , MyServerIP1 , strShutdownini1 , strScrubingini1 , strScrubstartini1)
Call FreenasPowerOn( strMyServer2 , MyServerIP2 , strShutdownini2 , strScrubingini2 , strScrubstartini2)

'作業開始のメッセージを閉じるスクリプトを開始
WshShell.RUN strMsgClose

'終了処理

Set WshShell = Nothing


'----------------------------------------------------------------------------------------
Sub FreenasPowerOn( strMyServer , MyServerIP , strShutdownini , strScrubingini , strScrubstartini)
'FreeNasの起動
If checkPing(strMyServer) = True Then
'
iBtn = WshShell.Popup (strMyServer & "起動済",2,,vbOkOnly)
Else
iBtn = WshShell.Popup (strMyServer & "起動中",2,,vbOkOnly)
If WolFreeNas(strMyServer) = True Then
'
Else
iBtn = WshShell.Popup (strMyServer & "起動失敗",20,,vbOkOnly)
Call MsgOnOff(strMsgCmd,"OFF")
Set WshShell = Nothing
Exit Sub
End If
End If

'shutdown.ini ファイルを削除する
On Error Resume Next
Set objFS = WScript.CreateObject("Scripting.FileSystemObject")
If Err.Number = 0 Then
objFS.DeleteFile strShutdownini, True
End If
Set objFS = Nothing
On Error Goto 0

'制御ファイル生成開始処理
'On Error Resume Next
Set objFS = CreateObject("Scripting.FileSystemObject")
'scrubing.ini ファイルを保存する
Set objNewFile = objFS.CreateTextFile(strScrubingini)
objNewFile.WriteLine "Scrubing Information -- Date: " & Now()
objNewFile.Close
'scrubstart.ini ファイルを保存する
Set objNewFile = objFS.CreateTextFile(strScrubstartini)
objNewFile.WriteLine "Scrubing Information -- Date: " & Now()
objNewFile.Close
'制御ファイル生成終了処理
Set objNewFile = Nothing
Set objFS = Nothing
'On Error Goto 0


End Sub
'---------------------------------------------------------------------------------------------


'ピングを発信する関数
Function checkPing(MyServer)

Dim objWMIService ' Windows Managements
Dim PingSet ' Win32_PingStatusクラス
Dim Ping ' 対象Ping
Dim MyIPAdress


MyIPAdress = "Select * From Win32_PingStatus Where Address = '" & MyServer & "'"


Set objWMIService = GetObject("winmgmts:\\.")
Set PingSet = objWMIService.ExecQuery ( MyIPAdress )

For Each Ping In PingSet

Select Case Ping.StatusCode

Case 0
checkPing = True
Case 11010
checkPing = False
End Select
Next

Set PingSet = Nothing
Set objWMIService = Nothing

End Function
'-------------------------------------------------------------------------------------------------------


Function WolFreeNas(MyServer)
'WScript.Shellオブジェクトを格納する変数を宣言
Dim WshShell
'WshScriptExecオブジェクトを格納する変数を宣言
Dim objExec
Dim objIE
'変数を宣言
Dim intX
Dim iBtn
Dim intKaiji
'Magic Packetを送って起動する。
Set WshShell = WScript.CreateObject("WScript.Shell")
Set objExec = WshShell.Exec(MyMagicSendPgm & MyServer)
iBtn = WshShell.Popup ("FreenasにMagicPacketを送りました。",2,,vbOkOnly)
'Ping を送って起動したかを5分間チェックする
For intX = 1 To 40
If checkPing(MyServer) = True Then
intKaiji = intX - 1
Exit For
End If
'10秒間停止する
WScript.Sleep 10000
Next
'結果を表示
If checkPing(MyServer) = True Then

WolFreeNas = True
Else
WolFreeNas = False
End If

'終了

Set objExec = Nothing
Set WshShell = Nothing
End Function


==========================================================================================================================

===== scrub_startmsg.vbs =================================================================================================

Option Explicit

Dim intRTN

intRTN = MsgBox("FREENAS/FREENAS2のスクラブを開始します。7:00 ~ 12:00の間、サーバーが起動します。",vbSystemModal,"Scrub Start")

==========================================================================================================================

===== scrub_startmsg.vbs =================================================================================================

Option Explicit


Dim strProcessName
Dim objNewFile
Dim objWMIService
Dim colProcesses
Dim objProcess
Dim strComputer
Dim intX
Dim intY
'
Const strMyServer1 = "FreeNAS"
Const MyServerIP1 = "http://192.168.10.35"
Const strMyServer2 = "FreeNAS2"
Const MyServerIP2 = "http://192.168.0.73"
Const strMsgCmd = "D:\MyWscript\SCRUB_STARTMSG.vbs"


'終了処理
Wscript.Sleep 100
'FreeNasの起動をチェック

'1分ごとに300回で5時間チェック
For intY = 1 to 300
intX=99
If checkPing(strMyServer1) = True Then
intx=0
End If
If checkPing(strMyServer2) = True Then
intx=0
End If
If intX=99 Then
Call MsgOff
Exit For
End If
Wscript.Sleep 60000
Next

'-------------------------------------------------------
'開始メッセージを閉じる
Sub MsgOff
strProcessName = "wscript.exe"
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colProcesses = objWMIService.ExecQuery("Select * from Win32_Process Where Name=""" & strProcessName & """")
For Each objProcess in colProcesses
If objProcess.Name = strProcessName Then
If Instr( objProcess.CommandLine, strMsgCmd ) > 0 Then
'wscript.exe を終了する
objProcess.Terminate
Else
'なにもしない

End If
End If
Next

Set colProcesses = Nothing
Set objWMIService = Nothing
End Sub

'-------------------------------------------------------
'ピングを発信する関数
Function checkPing(MyServer)

Dim objWMIService ' Windows Managements
Dim PingSet ' Win32_PingStatusクラス
Dim Ping ' 対象Ping
Dim MyIPAdress


MyIPAdress = "Select * From Win32_PingStatus Where Address = '" & MyServer & "'"


Set objWMIService = GetObject("winmgmts:\\.")
Set PingSet = objWMIService.ExecQuery ( MyIPAdress )

For Each Ping In PingSet

Select Case Ping.StatusCode

Case 0
checkPing = True
Case 11010
checkPing = False
End Select
Next

Set PingSet = Nothing
Set objWMIService = Nothing

End Function

==========================================================================================================================






FreeNasで電源のオン・オフをコントロールする

2016-12-19 | 選択定年生活
NASは本来、24時間稼働させるものとは言うものの、電気代が惜しいので、電源のオン・オフはやっぱりコントロールしたいもの。

電源をオンにするのは、メインマシンからWOLさせてやれば良い。

電源をオフにするには、NAS側でクロンジョブを実行して終了条件をチェックすればよい。
メインマシンにPINGを送って、メインマシンが停止していたらNASも停止する。
CIFSの共有フォルダに「shutdown.ini 」というファイル名のファイルがあればNASを停止する。
(メインマシンが稼働していても、NASを終了させたい場合)
ただ、スクラブ中に終了しては困るので、スクラブの実行もクロンジョブで行い、スクラブが終了するまでNASを停止させない。
CIFSの共有フォルダに「scubstart.ini」というファイル名のファイルがあればスクラブを開始する。
CIFSの共有フォルダに「scrubing.ini」というファイル名のファイルがあればスクラブの状態を監視する。
スクラブが終わるまでは電源をオフにしない。

環境依存の設定データは変数に格納して指定している。
メインマシンのIPアドレス
CIFS共有フォルダの場所 /mnt/zsf2/shutdown/
スクラブするzpoolのデータセット名 zsf1、zsf2

-- ファイル名: onoffcheck3---------------------------------------------------------

#!/bin/bash

chkping() {
echo -e "\nPing Check" >> $flnout
ping -c 1 $1 > null
if [ $? = 0 ];
then
x=0
echo -e "\n $1 Active" >> $flnout
else
echo -e "\n $1 Negative" >> $flnout
fi;
}

chkini() {

if [ -e $fln ];
then
echo -e "\n $fln Exist" >> $flnout
x=$y
else
echo -e "\n $fln Not Exist" >> $flnout
fi;
}

chksub() {
chkping $pcip1
#
echo -e "\nStatus Check" >> $flnout
y=99
fln=${cifsdir}shutdown.ini
chkini
#
y=20
fln=${cifsdir}scrubing.ini
chkini
#
y=10
fln=${cifsdir}scrubstart.ini
chkini
}
chkscrubstart() {
zpool scrub $1
echo -e "\n scrub $1 start" >> $flnout
}

scrubstart() {
chkscrubstart $zpoolrs1
chkscrubstart $zpoolrs2
rm -f ${cifsdir}scrubstart.ini
}
chkchkscrub() {
zpool status -v $1 | grep -qsE "scan: scrub in progress"
if [ $? -eq 0 ];
then
z=20
echo -e "\n scrub $1 Ongoing Process" >> $flnout
else
echo -e "\n scrub $1 Terminate the Processing" >> $flnout
fi;
}
chkscrub() {
z=0
chkchkscrub $zpoolrs1
chkchkscrub $zpoolrs2
if [ $z = 0 ];
then
echo -e "\n scrub finished" >> $flnout
rm -f ${cifsdir}scrubing.ini
else
echo -e "\n scrub not finished" >> $flnout
fi;
}
#
####################
# main #
####################
# Environment dependent Constant
pcip1='192.168.0.***'
cifsdir='/mnt/zsf2/shutdown/'
flnout=${cifsdir}onoffcheck3.log
zpoolrs1='zsf1'
zpoolrs2='zsf2'
#
x=99
echo -e "OnOffCheck3" > $flnout
date >> $flnout
chksub
echo -e "\n1st Check" >> $flnout
if [ $x = 99 ];
then
echo -e "\n Continue to 2ndCheck" >> $flnout
else
echo -e "\n Continue to Run" >> $flnout

#
if [ $x = 10 ];
then
scrubstart
exit 0
fi;
#
if [ $x = 20 ];
then
chkscrub
exit 0
fi;
#
exit 0
fi;
############
# 2ndcheck #
############
sleep 600
chksub
echo -e "\n2nd Check" >> $flnout
if [ $x = 0 ];
then
echo -e "\n Continue to Run" >> $flnout
exit 0
else
echo -e "\n Finish Off" >> $flnout
rm -f ${cifsdir}shutdown.ini
shutdown -p now
fi;


------------------------------------------------------------------------------------


スクリプトを Cron Jobs に登録する。








FreeNAS9.10 で hp MicroServer がWOLで起動しなくなった

2016-04-23 | 選択定年生活
FREENASには、 hp MicroServer のNICに適合するドライバが入っていないという事で、

  /boot/kernel/if_bge.ko

を、NAS4Freeに入っているものと入れ変えていたのだが、FreeNAS9.3 から FreeNAS9.10 にアップデートしたら動かないっぽい。
アップデートによって、  /boot/kernel/if_bge.ko がFreeNASのものに書き換わってしまうので、改めてNAS4Freeのものに書き換えるという手順は踏んでいたのですけれどもね。





if_bge.koもバージョンアップする必要があるのかと考え、最新の NAS4Free-x64-LiveCD-10.2.0.2.2535.iso をダウンロードして、最新のものと差し替え。




見事、WOLで起動が可能となりました。




FreeNas9.10 にアップデートしたらトラブル

2016-04-14 | 選択定年生活
FreeNas9.3で快調にNASを運用していたけれど、新しいトレインとかで9.10が提供さたのでアップデート。





ファイル共有のNASとしては何の問題もなく動作するけれども、

①PuttyからSSH接続ができない

②CronJobがエラーになる

という現象が発生。

①については、「kex protocol error」というもので、2015年6月30日にでたOpenSSH 6.9から、「Diffie-Hellman group exchange」という認証方法が使えなくなった事が原因と解明。




Puttyで、kexの設定を変更するとつながりました。

②については、シェルスクリプトに、sh を付けて実行する方法で回避。バグらしい。
2016/4/13現在、アップデートを適用すると、バグはフィックスされている。

この手の情報は、あまりネットには出てこない。
FreeNASは、まだまだマイナーなものなんでしょうかね。

Flashair のファイル転送速度の高速化 接続編

2016-01-08 | 選択定年生活
パソコンの場合、FlashairとWi-Fi接続するのがスマホのように自動的にとはいかないようである。

写真をダウンロードするのは、SnowyImageCopy(以下Snowy)というフリーソフト。
Wi-Fi接続とSnowyの起動を一緒に行うスクリプトを作ってみた。
スクリプトからバッチファイルを呼び出している。
Snowyはあらかじめ用意しておく必要がある。

これで、自動的に近い感じで接続できる。
Snowyで保存するフォルダは、起動ドライブ以外のドライブのルートにDCIMのフォルダを作り、そこに保存すれば、カメラ用の転送ソフトで従来どおりのフォルダへの振り分け処理ができる。

接続の手順は以下の通り。
1.カメラ側で、Flashairを起動する。(カメラの電源を入れる。手動の場合、画像のプロテクトを解除する。)
2.カメラを装置の上に置いて、パソコンと装置をUSBで接続する。
3.スクリプトを実行し、Snowyが起動すればOK。

1と2の手順を守らないと、FlashairのWi-Fi電波の認識までに時間がかかる場合がある。
FlashairのWi-Fi電波が出た状態で装置をUSB接続すれば、Wi-Fi電波を秒殺で認識する。


< ConnectFlashair.bat >


REM ----- START --------------------------------------------------------

@Echo Off
REM 最小化して実行
if not "%HOGE%"=="hoge" (
set HOGE=hoge
start /min cmd /c,"%~0" %*
Goto Owari_RTN
)

REM * System Name Connect TO Flashair Through Wi-Fi
REM * Program-Id ConnectFlashair.bat
REM * Result.log ---------------
REM * Create Date 2015/12/15
REM * Create Name sentakuteinen
REM * Comment Netsh で Flashair に接続(手作業)
REM * Program Ver *******
REM -----------------------------------------------------------------
REM * CALL-ID Connect Flashair.bat
REM -----------------------------------------------------------------
REM * Revision Date 0000/00/00
REM * Revision Name ----------
REM * Comment
REM -----------------------------------------------------------------
REM * User Name sentakuteinen    
REM * OS Version Windows 10 Professional
REM
REM -----------------------------------------------------------------
REM
netsh interface set interface "Wi-Fi" disable
TIMEOUT /T 1 /NOBREAK >NUL
netsh interface set interface "Wi-Fi" enable
TIMEOUT /T 1 /NOBREAK >NUL
netsh wlan show networks mode=ssid > D:\MyWscript\ConnectFlashair.log

REM -------- END --------------------------------------------------------




<<ConnectFlashair.vbs>>


'----- START----------------------------------------------------------


Option Explicit


' * System Name Connect TO Flashair Through Wi-Fi
' * Program-Id ConnectFlashair.vbs
' * Result.log ---------------
' * Create Date 2015/12/15
' * Create Name sentakuteinen
' * Comment Netsh で Flashair に接続(手作業)
' * Program Ver *******
' -----------------------------------------------------------------
' * CALL-ID Connect Flashair.vbs
' -----------------------------------------------------------------
' * Revision Date 0000/00/00
' * Revision Name ----------
' * Comment
' -----------------------------------------------------------------
' * User Name sentakuteinen   
' * OS Version Windows 10 Professional
'
' -----------------------------------------------------------------
' *処理対象のファイル

'-----------------------------------------------------------------
'

Dim WshShell
Dim objFileSys
Dim strScriptPath
Dim strOpenFile
Dim objTextStream
Dim strText
Dim intX
Dim intY
Dim intZ


Set WshShell = WScript.CreateObject("WScript.Shell")

'1:アクセスポイントの一覧を取得
intZ = 99
For intX = 1 to 5
'アクセスポイントを読み出し
WshShell.RUN "D:\MyWscript\ConnectFlashair.bat",0,True
'
'2:取得したアクセスポイントのリストからFlashairのアクセスポイントの有無をチェック
Set objFileSys = CreateObject("Scripting.FileSystemObject")

Set objTextStream = objFileSys.OpenTextFile("D:\MyWscript\ConnectFlashair.log", 1)

Do Until objTextStream.AtEndOfStream = True
strText = objTextStream.ReadLine
intY = Instr(1,strText,"flashair",1)
If intY > 0 Then
WshShell.RUN "netsh wlan connect ssid=flashair name=flashair interface=Wi-Fi",0,True
intZ = 0
Exit Do
End If
Loop

If intZ = 0 then
Exit For
End If
Wscript.Sleep 1000
Next
'
If intZ = 0 Then
WshShell.RUN """D:\MyProgram Files\Snowy110\SnowyImageCopy.exe""",1,False
Else
MsgBox "Flashair Faild"
End If

objTextStream.Close
Set objTextStream = Nothing
Set objFileSys = Nothing
Set WshShell = Nothing


'------ END -------------------------------------------------------------------------------------------

注 スクリプトやバッチファイルの保存先を D:\MyWscript、Snowyの保存先を D:\MyProgram Files\Snowy110 としているが、環境に合わせて適宜、書き換えればよい。


Flashair のファイル転送速度の高速化 改良編

2016-01-08 | 選択定年生活
ありあわせのプラスチック箱を使って装置を作ったけれど、大きすぎて邪魔なので改良。

カメラを置ける形にかたどった図形を作成。
カメラのFlashairカードの位置に、Wi-Fi子機の位置を合わせて、装置を埋め込む位置を決める。
で、できたのがこんな図面。



ボール紙を図面の形に切って土台に。
厚めのシート状の緩衝材(ライトロンシート)があったので、それを図面の形に切って、装置を埋め込む切り欠きも施す。
薄めのシート状の緩衝材(ライトロンシート)もあったので、それも図面の形に切る。

その3枚を、装置を埋め込んで、糊付け。
手近にあった、布を被せてデコレーション、これも底面で糊付け。

糊はすべて、木工ボンドでOK。

で、完成したのがこれ。



薄いし、ふわふわしているし、軽いしで、快適です。