2015年9月26日土曜日

CH340 USBシリアルモジュールを使用するArduino互換機をMac OS X Yosemite(10.10)で使う

最近、電子工作にはまっています。
Arduino、、、は高いので互換機を作ったり買ったりしていると低価格化の為に純正ではないCH340と言うUSBシリアルモジュールを見かけます。 これは格安ですが、中国語でしか書いていないここからドライバーをインストールする必要が有ります。
USBモジュールは例えばちっちゃいものくらぶさんのこれ
CH340を内蔵したArduino Nanoは例えばこれ

手順は
  1.  ここからドライバーをダウンロード
  2. ダウンロードしたファイルCH341SER_MAC.ZIPをダブルクリックして展開
  3. システム環境設定 - セキュリティとプライバシー - ダウンロードしたアプリケーションの実行許可を「すべてのアプリケーションを許可」に変更
  4.  展開したフォルダ内のch34xInstall.pkgをダブルクリックしてインストール
  5. ターミナルで下記を実行
    •  sudo nvram boot-args="kext-dev-mode=1
  6. Macを再起動
これでArduino IDEから/dev/cu.wchusbserial410と認識されます。
う〜ん、疲れた。

2015年4月13日月曜日

Arduino Uno + WIZ820io

最近、ArduinoでIoTについて勉強しています。
簡単に言うとセンサーやモーターなどをインターネットに繋げる事です。
更にWeb技術で情報をやり取りしようと言うWoTが大きな話題になっています。

と言う訳でArduinoを買って来てEthernetに繋いでみました。

【材料 ハード編】
 繋ぎ方はWIZ820ioのマニュアルを見てもらうとして問題だったのはLibrary。
まずは公式サイトからlibrary_Arduino_v1_0.zipをダウンロードしても動かない。
次に公式サイトに書いてあるGithubからダウンロードしても動かない。
ググってここから辿ってダウンロードしたらArduino IDE 1.0.1との組み合わせでやっと動作した。

Arduino IDEがそんなに古いと他のライブラリとかが動かなかったりするのでゴニョゴニョ適当にパッチしてたら動くようになったのですが、ふと思いついて公式Githubを探してみるとWIZ_Ethernet_Libraryと言うのを発見! これで無事動作しました。

【材料 ソフト編】

2014年11月25日火曜日

Pentahoでパスワードの暗号化

パスワードなどはソースコードにも直接書きたくない場合には暗号化します。

Shellでは
./encr.sh -kettle your_password

Batchでは
Encr.bat -kettle your_password

「your_password」を暗号化された結果はこんな感じで出力されます。
Encrypted 2be98afb105d280bbbb18bd63c99dbdde

後はParameterに設定しても良いし、定義ファイルから読み取っても良いでしょう。

2014年8月15日金曜日

Pentaho Data Integrationでメモリー割当を増やす

環境変数に設定しても良いですがスクリプト、Batchファイルを修正する方法です。 Unix/Linuxの場合
  • kitchen.sh, pan.sh
    JAVAMAXMEM="2048"
    
  • spoon.sh
    PENTAHO_DI_JAVA_OPTIONS="-Xmx2g -XX:MaxPermSize=256m"
    
  • carte.sh
    JAVAMEMOPTIONS="-Xmx2048m"
    
Windowsの場合
  • Carte.bat, Kitchen.bat, Pan.bat
    if "%PENTAHO_DI_JAVA_OPTIONS%"=="" set PENTAHO_DI_JAVA_OPTIONS=-Xmx2048m
    
  • Spoon.bat
    if "%PENTAHO_DI_JAVA_OPTIONS%"=="" set PENTAHO_DI_JAVA_OPTIONS="-Xmx2048m" "-XX:MaxPermSize=256m"
    

2014年8月12日火曜日

Pentaho Data Integration 動的な実行

http://type-exit.org/adventures-with-open-source-bi/2011/03/write-etl-that-writes-etl-creating-crosstabs-with-kettle/


2014年8月10日日曜日

PerlでCGI

