Roombaバッテリー交換

昨年9月に互換バッテリーに交換した「ルンバ577」。

交換用バッテリ

珍しく純正ですが…何か?

毎晩定期運転+αで酷使していたところ、1年と持たず10ヶ月ほどでホームベースに戻れないようになってきた。

最初に買った「ルンバ560」のバッテリーが2年以上持った事を考えると、4500mAの大容量で半額以下と言えども10ヶ月しか持たないのでは互換品の方が安いとも言い難いので、今度は純正のルンバ交換用バッテリーを調達。

さすがに定価の1万円で調達できるほど優雅ではないが、Amazonや楽天だと純正品と思っても互換品が届く恐れも多分にあるので、14%OFF+10%還元で実質8,352円だったヨドバシから調達。

さて、どれくらい持つかな…

参照

ヨドバシ.com http://www.yodobashi.com/

アイロボット https://store.irobot-jp.com/

さくらんぼ

毎年のようにリピートしている丸勘山形青果出荷組合からサクランボ到着。

ピカピカ!

訳ありですが…何か?

3月に予約していつ発送されるかわからない「お任せ」の状態だったが、絶妙なタイミングで届いて広島でお祖母ちゃん達と一緒に食べる事ができました。

【訳あり】山形県産さくらんぼ佐藤錦1kgバラ詰だったが、どこに何の訳があるのか訳がわからないほど程度が良く、大変美味しかったよ。

また来年を楽しみにしましょう。

参照

丸勘山形青果出荷組合 http://www.rakuten.co.jp/marukans/

SAQ2 JAPAN

総務省が発表した「SAQ2(サクサク)JAPAN Project」サッカー日本代表、通称「ザックジャパン」関連の事かと思ったらさにあらず。

東京オリンピック/パラリンピックが開催される2020年を見据え、訪日外国人向けの無料Wi-Fi環境などを整備するためのアクションプラン…という事だが、真っ先に上げられたパブリックなWiFi環境や、プリペイド式SIMカードによるモバイル通信環境の整備というのは地方自治体や民間レベルで現実にどんどん展開されているので、今更政府が旗を振う必要がどこにあるのかと思う。

一方、INTERNET Watchの記事でも触れられている「外国人旅行者の“技適なし”端末の取り扱い」についてはナイスな着目で、確かに大出力で電波障害などを誘引する邪悪な無線装置などを排除する為に「技術基準適合証明」が必要というのは理解できるのだが、グローバルモデルの携帯端末でもいちいち日本独自の証明が必要というのはいかにも世知辛い印象でなんだか切ない。

日本の「技術基準適合証明」があったところで対応バンドや通信方式の違いがある(例えばmova端末はもう使えない)し、キャリアロックやSIMロックなどの妙な足枷もあるので、実際に通信ができるかどうかはまた別の話だ。

どうせならば外国人旅行者に限らず広く国民に喜ばれるよう、欧米の認証も国内のそれと同等と認めるとか、大胆な規制緩和を期待したい。

技適だけでなく、携帯電話への課税検討とかやってる暇あったら売上高の0.2%と激安に設定されているテレビの電波利用料とかも見直して欲しいね。消費税アップの一方で電波利用料下げ、改正電波法が成立 携帯会社の負担軽減とか、どう考えてもアンバランスでしょう。

TPPや集団的自衛権よりも、電波オークションを実現して国債を少しでも早く償還する方が優先だと思うのだけれど。

参照

INTERNET Watch http://internet.watch.impress.co.jp/

総務省 http://www.soumu.go.jp/

河野太郎公式ブログ ごまめの歯ぎしり http://www.taro.org/

総務省 電波利用ホームページ http://www.tele.soumu.go.jp/

Wikipedia http://ja.wikipedia.org/wiki/

オイル交換

これまた久々のTIIDAネタ。

Techno Power 0W-20 TP-L4101

Techno Powerですって!?

そういえば随分とオイル交換してなかった事に気付いてしまったので、慌てて閉店間際の**『ファミリーユサ』**福岡東店へ。

前回同様Castrolの部分合成油「Magnatec 0W-20 Super FE」にしようかと思ったのだが、Techno Powerの合成油0W-20 TP-L4101が気になった。

だって、SAE粘度0W-20タイプだと一般的には4,000円/4L以上するのに、エンジンオイル規格(API)で最も厳しいSNクラスをクリアしているにも関わらず、2,480円/4Lと圧倒的に安い。これを怪しいと言わずして何を怪しいと言えばいいだろうか。

