翻訳した後、コメントファイルへインポートが難しかった

Googleスプレッドシートで翻訳するところまでは簡単だったが、翻訳したデータをGX Works2コメントファイルへインポートするところで苦労した。文字数を少なくするために、スペースを無くし単語の先頭は大文字に変換し、セミコロンやタブを入れた。

Notepad++を使用し、以下のような手順で処理した。

  1. CSVファイルをNotepad++で開く
  2. Ctrl+A Alt+Shift+U 全て選択
  3. 編集 →大文字/小文字変換→語頭は大文字、他は小文字(Proper Case)
  4. 半角スペースを空文字に置換。
  5. 先頭文字にセミコロンをつける。
  6. カンマを”\t”(セミコロン タブ セミコロン)に置換
  7. エンコード → UCS LE BOMへ変換
  8. 編集 → 改行コード変換 →Unix(LF)
  9. 名前を付けてCSVファイルに保存する。

CSVファイルについては取説を見ると以下のように定義されている。


下記に,CSV ファイルの詳細な形式について示します。
• ファイル形式はUnicode(UTF-16 Little Endian BOM あり)です。
• 項目間の区切りはタブ( \t) です。
• 各項目はダブルクォーテーション(“) で囲みます。
• 項目内にダブルクォーテーション(“) を含む場合,項目内のダブルクォーテーション(“) はダブル
クォーテーション2個(“”) で表します。
• 行の最後は改行を設定します。
改行コードはCR+LF です。
• 空白は通常文字として扱います

 

コメント一括翻訳について考えてみたらGoogle スプレッドシートが良かった

いきさつ

仕事の話。アメリカへ納入した装置のPLCコメントを1週間で英語にしてほしいと連絡があった。しかし、コメント数は重複があるが約6万行ある。あまりに膨大な量なので気が遠くなった。三菱PLCのグローバルコメントをCSV出力したので、ファイルはCSV形式。1コメント約1分。重複行は置換して行くとしても、普通に訳して入力していけばおそらく2ヶ月はかかるだろう思った。

解決策

Googleスプレッドシートには翻訳関数があることを発見した。コメントをスプレッドシートへ貼り付け。そしてコメントの右側に翻訳関数を入力。
=GOOGLETRANSLATE(A1,”ja”,”en”)
これは上記はセル”A1”を日本語から英語に翻訳せよという意味。

あとはこれを他のコメントの横にコピーする。簡単なやり方はセルを一度クリックして、右下の部分をしたに引っ張っていくだけ。

結果

翻訳の部分だけなら1時間もかからずに終了することができた。処理中は”Loading…”と表示される。コメント数が多いので少し時間がかかる。

ただしコメント文字数制限である32文字を越えてしまう部分もあるので、PLCコメントにした時に文字が切れてしまう。
翻訳が会っているかは信じるしか無い。もっともコメントは社内の人にしか伝わらないような専門用語もあるので、日本人に日本語のコメントを渡しても全部が理解できるとは思えない。お客さんにはGoogle翻訳を使って訳しましたと宣言することにした。また、操作パネルで表示している言葉と表現が違ってしまう単語もあるので、これも了承していただく必要がある。

今後

スプレッドシートの翻訳関数が非常に使えることが分かった。
翻訳したコメントはCSVファイルにして、CSVデータに戻す作業をするのだが、ここでだいぶ苦労した。

TP-Link スマートコンセントHS-105をAPIから操作(3)

昨日の続きでPython3で通信できるようにやってみた。まだPython2系が無くなったわけではないし、緊急性はなかったが、動作しないのを見たらどうしても直してみたくなった。ちなみにPythonバージョンは3.6.4。

実行してまず、実行エラーで引っかかったのはprint関数。
Python2 ・・・ print ‘文字列’
Python3 ・・・  print(‘文字列’)
これはすぐに分かった。
もう一つ大きなものは、文字列とバイト列の関係だ。変わったのはわかってたので、単純にbytes関数で変換したら、エラーは消えたが全く返答が帰ってこない。

わけが分からずに使っていたが、bytes()関数は大きさを指定してbytesオブジェクトを作る関数だったようだ。

bytes(10)
b’\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00’

Python3は文字列はデフォルトでUnicodeになって、その代りbytes型ができた。
下記のような感じである

PYTHON3PYTHON2
byte列bytes (b”)str (”)
通常の文字列str (”)str (”)

要するに文字列をbyte列に直せば良い。
変更箇所は下記の通り
まずは暗号化関数

整数をからbyte列に変換するにはto_bytes()関数を使用する。動作は下記の通り。

