headAD

2018/11/08

熱気球 鈴鹿のmapを作る

11月23日から11月25日まで熱気球の鈴鹿バルーンフェスティバル2018が開催されます。
佐賀大会と同じように、事前に自分用のGARMIN製ハンディGPSのJNXファイル形式の地図を作ります。

マップを切り出すときの経度・緯度を忘れるので、ここに張り付けておきます。備忘録ですね。

詳細は、前回佐賀のこことかもっと前のここをご参考ください。

さて、鈴鹿でのゴールリスト全体を括ると、南東部の海や北西部の山間部まで含めてしまい、メモリ容量的に無駄かなと感じますが、鈴鹿サーキット付近で南北を分割するとよさげですが、ちょっと面倒なんで、今回は全体括りで作成します。




鈴鹿エリアは下の緯度経度で切り出します。
(1)LAT1,LON1:34.715,136.40        LAT2,LON2:34.94,136.64
 
suzuka_thumb

あとは、前回作成した要領で、じっと待つのみ。

全部のゴール地点を含む地図データは、約364MBでした。


関連記事は
こちら

2018/10/14

Balloon Flight Support の紹介

 Balloon Flight Support は熱気球の現在位置を把握するアプリです。
熱気球本体(バルーン)側の位置・高度・進行方向が、地上支援(チェイサー)側へリアルタイムに届き、バルーンと一体となった支援活動ができます。
また、バルーンの飛行状況がWebで見えるので、遠く離れたところからでも観察できます。

バルーン・フライト・サポートBFSは10周年の記事(2022/7 追記)


BFSの詳細は、Balloon Flight Support ページへ


特徴はFeaturesを参照ください。
 
Balloon Flight Supportへ

PCだけでなく、iPhoneやandroidなどのスマホやタブレットで使えます。


サンプル画像です。(背景地図は地理院タイルを使用)
exsample-1
 


..

2018/06/24

Raspberry Pi2 Node.jsからMongoDBへアクセスできなくなった

51AmnWwg0PL._SL160_openlogo-100


Raspberry Pi2 のOSを Debian jessie から stretch へアップデートしたところ、 jessie の環境で Node, MongoDB が動いていたが、アップデートしてから Node からMongo へアクセスするとエラーを吐いてきました。


MongoDB のバージョンが古い。 2.6以上が必要と!!!!

たしかに、こちらの環境は、Nodeのバージョンは 5.6、 MongoDBは 2.4.10

Mongoの方は、Raspberry pi で公式に入手できるのはこのバージョンしかない(古すぎるけど)

最初は、MongoDB のバージョンを上げることを考え、ネット上を徘徊したがメジャーバージョンアップだとデータの持ち方も変わるなど、リスクが伴いそうな気がします。

Node, MogoDB それぞれ単独では動作するので、Node の MongoDB ドライバーに問題がありそうだということが解ってきました。

ここまで、半日かかった~~。

そこで、Nodeのドライバーを管理している npm のパッケージインストール状況を確認してみると。
(これより以下を一部加筆修正しました。2019-06-22)


$npm list
mongoose@5.1.6   <-- ここ


mogoose のバージョンが stretch のアップデートに引っ張られて 5.1.6 が入っているのが原因のようです。

