Monday, November 16, 2015

とりあえず自作HEMSが動くようになった


電文コレクタの設計が超テキトーながらリアルタイム更新グラフが一応動くようなった。
python超楽チン。



Sunday, November 01, 2015

スマートメータとちゃんと通信してみる。

http://chappnet.hateblo.jp/entry/2015/08/20/024137
にminicomを使った詳しい事例があるので、何も書くことないのですが、
screenコマンドを使う場合は
ctrl+aを打って
:exec !! cat ファイル名

とやればコマンド実行結果をそのまま流し込むことができるのでバイナリデータの送信ができます。


SKSENDTO 1 FE80:0000:0000:0000:02XX:XXXX:XXXX:XXXX 0E1A 1 000E ここでバイナリファイルを送信
                                                              
EVENT 21 FE80:0000:0000:0000:02YY:YYYY:YYYY:YYYY 00
OK


ERXUDP FE80:0000:0000:0000:02YY:YYYY:YYYY:YYYY FE80:0000:0000:0000:02XX:XXXX:XXXX:XXXX 0E1A 0E1A 00YYYYYYYYYYYYYYYY 0012 1081000102880105FF017201E704000003A0

最後の「1081000102880105FF017201E704000003A0」の部分が、スマートメーターから帰ってきた電文で、
電文フォーマットは 第3章 電文構成(フレームフォーマット) 3.2 電文構成  に記載されています。
https://echonet.jp/wp/wp-content/uploads/pdf/General/Standard/ECHONET_lite_V1_12_jp/ECHONET-Lite_Ver.1.12_02.pdf


フォーマットに従って区切りを入れると
10 81 0001 028801 05FF01 72 01 E7 04 000003A0
ということなので、2.20 瞬時消費電力計測値プロパティが000003A0ということは928ワットということですね

何度か実行すると値が変わっているのも見えるので、結構粒度は細かそう。

BP35A1をRaspberryPiにつないでraspbian の設定

Bルート研究の続き。

BP35A7とアクセサリのピンペッダを半田付け。
秋月買ったCサイズの片面基盤にロングピンの20ピン二列のピンソケットを半田付けし、
10ピン一列のピンソケットを反対に差し込む。
両面基盤じゃないから、少し浮かして無理やりランドに半田付け。

20年ぶり?の半田付けはグダグダだけど、これでRaspberryPiにBP35A7を乗せるベース完成。
ショートチェックだけしてから、ジャンパとブレッドボードを使って 3.3V,GND,RX,TX を繋ぐ。
あとはRst、VCC以外 をGNDに落として、仮組完了。





さて、raspberryPIの設定が適当だったので、電源入れてもsshが繋がらない。
どうやら、eth0とwlan0で同じセグメントのアドレス振ると、ifup・ifdownでルーティングテーブル書くときエラーになるのが原因のようなので、eth0は /etc/network/interfacesからコメントアウト。

ついでにジャンクで220円で買ってきたdellのUSBキーボードに合わせて
e/etc/default/keyboard を設定。

XKBMODEL="OADG109A"
XKBLAYOUT="jp"
XKBVARIANT=""
XKBOPTIONS="ctrl:nocaps"
BACKSPACE="guess"



/boot/cmdline.txtからttyAMA0のコンソール定義を削除して以下のように変更。

dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait


cu,tipもなーんにもなかったのでscreenをapt-get

 screen /dev/ttyAMA0 115200,cs8,-xon,-xoff,-istrip

SKVER
と打って
EVER 1.2.10
OK
と帰ってきたのでモジュールとの通信成功。


Thursday, October 29, 2015

Raspberry pi

せっかくスマートメーターとやらに交換したのに、23区ではAルートが開通していない模様。

よろしい。ならばBルートだ。

Wi-SunしゃべるモジュールはROHMのBP35A1をお買い上げ。
ユニバーサル基盤に乗せるためにBP35A7とアクセサリをセットでお買い上げ。

データ収集と画面表示用にRaspbery PI2をお買い上げ。
ブレッドボードで試すためのジャンパコードをひと束。

無線LANはアキバで一番安かった599円のノーブランドでlsusbで見たら、ID148f:7601 Ralink Technology, Corp.。
最新のRaspbianならドライバが標準で対応していたのでこれでよし。