とは言え時間が無かった事もあり、最終的にはご贔屓の**『ファミリーユサ』**がそんなに酷いものは取り扱わないだろうと信じてチョイス。

オイル以外も含めて『Techno Power』というブランドには全く馴染みが無かったのだが、帰ってから調べてみたところ、なんと創業100年を越えたエンパイヤ自動車株式会社のプライベートブランドだそうだ。

そういえば数年前からカー用品の取り扱いを大幅に縮小し、ほぼバイク用品専門店と化している**『ファミリーユサ』**福岡東店。いよいよ2Fフロアも閉鎖されて1Fフロアのみでの販売となっていた。Webサイトもhttp://www.yusayusa.co.jp/が閉鎖され、送料不要で店頭渡し&取付ができる店舗受取サービスも始めた【楽天市場店】【Yahoo!ショッピング店】に集約されてしまったよ…と思ったらhttp://www.yusayusa.com/にドメイン変更&リニューアルして継続。BIKE7SEVEN 太宰府店ライコランド福岡マリナ店ナップス福岡店の進出にも負けずに頑張っている、地元北九州で昭和40年に創業した老舗を応援したい。

ちなみに先週末に交換したMICHELIN PILOT POWER 2CTが5,000円以上、METZELER Sportec M3が更に安かった。

いつの間にやらジャパンライダーズショップアソシエーションhttp://www.jrsa-net.com/なんて組織もできてますな。

参照

エンパイヤ自動車株式会社 http://www.empire.co.jp/

カー用品・バイク用品のことなら『ファミリーユサ』 http://www.yusayusa.com/

豊富な品揃えと安心・信頼のショップJRSA http://www.jrsa-net.com/

GPSトラッカー

待望のSIMフリーのGPSトラッカーTR-313Jが発売されたので早速調達。税込24,948円也。

左からGT-120、TR-313、DG-100

GPSデバイス御三家

ちょうど2008年のDG-1002009年のGT-120の間くらいのサイズだが、これで3G通信モジュールを内蔵。しかもFOMAプラスエリア対応でSIMフリーと来れば死角無し。手持ちのBB.exciteモバイルLTEもAPN設定をするだけで問題無く使えた。

ちなみにAPN等のプロバイダ情報はUSBで接続したWindowsのezToolユーティリティから設定する必要がある。説明書には

電源ボタンを押し、電源ランプを赤く点滅させます。

と書いてあるが「電源ボタン」は長押しでなくワンタッチ。インジケータが一瞬赤くなったかな?という程度で良い。Windows 7が新しいUSBデバイスの接続を検出し、「STM32 Virtual COM Port」と認識してくれるのでセットアップウィザードに従ってWindows Updateからドライバを導入すればOKだ。

しかし、ハードウェア用に推奨されるドライバーや更新プログラムを自動的に取得する機能を有効にしていなかったので、いつまで経ってもezToolユーティリティがCOMポートを認識せずに困ったけれどもな。

ちなみに5分間隔の設定でトラッキングさせてみたところ、朝9時から19時過ぎまで10時間ほどの稼動でバッテリー残量は43%となったので、まぁ実働1日というところか。

位置情報はWebブラウザからezfinderにアクセスする事で"現在位置"と"履歴"が確認出来るが、ezToolユーティリティから本体に設定する「レポート間隔」というのは「GPS情報の採取」と「アップロード」の両方を含むようだ。つまり、ビル陰や電車の移動などで偶々そのタイミングでGPSを捕捉できない"おしい状況"だった場合でも、ずっと地下街に籠っていた"絶望的な状況"と同じ結果になるという事だ。

また仕様に「ログ記録件数」の記載が無かったのが引っかかっていたのだが、後からUSBで接続して航跡ログを吸い上げるという事もできないようなので、どうやら内部ではトラッキングログは全く保存されていないものと推察される。…という流れを纏めると、航跡ログの粒度は最高でも「レポート間隔」。不幸にして**“GPSの捕捉”“モバイル通信”**のいずれか一方でも失敗すれば当該セクタの位置情報は完全に失われる為、粒度は低めに推移しそうな予感。

GlobalSat製なのでDG-100のような洗練されたGPSロガーに"オンライン機能が付加された"ものを期待したのだが、みまもりケータイあんしんGPSと同様に**“オンライン専用”**という思想だったというのは少なからず期待外れ。

【訂正】みまもりGPS旅行やジョギングのルートを記録できるそうなので、どうやら航跡ログが採れるらしい。

