blob: ef7f5337a8c2a32b3728040d3330b0a180dbafb3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
# Pikud Ha'oref Alarm Tracking
[](https://github.com/yuvadm/alarmpy/actions/workflows/build.yml)
[](https://pypi.org/project/alarmpy/)
A simple CLI tool for tracking Pikud Ha'oref alarms.
Polls the unofficial API endpoint every second for incoming alarms. Prints active alarms as they occur. Prints routine messages once every 5 minutes by default.

## ⚠️ Disclaimer ⚠️
This tool is based on an unofficial API, and cannot be guaranteed to show correct or timely data. **Do not** use it if human life is at stake. **Do not** assume it shows you correct data. **Do not** assume it works properly, or even works at all. Always follow official guidelines and procedures published by [Pikud Ha'oref](https://www.oref.org.il/).
Further fine-print covering the terms of use of this tool can be found in the [GPLv3 license](LICENSE) file.
## Install
### Pip
The easiest way to install is from PyPI with `pip`:
```bash
$ pip install alarmpy
```
You can then run the `alarmpy` executable directly:
```bash
$ alarmpy --help
```
### Pipenv
For development usage it's recommended to clone the git repo and use `pipenv`:
```bash
$ git clone https://github.com/yuvadm/alarmpy
$ cd alarmpy
$ pipenv sync -d
$ pipenv run alarmpy
```
## Usage
Advanced flags can be set as described in the usage:
```bash
$ pipenv run alarmpy --help
Usage: alarmpy.py [OPTIONS]
Options:
--language [en|he|ar|ru] Alert language
--highlight TEXT String to search for and highlight in case of
alarm
--reverse Reverse Hebrew/Arabic output for terminals with
RTL bugs
--polling-delay INTEGER Polling delay in seconds
--routine-delay INTEGER Routine message delay in seconds
--alarm-id Print alarm IDs
--repeat-alarms Do not suppress ongoing alarms
--quiet Print only active alarms
--desktop-notifications Create push notifications on your desktop
notification center (currently only in Mac OS)
--mqtt-server TEXT Hostname / IP of MQTT server (optional)
--mqtt-client-id TEXT MQTT client identifier
--mqtt-port INTEGER Port for MQTT server
--mqtt-topic TEXT Topic on which to send MQTT messages
--mqtt-filter TEXT Payload value to filter before sending as a
message (semicolon separated)
--output-test Print a debug output and exit
--help Show this message and exit.
```
### MQTT Notifications
Integration with an MQTT server provides the ability to send custom MQTT messages for all or some of the alerts that are received. MQTT requires [`paho-mqtt`](https://pypi.org/project/paho-mqtt/) to be installed separately as an optional dependency.
To enable, specify at least the following parameters via the command line:
- `mqtt-server` - The MQTT Server hostname or IP, e.g. `localhost`
- `mqtt-topic` - The MQTT topic to which the MQTT message will be sent, e.g. `alarmpy/zone`
Additional optional parameters for MQTT integration are:
- `mqtt-client-id` - The ID of the MQTT client used by alarmpy. This will be used to connect to the MQTT server. Default: `alarmPyClient`. This only needs to be change in case you plan to have more than one instance of alarmpy running
- `mqtt-port` - The port on which the MQTT server is listening to. Default: `1883`
#### Filtering
When MQTT is enabled, all alerts are sent as separate messages on the specified topic. In case there is a desire to include only specific alert, use the `mqtt-filter` parameter to provide a semicolon separated list of substrings enclosed in double quotes. Each alert city and area will be checked against all filters, and only when a match is found, will an MQTT message be sent. For example: `--mqtt-filter "gaza;negev"`.
## License
[GPLv3](LICENSE)
|