pinewell's farmer blog Just another WordPress site

2021年1月18日

NtripCasterのロードバランサー

Filed under: GNSS — pinewell @ 11:01 PM

NtipCasterにSNIPを使用している。これはさくらのVPSでWindowsServerを借りての運用。耐障害性を考えて2台での運用していた。

2020年はそれぞれrtk1 とか rtk2 として接続先を変えていたのだが、本年より接続ユーザー数が30、クライアントとしては50台くらいにはなるのだろうか?

負荷分散を考えるに手動で設定するのは面倒。なのでロードバランサーの検討/導入となった。

単純にDNSラウンドロビンでも良いのだが、サーバーダウン時には対応が出来ないとなると二の足を踏んだ。

CentOSにてLVSとKeepalivedでの構築も考えたのだが(全て石狩データセンターなのでそれぞれがローカルでも繋っている)、ntripcasterはただのhttpサーバーとは違い、NtripServerからの基準局データを受け付けなければならず、これも断念。(実サーバーのdefaultgatewayがロードバランサーにしなければならず、globalIPでのntripserverの受付ができない。)

そこでさくらのクラウドにあるGSLB(広域負荷分散)を用いることとした。

NtripServerからの基準局データ送信は caster1.example.com と caster2.example.comとしてDNSにて登録されたglobalIPへ送信する。

NtripClientからは rtk.example.com としてDNSにてCNAMEされた GSLBのFQDNへ変換。さくらのGSLBに登録されている実サーバーのうち、適切なサーバーのglobalIPをクライアントに返すように設定ができた。

料金は月額550円。これは安い!

2021年1月16日

NTRIP 接続

Filed under: GNSS — pinewell @ 2:24 PM

ntripcaster 0.1.5 を使用してlinux鯖によるrtk配信サービスを構築するつもり。

”Lefebure NTRIP Client”での接続でローカル環境でのテストではOKなのにインターネット上のサーバーに接続すると認証エラーでつながらない。

ソースから main.c のinfo.logfiledebuglevel = 0 を 9にして全デバッグ情報を確認すると どういうわけか接続時の文字列の分解に失敗しているよう。

[Authorization] == [Basic XXXXXXXXXXXXXXXX] が取得できていない。

[Connectiotion] == [Basic XXXXXXXXXXXXXXXX]になってしまっているので client.c をいじって [Authorization]の取得に失敗していたら [Connectiotion]の値を使って認証させるように(場当たり的ではあるが)修正した。

AgLeaderではどうかと思い確認すると[Authorization] == [Basic XXXXXXXXXXXXXXXX]が無事取得できているのでまぁよし。

GET /AGS HTTP/1.0
User-Agent: NTRIP AgLeader/1.0 (InCommand)
Host: 192.168.1.254
Authorization: Basic XXXXXXXXXXXX

[16/Jan/2021:13:57:58] [4:Connection Handler] DEBUG: Building request out of [GET /AGS HTTP/1.0]
[16/Jan/2021:13:57:58] [4:Connection Handler] DEBUG: Building clean request from [/AGS]
[16/Jan/2021:13:57:58] [4:Connection Handler] DEBUG: Adding varpair [User-Agent] == [NTRIP AgLeader/1.0 (InCommand)]
[16/Jan/2021:13:57:58] [4:Connection Handler] DEBUG: Building request out of [Host: 192.168.1.254]
[16/Jan/2021:13:57:58] [4:Connection Handler] DEBUG: Adding varpair [Authorization] == [Basic XXXXXXXXXXXX]
[16/Jan/2021:13:57:58] [4:Connection Handler] DEBUG: Checking need for authentication on mount /AGS

 