i=ord(‘a’)
i.to_bytes(1,’big’)
b’a’

Python3.2から使用可能。標準関数なのでimportする必要はない。
これがわかるまで結構時間がかかってしまった。
次に復号化

受信する時に、byte列で入ってくるので、Python2のようにord() 関数で整数に戻す必要がないので、記入としては減る方向になった。

無事にPython2のファイルと同じことができた。

TP-Link スマートコンセントをAPIから操作(2)

前回はnode.jsベースのtplink-smarthome-apiというAPIを試したが、まだまだ理解できていないし、テレビの見過ぎを防止するために時間をカウントして消すという方法ができそうにない。他にPythonベースのAPIを見つけた。

Reverse Engineering the TP-Link HS110

書いている内容が理解できないのは自分の英語のレベルが低いせいだけではない。タイトルにある通り、リバースエンジニアリングで解析しているとのことだ。やっていることはとても真似できそうにもないが、pythonで書かれているスクリプトは非常にわかりやすかった。

プラグへ通信データを送受信するときは0x85 (171)を先頭キーとして、暗号化しているとのことだ。また、スクリプトはPython2ベースとのこと。

コマンド名を入れるやり方とJSONで書くやり方2種類用意されている。
コマンド名指定で電源ON

$ python2.7 tplink_smartplug.py -t 192.168.0.2 -c on
Sent: {"system":{"set_relay_state":{"state":1}}}
Received: {"system":{"set_relay_state":{"err_code":0}}}
JSON指定で電源ON
$ python2.7 tplink_smartplug.py -t 192.168.0.2 -j '{"system":{"set_relay_state":{"state":1}}}'
Sent: {"system":{"set_relay_state":{"state":1}}}
Received: {"system":{"set_relay_state":{"err_code":0}}}

コマンドは以下のものがある。

CommandDescription
onTurns on the plug
offTurns off the plug
infoReturns device info
cloudinfoReturns cloud connectivity info
wlanscanScan for nearby access points
timeReturns the system time
scheduleLists configured schedule rules
countdownLists configured countdown rules
antitheftLists configured antitheft rules
rebootReboot the device
resetReset the device to factory settings
energyReturn realtime voltage/current/power

最後の項目にあるenargyなら、電流値を見てテレビがついているかわかるかと思ったが、HS105は対応していないらしい。

$ python2.7 tplink_smartplug.py -t 192.168.0.2 -c energy
Sent: {“emeter”:{“get_realtime”:{}}}
Received: {“emeter”:{“get_realtime”:{“err_code”:-1,”err_msg”:”module not support”}}}

ちなみにpyton3で試したら2と3との互換の関係でできなかった。原因がわかったらまた報告します。

TP-Link スマートコンセントHS-105をAPIから操作(1)

前回ためしたTP-Link スマートコンセントはタイマー機能では使えるようになったが、ONしている時間の累積時間で電源を切るという機能はなさそうだ。いろいろ調べていると、APIでがいぶから操作できることが分かった。メーカからではないがAPIを開発して公表している人がいた。

まず見つけたのは tplink-smarthome-api https://github.com/plasticrake/tplink-smarthome-api   Node.jsベースで開発していてgithubで公開している。まだパソコンにnode.jsをインストールしてなかったので下記手順に沿ってインストール。 https://qiita.com/kyosuke5_20/items/c5f68fc9d89b84c0df09

npm install -g tplink-smarthome-api  

でインストールができる。ヘルプを開くには  

tplink-smarthome-api --help  

detailsとかgetInfoとかで情報は出せた。   他にコマンドは

電源OnとOFF

$ tplink-smarthome-api sendCommand 192.168.0.2:9999 '{"system":{"set_relay_state":{"state":1}}}'
Sending to 192.168.0.2:9999...
response:
{ err_code: 0 }
lmjs $ tplink-smarthome-api sendCommand 192.168.0.2:9999 '{"system":{"set_relay_state":{"state":0}}}'
Sending to 192.168.0.2:9999...
response:
{ err_code: 0 }

時間を取得

$ tplink-smarthome-api sendCommand 192.168.0.2:9999 '{"time":{"get_time":{}}}'
Sending to 192.168.0.2:9999...
response:
{ year: 2018,
  month: 10,
  mday: 26,
  hour: 23,
  min: 12,
  sec: 44,
  err_code: 0 }

Adobe Acrobat Reader DC のものさし機能が便利

仕事では電気設計の仕事をしていて、設備のハード図を書いて、モータケーブルの長さを決めて手配することもしている。装置内のケーブルの長さはメカ設計に相談し、メカ設計がCADでケーブルをはわす経路の長さを測って教えてもらうのだが、メカ設計が忙しいときはなかなか聞きにくい。PDFベースの図面はもらっていてこれで何かできないかと探していたら、なんとPDFを見るのに使っているAdobe Acrobat Reader DCにものさしがあることが分かった。