このままでは何とも使い道が微妙なので、まずはTraccarには対応させ、ezfinder無償版の履歴(航跡)が1日分しか見られない問題くらいは乗り越えたい。

ところで、GT-120はいつまで経っても充電が終わらないのだが、ついに内蔵バッテリーが死んでしまったかな…

参照

INTERNET Watch http://internet.watch.impress.co.jp/

GPS受信機とロガーの通販【GPSDGPS】 http://www.gpsdgps.com/

3G/GPSトラッカーサイト http://www.trackers.jp/

MobileAction日本正規代理店 http://www.i-gotu.jp/

GlobalSat http://www.globalsat.com.tw/

ezfinder Tracking Portal http://www.ezfinder.com.tw/

Traccar - open source GPS tracking system http://www.traccar.org/

児童ポルノ禁止法改正

昨年書いた「児童ポルノ禁止法改悪案」。マスコミが「集団的自衛権」を巡る自公の攻防ばかりに目を奪われている隙に6月5日の衆院本会議に続いて「捜査権の濫用防止」等の附帯決議と共に参議院法務委で可決された。

漫画やアニメ、CGについては対象外になったのは良かったが、「みずからの性的好奇心を満たす目的」って捜査当局はどうやって立証するつもりなんだろうか?

「単純所持の罰則適用」については「国際社会からの批判」を理由にしている事からも、やっぱり「子どもを守るという視点」を欠いた大人の事情だけが後押ししているような印象を受ける。

育児放棄や虐待で生命の危機に瀕している子供達に手を差し伸べる方がよほど先だと思うのだが…

参照

ITmedia ニュース http://www.itmedia.co.jp/news/

弁護士ドットコム http://www.bengo4.com/

NHKニュース http://www3.nhk.or.jp/news/

参議院議員 山田太郎 http://taroyamada.jp/

ハフィントンポスト http://www.huffingtonpost.jp/

fplug_for_linux

先日導入したgoto2048/fplug_for_linux

F-PLUG

F-PLUG

ゴミデータっぽい値が採れたりしたので改修にトライしていたが、シリアル通信のパラメータやリトライ手順など地道にプロトコル実装を固める事で、1週間以上連続で安定して(ペアリングも解除されずに)計測できる事を確認した。

ポイントとしては

RTS/CTSによるフロー制御 Rawモード送信 非カノニカル受信 応答が無い場合は要求を再送信

で、最終版のfpstatusは以下の通り。