GET /AGS HTTP/1.0
User-Agent: NTRIP LefebureAndroidIntNTRIPClient/20200406
Accept: */*
Connection: close
Authorization: Basic XXXXXXXXXXXX

[15/Jan/2021:14:48:04] [3:Connection Handler] DEBUG: Building request out of [GET /AGS HTTP/1.0]
[15/Jan/2021:14:48:04] [3:Connection Handler] DEBUG: Building clean request from [/AGS]
[15/Jan/2021:14:48:04] [3:Connection Handler] DEBUG: Adding varpair [User-Agent] == [NTRIP LefebureAndroidIntNTRIPClient/20200406]
[15/Jan/2021:14:48:04] [3:Connection Handler] DEBUG: Adding varpair [Accept] == [*/*]
[15/Jan/2021:14:48:04] [3:Connection Handler] DEBUG: Adding varpair [Connectiotion] == [Basic XXXXXXXXXXXX]
[15/Jan/2021:14:48:04] [3:Connection Handler] WARNING: Invalid header line [XXXXXXXXXXXX] without colon
[15/Jan/2021:14:48:04] [3:Connection Handler] DEBUG: Checking need for authentication on mount /AGS

 

簡単に修正できたように書いているが辿り着くまでは困難だった。

なにせローカルでは問題ないので苦もなく動くものと思いこんでいました。

それにしても[Connectiotion]って?再現性はあるのでもう少しスマートな修正もできるのでしょうが、C言語は不得手で。

2020年12月3日

Windows10のタッチキーボードが勝手にでる

Filed under: 未分類 — pinewell @ 11:02 PM

ウチの環境がやや特殊なのであまり参考にならないかもしれませんが、気になっていたことが解決できたのでメモ。

ArduinoIDE や AndroidStudio でテキストエディタにフォーカスインするといちいちタッチキーボード(スクリーンキーボードではなく)が出現してしまう。

とりあえず、「 Touch Keyboard and Handwriting Panel Service 」のサービスをとめて事なきを得ていたのだが最近のWindows10Pro20H2になるとこのサービスを切ってしまうとIME自体が動かなくなる事態となった。

解決策を模索していたのだが検索をかけるも情報が少ない。どうやらウチの環境が特殊なようだと思い、ふと気づく。キーボードを繋いでいないのである。

Linuxサーバー側に接続しているキーボードを Synergyで運用しているので物理的なキーボードを繋いでいないことに思い至る。実際にキーボードを繋いでみると現象がでないことが確認できた。

さてと、使わないキーボードを無駄に接続するのはイヤ。Arduinoでキーボードのフリをするデバイスでも作ろうかとも思ったが改めて検索。

「キーボードが接続されていないときにタッチキーボードを表示する」という設定がどこかにあることが分かった。しかし、「スタート」「設定」「デバイス」「入力」と進んでもこの設定が無い。

キーボード詳細設定やその他を探し回ったが見つけることができず。試しに「設定の検索」に「タブレット」と入れてみると「タブレット設定」が現れた。ここから更に「タブレットの追加設定を変更する」に進むと漸く「キーボードが接続されて…」の設定が変更できた。

そもそも私のPCでは「タブレットモード」にすることができない。先述の設定画面には「このデバイスにはタッチ機能はありません。」と赤字で表示されていることからタッチデバイスがあるとタブレットとしても機能すると判断しているのか?タッチ機能があるとタブレットモードの設定も表示されることになるのだろう。

それにしても「タブレットモードを使用していないとき」の設定がデスクトップで使用しているPCでは、ずいぶん深~いところから発掘せにゃならないとは。

この設定を探すのに2時間は無駄にしたよ。トホホ。

2020年4月17日

カッティングプランターの欠株センサー

Filed under: 澱原イモ — pinewell @ 10:43 PM

距離センサーをアナログで行うとして。
リセットスイッチ x 1
ブザー x4
ヒゲセンサー x 4
測距 x4
が必要。デジタル入力5 デジタル出力 4 アナログ入力 4。
I2Cで液晶を繋いでもピン自体は間に合いそうだ。

2020年4月15日

カッティングプランターの欠株センサー

Filed under: 澱原イモ — pinewell @ 10:41 PM

要件
リミットスイッチにより距離センサーを作動させカップ迄の距離を測距。
設定値以上ならば種芋が無いとしてブザーを鳴らす(短く)。
欠株が続けて起きた場合(2以上?3以上?)ブザーを鳴らす(ストップボタンが押されるまで)

懸念
4畝を一つのarduinoで実現可能か?
測距モジュールはアナログ?i2c?レーザー?超音波?

展望
欠株がわかれば供給もしたくなる…。
コンベアは大掛かりで嫌。ステッピングモーターで可能か?

2020年3月7日

ngrok

Filed under: GNSS — pinewell @ 11:29 AM