MongoDB Server Version Compatibility では

  • MongoDB Server 2.4.x: mongoose ^3.8 or 4.x
  • MongoDB Server 2.6.x: mongoose ^3.8.8 or 4.x
  • MongoDB Server 3.0.x: mongoose ^3.8.22, 4.x, or 5.x
  • MongoDB2.4 では、mongoose は 4.x でした。



    ここまでくれば、ドライバーバージョンを下げてやればいい。

    package.json ファイルの mongoose を元に戻し、頭に^キャロットを付けメジャーバージョンが一致するものに固定します。

    "dependencies": {
      "mongoose": "^4.4.17",

    再度、 $npm install として npm を更新してみると。
    $npm install
    mongoose@4.13.41

    これで、Node がエラーを吐かなくなりました。

    本来は、MongoDB のバージョンを 3 に上げたいが、色々と制約がありそうなので、今後の課題とします。


    .end

    2018/04/04

    Raspberry Pi UPSをWebでモニタリングする

    前回の記事で、Raspberry Pi(ラズパイ)へUPSをモニタするNUTをインストールしました。
    今回は、Webモニタリングの設定をして、ローカル(UPSへ接続しているラズパイ)以外のPCからモニタ出来るようにします。
    ただし、このラズパイは既に apache2.4 Webサーバーとして機能している前提で、ここではNUTに関する設定箇所を示します。

    [nut cgi のインストール]
    sudo apt-get update
    sudo apt-get install nut-cgi

    /etc/nut/hosts.conf へ MONITOR を記述します。
    cyberups は ups.conf に設定した名前、"Local UPS"は UPS を指す適当な名前です。

    MONITOR cyberups@localhost "Local UPS"

    cgi 関連ファイルのパーミッションを設定します。

    sudo chmod 644 /etc/nut/hosts.conf
    sudo chmod 644 /etc/nut/*.html
    sudo chmod 644 /usr/share/nut/www/*.*
    sudo chmod 755 /usr/lib/cgi-bin/nut/*.cgi



    /nut へのアクセスを限定的にしたければ、 /usr/share/nut/www/ に下の内容を記述した .htaccess ファイルを一緒に入れます。
    order deny,allow
    deny from all

    allow from 192.168.1.0/24

    apache のドキュメントルートを記述している hoge-ssl.conf に /nut として alias を設定します。
    /etc/apache2/sites-available/hoge-ssl.conf

    Alias /nut /usr/share/nut/www
    <Directory /usr/share/nut/www/>
         SSLOptions +StdEnvVars
         Options FollowSymLinks
         AllowOverride all
         Require all granted
    </Directory>

    同様に cgi ルートも 本来の cgi-bin と区別するために /cgi-nut として alias を設定します。
    これは、モニタ出来るipをローカル内(192.168.1.*)に制限するため、以下を書き加えます。
    /etc/apache2/conf-available/hoge-cgi-bin.conf


    ScriptAlias /cgi-nut/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
         AllowOverride None
         Options +ExecCGI
         Require ip 192.168.1
    </Directory>


    こちらの "###I_HAVE---" の行頭のコメントを外します。
    /etc/nut/upsset.conf

    ###
    I_HAVE_SECURED_MY_CGI_DIRECTORY
    ###

     

    こちらの該当する箇所も /cgi-nut へ変更
     /usr/share/nut/www/header.html

    26 <a href=/cgi-nut/nut/upsstats.cgi target= ~
    30 <a href=/cgi-nut/nut/upsset.cgi target= ~


    apache の設定ファイルを再読み込みします。

    sudo apachectl reload


    https://[あなたのドメインもしくはipアドレス]/nut とすることでアクセスできるようになります。
    web-1
    web-11a
    web-12a
    ここで、気づきましたが、Battery Voltage が9.1Vを示していますが、本体バッテリーは12Vタイプで正常ですから、なにかしらUPSからのデータ取得に問題があるのかもしれません。
    UPS本体の動作は正常なので、原因が判るまではこのままにしておきます。


    raspi の Debian os を jessie から stretch へアップデートしたところ、一緒にnut 関連もバージョンが上がり 2.7.4 になりました。
    (※ jessieからstretchへアップデートすると /usr/share/nut/www/header.html が書き換わるので再書き換えする)

    Battery Voltage も13.7Vと正常表示となりました。 (2018-06-23 画像と文章update)


    以下を追加しました。(2021-1-11)

    raspberry piを増設した場合の設定記事

    end

    2018/03/22

    Raspberry PiへNUTインストールの補足

    前回、NUTのインストールと設定を記事にしましたが、少し補足しておきます。


    CyberPower製UPSの国内向け CPJ500 を購入したわけですが、接続するとコンパチブルの CP1500AVR と認識され usbhid-ups と標準のドライバーがセットアップされました。


    Debian jessie のためか NUTインストールバージョンは2.7.2(2014/4 リリース)でした。
    Debianの最新版stretchなら2.7.4(2016/5 リリース)がインストールされたかもしれません。(この時点で試していません)


    この古いバージョンが不具合に影響しているかもしれません。今後確かめてみることにしますが、現状でも対策は可能です。


    **********
    当初、設定例を元に標準状態でセットアップ後、半日ほど様子見ると upsc コマンドによるupsデータが見えなくなっています。
    /ver/log/sys.log を見ると、 data stale がいっぱい溢れていました

    Poll UPS [cyberups@localhost] failed - Data stale


    CyberPower 製UPSとの組み合わせで同様な事例が散見され、私の場合は’data stale’でしたが、他に ‘Driver not connected’ などがログで見られるようです。
    これらの対策として、試行錯誤の例が幾つかありましたが、次の3点を織り込むことで正常に稼働しています。

    この対策は、前回の設定の中に記載しているので、改めて設定する必要はありません。



    /etc/nut/ups.conf
            pollinterval = 15
    /etc/nut/upsd.users
            MAXAGE = 25
    /etc/nut/upsmon.conf 
            DEADTIME = 25

    これでもダメなら、syslog を監視して ‘data stale’ があったら、 service を再起動するスクリプトも用意しましたが、今は必要ないようです。

    次回は、WebでUPSをモニタ出来るようにします。

    end

    2018/03/17

    Raspberry Pi にNUTをセットアップする

    前回、UPSを取付けて停電時の電源バックアップを行う記事を書きました。

    今回は、UPSのモニターを行うNUT(Network UPS Tools)をセットアップする記事です。
    Web上で電源の状態を確認できるほか、UPSのバッテリーが不足(電源喪失)した時にはシャットダウンコマンドを発行します。


    cpj500-raspi

    [環境]
     Raspberry Pi 2B(ラズパイ)、OSはRaspbian jessieです。以下設定の内容はjessie版での記述で、他のディストリビューションやバージョンでは設定が異なる場合があるので注意してください。

    ラズパイは、Webサーバーとして稼働中でルーターと接続している以外のモニタ類は接続していません。通常は別のPCからリモートでモニタリングしているのでUPSもNUTインストールしてモニタリングしようというわけです。


    [ドライバーセットアップ]
     UPSとラズパイをUSBケーブルで接続し、lsusbコマンドで確認します。
    CP1500AVR UPSとして認識されています。

    Bus 001 Device 004: ID 0764:0501 Cyber Power System, Inc. CP1500 AVR UPS

    次に、NUTをインストールし、その後で一連のファイルを設定します。
    sudo apt-get update
    sudo apt-get install nut nut-client nut-server

    ここでは、NUTのドライバーテータベースから CP1500PFCLCD が標準で設定されるので続けます。
    /etc/nut/ups.conf の最終行に追加します。cyberups の名前は好きに変えてください。
    desc はups機器の説明を書きます。 (2018-3-24修正)

    [cyberups]
            driver = usbhid-ups
            port = auto
            desc = "CyberPower CPJ500"
            pollinterval = 15

    次に、ドライバサービスをスタートします。その後、ステータスを確認し active や Startup 出来ているかを見ます。
    sudo systemctl start nut-driver
    sudo systemctl status nut-driver
    ● nut-driver.service - Network UPS Tools - power device driver controller
        Loaded: loaded (/lib/systemd/system/nut-driver.service; static)
        Active: active (running) since 木 2018-03-15 07:40:59 JST; 14h ago

     ・・・省略・・・
      3月 15 07:40:57 raspi1 upsdrvctl[9641]: Using subdriver: CyberPower HID 0.3
      3月 15 07:40:57 raspi1 upsdrvctl[9641]: Network UPS Tools - Generic HID driver 0.38 (2.7.2)
      3月 15 07:40:57 raspi1 upsdrvctl[9641]: USB communication driver 0.32
      3月 15 07:40:59 raspi1 usbhid-ups[9643]: Startup successful
      3月 15 07:40:59 raspi1 upsdrvctl[9641]: Network UPS Tools - UPS driver controller 2.7.2
      3月 15 07:40:59 raspi1 systemd[1]: Started Network UPS Tools - power device driver controller.

    [サーバーセットアップ]

    まず、 /etc/nut/upsd.conf の中で localhost の LISTEN が # でコメントアウトされているので、# を取り除きます。ポートの3493のそのままです。
    LISTEN 127.0.0.1 3493

    同じファイルの中で MAXAGE を変更します。
    MAXAGE = 25


    次に、アカウントを設定します。 /etc/nut/upsd.users の最下行に下の内容を追記します。
    ここでは、adminとmasterのユーザーを設定しています。

    [admin]
            password = admin123
            actions = SET
            instcmds = ALL
    [upsmon_local]
            password  = local123
            upsmon master


    次に、サーバーの動作モードを設定します。UPSでバックアップされるPCは1台なので standalone を /etc/nut/nut.conf にセットします。
    MODE=standalone

    サーバーサービスをスタートし、そしてステータスを確認します。
    sudo systemctl start nut-server
    sudo systemctl status nut-server

    では localhost から接続できるかテストしてみましょう。 cyberups とはドライバーセットアップで設定した名前です。
    sudo upsc cyberups@localhost
    Init SSL without certificate database
    battery.charge: 100
    battery.charge.low: 10
    battery.charge.warning: 20
    battery.mfr.date: CPS
    battery.runtime: 10200
    battery.runtime.low: 300
    battery.type: PbAcid
    battery.voltage: 9.1
    battery.voltage.nominal: 12
    device.mfr: CPS
    device.model: CPJ500
    device.type: ups
    driver.name: usbhid-ups
    ・・・省略・・・
    UPSからの情報がちゃんと取れていて、device.model: CPJ500 と製品が認識されています。

    [クライアントセットアップ]
    システムをモニタする mastert ユーザーを /etc/nut/upsmon.conf へ追加します。
    MONITOR cyberups@localhost 1 upsmon_local local123 master
    同じファイルの中で DEADTIME を変更します。
    DEADTIME = 25

    idやパスワードを記録しているので、他から見られないようにパーミッションを設定します。
    sudo chown root:nut /etc/nut/*
    sudo chmod 640 /etc/nut/*

    クライアントをスタートして、ステータスを確認します。
    sudo systemctl start nut-monitor
    sudo systemctl status nut-monitor

    もう一度、localhost から情報が取れるかテストします。
    sudo upsc cyberups@localhost


    以上で、NUTシステムが構成されました。
    このままでもいいのですが、次はWebでモニタリングする設定をしてみます。
    長くなったので次の記事にします。

    次の記事は予定変更して、この記事の補足を書きました。



    (参考にした記事)
    Network UPS Tools
    Raspberry Pi UPS monitor (with Nginx web monitoring)
    UPS Server on Raspberry Pi
    NUT & CyberPower UPS





    end.

    2018/03/04

    UPSを設置してみました

     我が家では、Raspberry PiのWebサーバーとNTT光ブロードバンドルーターが常時稼働していますが、時々家庭内の電力事情で停電することがあって、RaspberryPiは電源断には無防備なので、データが壊れる可能性もあります。

    そこで、ルーターとRasPiをUPS(無停電電源装置)で電源バックアップすることにして、常時稼働の信頼性をUPさせます。

    用意したのは、CyberPower CPJ500(国内向けCRシリーズ)で、300W正弦波出力タイプです。容量の割にはお値ごろで液晶表示、USB接続で電源管理ができます。

    001
    RasPiとルーターをバックアップするには容量が大きすぎで、1時間以上は十分持ったので、100W程度でもよいでしょう。

    設置は簡単で、UPSの後部に6個のコンセントがあるので、ここから電源を取ります。

    あと、UPSとRasPiを付属のUSBケーブルで接続して、RasPiにはNetwork UPS Tools(NUT)をセッティングし、リモートでUPSの電源監視ができるようにします。

    次回はRaspberry PiにNUTの設定するを掲載しました。
    .
    [商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]
    サイバーパワー・ジャパン Backup CR 500 CPJ500
    価格:13523円(税込、送料無料) (2018/3/4時点)