最初、SDの書き方がいまいちわからんかったけど
Raspbianのイメージはディスクパーティション込みで作成されているので、
/dev/disk4s1じゃなくて/dev/disk4にガリッと書き込めばOK。
GUIが上がればパーティションのリサイズを1クリックでやってくれるので、4G以上のSDなら何も考えなくてよし。

NWにWifiも繋がるようになったところでまた続く。

Monday, October 26, 2015

DellP2415Qで4kが選べなくなった。

factory reset してから、MSTをsecondaryに変更すると選べるようになる。
DellP2415Q側から通知している情報がおかしくなったのかな。

Sunday, May 31, 2015

Compressor 4.2でBlu-Rayディスクの作成が50%完了から進行しない

iMovieからProres422で書き出した動画をBlu-Rayに焼こうと思ってCompressorを購入したが、ディスクイメージを作成できる時と失敗する時がある。
なんでだろうとおもってプロセスを眺めたり、lldbでattachしたりしてごにょごにょしていると、CrashReportというプロセスがあがってから処理が進まなくなっていることがに気づいた。


/var/log/system.logに怪しいログが。

May 21 07:23:01 MacBook-Air Compressor[514]: objc[514]: Class TSSandboxPrefs is implemented in both /Library/Frameworks/TSLicense.framework/Versions/A/TSLicense and /Library/QuickTime/Flip4Mac WMV Advanced.component/Contents/MacOS/Flip4Mac WMV Advanced. One of the two will be used. Which one is undefined.


Flip4Macを消してからCompressorを起動しなおして、やり直すと今度は別のログが。

May 27 07:54:57 MacBook-Air.local BlurayPublishingServer[4161]: *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSURL initFileURLWithPath:isDirectory:]: nil string parameter'*** Call stack at first throw:
   (snip)

May 27 07:55:02 MacBook-Air.local ReportCrash[4166]: Saved crash report for BlurayPublishingServer[4161] version 26245.5.45 to /Users/xxxxxx/Library/Logs/DiagnosticReports/BlurayPublishingServer_2015-05-27-075502_MacBook-Air.crash


なるほど、CrashReportってのがあるのね。



Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_BREAKPOINT (SIGTRAP)

Exception Codes:       0x0000000000000002, 0x0000000000000000


Application Specific Information:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSURL initFileURLWithPath:isDirectory:]: nil string parameter'
Application Specific Backtrace 1:

0   CoreFoundation                      0x92435373 __raiseError + 195
1   libobjc.A.dylib                     0x92880a2a objc_exception_throw + 276
2   CoreFoundation                      0x9243528d +[NSException raise:format:] + 141
3   Foundation                          0x99c0ee5d -[NSURL(NSURL) initFileURLWithPath:isDirectory:] + 126
4   Foundation                          0x99c1eb40 +[NSURL(NSURL) fileURLWithPath:isDirectory:] + 76
5   BlurayPublishingServer              0x00080e93 BlurayPublishingServer + 16019
6   libobjc.A.dylib                     0x9287e853 -[NSObject performSelector:withObject:] + 70
7   Foundation                          0x99c6568c __NSThreadPerformPerform + 389
8   CoreFoundation                      0x92341d4f __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 15
9   CoreFoundation                      0x923337dd __CFRunLoopDoSources0 + 253
10  CoreFoundation                      0x92332d12 __CFRunLoopRun + 994
11  CoreFoundation                      0x923326c6 CFRunLoopRunSpecific + 390
12  CoreFoundation                      0x9233252b CFRunLoopRunInMode + 123
13  Foundation                          0x99c6aaaa -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 305
14  BlurayPublishingServer              0x0007e8e6 BlurayPublishingServer + 6374
15  BlurayPublishingServer              0x0007e6bc BlurayPublishingServer + 5820
16  libdyld.dylib                       0x90ca86d9 start + 1


Thread 0 Crashed:: Dispatch queue: com.apple.main-thread0   com.apple.CoreFoundation            0x92435d07 ___TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION___ + 7
1   com.apple.CoreFoundation            0x92435689 __raiseError + 985
2   libobjc.A.dylib                     0x92880a2a objc_exception_throw + 276
3   com.apple.CoreFoundation            0x9233275b CFRunLoopRunSpecific + 539
4   com.apple.CoreFoundation            0x9233252b CFRunLoopRunInMode + 123
5   com.apple.Foundation                0x99c6aaaa -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 305
6   BlurayPublishingServer              0x0007e8e6 0x7d000 + 6374
7   BlurayPublishingServer              0x0007e6bc 0x7d000 + 5820
8   libdyld.dylib                       0x90ca86d9 start + 1



