先日行われた『ゆかり公式生放送を見る忘年会』にてこんなレシートを作ってみました。
割烹着ゆかりさんのお店...割烹ゆかり。そのままですね。
会場が和室だったので「それならやるしかないやん!」って思いつきでサーマルプリンタを買って使ってみたところ案外使えました。
買ったのはコレ↓
Aibecy POS-5805DD USBサーマルプリンタ
USB接続だけで良いならもう少し安いものがありますが、Bluetoothに対応していたこととバッテリ内蔵、あと見た目がこっちのほうが良いという点で選びました。
型番で調べてみると一応日本語も印刷できるっぽい、程度の認識で購入したので思い通りに印刷できるようになるまで苦労するorダメかもと思っていました。
ところがWindows用ドライバを使ってみるとInkscapeから直接印刷できて拍子抜けしてしまう程簡単でした。導入まで一癖あるのでメモを残しておきます。
USB接続の場合、サーマルプリンタの電源をONにして、PCに接続。デバイスマネージャーに"プリンターが接続されていません"と表示されることを確認します。
Bluetooth接続の場合、プリンタの電源を投入。まずはペアリングを行います。
BluetoothPrinterを選択。PINは1234
Bluetooth設定を開いて方向が発信のCOMポート番号を確認。この場合COM5。
amazon商品ページ説明欄からドライバをダウンロードして実行。
Portsに確認したCOMポート番号を選択して、OSはWindows10、Select PrinterはPOS-58を選択してBegin Setupをクリック。
そしてCOM(232C)接続...
電圧を確認したところTTLレベルではなく、±5.4Vが出ているので232Cレベル変換が必要です。
そしてピンアサインは下記の通り。マニュアルに載っておらず、調査したものです。
1:GND
2:TXD(プリンタからの出力)
3:RXD(プリンタへの入力)
4:???
1番にGNDがあることによって、USBとCOM両方を同じPCのUSBポートに接続すると+5VとGNDがショートするという恐ろしい仕様になっております。
通信仕様はボーレート115200bps,データ8bit,ストップ1bit,パリティなし
FRDM-K64Fボードと232Cレベル変換ICを介して接続してみたところうまく動きました。
使わせて頂いたソースはこれ。
https://os.mbed.com/users/aross34/code/Thermal_HelloWorld/
AdafruitThermal.cppの29行目のボーレートを115200に変更して動作しました。
ただし一部のコマンドが動いていないようで、真ん中あたりのLarge,Midium,smallはそれぞれ文字の大きさが変わるようですが、変わっていません。
Android端末からBluetoothで印刷する場合、ペアリングを行うところまでは普通のbluetoothデバイスと同じです。印刷はサーマルプリンタ用アプリを使用します。
画像を印刷するだけであれば iPrint が簡単かつ綺麗に印刷できました。
2017年12月28日木曜日
2017年12月27日水曜日
ルータをRT-AC68Uに更新してDDNS更新させるようにした
先日のamazonサイバーマンデーでASUSのルータ『RT-AC68U』がちょっとお安くなっていたのでポチっちゃいました。今まで使ってたNECのAtermWG1800HPが時々再起動しないといけなかったりしたので替え時でした。
11ac対応してりゃいいや、レビュー悪くなさそうだし、2系統WAN使えるユニークな機能もあるやんくらいの認識で、買ってから気づいたのですがこのルータ、SSHで中のLinux触れるようになってました。
それなら今までバッファローのNAS『LS410DX』のLinuxでやっていたDDNS更新をやらせたろ!ということでやってみました。アップデートあるたびにHDD抜いて中のLinuxに潜れるようにってやるの面倒だしね。
ASUSが提供するDDNS使いたかったけど、振られたIPをDDNS更新に使うが、au光のHGWからルータへはローカルIPが振られるため使えない環境です。
なので外部へグローバルIPを確認しに行き、そのIPでieserver.netのDDNSを更新するようにしました。
SSHを有効にする設定は”管理”のシステムタブから。ポートはLANオンリーでも一応変えておく。(そして時間経つと変えたことを忘れて入れねー!ってなりそう)