ngrokとは. 簡単にいうと、ローカルPC上で稼働しているネットワーク(TCP)サービスを外部公開できるサービス」だそうだ。
これを使うとグローバルIPが貰えないMVNOでも外部からアクセス出来そうだ。

2020年3月5日

自前基準局の作製

Filed under: GNSS — pinewell @ 11:18 PM

ZED-F9Pを用いた安価なRTK基準局の作製 その9

前回まででインターネット環境が整った自宅などを基準局とすることができるようになりました。(自宅ルーターのポート解放とかDDNSとかは端折ってますが。)
ここからはインターネット環境の無い場所での基準局の構築です。
実際のところ牛舎の屋根の上とか、倉庫の屋根の上など自宅にインターネット環境があっても敷地内にはLANケーブルの敷設が難しい場所もあるでしょう。
Wifiを使っても良いのですがここではMVNOを使った通信を行います。

アンテナ設置状況
D型の屋根に設置
まだ専用ケースが無くてダイソーのプラケース

・LTEルーターについて
NECから PA-HT100LNという製品が2017年の8月に発売されています。
半年前に購入した時は12,000円ぐらいだったし即入荷だったのですが、現在は最安値で13,140円しかも在庫は無しで2月22日に注文したら入荷予定が5月2日〜5月29日。即納できそうな処は15,000円を越えてきます。
RasPi3以降のWifiは高性能/電源キビシメで夏場の発熱が怖くて、どうしても有線で繋ぎたいので、代替機を模索中です。
いっそのことL-02Cでraspiから直接LTE通信してしまおうかとも。

・MVNO SIMについて
自宅からsshで繋いで管理をする都合上、グローバルIPが貰えるSIMが必要でした。調べると某ショッピングセンター系のドコモType2プランが最適です。
月1Gプランで480円。通信速度が低速時でも200kbpsなのでRTCMデータのみなら問題はありません。シリアルの通信が115.2kbpsなのですから。
1日24時間で約250MBのデータ送信を行っています。250*30=7500ひと月で8Gくらいのデータをアップロードしてますが今のところ上手くいってます。
問題があるとするならば一人5回線の制限です。とうとう妻の名前を借りることになりました。
他に低速(常時250kbps)でもつなぎ放題なMVNOがあります。某カメラ店で販売しています。
これでもテストを行っていますが通信速度的には問題ないのですがグローバルIPがもらえないので却下です。
その他2社ほど試してみた結果の結論です。

・ルーターに求める機能について
有線接続ができること。
ポート解放ができること。
DHCPサーバー機能でMACアドレスで指定ができること。
必須ではないが無線LANのアクセスポイントとなること。これができると現場でPCからWifi接続、raspiの設定変更が出来る。

この据置きルーターは使えなかった。

上記のLTEルーターはルーターとしての機能(DHCPサーバーのMACアドレス指定、ポート解放)が出来無いものだったのでゴミとなった。Amazonでも売ってますね。コメントが微妙。技適ってなに?商品です。

自前基準局の作製

Filed under: GNSS — pinewell @ 9:35 PM

ZED-F9Pを用いた安価なRTK基準局の作製 その8

RaspberryPiの設定
Raspbianをセットアップ。
sshを使えるように。/boot/ に touch ssh
基本的な設定(raspi-configによるupdate、パスワード変更など。)
GPIOのUART(シリアルポート)を使えるように。
raspi-configにて
[5 Interfacing Options]-[P6 Serial]を選択。
Would you like a login shell to be accessible over serial?に<No>。
Would you like the serial port hardware to be enabled?に<Yes>。


RTKLIBのダウンロード、unzip。
RTKLIBのstr2strだけコンパイル。
$ cd {解凍dir}/app/str2str/gcc
$ make
終わるまで待つ。
/usr/bin/にstr2strをコピー。
$sudo cp str2str /usr/bin/
接続確認
$sudo str2str -in serial://ttyAMA0:115200 -out ntrips://:{PASS}@xxx.xxx.xxx.xxx:2101/KAYANO
これで繋がるならRaspi起動後に実行されるようにrc.localの設定。
exit 0 の前の行に
/usr/bin/str2str -in serial://ttyAMA0:115200 -out ntrips://:{PASS}@xxx.xxx.xxx.xxx:2101/KAYANO