ファイルパスをチェックしたらnilだったということか。
coreファイルが吐かれていないので、詳細がわからない。

ここでTechnical Note TN2124Mac OS X Debugging Magicを見はじめる。

よしよし、ターミナルからcoreダンプできるように設定した環境でCompressorを起動してもう一回。


sudo chmod o+wx /cores
ulimit -c unlimited
/Applications/Compressor.app/Contents/MacOS/Compressor 


 あれ?coreができないぞ?sysctlかな?
MacBook-Air:~ xxxxxx$ sysctl -a|grep core 
kern.corefile: /cores/core.%P 
kern.coredump: 1 
kern.sugid_coredump: 0

uid 変えるプログラムとはおもえないけど、Compressorを再起動して試してみる。


sudo sysctl -w kern.sugid_coredump=1
でない・・。

Parent Process:        Create Disc [614]
ってことは、子プロセスにはulimitは引き継がれないのか。
launchdの設定をしてOS再起動。
sudo cat "limit core unlimited" >/etc/launchd.conf

今度は無事/coresにファイルができたので、lldbで中を見てみる。

ごにょごにょ・・・・


結論としては「〜」をmovファイル名に含めないようにしたら解決。
「8月9日〜9月3日」というようなファイル名を「8月9日から9月3日」にしてからは
再発しなくなった。




Wednesday, April 29, 2015

MBA2012で4kが映らなくなった

MBA2012にDPで繋いでいたDellP2415Qに何も表示されなくなった。
2008lateを繋いでも何も映らないので、HDMIで繋いだりしていろいろ切り分けた結果
モニタがおかしそうなので、Factory resetかけてコンセントを引っこ抜いて見た所、
映るようになった。
よかったよかったと安心したら4kで繋がらなくなっていた・・・。
PROMリセットとかplist編集とかしてみたが無駄だったので、あきらめてDisplayMenuを
導入。
http://displaymenu.milchimgemuesefach.de/

さっくりと4kで表示できるようになった。すばらしい!
ていうか標準がダメダメちゃんで外部ソフト入れないとつかえないなんて、
Windows3.1のころおもいだすわー。ないわー。

Wednesday, February 18, 2015

死ねyosemite。3度死ね。

MBA2012に10.10.2のアップグレードうっかり入れてHDMIアダプタもDVIも外部ディスプレイ(Dell 2001fp)で映らなくなりました。
10.10.2に汚されていない2008lateはどのアダプタでもちゃんとつながるからディスプレイとアダプタは生きてる。
海外のサイト漁って見る限りファームがやられたっぽいので、駄目元でMarvericksを
新規インストールしたり、SMCリセットやNVRAMリセットしたりしたけど無駄な抵抗。
奇妙なのが、MBA2012にHDMIアダプタつけてREGZAにつなぐとちゃんと映ること。
HDCP対応のディスプレイ買えってことかな。


(2014/02/23追記)
 Dell 2001fpをポイーしてDell P2415Qお買い上げで。近眼かつディスプレイアーム使っていれば24inch 4kでも十分そのままで使えるね。

Friday, January 09, 2015

REGZAの録画ハードディスク移行 Mac + VirtualBox

4年ほど使っている RegzaのUSBハードディスクで録画した番組が再生中に止まってしまう事象が目立ってきたので新しいハードディスクに移行することにしたら、思いの外、手がかかったのでメモ。

step1)
 古いUSBハードディスクをマイナスドライバで殻割りしてUSB3.0対応のケースに移設。

step2)
 古いハードディスクのディスクイメージを2つ格納できるサイズのUSBハードディスクを追加。Mac側から書き込めて、VirtualBox上のubuntuからマウントできるファイルシステムである必要があるので、FAT32でフォーマット。

step3)
 ddrescueをGNUのサイトから入手。

step4)
 Macのターミナルを起動し、diskutil listコマンドで接続されているディスクを確認。