接続はいつものTeraTermで。ユーザー名とパスワードは管理画面に入るものと同じ。

こちらのブログ記事によると起動時に①USBマウント時に実行されるスクリプトを作成、設定して、②crontabに直接書き込んで定期的に実行する方法があるらしい。
How to schedule cron jobs on an ASUS wireless router
ただcrontabへ書き込むところまではできるものの、実行されない...。
なのでUSBマウント時に実行されるスクリプトから直接watchコマンドで定時実行するようにした。
下記2つのシェルスクリプトを作って...
watch.sh
USBマウント時のスクリプトに設定。
ルータに手頃なUSBメモリつないで再起動。
ログ参照するとマウント後にスクリプトを実行しています。
11ac対応してりゃいいや、レビュー悪くなさそうだし、2系統WAN使えるユニークな機能もあるやんくらいの認識で、買ってから気づいたのですがこのルータ、SSHで中のLinux触れるようになってました。
それなら今までバッファローのNAS『LS410DX』のLinuxでやっていたDDNS更新をやらせたろ!ということでやってみました。アップデートあるたびにHDD抜いて中のLinuxに潜れるようにってやるの面倒だしね。
ASUSが提供するDDNS使いたかったけど、振られたIPをDDNS更新に使うが、au光のHGWからルータへはローカルIPが振られるため使えない環境です。
なので外部へグローバルIPを確認しに行き、そのIPでieserver.netのDDNSを更新するようにしました。
SSHを有効にする設定は”管理”のシステムタブから。ポートはLANオンリーでも一応変えておく。(そして時間経つと変えたことを忘れて入れねー!ってなりそう)
接続はいつものTeraTermで。ユーザー名とパスワードは管理画面に入るものと同じ。
こちらのブログ記事によると起動時に①USBマウント時に実行されるスクリプトを作成、設定して、②crontabに直接書き込んで定期的に実行する方法があるらしい。
How to schedule cron jobs on an ASUS wireless router
ただcrontabへ書き込むところまではできるものの、実行されない...。
なのでUSBマウント時に実行されるスクリプトから直接watchコマンドで定時実行するようにした。
下記2つのシェルスクリプトを作って...
bootinit.sh
#!/bin/shlogger watch.sh_Start
/jffs/bootinit/watch.sh &
watch.sh
#!/bin/sh
watch -n 1800 -t /jffs/bootinit/ieserver.sh
USBマウント時のスクリプトに設定。
nvram set script_usbmount=/jffs/bootinit/bootinit.sh
nvram commit
ルータに手頃なUSBメモリつないで再起動。
ログ参照するとマウント後にスクリプトを実行しています。
Dec 27 23:24:54 disk monitor: be idle
Dec 27 14:24:56 usb: USB vfat fs at /dev/sda1 mounted on /tmp/mnt/sda1.
Dec 27 14:24:56 *****: watch.sh_Start
Dec 27 14:24:57 rc_service: hotplug 736:notify_rc restart_nasapps
Dec 27 23:24:57 iTunes: daemon is stoped
Dec 27 23:24:57 FTP Server: daemon is stoped
Dec 27 23:24:58 Samba Server: smb daemon is stoped
Dec 27 23:24:58 kernel: gro disabled
Dec 27 14:24:58 *****: DNS Update done
Dec 27 23:24:58 Timemachine: daemon is stoped
Dec 27 23:24:58 miniupnpd[725]: shutting down MiniUPnPd
2017年8月14日月曜日
サンコーのネック冷却クーラーにヅラ毛が絡まった
隙間から毛を抜いてみたものの、回転しなくなっていたため分解しました。
まず冷却面の黒いネジ3箇所を外します。
ファンを固定しているネジ2本外して
取れました。あちゃー。
絡まっていた毛を取り除いて電源ON。回りました。交換せずに済んでよかった。
で、戻そうとした矢先に内部の配線が気になりました。
ファンの他に赤線1本、黒線3本あるのです。
内側の冷却面のネジ2本も外してみると、首のアルミ材に温度センサと思わしきものが熱伝導グリスと共に入ってました。
白く厚いペルチェ素子に配線が赤と黒1本ずつ。
恐らく残り1本は放熱側にペルチェ素子があり、冷却側と直列に接続していると思われます。
2017年1月3日火曜日
Pushbullet+自前デバイスでプッシュ通知を受け取る
Pushbulletを使ってプッシュ通知をスマホ等へ送る例は見当たりますが、逆にプッシュ通知を受け取る例がなかったのでやってみました。
-なんでこんなことを?
ホームオートメーションやりたくなりまして、IFTTTやLINE BOTなどといったスマホへプッシュ通知送れるwebサービスを利用して楽しつつ、やりたいことを実現するためには以下3点の要件を満たす必要がありました。ワガママですね。
websocketでイベント受信→チャットテキストを取得するデモをnode.jsとpushbullet-bashを組み合わせて書いてみました。ラズパイ3上で動作しました。
スクリプトとフォルダ配置はこんな感じで。
~/.config/pushbulletはpushbullet-bashがAPIキーを参照するのでAPIキーを記述すること。
~/
├ .config/pushbullet
└ pushbullet/
├ pushbullet-bash/
└ script/
├ pushbullet_websock.js
└ getLastPush.sh
テキスト送るとこんな感じ。
-なんでこんなことを?
ホームオートメーションやりたくなりまして、IFTTTやLINE BOTなどといったスマホへプッシュ通知送れるwebサービスを利用して楽しつつ、やりたいことを実現するためには以下3点の要件を満たす必要がありました。ワガママですね。
- Android・iOS・PCのマルチプラットフォーム対応
- 自前デバイス(Linux鯖など)からプッシュ通知を送れる
- 逆にAndroid等からチャットを送れる
websocketでイベント受信→チャットテキストを取得するデモをnode.jsとpushbullet-bashを組み合わせて書いてみました。ラズパイ3上で動作しました。
スクリプトとフォルダ配置はこんな感じで。
~/.config/pushbulletはpushbullet-bashがAPIキーを参照するのでAPIキーを記述すること。
~/
├ .config/pushbullet
└ pushbullet/
├ pushbullet-bash/
└ script/
├ pushbullet_websock.js
└ getLastPush.sh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /bin/sh | |
getIden=$(echo $("$PROGDIR"../pushbullet-bash/pushbullet pushes recent) | grep -o -E '([A-Za-z0-9]{22})') | |
#iden表示 | |
#echo $getIden | |
if [ -z $getIden ]; then | |
#testコマンドオプション-z:文字列長が0ならば真 | |
echo "not pushes receved" | |
else | |
#受信したテキスト表示 | |
getBody=$(echo $("$PROGDIR"../pushbullet-bash/pushbullet pull $getIden) | tr '{' '\n' | tr ',' '\n' | grep \"body\" | cut -d'"' -f4) | |
echo $getBody | |
fi |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const pushbullet_apikey = '--your pushbullet API key' | |
var WebSocket = require('ws'); | |
var ws = new WebSocket('wss://stream.pushbullet.com/websocket/'+pushbullet_apikey); | |
var exec = require('child_process').exec; | |
ws.on('message', function(data, flags) { | |
console.log('received: %s', data); | |
if( data.match("push") ) { | |
exec('./getLastPush.sh', function(err, stdout, stderr){ | |
if (stdout) { console.log(stdout); } | |
}); | |
} | |
}); |
テキスト送るとこんな感じ。
おしおし、websocketでpushbulletから通知もらって、そこからチャットの内容取りにいけた。これでPC・android・iOS+自前のデバイスで双方向にチャットのやりとりできる。 pic.twitter.com/hbrXesk8pK
— エン.129 (@en129) 2017年1月3日
登録:
投稿
(
Atom
)