#include <stdint.h>
#include <errno.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <termios.h>
#include <unistd.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include "fplug.h"
#undef  DEBUG
#define ENOTCONN_RETRY_MAX      10
#define MSG_RETRY_MAX           5
#define FPLUG_EXEC(fd,msg,buf)  fplug_exec((fd),(msg),sizeof((msg)),(buf),sizeof((buf)))
typedef unsigned char uchar;
static uint16_t tid = 0x0001;
void hunt_tid(uchar *buf)
{
    *(uint16_t *)&buf[2] = tid++;
}
typedef uchar uchar;
static void dump_message( char *mes, uchar *buf, int size  )
{
#ifdef DEBUG
    int cnt;
    printf( "%s", mes );
    for ( cnt=0; cnt<size; cnt++ ) {
        printf( "%02X,", buf[cnt] );
    }
    printf( "\n" );
#endif
    return;
}
int fplug_exec(int fd, uchar *req_msg, size_t req_len, uchar *res_buf, size_t bufsiz)
{
    struct timespec tmspec = { 0, 1000 * 1000 };
    int ret, i, j;
    uchar req_buf[BUFSIZ];
    memcpy(req_buf, req_msg, req_len);
    for (i = 0;i < MSG_RETRY_MAX; i++ ) {
        hunt_tid(req_buf);
        dump_message( "Command:", req_buf, req_len);
        for (ret = j = 0;j < ENOTCONN_RETRY_MAX; j++ ) {
            ret = write(fd, req_buf, req_len);
            if ( ret == req_len )
                break;
#ifdef DEBUG
printf("%s:%d; write()=%d,errno=%d\n", __FILE__, __LINE__, ret, errno);
#endif
            switch ( errno ){
            case ENOTCONN :
                tmspec.tv_nsec = 500 * 1000 * 1000;
                nanosleep(&tmspec, NULL);
                break;
            }
        }
        if ( ret <= 0 )
            break;
        for (j = 0;j < MSG_RETRY_MAX && !(ret = read(fd, res_buf, bufsiz)); j++ ) {
            tmspec.tv_sec = 0;
            tmspec.tv_nsec = (j+1) * 100 * 1000 * 1000;
            nanosleep(&tmspec, NULL);
        }
        if ( ret <= 0 ){
#ifdef DEBUG
printf("%s:%d; read()=%d,errno=%d\n", __FILE__, __LINE__, ret, errno);
#endif
            continue;
        }
        dump_message( "read:", res_buf, ret );
        if (4 < ret && !memcmp(req_buf, res_buf, 4)){   // TID match
#ifdef DEBUG
printf("%s:%d; read()=%d\n", __FILE__, __LINE__, ret);
#endif
            return ret;
        }
    }
    return -1;
}
int fplug_main( int fd, int mode )
{
    int cmd;
    int cnt;
    int ret;
    int i=0;
    uchar buf[BUFSIZ];
    uchar *szMode, szResult[BUFSIZ];
    time_t timer;
    struct tm *t;
    strcpy(szResult, "x");
    szMode = szResult;
    switch(mode) {
    case 'h':
        szMode = "FP_HUMID";
        for ( i = 0; i < MSG_RETRY_MAX && 0 < (ret = FPLUG_EXEC(fd, Humid, buf)); i++ ){
            uint16_t a = *(uint16_t *)&buf[ret-2];
            if ( 100 < a )
                continue;
            sprintf(szResult, "%d", a );
            break;
        }
        break;
    case 'i':
        szMode = "FP_ILLUM";
        for ( i = 0; i < MSG_RETRY_MAX && 0 < (ret = FPLUG_EXEC(fd, Illum, buf)); i++ ){
            uint16_t a = *(uint16_t *)&buf[ret-2];
            if ( 0xFFFD < a )
                continue;
            sprintf(szResult, "%d", a );
            break;
        }
        break;
    case 't':
        szMode = "FP_TEMP";
        for ( i = 0; i < MSG_RETRY_MAX && 0 < (ret = FPLUG_EXEC(fd, Temp, buf)); i++ ){
            int16_t a = *(int16_t *)&buf[ret-2];
            if ( a < -100 || 500 < a )
                continue;
            sprintf(szResult, "%.1f", (float)a / 10);
            break;
        }
        break;
    case 'w':
        szMode = "FP_WATT";
        for ( i = 0; i < MSG_RETRY_MAX && 0 < (ret = FPLUG_EXEC(fd, RWatt, buf)); i++ ){
            int16_t a = *(int16_t *)&buf[ret-2];
            if ( 2000 < a )
                continue;
            sprintf(szResult, "%.1f", (float)a / 10);
            break;
        }
        break;
    default:
        szMode = "FP_unknown";
        break;
    }
    printf( "%s=%s;", szMode, szResult);
}
int main(int argc, char *argv[])
{
    int fd, opt;
    struct termios oldtio, newtio;
    char cmdbuf[16];
    char *cmd = cmdbuf, *cmd_all = "with";
    memset(cmdbuf, 0x00, sizeof(cmdbuf));
    while ((opt = getopt(argc, argv, cmd_all)) != -1) {
        switch (opt) {
        case 'w':
        case 'i':
        case 't':
        case 'h':
            *cmd++ = tolower(opt);
            break;
        default: /* '?' */
            fprintf(stderr, "Usage: %s [Options] device\nOptions\t-w\tPower consumption(W)\n\t-i\tIlluminance\n\t-t\tTemperature\n\t-h\tHumidity\n", argv[0]);
            exit(EXIT_FAILURE);
        }
    }
    if ( argc <= optind ){
        fprintf(stderr, "Usage: %s [Options] device\nOptions\t-w\tPower consumption(W)\n\t-i\tIlluminance\n\t-t\tTemperature\n\t-h\tHumidity\n", argv[0]);
        exit(EXIT_FAILURE);
    }
    fd = open(argv[optind], O_RDWR);
    if ( fd < 0 ){
        perror(argv[optind]);
        return 0;
    }
    if ( !cmdbuf[0] )
        strcpy(cmdbuf, cmd_all);
    tcgetattr( fd, &oldtio );
    newtio = oldtio;
//  newtio.c_cflag = B9600 | CS8 | CLOCAL | CREAD;
    newtio.c_cflag = B9600 | CS8 | CLOCAL | CREAD | CRTSCTS;
    newtio.c_oflag = 0;         /* Rawモード出力 */
    newtio.c_lflag = 0;         /* 非カノニカル入力 */
    newtio.c_cc[VTIME]=0;       /* キャラクタ間タイマは未使用 */
    newtio.c_cc[VMIN]=0x00;     /* ブロック受信しない */
    tcflush(fd, TCIFLUSH);
    tcsetattr(fd, TCSANOW, &newtio);
    for ( cmd = cmdbuf; cmd && *cmd; cmd++ )
        fplug_main(fd, *cmd);
    printf( "\n");
    tcsetattr(fd, TCSANOW, &oldtio);
    close(fd);
    return 0;
}