USB3.0のケースに移した古いハードディスクをMacに接続し、
「セットしたディスクは、このコンピュータで読み取れないディスクでした。」というダイアログが表示されるのを待つ。ダイアログが表示されたら「無視」を押す。
この状態で再びdiskutil listコマンドを実行して先ほどの実行結果と比べると、増えている情報が、古い方のハードディスクである。(例えば/dev/disk2)

step5)
 古い方のハードディスクが/dev/disk2であるとしたら、これに対応するキャラクタデバイスのスライス1(この例では/dev/rdisk2s1)からddrescueを用いてディスクイメージを吸い出す。
 ディスクイメージを格納するためのハードディスクにcdしたあと以下のコマンドを実行。
  sudo ddrescue /dev/rdisk2s1 20150109regza.dd regza.log
キャラクタデバイスデバイスではなくブロックデバイスで読み出すこともできるが、7倍程度遅かったのでこちらを採用。

step6)
 吸い出したdiskイメージをVirtualBoxで認識可能な仮想ディスク形式に変更。

VBoxManage convertfromraw ../IODATA/20150109regza.dd 20150109regza.vdi --format vdi

step7)
 移行先となる新しいハードディスクをRegzaに接続し、初期化後、取り外す。
この操作で、Regzaが認識するXFSファイルシステムを作成する。

step8)
 新しいハードディスクをMacに接続し、「セットしたディスクは、このコンピュータで読み取れないディスクでした。」というダイアログが表示されるのを待つ。ダイアログが表示されたら「無視」を押す。diskutil  listコマンドを実行し、新しく増えたディスクの名前を確認する。(例えば/dev/disk 3)

step9)
 新しいハードディスクがUSB2.0の場合はVirtualBox上のubuntuから正常にアクセスすることができるが、USB3.0の場合エラーになるので、以下のコマンドでrawディスクとしてアクセスするための仮想ディスクを作成する。またVirtualBoxのプロセスから読み書きできるようにパーミッションを変更する。
 sudo VBoxManage internalcommands createrawvmdk -filename new1.vmdk -rawdisk /dev/disk3
sudo chmod 666 /dev/disk3* new1.vmdk

なお、仮想ディスクファイルの中にデバイス名などが埋め込まれているので、USBの 挿し替えや、挿す順番を変えると仮想デバイスファイルを新しい名前で作り直す必要がある。
同じ名前の仮想デバイスファイルで再作成すると、VirtualBoxが正しい仮想ディスクファイルではないというエラーを出す。

step10)
 VirtualBox上にubuntuをインストールする。注意点としてストレージはSCSIとして作成する。後続のステップで接続するディスクとの混同を抑止する目的。

step11)
 step6とstep9で作成した仮想デバイスファイルをその順番でVirtualBoxにインストールしたubuntuのストレージ設定からIDEデバイスとして登録する。この順序で/dev/sda,/dev/sdbとなるはず。

step12)
  VirtualBox上のubuntuを起動する。起動直後にfn-F12を押して、起動デバイス選択画面を表示し3を押すことでSCSIから起動する。

step13)
 rootでログインし、ubuntuのコンソール上で以下のコマンドを実行し、仮想ディスクが正しく 認識できていることを確認。
 dmesg | grep sd

step14)
 古いディスクのUUIDを確認し、保存。
 xfs_admin -u /dev/sdb
 xfs_admin -u /dev/sdb > oldUUID

step15)
 古いディスク側をマウント
 mkdir -p /mnt/old
 mount -o ro -t xfs /dev/sdb /mnt/old

step16)
 新しいディスク側をマウント
 mkdir -p /mnt/new
 mount -t xfs /dev/sda /mnt/new

step17)
 ファイルをコピー
 cp -Rp /mnt/old/.t* /mnt/new/.
 cp -Rp /mnt/old/* /mnt/new/.

step18)
同じUUIDのデバイスは同時にマウントできないので、古いディスクをアンマウント。
 umount /mnt/old

step19)
新しいディスクのUUIDを古いディスクの値に変更。
xfs_admin -U step14で読み出したUUID /dev/sda

step20)新しいディスクをアンマウント
 umount /mnt/new

これで
データ移行が完了。Regzaに付いている古いハードディスクを外して新しいハードディスクを接続。