使い方は簡単。ツールタブからものさしをクリックするとツールバーが表示されるのでものさしを選択するだけ。寸法線のところで計ってみると長さが全然違って表示された。縮尺が全然合ってないようだ。

そんな時は縮尺を合わせることもできる。測定タイプのツールバー以外のところで右クリックし、「測定比率と精度を変更」をクリックする。寸法測定中でも、右クリックをすれば3段目に表示される。ものさしツールを選択してないと表示しないので注意していただきたい。

右クリックメニューに「測定比率と精度の変更」がある

測定比率は電卓を使って計算する。図面上の表示寸法が300mmで、ものさしでの測定寸法が59.99mmなので単純に割り算をすればよい。300 ÷ 59.99 ≒ 5 。なので5と言う数値を入力する。入力欄がグレー色になっているので分かりにくいが入力することができる。計算結果が小数点の場合は小数点第5位まで入力できるので入力した方がよい。あまり小数点第1位ぐらいで四捨五入すると、正確な数値にならない。また、精度は1に設定。ここで細かく小数点まで表示してしまうと、切りのいい数字で表示されずに見ずらい。

測定比率と精度を変更ウィンドウ

実際に測定して確かめてみると正確に寸法が表示される。

測定結果

円も測定することが出来る。

ただ測るだけではなく、ファイルを保存すれば寸法線をそのまま保存することもできる。このやり方を見つけてからは、メカ設計の手を止めることもなくじっくりと測ることが出来るようになった。

TP-Link スマートコンセント HS105を試してみた

どうしても夜だらだらとテレビを見てしまう。しかし、なかなか自分でやめることができない。見過ぎたら自動的にテレビを見れなくする方法がないか考えていたところ、コンセントで自動的に電源を切る方法を思いついた。探してみるとスマートコンセントというものがあることを知った。

【Amazon Alexa認定取得製品】 TP-Link WiFi スマートプラグ 遠隔操作 直差しコンセント Echo シリーズ Googleホーム対応 音声コントロール コンパクト ハブ不要 3年保証 HS105

スペックは次の通り

  • Wi-Fi経由でスマホを使って設定する
  • スケジュールを組んでON/OFFできる
  • タイマー設定しOFFすることができる
  • Alexaでコントロールできる
  • 100VAC 50/60Hz 14A
    ( 電源容量は重要なスペックだと思うが商品が届くまでわからなかった。)

Amazonで購入し、次の日に到着した。設定は簡単。スマホでKasaをインストール。Wi-fiでコンセント本体に接続し、IPアドレスや名前を設定。そして家のWi-fiに接続しアプリを立ち上げれば、ON/OFFができたり、スケジュールが設定できる。スケージュールは平日は夜8時半にOFFし、毎日朝6時半にONするようにした。

やってみたら効果てきめん。テレビの見過ぎを防ぐことができた。

出来れば3時間連続で見たら、テレビを切るような感じにしたかったが、そういう機能は見つからなかった。

Kasa メイン画面
メイン画面
Kasa スケジュール画面
スケジュール画面

Apple漬けな生活

スマホはシャープSH03から始まり、HTC Butterfly, HTV31とずっとアンドロイドだったが、昨年iPhone SEに切り替えた。アンドロイドについては慣れているしiPhoneに比べて細かい設定ができることが気に入ってた。妻がずっとiPhoneを使っていたからiPhoneがどんな感じかは知っていた。

昨年末にiPhoneにした。理由はバッテリーの持ちだ。その時使っていたHTC HTV31 はハイエンドで機能は申し分ないが、バッテリーの消費は早かった。
夏休みに家族旅行でバンガローに止まった時に、コンセントがなかった。夕方ぐらいには30%切ったので、電源を切って過ごした。しかし妻のiPhone7はまだ70%ぐらいバッテリーがあり、2日間の旅行の間平気だった。

それがきっかけでiPhoneを検討することになり、冬にiPhoneX発売後に安くなっていたiPhone SEを購入した。

Androidのスマホ時代は朝順電満タンの何もしなくても昼ぐらいで半分近くに電池残量が減っていしまっていたが、iPhone は何もしなければほとんど減らない。しかし満タン状態からだと100%でいる時間がかなり長いから、満タンは120%ぐらいあるんじゃないかと思ってしまう。

タブレットも2年ぐらい前にauのお得プランにのってHuaweiのを手に入れたが、この夏iPadを手に入れた。