Get,Post,Putで渡されたパラメータを取得するPerlによるCGI
設定ファイルはwww.jsonに記入しておく。
受け取るパラメータは27~28行目のように取得する。
Apacheからのデータは以下の環境変数を介して受け取る。
  • REQUEST_METHOD:GET,PUT,POST,DELETEが入る
  • QUERY_STRING:GETの場合のパラメータ
  • CONTENT_LENGTH:PUTの場合のパラメータの長さ
Shellと違ってヒアドキュメント内にコマンドを書く事は出来ない模様。

#! /usr/bin/perl
use strict;
use warnings;
use utf8;
use File::Basename qw/basename dirname/;

my $DIRNAME = dirname $0;
my $BASENAME = basename $0;
my $CONF_FILE= "$DIRNAME/cgi.json";
if ( ! -e $CONF_FILE ) {
  print "Content-type: text/html\n\n ${CONF_FILE} could not be read.\n$!$@";
  exit;
}

my $CONFIG = do $CONF_FILE
  or die "${CONF_FILE} is could not read.\n$!$@";

my $PARMS = $ENV{'QUERY_STRING'};
my $METHOD  = $ENV{'REQUEST_METHOD'};
if ( $METHOD eq "POST" || $METHOD eq "PUT" ) {
  read(STDIN, $PARMS, $ENV{'CONTENT_LENGTH'});
}
my ($USER, $DATE);
for my $PARM ( split(/&/, $PARMS) ) {
  my ($KEY,$VAL) = split(/=/,$PARM);
  $VAL =~ s/%([0-9a-fA-F][0-9a-fA-F])/chr(hex($1))/ego;
  if ($KEY eq "user") { $USER=$VAL; }
  if ($KEY eq "date") { $DATE=$VAL; }
}

print << "END";
Content-type: text/html

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>$CONFIG->{title}</title>
  </head>
  <body>
    <div>Input parameters:$PARMS</div>
    <div>User:$USER</div>
    <div>Date:$DATE</div>
  </body>
</html>
END

外部定義ファイルcgi.jsonには以下の様に設定。
{
    title => "CGI Perl Test page"
}

Bourne ShellでCGI

Get,Post,Putで渡されたパラメータを取得するBourne ShellによるCGI
設定ファイルはcgi.configに記入しておく。
受け取るパラメータは18~19行目のように取得する。
Apacheからのデータは以下の環境変数を介して受け取る。
  • REQUEST_METHOD:GET,PUT,POST,DELETEが入る
  • QUERY_STRING:GETの場合のパラメータ
  • CONTENT_LENGTH:PUTの場合のパラメータの長さ
31行目はヒアドキュメント内でのコマンド例として無駄にechoしています。

#! /bin/sh
BASE_DIR=`dirname $0`
BASE_DIR=`cd ${BASE_DIR} && pwd`                   # Change to full path
BASENAME=`basename $0 | sed -e "s/\.[^.]*$//"`     #Except extension
CONFIG="${BASE_DIR}/cgi.config"
if [ ! -f "${CONFIG}" ]; then
  echo "Content-type: text/html"
  echo ""
  echo "<html><body>${CONFIG} is not found.</body></html>"
  exit
fi
. "${CONFIG}"

PARMS=`echo ${QUERY_STRING} | tr \& "\n"`
if [ "${REQUEST_METHOD}" = "POST" -o "${REQUEST_METHOD}" = "PUT" ]; then
  PARMS=`dd bs=${CONTENT_LENGTH} | tr \& "\n"`
fi
USER=`echo "${PARMS}" | grep user | cut -d= -f 2 | nkf --url-input`
DATE=`echo "${PARMS}" | grep date | cut -d= -f 2 | nkf --url-input`

cat <<END
Content-type: text/html

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>${CONFIG_TITL}E</title>
  </head>
  <body>
    <div>Input parameters
    <div>`echo "${PARMS}"`</div>
    <div>User:${USER}</div>
    <div>Date:${DATE}</div>
  </body>
</html>
END
定義ファイルcgi.configには以下のように設定。
CONFIG_TITLE="CGI Sheel Test"