str2strでシリアルから受信、NtripCasterに接続できている様子。
Reserved MountPtsから接続されるとグリーンに変る。
解析が済むとRTCM3viewerで送信されている状況がわかる。

自前基準局の作製

Filed under: GNSS — pinewell @ 1:26 PM

ZED-F9Pを用いた安価なRTK基準局の作製 その7

NtripCater SNIPのインストール・設定
私はさくらのVPSを借りていますが自宅サーバーでも運用しています。
DDNSなどで名前解決、ポート開放などができれば自宅サーバーでも可能でしょう。
VPSを借りているのは複数台のRoverからのアクセスに耐えられる帯域を確保したいためです。
自宅サーバーのアップロードの帯域では不安で。
サーバーの能力的にはW1Gプランで十分かと。HDD容量も必要ありません。

SNIPをダウンロードしてインストールします。
・ユーザー登録が必要だったはず。
・サービスとしては動かず、ログインした状態で実行しつづけなければならない。
・LITEとしてレジストしなければ評価モードとして動作し1時間で切れる。
・LITEでレジストしてしまうとStream設定の編集・追加ができなくなる?
特に最後の部分が問題です。お金があるならばBASICを購入した方が良いです。

SNIP起動
最初の起動でいきなり配信がスタートしてしまいます。(「Auto Start」にチェックが入っている)
[Caster and Clients]タブを選択して [Disconnect]します。
[Caster IP:] 127.0.0.1 これはVPSならグローバルIPです。
[Cster Port:] 2101 特に問題なければ変えません。NtripのWellKnownPortはまだ無いようです。実質多くのアプリが2101がデフォルト値となっているようです。
Windowsのファイアウォールの設定で開放しておきます。
[User Accounts]ボタンで接続ユーザーの管理ができます。
ユーザーあたりの接続数も制限できます。
[Allow Annoymous Access for Users]のチェックを外すと匿名では接続できなくなります。
[Allow Use-SNIP.com access for quality monitoring]も外しておきます。

[Relay Streams]タブ
ここは5つの転送するストリームが登録されています。
全て不要なのでストリームを選択して右クリック [Remove] します。

[Pushed-In Streams]タブ
ここにRaspiから受信するストリームを設定します。
[Add]ボタンを押します。
[MountPt]-[Configure]ボタンでマウントポイントの詳細設定ができます。

右側から
[Mount Pt] 一意になる名称を設定します。
[City/Satte] 都道府県で良いかな。
[Contry] JP
[Data Format] RTCM 3.x(Auto)
[GNSS types] GPSとGLONASSにチェック
[Carrier] 周波の数です。ZED-F9Pは2周波なので2
[Msg Types] 空白でも作成してくれます。
[Location] おおよその値を入力しています。
[Access] 初期値のままで。
[Misc]空白です。
左側
[Password]このストリームにアップするためのパスワードです。
[Parse] チェックを入れます。送られてくるストリームを解析してくれる。
保存して [Caster and Clients]タブに戻り、[Connect]ボタンでNtripCasterとして受付待ちとなります。
その前に。
[Misc]ツールバーからの[Data File Settings]を開き、ログデータの設定をします。
容量の少ないVPSではログを貯めきれないので[Delete data files after ] 3 [Days].としてチェックをいれます。

[Help]-[Registration]
[Select the type of license below]のコンボボックスでLite(Free)を選択。
[Next]ボタンで名前とメールアドレスを入力して[Next]。
SNIP Legal Agreement を読んで [I agree to the terms of the license]に同意ができたらチェック。[Next]。
[Register]ボタンでLiteバージョンとして登録されます。
以降、ストリームの編集・削除?ができなくなります。
追加も個数を超えるとできなくなる?

自前基準局の作製

Filed under: GNSS — pinewell @ 10:11 AM

ZED-F9Pを用いた安価なRTK基地局の作製 その6

RaspberryPiとの接続

USBポートはPCとの接続用に空けています。
電源をRaspiから取っているので少し心配ですが半年以上の運用では現在のところ大丈夫。

3Dプリンタでケースを作りました。
夏場はファンが必要か?

Older Posts »

Powered by WordPress