パソコンはMacbookを使って4年ぐらいたつ。US配列のキーボードで結構気に入っている。

現在仕事以外はapple漬けだ。

iPhoneに良いと思ったのがfacetimeだ。Lineやskypeのように専用ソフトが必要無いので、電話番号を登録してあれば、iPhone同士ネット経由で通話ができる。現地でお客さんと連絡する時にWi-fiに繋がっていればお金がかからない。

一度facetimeでやり取りすれば、SIMを入れ替えてもfacetime でやり取りができる。去年と今年はアメリカに出張することが多く、役に立った。

しかし最近驚いた。朝出勤前で慌ただしくしていたときだった。突然、iPhone、Macbook、iPadがすべて鳴り出した。アメリカにいるお客さんからの電話だった。iPhoneで電話に出たら、MacbookとiPadは鳴り止んだ。

MacbookとiPhoneの連携は素晴らしいが、電話がかかってくるとこんな感じになることは初めて知った。

「筋トレが最強のソリューションである」を読んで

ジムの一角に運動、食事などに関する本が5,6冊おいてある場所があり、その中に、「 筋トレが最強のソリューションである」とタイトルが目を引く本があった。文字数が少なく読みやすいので、すぐに読み終えることができた。

内容はざっくりいうと身の回りに起こる問題は筋トレをすれば解決するとの内容。ダイエットだけではなく仕事、恋愛、プライベートなど、さまざまな問題に対して解決できる。筋トレをすることで、適度に汗をかいてストレスが解消され、テストステロンというホルモンが分泌され自身が湧いてくるとのことらしい。

筋トレであっという間に解決する悩み ①「モテたい」→筋トレ、②「やる気が出ない」→筋トレ ・・・ 
みたいな感じで筋トレをすることがどれだけ素晴らしいかということがずっと書いてある。中には筋トレには関係無い割と哲学的なことも書いてあるところも良い。

あまりのインパクトに思わずKindleでダウンロードした。それでたまに読むと、やる気が出てくる。文字数が少ないのですぐに読み終わるところも良い。

悩んだら筋トレをやれと、割とふざけているよな内容だが、結構まとを得ているような気がする。筋トレをやると気分がハイになってくるのもわかる。
ジムへは何年も通ってはいるが、年々体重が増えている。仕事の忙しさを理由にあまりジムへ行けないことが多いからだ。どんどん筋トレをしていこうと思う。

XCYベアボーンキットにWindows10インストール(2)

Windows10を諦められない

DebianでやっていたがWindows10が諦められない。できないままで終わるのは嫌だ。それにWindowsのデスクトップアプリを試す環境がどうしても欲しい。前回は起動ディスクをUSBメモリーで作ったが、DVDにしてみてはどうか。イメージファイルをDVDに焼いてインストールすることにした。

イメージDVDを作成

MACでイメージファイルを焼くのはすごく簡単。外付けのDVDドライブを取り付けて、新しいDVD-Rをセットし、Finderでイメージファイルを右クリックして「ディスクイメージファイルを・・・.iso をディスクに書き込む」だけ。書き込みにかかる時間はUSBメモリーに作成するよりずっと早い。

XCYベアボーンへインストール

外付けDVDドライブを取り外し、そのままXCYベアボーンへ取り付け、F11を押しながら起動し、起動後、何かキーを押せばインストールが開始する。後はウィザードに従うだけ。思ったより簡単にできた。

Wi-Fiは問題なし

Debian 9で苦労したWi-Fiの設定はWindows10では全く苦労せずに設定できた。さすがWindowsだ。

画面が真っ暗に

しかし問題が起きた、一度シャットダウンして再び電源を入れたら、ログイン画面は表示するが、ログイン後に画面が真っ暗でマウスポインタだけ映るようになった。Ctrl+Shift+Delete メニューは問題なく表示する。調べてみるとグラフィックでエラーが出ているとのことだった。コントロールパネルのデバイス設定を見るとエラーになっていた。そのままドライバーを更新たところ解消した。次からはシャットダウンして立ち上げても全然問題なかった。

Macからリモートディスクトップ

Macからリモートデスクトップで接続して作業したかったので、Windows 以前使用したことがある、Remote Disktop Ver8で接続することを確認。しかし画像ファイルのコピペができないから使い勝手が悪いと思った。調べるとVer10では出来るらしい。早速ダウンロードして接続しようとしたが、ログインするところで接続できなかった。いろいろ調べて試してみた。結果的に言えば通常しているログインIDではなく、Windows ID でログインすることが出来た。 画像のコピペができることも確認した。