これで期待通りにデータが採れるようになった。

納税証明書

昨日のF800ST車検入庫に際して慌てたのが「納税証明書」。

納税証明書

納税証明書

先月の自動車諸税の納付に際して、F800STだけ「納付書&納税証明書」が無い事に気付いた。「納税通知書」をよく見たら「口座振替加入者用」と書いてあるので、5月には「納付書」を省いた「納税通知書」だけしか届かず、「納税証明書」は引き落としの後で別途郵送という段取りのようだ。

6月2日に口座から引き落とされているので1週間ほどで「納税証明書」が郵送されるだろうと期待していたのだが、10日になっても届かないので12日に区役所へ出向いて「納税証明書」を発行して貰い、昨日のF800ST車検入庫にやっと間に合った。

同じ市町村税の住民税や固定資産税のついでに「口座振替」にしちゃったのだが、TIIDAの方は「納付書」ベースなのでコンビニに行かずに済むワケでも無く、なんだか余計な手間だけが増えて本末転倒な結果に。

全く以て自分の考慮が足りなかったと言わざるを得ないのだが、当局は何かおかしいと思わないのかな?

そういえば3月に書いた子育て世帯臨時特例給付金だが、福岡市から具体的な手続きが案内されている。

申請先は,原則平成26年1月1日において住民登録がされている市町村です。 福岡市においては,6月30日(月曜日)に申請書を発送し,7月1日(火曜日)から申請受付を開始します。 申請書が届きましたら,必要事項を漏れなく記入し,必要書類を貼付のうえ,同封の返信用封筒を郵送していただくか,各区役所・出張所の窓口にご提出ください。

との事なので、取り敢えず申請書を心待ちにしてていいですか?

参照

福岡市 http://www.city.fukuoka.lg.jp/

厚生労働省 http://www.mhlw.go.jp/

エフハチ

久々のF800STネタ。

ツルツルテカテカ!

Pilot POWER 2CT

2012年の前回車検で「遠出の前には替えておいた方がいいですね」と言われていたタイヤをようやく交換。

という事で、昨日久々のバイクタイヤ専門店ランドナー香椎へ。気付いたら6年以上のご無沙汰だったので、毎年のようにタイヤを替えていたCB400SF時代の昔話に花が咲いた。

ここ4年でわずか1000kmほどしか走ってなかったかぁ…という思いはさておき、スポーツツーリングモデルの「MICHELIN PILOT ROAD」からハイグリップモデルの「PILOT POWER 2CT」、通称PP2CTにチェンジして、気分一新!

PILOT POWER 2CT(F:120/70 ZR17、R:180/55 ZR17)のセット。工賃込みの総額で**\45,780**也。

というわけで、本日満を持してFREEMANに車検入庫。

参照

九州,福岡の激安バイクタイヤ交換専門店,ランドナー http://www.landner.jp/

FREEMAN http://www.freeman.bmw-motorrad.jp/

MICHELIN http://motorcycle.michelin.co.jp/

Wikipedia http://ja.wikipedia.org/wiki/

RFC2616 is Dead

HTTPの標準規格が15年ぶりに改訂、文書を6分割し改善仕様を盛り込むという記事に触発され、RFC-Editor Webpageを見て卒倒しそうになった。

Hypertext Transfer Protocol

en.wikipedia.orgより

RFC 7230 - (HTTP/1.1): Message Syntax and Routing RFC 7231 - (HTTP/1.1): Semantics and Content RFC 7232 - (HTTP/1.1): Conditional Requests RFC 7233 - (HTTP/1.1): Range Requests RFC 7234 - (HTTP/1.1): Caching RFC 7235 - (HTTP/1.1): Authentication RFC 7236 - Initial Hypertext Transfer Protocol (HTTP) Authentication Scheme Registrations RFC 7237 - Initial Hypertext Transfer Protocol (HTTP) Method Registrations RFC 7238 - The Hypertext Transfer Protocol Status Code 308 (Permanent Redirect) RFC 7239 - Forwarded HTTP Extension 合わせて10本はなかなかのボリュームで目眩がする。