Bad Elf 2300 でGSP情報が取れなくなった時(全部のGPS衛星が消えた時)、(あらゆることを試した結果)これでたまたま上手く動き出したみたいに見える。
→2つのボタンを同時に長押しする。
(また動かなくなるのが怖くて、追試していない)
-----
GSP情報が取れなくなった理由については不明であるが、Bad Elf 2300の中にログ情報が山ほど入っていて、メモリ利用が6%にまでなっていたことが、怪しいと思っている。
iPadのBad elfのアプリから本体のメモリ(×iPadに取り込んだ方)を全部消去しても直らなかったので、これが原因ではないかもしれないが、取り敢えずログ情報は取らない設定にしておくか、定期的に消した方が良いと思う
以前、ボタンを押すと全てのクライアントのコンテンツが同時に代わるように改造した
が、連動しないことが度々発生して、結構管理が面倒なことになってしまっていた。
コネクションが切れた後に、再接続できないか、色々調べた結果、以下のコード(index.html)となった。
前回との違いは、"onclose"を付け加えて、ソケットが切れた時に再接続するようにしてみた。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>WebSocket Server</title> </head> <body> <input id="Button1" type="button" value="スタンバイ中" onclick="onButtonClick1();" /> <input id="Button2" type="button" value="待機中" onclick="onButtonClick2();" /> <input id="Button3" type="button" value="移動中" onclick="onButtonClick3();" /> <p id="input"></p> <p id="input1"></p> <p id="input2"></p> <p id="input3"></p> <pre id="output"></pre> <iframe id="image_place" src="http://192.168.101.1:8686/red.html" width="100%" height="700"></iframe> <script> var input1 = document.getElementById('input1'); var input2 = document.getElementById('input2'); var input3 = document.getElementById('input3'); var img = document.getElementById("image_place"); var output = document.getElementById('output'); // socketの変数は、connect()の外に出しておかないとボタンに届かない var socket; function connect() { // で、ここから connect()を括る socket = new WebSocket("ws://" + window.location.host + "/chat"); socket.onopen = function() { // output.innerHTML += "Connection OK\n"; }; socket.onmessage = function(e) { // output.innerHTML += "Get message from server:" + e.data + "\n"; var obj = JSON.parse(e.data); // JSONオブジェクトに変換 // output.innerHTML += "Get object :" + obj.Message + "\n"; // switch(e.data){ switch(obj.Message){ case '1': img.src = "http://192.168.101.1:8686/red.html"; break; case '2': img.src = "http://192.168.101.1:8686/yellow.html"; break; case '3': img.src = "http://192.168.101.1:8686/blue.html"; break; } } socket.onclose = function(e) { console.log('Socket is closed. Reconnect will be attempted in 1 second.', e.reason); setTimeout(function() { connect(); }, 1000); }; } // で、ここでconnect()を閉じる connect(); // で、ここでconnect()を起動する function onButtonClick1(){ input1.value = "1"; socket.send(JSON.stringify( { message: input1.value } )); input1.value = ""; }; function onButtonClick2(){ input2.value = "2"; socket.send(JSON.stringify( { message: input2.value } )); input2.value = ""; }; function onButtonClick3(){ input3.value = "3"; socket.send(JSON.stringify( { message: input3.value } )); input3.value = ""; }; </script> </body> </html>
これが運用上「上手く動かなかった」ら、後日報告する。
一応、ラズパイをリブートして、自動的に立ち上がってくるのを、デバッグモードで確認した
■BadElf GPS Pro+ アプリの覚え書き
https://minkara.carview.co.jp/userid/247151/blog/38101593/
■Bad Elf 2200 GPS Proの使い方
http://badelf.blog.jp/
■スマホと相性抜群のポケットGPS!(1/36)
https://k-tai.watch.impress.co.jp/img/ktw/docs/1188/133/html/stptncs2019-06-10_a01_o.jpg.html
■ファームウェアのバージョンアップ方法
https://badelf.freshdesk.com/support/solutions/articles/5000698434-bad-elf-gps-pro-update-the-firmware-directly-via-the-usb-port
Bad Elf 2300 ファームウェア(力づく)交換方法
原本の場所
/home/kobore/www/soft/bad_elf_2300_firmware.mm
ここから本命
問題点
対策
手順が記載されたページ
~ https://badelf.freshdesk.com/support/solutions/articles/5000698434-bad-elf-gps-pro-update-the-firmware-directly-via-the-usb-port
原則、その翻訳するだけだが、ところどころ、自分のメモを入れる
===== ここから =====
■Bad Elf GPS Pro +:USBポート経由で直接ファームウェアを更新する 変更日:2019年2月17日午前1時31分
■ほとんどのユーザーには、Bad Elf Pro +のファームウェアを更新する方法として、Bad Elf GPSアプリを使用することをお勧めします。
■成功を確実にするために、我々のアプリで見つかったプロセスに組み込まれた多くの追加の安全対策があります。この更新方法では、MacまたはPCを使用する必要があります。
■まず、このファイルをダウンロードします:http://epo.bad-elf.com/fw/dfu/BEGPS-2300-v2.1.50rc1.dfu.bin
■ダウンロードしたファイルの名前をBEGPS-2300-v2.1.50rc1.dfu.binからfirmware.binに変更します。
■Bad Elf GPS Pro +の電源をオフにして、付属のUSBケーブルでMacまたはPCにElfを接続します。
■GPS(下)ボタンをタップしてUSBドライブモードに入るように求められます。
■一番下のボタンをタップした後、エルフがFinderまたはエクスプローラーでドライブとして表示されるまで1分待ってください。
■ドライブとしてElfにアクセスできるようになったら、名前を変更したファイルfirmware.binをBad Elf GPS Pro +のルートディレクトリにコピーします。
■firmware.binのBad Elf GPS Pro +への転送が完了したら。 Pro +の背面からUSBを取り外して、USBドライブモードを終了します
■USBを再び差し込み、下のボタンをタップしてUSBドライブモードに入ります。
■この後続の試行でUSBドライブモードに入ると、画面にファームウェアファイルが見つかったという小さなテキストが表示されます。 ファームウェアファイルが解凍されるとすぐに、大きなテキストで電源ボタンを押してファームウェアの更新を終了するよう求められます。
■電源ボタンを押すと、プロセスがまもなく完了し、エルフの電源が切れてから電源が入ります。Elfで実行されているファームウェアバージョンは、右側のテキストの起動画面にあります。
===== ここまで =====
結果
考察
Route53で、サブドメイン(admin.sea-anemone.tech,passenger.sea-anemone.tech, vehicle.sea-anemone.tech)を作ったがいいが、全部同じページに飛ぶので、変だなぁ、と思っていたが、考えてみたら、サブドメイン用の設定、何もしていななかったことに気がついた。
因みに、つかっているwebサーバは"apache2"
Server version: Apache/2.4.29 (Ubuntu) Server built: 2019-09-16T12:58:48
/var/www/html/ には、
admin index.html passenger vehicleの3つのディレクトリを作って、それぞれのディレクトリに、"index.html"を作った
そんでもって、/etc/apache2/sites-available の、000-default.conf の下の方に20行ほど追加したものが以下の通り。
<VirtualHost *:80> # The ServerName directive sets the request scheme, hostname and port that # the server uses to identify itself. This is used when creating # redirection URLs. In the context of virtual hosts, the ServerName # specifies what hostname must appear in the request's Host: header to # match this virtual host. For the default virtual host (this file) this # value is not decisive as it is used as a last resort host regardless. # However, you must set it for any further virtual host explicitly. #ServerName www.example.com ServerAdmin webmaster@localhost DocumentRoot /var/www/html # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the loglevel for particular # modules, e.g. #LogLevel info ssl:warn ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined # For most configuration files from conf-available/, which are # enabled or disabled at a global level, it is possible to # include a line for only one particular virtual host. For example the # following line enables the CGI configuration for this host only # after it has been globally disabled with "a2disconf". #Include conf-available/serve-cgi-bin.conf </VirtualHost> <VirtualHost *:80> ServerName admin.sea-anemone.tech ServerAdmin webmaster@localhost DocumentRoot /var/www/html/admin </VirtualHost> <VirtualHost *:80> ServerName passenger.sea-anemone.tech ServerAdmin webmaster@localhost DocumentRoot /var/www/html/passenger </VirtualHost> <VirtualHost *:80> ServerName vehicle.sea-anemone.tech ServerAdmin webmaster@localhost DocumentRoot /var/www/html/vehicle </VirtualHost> # vim: syntax=apache ts=4 sw=4 sts=4 sr noet
あとは、
http://admin.sea-anemone.tech http://passenger.sea-anemone.tech http://vehicle.sea-anemone.tech
にアクセスして試してみる。
NMEAを位置情報にしたいだけなのに、酷く苦労した
■ファイル名は、"nmea2csv.py"とする
import time, serial, micropyGPS, csv gps = micropyGPS.MicropyGPS (9, 'dd') #function------------------------------------------------ ------ def rungps (): s = serial.Serial ('/dev/serial0', 9600, timeout = 10) s.readline () while True: sentence = s.readline (). decode ('utf-8') if sentence[0] != '$': continue for x in sentence: gps.update (x) if gps.clean_sentences > 20: # ちゃんとしたデーターがある程度たまったら出力する print ('% 2.8f,% 2.8f'% (gps.latitude [0], gps.longitude [0])) time.sleep (1.0) rungps ()
■"python3 nmea2csv.py"で動く(といいな)。
■GPS受信キット(太陽誘電製・小型好感度GPSモジュール[GYSFDMAXB])を、ラズパイに実装した時の江端メモ(忘れないように)が、どういう訳か上手く動かなかったので。