ブログを検索

2021/08/24

LoRa APRS?

きょう仕事中と思われる時間にふと、家からちょっと離れたところにいろんなセンサーを置いて値を集めてみたいと思いました

で、LPWA というものについて調べていたら楽しそうな情報がありました!

LoRa という IoT のセンサー情報を無線で送受信する規格で、省電力で遠距離通信を可能にするアマチュア無線の FT-8 みたいなやつです

海外では LoRa は 430MHz帯とか地域によっていろんな周波数を使うようですが日本では 920MHz帯で免許不要で運用できるようです

もちょっと調べてみると海外で LoRa APRS っていうのをやってる人たちがいるようでウケました!

LoRa APRS は海外ではウエブ情報もそこそこあるようですが日本だと情報は無いに等しいみたいです

APRS はさておき LoRa について調べてみるとスペック上は数キロから数十キロをカバーするっぽいけどホントに920MHz帯でそんなに飛ぶのかな?

※ 2024/05/19追記 ホントに飛びました 汗

基地局を見通しのきく場所に置けば飛ぶというか受信するのかもね

さらに調べてみるとカバーエリアについて実験をしているサイトが数件ありましたが、残念ながらアンテナやアンテナの設置方法についてあまり考慮されていないようです

144MHz帯で毎日 APRS のビーコンを垂れ流しながら自宅 IGate のアンテナの調整なんかやっている私は 920MHz帯の FT-8 のような LoRa で APRSを試してみたくなりました

やるかやらないか 1秒ほど熟考した後、仕事中と思われる時間に何点かの部品をポチポチ注文しました

きょうは以上です

念のため、運用中の APRSアンテナはイジっておりません。実験周波数の APRSアンテナやチューナーをいじっております

2021/08/15

荒川鉱山は立ち入り禁止になりました

何かトリガになるようなことがあったのかもしれません

残念ながら荒川鉱山は立ち入り禁止になっていました

数箇所に同じような看板がありました。

そうなると看板が無いところは立ち入っていいかというとそうは思えません

荒川鉱山全体がだめなんでしょう

三菱マテリアルはこの鉱山の他に沢山鉱山(鉱山跡も含めて)を管理していると思います

これ以上立ち入り禁止になる鉱山跡を増やさないために鉱物採集の方は立ち寄らないようお願いいたします

ここは子供連れでも鉱物採集できる貴重な場所でしたが残念なことになりました


このようなことが起きないよう、鉱物採集の際には現場を荒らさず表面採集で最低限のサンプル収集に留めるよう心がけておりましたがこの件は非常に残念です

私は今後も現場にインパクトの無い報酬を伴わないサンプルの収集というポリシーで採集を行っていきたいと思っております

2021/08/14

アメダスAPI取得サンプル

 リクエストを頂いたのでアメダスのデータを取得するサンプルを載せておきます。

$ php -v
PHP 7.3.29-1~deb10u1 (cli)
という環境ですがPHP5以上であれば気にする必要は無いと思います。
get_amedas_sample.php というファイル名でサンプルプログラムを作りました。
その内容を cat したのが下記です

$ cat get_amedas_sample.php
<?php
// 横手市のアメダスデータを取得して表示する
mb_language("Japanese");
mb_internal_encoding("UTF-8");
mb_regex_encoding('UTF-8');
date_default_timezone_set('Asia/Tokyo');

// 現在日時から20分前を求める(あまり直近だとデータが取れないぽい)
$day = new DateTime('-20 minutes');
$target_time = substr( $day->format('YmdHi00') , 0 , 11) . '000';
if(!($lxml =    @file_get_contents("https://www.jma.go.jp/bosai/amedas/data/map/$target_time.json"))){
    // アクセス失敗
    echo 'file_get_contents error exit.'.PHP_EOL;
    exit;
}

$lxml = mb_convert_encoding($lxml, 'UTF8', 'JIS,UTF-8,EUC-JP,SJIS-WIN,ASCII');
$json_arr = json_decode($lxml,true);
/*
URL には10分毎の観測時刻指定が可能 */10
32596は横手市の観測所番号です
各地の観測所番号は下記です (公的機関がhttpか・・・) http://www.jma.go.jp/jma/kishou/know/amedas/ame_master_20210707.pdf
*/
$station_number = '32596';
$measurement_date = substr($target_time,0,4) .'-'.
                                     substr($target_time,4,2) .'-'.substr($target_time,6,2) .' '.
                                     substr($target_time,8,2) .':'.substr($target_time,10,2).
                                  ':'.substr($target_time,12,2);

echo "観測所番号:$station_number 観測時刻:$measurement_date" . PHP_EOL;
foreach($json_arr[$station_number] as $key => $value){
    echo $key . ' ' . $value[0] . ' ' . $value[1] . PHP_EOL;
}
?>
↑ ここまでがサンプルプログラム

下記が実行結果です
$ php get_amedas_sample.php
観測所番号:32596 観測時刻:2021-08-14 16:50:00
temp 19.8 0
sun10m 0 0
sun1h 0 0
precipitation10m 0 0
precipitation1h 0 0
precipitation3h 0 0
precipitation24h 2 0
windDirection 6 0
wind 1.1 0
$

おそらく他のバージョンの PHP(PHP5以上)や、Windows,UnixライクなOS,MacOSなどでもイケるかと思います
php.ini で file_get_contents で URL指定できるように、というのと mbなんとか達を使えるようにしておく必要がありますのでご注意ください
当たり前ですが過剰なアクセスは控えなければなりません

2021/08/09

データ型もあいまいな PHP ・・・でも厳しい面もあったという話

今、先月の末日を取得するというのを PHP(バージョン7.3.5)で書いてて

$last_month_last_day = $day->modify('last  day of last month')->format('Y-m-d 23:59:59');

この行 ↑ が LINTチェックでは問題ないけど実行すると下記のエラーになる・・・

Fatal error: Uncaught Error: Call to a member function format() on bool in XXX.php

何度見ても間違っていないので5分くらい経ったころ、PHPの不具合を疑い始めた・・・
長年の経験から変な話ではありますが、言語の不具合を疑うようになったらそれはプログラムのほうのミスが確定したのとイコールなので安心してバグ探しに専念します。
30歳から筋金入りの老眼なので文字サイズを3センチくらいに拡大してじっくり見てみると・・・

え?まさか・・・これ?これなの?うそー!
PHP ってお気楽お手軽言語だと思ってたのに変なところがシビア!
そもそも LINTチェックの意味分かってないだろ PHP 笑
ま、それが PHP らしさかも 笑

×  $last_month_last_day = $day->modify('last  day of last month')->format('Y-m-d 23:59:59');

$last_month_last_day = $day->modify('last day of last month')->format('Y-m-d 23:59:59');

前後の行との体裁を整えるため last と day の間に半角空白 2文字を入れてたのが許されなかったのでした
last と day の間の空白は半角1文字でなければならないぽい 笑
ここでは書いていないけど first day の記述でも同様だった

インタプリタ系の言語で実行速度を得るにはこうしたアプローチはあるんだろうけど PHP って記述のゆるさが特徴みたいなもので突然のこれの遭遇にビビった次第です。

これだけは譲れないみたいなすごいな PHP 笑

別の環境の PHP 5.5.14 で試したところやはり同様の結果になりましたので仕様なんでしょうね。
へえー

MySQL で SELECT into outfile 出来なくてハマった件

 Windows上の MySQL で SELECT into outfile で CSVファイルをエクスポートしようとしてハマったので残しておく 環境 Windows10 Pro バージョン 1809 MySQL 8.4.0 という環境で SELECT * FROM table1...