@sayue_ltr/fleq 1.49.6 → 1.50.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +37 -0
- package/README.md +150 -361
- package/assets/icons/default.png +0 -0
- package/assets/icons/earthquake-cancel.png +0 -0
- package/assets/icons/earthquake-critical.png +0 -0
- package/assets/icons/earthquake-info.png +0 -0
- package/assets/icons/earthquake-normal.png +0 -0
- package/assets/icons/earthquake-warning.png +0 -0
- package/assets/icons/earthquake.png +0 -0
- package/assets/icons/eew-cancel.png +0 -0
- package/assets/icons/eew-critical.png +0 -0
- package/assets/icons/eew-info.png +0 -0
- package/assets/icons/eew-normal.png +0 -0
- package/assets/icons/eew-warning.png +0 -0
- package/assets/icons/eew.png +0 -0
- package/assets/icons/lg-observation-cancel.png +0 -0
- package/assets/icons/lg-observation-critical.png +0 -0
- package/assets/icons/lg-observation-info.png +0 -0
- package/assets/icons/lg-observation-normal.png +0 -0
- package/assets/icons/lg-observation-warning.png +0 -0
- package/assets/icons/lg-observation.png +0 -0
- package/assets/icons/nankai-trough-cancel.png +0 -0
- package/assets/icons/nankai-trough-critical.png +0 -0
- package/assets/icons/nankai-trough-info.png +0 -0
- package/assets/icons/nankai-trough-normal.png +0 -0
- package/assets/icons/nankai-trough-warning.png +0 -0
- package/assets/icons/nankai-trough.png +0 -0
- package/assets/icons/seismic-text-cancel.png +0 -0
- package/assets/icons/seismic-text-critical.png +0 -0
- package/assets/icons/seismic-text-info.png +0 -0
- package/assets/icons/seismic-text-normal.png +0 -0
- package/assets/icons/seismic-text-warning.png +0 -0
- package/assets/icons/seismic-text.png +0 -0
- package/assets/icons/tsunami-cancel.png +0 -0
- package/assets/icons/tsunami-critical.png +0 -0
- package/assets/icons/tsunami-info.png +0 -0
- package/assets/icons/tsunami-normal.png +0 -0
- package/assets/icons/tsunami-warning.png +0 -0
- package/assets/icons/tsunami.png +0 -0
- package/assets/icons/volcano-cancel.png +0 -0
- package/assets/icons/volcano-critical.png +0 -0
- package/assets/icons/volcano-info.png +0 -0
- package/assets/icons/volcano-normal.png +0 -0
- package/assets/icons/volcano-warning.png +0 -0
- package/assets/icons/volcano.png +0 -0
- package/dist/engine/notification/notifier.js +51 -19
- package/dist/ui/repl.js +21 -8
- package/dist/ui/waiting-tips.js +64 -31
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,250 +1,148 @@
|
|
|
1
1
|
# FlEq
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[dmdata.jp](https://dmdata.jp/) の API を利用して、地震・津波・緊急地震速報(EEW)・火山情報をリアルタイムに CLI で受信・表示するツールです。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
npm パッケージ名: `@sayue_ltr/fleq` / CLI コマンド名: `fleq`
|
|
6
6
|
|
|
7
|
-
##
|
|
8
|
-
|
|
9
|
-
FlEq を最短で使い始めるには、以下の手順を実行してください。
|
|
10
|
-
|
|
11
|
-
### 方法1: `fleq init` を使う(初回推奨)
|
|
7
|
+
## 主な機能
|
|
12
8
|
|
|
13
|
-
|
|
9
|
+
- WebSocket によるリアルタイム受信(自動再接続・複線接続対応)
|
|
10
|
+
- 地震・津波・EEW・火山情報を震度やレベルに応じた色分けで表示
|
|
11
|
+
- 緊急地震速報の同時追跡・ログ記録・差分表記
|
|
12
|
+
- デスクトップ通知・通知音(カテゴリ別 ON/OFF)
|
|
13
|
+
- REPL による実行中の設定変更・状態確認
|
|
14
|
+
- CUD 配色準拠のテーマシステム(カスタマイズ可能)
|
|
15
|
+
- Raspberry Pi 等の低メモリ環境でも動作
|
|
14
16
|
|
|
15
|
-
|
|
16
|
-
npm install -g fleq
|
|
17
|
-
fleq init
|
|
18
|
-
fleq
|
|
19
|
-
```
|
|
17
|
+
## 出力例
|
|
20
18
|
|
|
21
|
-
|
|
19
|
+
<!-- TODO: スクリーンショットまたは compact モードの出力例を追加 -->
|
|
22
20
|
|
|
23
|
-
|
|
21
|
+
表示フォーマットの詳細は [表示リファレンス](docs/display-reference.md) を参照してください。
|
|
24
22
|
|
|
25
|
-
|
|
26
|
-
npm install -g fleq
|
|
27
|
-
fleq config set apiKey your_api_key_here
|
|
28
|
-
fleq
|
|
29
|
-
```
|
|
23
|
+
## はじめる前に
|
|
30
24
|
|
|
31
|
-
|
|
25
|
+
FlEq を使うには、以下の準備が必要です。
|
|
32
26
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
27
|
+
1. **Node.js 18 以上**をインストールする
|
|
28
|
+
2. [dmdata.jp](https://dmdata.jp/) でアカウントを作成する
|
|
29
|
+
3. dmdata.jp の管理画面で **API キーを発行**する
|
|
30
|
+
4. API キーに **`socket.start` 権限**と、受信したい区分に対応する **`telegram.get.*` 権限**を付与する
|
|
37
31
|
|
|
38
|
-
|
|
32
|
+
受信する情報の種類によっては、dmdata.jp の有料契約が必要です。
|
|
33
|
+
詳しくは [dmdata.jp](https://dmdata.jp/) の料金・契約ページを確認してください。
|
|
39
34
|
|
|
40
|
-
|
|
41
|
-
$env:DMDATA_API_KEY = "your_api_key_here"
|
|
42
|
-
fleq
|
|
43
|
-
```
|
|
35
|
+
### 対応 OS
|
|
44
36
|
|
|
45
|
-
|
|
46
|
-
|
|
37
|
+
| OS | 備考 |
|
|
38
|
+
|----|------|
|
|
39
|
+
| macOS 10.13+ | メイン開発・テスト環境 |
|
|
40
|
+
| Linux (x64 / ARM) | Raspberry Pi 等の ARM デバイスでも動作 |
|
|
41
|
+
| Windows 10+ | ConPTY 対応のターミナルを推奨 |
|
|
47
42
|
|
|
48
|
-
##
|
|
43
|
+
## 受信区分と内容
|
|
49
44
|
|
|
50
45
|
| 区分 | 分類名 | 内容 |
|
|
51
46
|
|------|--------|------|
|
|
52
47
|
| 地震・津波関連 | `telegram.earthquake` | 震度速報、震源情報、震源・震度情報、津波警報等 |
|
|
53
|
-
| 緊急地震速報(予報) | `eew.forecast` | EEW予報(要契約) |
|
|
54
|
-
| 緊急地震速報(警報) | `eew.warning` | EEW警報(要契約) |
|
|
48
|
+
| 緊急地震速報(予報) | `eew.forecast` | EEW 予報(要契約) |
|
|
49
|
+
| 緊急地震速報(警報) | `eew.warning` | EEW 警報(要契約) |
|
|
55
50
|
| 火山関連 | `telegram.volcano` | 噴火警報、噴火速報、降灰予報、火山の状況に関する解説情報等 |
|
|
56
51
|
|
|
57
|
-
## 必要条件
|
|
58
|
-
|
|
59
|
-
FlEq を利用するには、以下が必要です。
|
|
60
|
-
|
|
61
|
-
- Node.js 18 以上
|
|
62
|
-
- dmdata.jp のアカウント
|
|
63
|
-
- dmdata.jp で発行した API キー
|
|
64
|
-
- API キーに `socket.start` と、利用する区分に対応した `telegram.get.*` 権限
|
|
65
|
-
|
|
66
|
-
受信する情報の種類によって、必要な契約区分や権限が異なります。
|
|
67
|
-
たとえば、緊急地震速報(`eew.forecast` / `eew.warning`)の受信には、対応する契約が必要です。
|
|
68
|
-
|
|
69
|
-
API キーをまだ取得していない場合は、先に dmdata.jp でアカウント作成と API キー発行を行ってください。
|
|
70
|
-
対応 OS については下記の「対応OS」を参照してください。
|
|
71
|
-
|
|
72
|
-
## 対応OS
|
|
73
|
-
|
|
74
|
-
| OS | 対応状況 | 備考 |
|
|
75
|
-
|----|---------|------|
|
|
76
|
-
| macOS 10.13+ | 対応 | メイン開発・テスト環境 |
|
|
77
|
-
| Linux (x64 / ARM) | 対応 | Raspberry Pi 等の ARM デバイスでも動作 |
|
|
78
|
-
| Windows 10+ | 対応 | ConPTY 対応のターミナルを推奨 |
|
|
79
|
-
|
|
80
52
|
## インストール
|
|
81
53
|
|
|
82
|
-
### npm からインストール
|
|
83
|
-
|
|
84
54
|
```bash
|
|
85
|
-
npm install -g fleq
|
|
55
|
+
npm install -g @sayue_ltr/fleq
|
|
86
56
|
```
|
|
87
57
|
|
|
88
|
-
|
|
58
|
+
単発実行もできます。
|
|
89
59
|
|
|
90
60
|
```bash
|
|
91
|
-
npx fleq --help
|
|
61
|
+
npx @sayue_ltr/fleq --help
|
|
92
62
|
```
|
|
93
63
|
|
|
94
|
-
|
|
64
|
+
## セットアップ
|
|
65
|
+
|
|
66
|
+
### 方法 1: `fleq init` を使う(初回推奨)
|
|
67
|
+
|
|
68
|
+
対話形式で API キーや受信設定をまとめて行えます。
|
|
95
69
|
|
|
96
70
|
```bash
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
npm install
|
|
100
|
-
npm run build
|
|
71
|
+
fleq init
|
|
72
|
+
fleq
|
|
101
73
|
```
|
|
102
74
|
|
|
103
|
-
|
|
75
|
+
### 方法 2: 手動で設定する
|
|
104
76
|
|
|
105
|
-
|
|
77
|
+
```bash
|
|
78
|
+
fleq config set apiKey your_api_key_here # ← 自分のAPIキーに置き換え
|
|
79
|
+
fleq
|
|
80
|
+
```
|
|
106
81
|
|
|
107
|
-
|
|
82
|
+
環境変数でも設定できます。
|
|
108
83
|
|
|
109
84
|
bash / zsh:
|
|
110
85
|
```bash
|
|
111
|
-
export DMDATA_API_KEY=your_api_key_here
|
|
86
|
+
export DMDATA_API_KEY=your_api_key_here # ← 自分のAPIキーに置き換え
|
|
112
87
|
```
|
|
113
88
|
|
|
114
89
|
PowerShell:
|
|
115
90
|
```powershell
|
|
116
|
-
$env:DMDATA_API_KEY = "your_api_key_here"
|
|
91
|
+
$env:DMDATA_API_KEY = "your_api_key_here" # ← 自分のAPIキーに置き換え
|
|
117
92
|
```
|
|
118
93
|
|
|
119
94
|
CMD:
|
|
120
95
|
```cmd
|
|
121
|
-
set DMDATA_API_KEY=your_api_key_here
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
**方法2: Configに保存(推奨)**
|
|
125
|
-
|
|
126
|
-
グローバルインストール時はこちらが最も簡単です。
|
|
127
|
-
```bash
|
|
128
|
-
fleq config set apiKey your_api_key_here
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
保存先は `fleq config path` で確認できます(OSごとに異なります。詳細は「Config管理」を参照)。
|
|
132
|
-
|
|
133
|
-
**方法3: .envファイル**
|
|
134
|
-
|
|
135
|
-
カレントディレクトリの `.env` ファイルから読み込みます(ソースからの実行時に便利です)。
|
|
136
|
-
```
|
|
137
|
-
DMDATA_API_KEY=your-key-here
|
|
96
|
+
set DMDATA_API_KEY=your_api_key_here &REM ← 自分のAPIキーに置き換え
|
|
138
97
|
```
|
|
139
98
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
初めて使う場合は、次の順で進めると分かりやすいです。
|
|
143
|
-
|
|
144
|
-
### 1. 初期設定を行う
|
|
145
|
-
|
|
146
|
-
まずは API キーを設定します。初回は対話形式の `init` が簡単です。
|
|
147
|
-
|
|
148
|
-
```bash
|
|
149
|
-
fleq init
|
|
99
|
+
カレントディレクトリの `.env` ファイルからも読み込めます(ソースからの実行時に便利です)。
|
|
150
100
|
```
|
|
151
|
-
|
|
152
|
-
対話なしで設定する場合は、次のように API キーを保存できます。
|
|
153
|
-
|
|
154
|
-
```bash
|
|
155
|
-
fleq config set apiKey your_api_key_here
|
|
101
|
+
DMDATA_API_KEY=your-key-here # ← 自分のAPIキーに置き換え
|
|
156
102
|
```
|
|
157
103
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
デフォルト設定で起動すると、以下の区分を受信します。
|
|
161
|
-
|
|
162
|
-
- `telegram.earthquake`
|
|
163
|
-
- `eew.forecast`
|
|
164
|
-
- `eew.warning`
|
|
165
|
-
- `telegram.volcano`
|
|
104
|
+
## よく使う起動例
|
|
166
105
|
|
|
167
106
|
```bash
|
|
107
|
+
# デフォルト設定で起動(全4区分を受信)
|
|
168
108
|
fleq
|
|
169
|
-
```
|
|
170
109
|
|
|
171
|
-
|
|
110
|
+
# 地震・火山情報だけ受信(EEW契約なしの場合に便利)
|
|
111
|
+
fleq -c telegram.earthquake,telegram.volcano
|
|
172
112
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
受信したい区分だけを指定して起動できます。
|
|
176
|
-
|
|
177
|
-
```bash
|
|
178
|
-
fleq -c telegram.earthquake,eew.warning
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
### 4. 表示や動作を調整する
|
|
182
|
-
|
|
183
|
-
表示モードを切り替えたい場合:
|
|
184
|
-
|
|
185
|
-
```bash
|
|
113
|
+
# コンパクト表示で起動
|
|
186
114
|
fleq --mode compact
|
|
187
|
-
```
|
|
188
115
|
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
```bash
|
|
116
|
+
# テスト電文も含めて受信
|
|
192
117
|
fleq --test including
|
|
193
|
-
```
|
|
194
|
-
|
|
195
|
-
デバッグログを表示したい場合:
|
|
196
118
|
|
|
197
|
-
|
|
119
|
+
# デバッグログを表示
|
|
198
120
|
fleq --debug
|
|
199
|
-
```
|
|
200
|
-
|
|
201
|
-
同一 API キーの既存 open socket を閉じてから接続したい場合:
|
|
202
121
|
|
|
203
|
-
|
|
122
|
+
# 同一APIキーの既存ソケットを閉じてから接続
|
|
204
123
|
fleq --close-others
|
|
205
124
|
```
|
|
206
125
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
起動中は `fleq>` プロンプトで各種コマンドを利用できます。
|
|
210
|
-
|
|
211
|
-
- `help`: コマンド一覧を表示
|
|
212
|
-
- `status`: 接続状態を確認
|
|
213
|
-
- `config`: 現在の設定を確認
|
|
214
|
-
- `quit`: 終了
|
|
215
|
-
|
|
216
|
-
詳しくは下記の「REPLコマンド」を参照してください。
|
|
217
|
-
|
|
218
|
-
## テスト
|
|
219
|
-
|
|
220
|
-
```bash
|
|
221
|
-
# テストを実行します
|
|
222
|
-
npm test
|
|
223
|
-
|
|
224
|
-
# ウォッチモードで実行します
|
|
225
|
-
npm run test:watch
|
|
226
|
-
```
|
|
227
|
-
|
|
228
|
-
- テストフレームワーク: Vitest
|
|
229
|
-
- テストファイル: 22件
|
|
230
|
-
- フィクスチャ: `test/fixtures/` に実電文XML 81件
|
|
231
|
-
- モックヘルパー: `test/helpers/mock-message.ts`
|
|
126
|
+
デフォルトの受信区分は `telegram.earthquake,eew.forecast,eew.warning,telegram.volcano` です。
|
|
127
|
+
契約内容によっては一部の区分を受信できない場合があります。
|
|
232
128
|
|
|
233
|
-
## CLIオプション
|
|
129
|
+
## CLI オプション
|
|
234
130
|
|
|
235
131
|
| オプション | 説明 | デフォルト |
|
|
236
132
|
|-----------|------|-----------|
|
|
237
|
-
| `-k, --api-key <key>` | dmdata.jp APIキー | 環境変数 `DMDATA_API_KEY` |
|
|
133
|
+
| `-k, --api-key <key>` | dmdata.jp API キー | 環境変数 `DMDATA_API_KEY` |
|
|
238
134
|
| `-c, --classifications <items>` | 受信区分(カンマ区切り) | `telegram.earthquake,eew.forecast,eew.warning,telegram.volcano` |
|
|
239
135
|
| `--test <mode>` | テスト電文: `no` / `including` / `only` | `no` |
|
|
240
|
-
| `--keep-existing` |
|
|
241
|
-
| `--close-others` | 同一API
|
|
136
|
+
| `--keep-existing` | 既存接続を維持(互換オプション。現在はデフォルト動作) | `true` |
|
|
137
|
+
| `--close-others` | 同一 API キーの既存ソケットを閉じてから接続 | `false` |
|
|
242
138
|
| `--mode <mode>` | 表示モード: `normal` / `compact` | `normal` |
|
|
243
139
|
| `--debug` | デバッグログ表示 | `false` |
|
|
244
140
|
|
|
245
|
-
##
|
|
141
|
+
## 設定
|
|
142
|
+
|
|
143
|
+
### Config ファイル
|
|
246
144
|
|
|
247
|
-
永続設定はOS
|
|
145
|
+
永続設定は OS 別のディレクトリに保存されます。
|
|
248
146
|
|
|
249
147
|
| OS | デフォルトパス |
|
|
250
148
|
|----|---------------|
|
|
@@ -252,65 +150,58 @@ npm run test:watch
|
|
|
252
150
|
| Linux | `~/.config/fleq/config.json` |
|
|
253
151
|
| Windows | `%APPDATA%\fleq\config.json` |
|
|
254
152
|
|
|
255
|
-
環境変数 `XDG_CONFIG_HOME` が設定されている場合は、全OSで `$XDG_CONFIG_HOME/fleq/config.json` が優先されます。
|
|
153
|
+
環境変数 `XDG_CONFIG_HOME` が設定されている場合は、全 OS で `$XDG_CONFIG_HOME/fleq/config.json` が優先されます。
|
|
256
154
|
旧バージョンで `~/.config/fleq/` や `~/.config/dmdata-monitor/` に保存された設定は、初回起動時に自動的に移行されます。
|
|
257
155
|
|
|
258
156
|
```bash
|
|
259
|
-
#
|
|
260
|
-
fleq config
|
|
261
|
-
|
|
262
|
-
#
|
|
263
|
-
fleq config
|
|
264
|
-
|
|
265
|
-
# 設定値を削除します
|
|
266
|
-
fleq config unset <key>
|
|
267
|
-
|
|
268
|
-
# Configファイルの保存先を表示します
|
|
269
|
-
fleq config path
|
|
270
|
-
|
|
271
|
-
# 設定可能キー一覧を表示します
|
|
272
|
-
fleq config keys
|
|
157
|
+
fleq config show # 現在の設定を表示
|
|
158
|
+
fleq config set <key> <value> # 設定値を保存
|
|
159
|
+
fleq config unset <key> # 設定値を削除
|
|
160
|
+
fleq config path # Config ファイルの保存先を表示
|
|
161
|
+
fleq config keys # 設定可能キー一覧を表示
|
|
273
162
|
```
|
|
274
163
|
|
|
275
|
-
|
|
164
|
+
### `config set` で操作できるキー
|
|
276
165
|
|
|
277
166
|
| キー | 説明 |
|
|
278
167
|
|------|------|
|
|
279
|
-
| `apiKey` | dmdata.jp APIキー |
|
|
280
|
-
| `classifications` |
|
|
168
|
+
| `apiKey` | dmdata.jp API キー |
|
|
169
|
+
| `classifications` | 受信区分(カンマ区切り) |
|
|
281
170
|
| `testMode` | テスト電文モード: `"no"` / `"including"` / `"only"` |
|
|
282
|
-
| `appName` |
|
|
171
|
+
| `appName` | アプリケーション名(複数デバイス運用時に変更。後述) |
|
|
283
172
|
| `maxReconnectDelaySec` | 再接続の最大待機秒数 |
|
|
284
|
-
| `keepExistingConnections` |
|
|
173
|
+
| `keepExistingConnections` | 既存ソケットを維持するかどうか (`true` / `false`) |
|
|
285
174
|
| `tableWidth` | テーブル表示幅 (40〜200、デフォルト: 60) |
|
|
286
175
|
| `infoFullText` | お知らせ電文の全文表示 (`true` / `false`) |
|
|
287
176
|
| `displayMode` | 表示モード: `"normal"` / `"compact"` |
|
|
288
|
-
| `waitTipIntervalMin` | 待機中ヒント表示間隔(分, 0で無効、デフォルト: 30) |
|
|
289
177
|
| `promptClock` | プロンプト時計: `"elapsed"` (経過時間) / `"clock"` (現在時刻) |
|
|
178
|
+
| `waitTipIntervalMin` | 待機中ヒント表示間隔(分、0 で無効、デフォルト: 30) |
|
|
290
179
|
| `sound` | 通知音の有効/無効 (`true` / `false`) |
|
|
291
|
-
| `eewLog` | EEWログ記録の有効/無効 (`true` / `false`) |
|
|
292
|
-
| `eewLogFields` | EEWログ記録項目の設定(オブジェクト形式) |
|
|
180
|
+
| `eewLog` | EEW ログ記録の有効/無効 (`true` / `false`) |
|
|
293
181
|
| `maxObservations` | 観測点の最大表示件数 (1〜999 / `"off"` で全件表示) |
|
|
294
|
-
| `backup` | EEW副回線の有効/無効 (`true` / `false`) |
|
|
182
|
+
| `backup` | EEW 副回線の有効/無効 (`true` / `false`) |
|
|
183
|
+
| `truncation` | 省略表示の上限設定(`truncation.<key> <N>` で個別設定。`fleq config keys` で詳細を確認) |
|
|
295
184
|
|
|
296
|
-
|
|
185
|
+
> **補足:** `eewLogFields`(EEW ログの記録項目)と通知カテゴリ設定は、REPL の `eewlog fields` / `notify` コマンドで管理します。
|
|
186
|
+
|
|
187
|
+
### 設定の優先順位(高い順)
|
|
297
188
|
|
|
298
189
|
1. CLI オプション (`--api-key`, `--classifications`, `--test`, `--keep-existing`, `--close-others`)
|
|
299
|
-
2. 環境変数 `DMDATA_API_KEY`(APIキーのみ)
|
|
300
|
-
3. `.env` ファイル(APIキーのみ)
|
|
301
|
-
4. Configファイル(`fleq config path` で確認可能)
|
|
302
|
-
5. デフォルト値
|
|
190
|
+
2. 環境変数 `DMDATA_API_KEY`(API キーのみ)
|
|
191
|
+
3. `.env` ファイル(API キーのみ)
|
|
192
|
+
4. Config ファイル(`fleq config path` で確認可能)
|
|
193
|
+
5. デフォルト値
|
|
303
194
|
|
|
304
|
-
|
|
195
|
+
### 補足
|
|
305
196
|
|
|
306
|
-
- Config
|
|
307
|
-
- **更新チェック:**
|
|
197
|
+
- Config 保存時と読み込み時は、可能な範囲で `0600` パーミッションへ調整します(API キー保護のため)。Windows では POSIX パーミッションが実効的でないため、ファイルシステムの ACL に依存します。
|
|
198
|
+
- **更新チェック:** 起動時に npm registry へ HTTP リクエストを送信し、新しいバージョンの有無を確認します。接続できない場合は GitHub Releases API にフォールバックします。チェック結果は 24 時間キャッシュされます。無効にするには環境変数 `FLEQ_NO_UPDATE_CHECK=1` を設定してください。
|
|
308
199
|
- DMDATA 公式仕様に合わせ、REST API の認証は `Authorization: Basic ...` を使用します。
|
|
309
|
-
- DMDATA
|
|
200
|
+
- 通常運用では `--close-others` は不要です(DMDATA 公式は、同時接続数に余裕がない場合のみ Socket Close v2 の利用を案内しています)。
|
|
310
201
|
|
|
311
|
-
##
|
|
202
|
+
## 複数デバイスで使う場合
|
|
312
203
|
|
|
313
|
-
同一アカウントの複数API
|
|
204
|
+
同一アカウントの複数 API キーを使って複数デバイスで FlEq を同時に起動する場合は、**デバイスごとに異なる `appName` を設定**してください。
|
|
314
205
|
|
|
315
206
|
```bash
|
|
316
207
|
# デバイスA(例: Mac)
|
|
@@ -320,19 +211,19 @@ fleq config set appName fleq-mac
|
|
|
320
211
|
fleq config set appName fleq-raspi
|
|
321
212
|
```
|
|
322
213
|
|
|
323
|
-
FlEq は起動時に前回セッションの残留ソケットをクリーンアップしますが、`appName` が同じだと他デバイスのソケットまで閉じてしまいます。デバイスごとに異なる `appName`
|
|
214
|
+
FlEq は起動時に前回セッションの残留ソケットをクリーンアップしますが、`appName` が同じだと他デバイスのソケットまで閉じてしまいます。デバイスごとに異なる `appName` を設定することで、自分のソケットのみがクリーンアップ対象になります。
|
|
324
215
|
|
|
325
|
-
|
|
216
|
+
Raspberry Pi での常時稼働については [Raspberry Pi 500 セットアップガイド](docs/raspi500-setup-guide.md) も参照してください。
|
|
326
217
|
|
|
327
|
-
|
|
218
|
+
## REPL コマンド
|
|
328
219
|
|
|
329
|
-
`help`
|
|
220
|
+
実行中に `fleq> ` プロンプトで以下のコマンドを利用できます。`help` コマンドでカテゴリ別の一覧を表示できます。
|
|
330
221
|
|
|
331
222
|
### 情報
|
|
332
223
|
| コマンド | 説明 |
|
|
333
224
|
|----------|------|
|
|
334
225
|
| `help` / `?` | コマンド一覧を表示 |
|
|
335
|
-
| `history [N]` | 地震履歴を取得・表示(デフォルト10件、最新が一番下) |
|
|
226
|
+
| `history [N]` | 地震履歴を取得・表示(デフォルト 10 件、最新が一番下) |
|
|
336
227
|
| `colors` | カラーパレット・震度色の一覧を表示 |
|
|
337
228
|
| `detail [tsunami\|volcano]` | 直近の津波情報または火山警報状態を再表示 |
|
|
338
229
|
|
|
@@ -347,172 +238,38 @@ FlEq は起動時に前回セッションの残留ソケットをクリーンア
|
|
|
347
238
|
### 設定
|
|
348
239
|
| コマンド | 説明 |
|
|
349
240
|
|----------|------|
|
|
350
|
-
| `notify` | 通知カテゴリのON/OFF状態を表示 |
|
|
241
|
+
| `notify` | 通知カテゴリの ON/OFF 状態を表示 |
|
|
351
242
|
| `notify <category> [on\|off]` | 指定カテゴリの通知をトグル/ON/OFF |
|
|
352
|
-
| `notify all:on` / `all:off` | 全カテゴリの通知を一括ON/OFF |
|
|
353
|
-
| `eewlog` | EEWログ記録の設定を表示 |
|
|
354
|
-
| `eewlog on` / `off` | EEWログ記録の有効/無効を切替 |
|
|
355
|
-
| `eewlog fields` | EEWログ記録項目の一覧表示 |
|
|
243
|
+
| `notify all:on` / `all:off` | 全カテゴリの通知を一括 ON/OFF |
|
|
244
|
+
| `eewlog` | EEW ログ記録の設定を表示 |
|
|
245
|
+
| `eewlog on` / `off` | EEW ログ記録の有効/無効を切替 |
|
|
246
|
+
| `eewlog fields` | EEW ログ記録項目の一覧表示 |
|
|
356
247
|
| `eewlog fields <field> [on\|off]` | 記録項目のトグル/ON/OFF |
|
|
357
|
-
| `tablewidth [N\|auto]` |
|
|
248
|
+
| `tablewidth [N\|auto]` | テーブル幅の表示・変更(`auto` でターミナル幅に自動追従) |
|
|
358
249
|
| `infotext [full/short]` | お知らせ電文の全文/省略切替 |
|
|
359
|
-
| `tipinterval [N]` | 待機中ヒント表示間隔(分)を表示・変更(0で無効) |
|
|
250
|
+
| `tipinterval [N]` | 待機中ヒント表示間隔(分)を表示・変更(0 で無効) |
|
|
360
251
|
| `mode [normal/compact]` | 表示モード切替 |
|
|
361
|
-
| `clock [elapsed/now]` |
|
|
362
|
-
| `sound [on/off]` | 通知音のON/OFF切替 |
|
|
252
|
+
| `clock [elapsed/now]` | プロンプト時計の切替(`now` は Config 上の `"clock"` に対応) |
|
|
253
|
+
| `sound [on/off]` | 通知音の ON/OFF 切替 |
|
|
363
254
|
| `theme` | カラーテーマの表示・管理(`theme path` / `theme show` / `theme reset` / `theme reload` / `theme validate`) |
|
|
364
255
|
| `mute [duration]` | 通知を一時ミュート(例: `mute 30m`、`mute off` で解除) |
|
|
365
256
|
| `fold [N\|off]` | 観測点の表示件数制限(例: `fold 10`、`fold off` で全件表示) |
|
|
257
|
+
| `limit` | 省略表示の上限設定を一覧表示 |
|
|
258
|
+
| `limit <key> <N>` | 上限値を変更(1〜999) |
|
|
259
|
+
| `limit <key> default` | デフォルト値に戻す |
|
|
260
|
+
| `limit reset` | 全項目をデフォルトに戻す |
|
|
366
261
|
|
|
367
262
|
### 操作
|
|
368
263
|
| コマンド | 説明 |
|
|
369
264
|
|----------|------|
|
|
370
265
|
| `test sound [level]` | サウンドテスト(レベル: critical, warning, normal, info, cancel) |
|
|
371
266
|
| `test table [type] [番号]` | 表示形式テスト |
|
|
372
|
-
| `backup [on/off]` | EEW副回線の状態表示・起動/停止 |
|
|
267
|
+
| `backup [on/off]` | EEW 副回線の状態表示・起動/停止 |
|
|
373
268
|
| `clear` | ターミナル画面をクリア |
|
|
374
269
|
| `retry` | WebSocket 再接続を手動試行 |
|
|
375
270
|
| `quit` / `exit` | アプリケーションを終了 |
|
|
376
271
|
|
|
377
|
-
##
|
|
378
|
-
|
|
379
|
-
- CLIバイナリ名: `fleq` (`package.json` の `bin` 設定)
|
|
380
|
-
- `npm run dev`: build + run
|
|
381
|
-
- `npm run dev:lowmem`: build + メモリ最適化モードで run(`--optimize-for-size`)
|
|
382
|
-
- `npm run start:lowmem`: メモリ最適化モードで run(Raspberry Pi 等の低メモリ環境向け)
|
|
383
|
-
- `npm run clean`: `dist/` を削除
|
|
384
|
-
- `npm run release`: バージョン更新(Conventional Commitsに基づく)
|
|
385
|
-
- `npm run release:minor`: minor リリース
|
|
386
|
-
- `npm run release:major`: major リリース
|
|
387
|
-
|
|
388
|
-
## アーキテクチャ
|
|
389
|
-
|
|
390
|
-
```
|
|
391
|
-
src/
|
|
392
|
-
├── index.ts # エントリポイント (薄いブートストラップのみ)
|
|
393
|
-
├── types.ts # 共有型定義
|
|
394
|
-
├── config.ts # Configファイル管理 (読み書き・バリデーション)
|
|
395
|
-
├── logger.ts # ログレベル付きロガー
|
|
396
|
-
├── utils/
|
|
397
|
-
│ ├── intensity.ts # 震度ランク変換 (intensityToRank)
|
|
398
|
-
│ └── secrets.ts # APIキーマスク (maskApiKey)
|
|
399
|
-
├── engine/
|
|
400
|
-
│ ├── cli/
|
|
401
|
-
│ │ ├── cli.ts # Commander CLI定義
|
|
402
|
-
│ │ ├── cli-init.ts # インタラクティブ初期設定 (fleq init)
|
|
403
|
-
│ │ └── cli-run.ts # CLIアクションハンドラ (起動バナー・契約チェック)
|
|
404
|
-
│ ├── startup/
|
|
405
|
-
│ │ ├── config-resolver.ts # 設定解決 (CLI引数→環境変数→Config→デフォルト)
|
|
406
|
-
│ │ ├── tsunami-initializer.ts # 起動時の津波警報状態復元 (REST API)
|
|
407
|
-
│ │ ├── volcano-initializer.ts # 起動時の火山警報状態復元 (REST API)
|
|
408
|
-
│ │ └── update-checker.ts # npm 最新バージョンチェック
|
|
409
|
-
│ ├── monitor/
|
|
410
|
-
│ │ ├── monitor.ts # メインオーケストレーション (接続・受信委譲)
|
|
411
|
-
│ │ ├── shutdown.ts # グレースフルシャットダウン処理
|
|
412
|
-
│ │ └── repl-coordinator.ts # REPL表示・接続状態の協調制御
|
|
413
|
-
│ ├── messages/
|
|
414
|
-
│ │ ├── message-router.ts # 受信メッセージの分類・振り分け (全27種類)
|
|
415
|
-
│ │ ├── tsunami-state.ts # 津波警報状態管理 (プロンプト表示・detail コマンド)
|
|
416
|
-
│ │ └── volcano-state.ts # 火山警報状態管理 (複数火山同時追跡・プロンプト・detail)
|
|
417
|
-
│ ├── eew/
|
|
418
|
-
│ │ ├── eew-tracker.ts # EEW イベント追跡 (重複検出・状態管理・最終報処理)
|
|
419
|
-
│ │ └── eew-logger.ts # EEW ログファイル記録 (イベント別ファイル出力)
|
|
420
|
-
│ └── notification/
|
|
421
|
-
│ ├── notifier.ts # デスクトップ通知 (カテゴリ別ON/OFF)
|
|
422
|
-
│ ├── volcano-presentation.ts # 火山電文の表示/通知レベル判定
|
|
423
|
-
│ ├── node-notifier-loader.ts # node-notifier 遅延ロード (optional dependency)
|
|
424
|
-
│ └── sound-player.ts # クロスプラットフォーム通知音再生
|
|
425
|
-
├── dmdata/
|
|
426
|
-
│ ├── rest-client.ts # dmdata.jp REST API クライアント
|
|
427
|
-
│ ├── ws-client.ts # WebSocket 接続管理 (再接続・ping-pong)
|
|
428
|
-
│ ├── connection-manager.ts # 接続管理インターフェース (ConnectionManager)
|
|
429
|
-
│ ├── multi-connection-manager.ts # 複線接続管理 (primary + backup)
|
|
430
|
-
│ ├── endpoint-selector.ts # エンドポイント選択・リージョン間フェイルオーバー
|
|
431
|
-
│ ├── telegram-parser.ts # XML電文パーサ (gzip+base64デコード)
|
|
432
|
-
│ └── volcano-parser.ts # 火山電文パーサ (10種類の火山電文に対応)
|
|
433
|
-
└── ui/
|
|
434
|
-
├── formatter.ts # 共通ターミナル表示ユーティリティ (フレーム描画・テキスト処理)
|
|
435
|
-
├── eew-formatter.ts # EEW 表示フォーマッタ
|
|
436
|
-
├── earthquake-formatter.ts # 地震・津波・テキスト・南海トラフ・長周期 表示フォーマッタ
|
|
437
|
-
├── volcano-formatter.ts # 火山 表示フォーマッタ
|
|
438
|
-
├── theme.ts # テーマシステム (カラーパレット・ロール定義)
|
|
439
|
-
├── repl.ts # REPL インタラクション
|
|
440
|
-
├── test-samples.ts # 表示テスト用サンプルデータ
|
|
441
|
-
└── waiting-tips.ts # 待機中ヒント定義
|
|
442
|
-
```
|
|
443
|
-
|
|
444
|
-
## 対応電文タイプ(実装ベース)
|
|
445
|
-
|
|
446
|
-
| 電文タイプ | 分類 | パーサ関数 | 表示関数 |
|
|
447
|
-
|-----------|------|-----------|---------|
|
|
448
|
-
| `VXSE43` | `eew.warning` | `parseEewTelegram` | `displayEewInfo` |
|
|
449
|
-
| `VXSE44` | `eew.forecast` | `parseEewTelegram` | `displayEewInfo` |
|
|
450
|
-
| `VXSE45` | `eew.forecast` | `parseEewTelegram` | `displayEewInfo` |
|
|
451
|
-
| `VXSE51` | `telegram.earthquake` | `parseEarthquakeTelegram` | `displayEarthquakeInfo` |
|
|
452
|
-
| `VXSE52` | `telegram.earthquake` | `parseEarthquakeTelegram` | `displayEarthquakeInfo` |
|
|
453
|
-
| `VXSE53` | `telegram.earthquake` | `parseEarthquakeTelegram` | `displayEarthquakeInfo` |
|
|
454
|
-
| `VXSE56` | `telegram.earthquake` | `parseSeismicTextTelegram` | `displaySeismicTextInfo` |
|
|
455
|
-
| `VXSE60` | `telegram.earthquake` | `parseSeismicTextTelegram` | `displaySeismicTextInfo` |
|
|
456
|
-
| `VXSE61` | `telegram.earthquake` | `parseEarthquakeTelegram` | `displayEarthquakeInfo` |
|
|
457
|
-
| `VTSE41` | `telegram.earthquake` | `parseTsunamiTelegram` | `displayTsunamiInfo` |
|
|
458
|
-
| `VTSE51` | `telegram.earthquake` | `parseTsunamiTelegram` | `displayTsunamiInfo` |
|
|
459
|
-
| `VTSE52` | `telegram.earthquake` | `parseTsunamiTelegram` | `displayTsunamiInfo` |
|
|
460
|
-
| `VZSE40` | `telegram.earthquake` | `parseSeismicTextTelegram` | `displaySeismicTextInfo` |
|
|
461
|
-
| `VXSE62` | `telegram.earthquake` | `parseLgObservationTelegram` | `displayLgObservationInfo` |
|
|
462
|
-
| `VYSE50` | `telegram.earthquake` | `parseNankaiTroughTelegram` | `displayNankaiTroughInfo` |
|
|
463
|
-
| `VYSE51` | `telegram.earthquake` | `parseNankaiTroughTelegram` | `displayNankaiTroughInfo` |
|
|
464
|
-
| `VYSE52` | `telegram.earthquake` | `parseNankaiTroughTelegram` | `displayNankaiTroughInfo` |
|
|
465
|
-
| `VYSE60` | `telegram.earthquake` | `parseNankaiTroughTelegram` | `displayNankaiTroughInfo` |
|
|
466
|
-
| `VZVO40` | `telegram.volcano` | `parseVolcanoTelegram` | `displayVolcanoInfo` |
|
|
467
|
-
| `VFVO50` | `telegram.volcano` | `parseVolcanoTelegram` | `displayVolcanoInfo` |
|
|
468
|
-
| `VFVO51` | `telegram.volcano` | `parseVolcanoTelegram` | `displayVolcanoInfo` |
|
|
469
|
-
| `VFVO52` | `telegram.volcano` | `parseVolcanoTelegram` | `displayVolcanoInfo` |
|
|
470
|
-
| `VFSVii` | `telegram.volcano` | `parseVolcanoTelegram` | `displayVolcanoInfo` |
|
|
471
|
-
| `VFVO53` | `telegram.volcano` | `parseVolcanoTelegram` | `displayVolcanoInfo` |
|
|
472
|
-
| `VFVO54` | `telegram.volcano` | `parseVolcanoTelegram` | `displayVolcanoInfo` |
|
|
473
|
-
| `VFVO55` | `telegram.volcano` | `parseVolcanoTelegram` | `displayVolcanoInfo` |
|
|
474
|
-
| `VFVO56` | `telegram.volcano` | `parseVolcanoTelegram` | `displayVolcanoInfo` |
|
|
475
|
-
| `VFVO60` | `telegram.volcano` | `parseVolcanoTelegram` | `displayVolcanoInfo` |
|
|
476
|
-
|
|
477
|
-
## 主な機能
|
|
478
|
-
|
|
479
|
-
- WebSocketによるリアルタイム受信
|
|
480
|
-
- gzip圧縮+base64エンコードされたXML電文の自動デコード
|
|
481
|
-
- 展開サイズ上限チェック(10MB)
|
|
482
|
-
- 震度に応じた色分け表示
|
|
483
|
-
- 緊急地震速報(警報/予報)の視覚的な強調表示
|
|
484
|
-
- PLUM法・仮定震源要素・既到達の検出と視覚的表示
|
|
485
|
-
- EEWイベントの同時追跡(EventID単位、重複報スキップ、取消対応)
|
|
486
|
-
- EEWイベントのログファイル記録(イベント別ファイル出力、差分表記対応、記録項目の選択可能)
|
|
487
|
-
- EEW最終報(NextAdvisory)の検出とログ・トラッカー自動終了
|
|
488
|
-
- EEW差分表記(前の値 → 新しい値 形式)
|
|
489
|
-
- テーブル幅設定(40〜200、`auto` でターミナル幅に自動追従)とテキスト折り返し機能
|
|
490
|
-
- 表示モード切替(normal / compact)
|
|
491
|
-
- お知らせ電文の全文/省略切替
|
|
492
|
-
- 通知の一時ミュート機能(時間指定)
|
|
493
|
-
- 待機中ヒント表示(間隔設定可能、0で無効)
|
|
494
|
-
- インタラクティブ初期設定(`fleq init`)
|
|
495
|
-
- 津波警報状態管理とプロンプト表示(`detail` コマンドで津波情報を再表示)
|
|
496
|
-
- 通知音再生(レベル別サウンド、クロスプラットフォーム対応)
|
|
497
|
-
- 南海トラフ地震関連情報(VYSE50-52/VYSE60)の表示
|
|
498
|
-
- 長周期地震動に関する観測情報(VXSE62)の表示
|
|
499
|
-
- 地震活動に関する情報(VZSE40)の表示
|
|
500
|
-
- 火山情報の表示(噴火警報・噴火速報・降灰予報・火山の状況に関する解説情報・噴煙流向報・火山海上警報等、10種類の火山電文に対応)
|
|
501
|
-
- 火山警報状態管理(複数火山の同時追跡、プロンプト表示、`detail volcano` コマンドで再表示)
|
|
502
|
-
- 起動時の津波・火山警報状態復元(REST APIで最新状態を取得)
|
|
503
|
-
- EEWで主要動到達と推測される地域のリスト表示
|
|
504
|
-
- デスクトップ通知機能(カテゴリ別ON/OFF、REPLで管理。下記「デスクトップ通知」参照)
|
|
505
|
-
- テーマシステム(CUD配色準拠のカラーパレット + セマンティックロール、`theme.json` でカスタマイズ可能)
|
|
506
|
-
- 観測点の表示件数制限(`fold` コマンド)
|
|
507
|
-
- EEW副回線(backup)による複線接続
|
|
508
|
-
- エンドポイント選択・リージョン間フェイルオーバー
|
|
509
|
-
- 指数バックオフによる自動再接続
|
|
510
|
-
- ping-pongによる接続維持
|
|
511
|
-
- ハートビート監視(90秒)
|
|
512
|
-
- 既存ソケットの自動クリーンアップ
|
|
513
|
-
- Configファイルによる永続設定管理
|
|
514
|
-
|
|
515
|
-
## デスクトップ通知
|
|
272
|
+
## 通知
|
|
516
273
|
|
|
517
274
|
`node-notifier` パッケージによるデスクトップ通知に対応しています(optional dependency)。
|
|
518
275
|
|
|
@@ -529,9 +286,41 @@ src/
|
|
|
529
286
|
# Debian / Ubuntu / Raspberry Pi OS
|
|
530
287
|
sudo apt install libnotify-bin
|
|
531
288
|
```
|
|
532
|
-
- ヘッドレス環境(サーバー、SSH接続のみ)では通知を表示する手段がないため、通知機能は自動的に無効になります。アプリの動作には影響しません。
|
|
289
|
+
- ヘッドレス環境(サーバー、SSH 接続のみ)では通知を表示する手段がないため、通知機能は自動的に無効になります。アプリの動作には影響しません。
|
|
533
290
|
- `node-notifier` のインストールに失敗した場合でも、通知以外の機能は正常に動作します。
|
|
534
291
|
|
|
292
|
+
## FAQ / トラブルシューティング
|
|
293
|
+
|
|
294
|
+
**Q: `fleq` コマンドが見つからない**
|
|
295
|
+
A: グローバルインストールが完了しているか確認してください。`npm install -g @sayue_ltr/fleq` を再実行し、`npm bin -g` のパスが環境変数 `PATH` に含まれているか確認してください。
|
|
296
|
+
|
|
297
|
+
**Q: API キーを設定したのに接続できない**
|
|
298
|
+
A: API キーに必要な権限が付与されているか確認してください。最低限 `socket.start` と、受信する区分に対応する `telegram.get.*` 権限が必要です。dmdata.jp の管理画面で確認できます。
|
|
299
|
+
|
|
300
|
+
**Q: EEW が受信できない**
|
|
301
|
+
A: `eew.forecast` / `eew.warning` の受信には dmdata.jp の対応する契約が必要です。無料プランでは受信できません。契約なしで試す場合は `-c telegram.earthquake,telegram.volcano` で地震・火山情報のみ受信してください。
|
|
302
|
+
|
|
303
|
+
**Q: 他のデバイスで FlEq を起動したら、既存の接続が切れた**
|
|
304
|
+
A: デバイスごとに異なる `appName` を設定してください。詳しくは「複数デバイスで使う場合」を参照してください。
|
|
305
|
+
|
|
306
|
+
**Q: Linux でデスクトップ通知が表示されない**
|
|
307
|
+
A: `notify-send` がインストールされているか確認してください(`sudo apt install libnotify-bin`)。SSH 接続のみのヘッドレス環境では通知は利用できませんが、本体の動作には影響しません。
|
|
308
|
+
|
|
309
|
+
## 関連ドキュメント
|
|
310
|
+
|
|
311
|
+
- [表示リファレンス](docs/display-reference.md) — 電文タイプ別の表示フォーマット一覧
|
|
312
|
+
- [Raspberry Pi 500 セットアップガイド](docs/raspi500-setup-guide.md) — Raspberry Pi での常時稼働セットアップ
|
|
313
|
+
- [内部仕様書](docs/specs/) — アーキテクチャ・電文ルーティング・UI 仕様等の開発者向けドキュメント
|
|
314
|
+
- [ソースコード](https://github.com/Lateo2580/FlEq) — ビルド・開発方法は `npm run dev` / `npm test` 等。詳細はリポジトリを参照
|
|
315
|
+
|
|
316
|
+
## アンインストール
|
|
317
|
+
|
|
318
|
+
```bash
|
|
319
|
+
npm uninstall -g @sayue_ltr/fleq
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
Config ファイルを削除する場合は、`fleq config path` で表示されたディレクトリを手動で削除してください。
|
|
323
|
+
|
|
535
324
|
## ライセンス
|
|
536
325
|
|
|
537
326
|
MIT
|