108 lines
3.3 KiB
Markdown
108 lines
3.3 KiB
Markdown
# Hackerspace Wroclaw Alarm Bot
|
|
|
|
[![builds.sr.ht status](https://builds.sr.ht/~michalr/hswro-alarm-bot.svg)](https://builds.sr.ht/~michalr/hswro-alarm-bot?)
|
|
|
|
Warning: this is a proof of concept, don't rely on it
|
|
|
|
It was very basically tested, and while it seems to work, approach it without any expectations.
|
|
In other words - treat it as a toy, not as a tool that will save your life or valuables, because it probably won't.
|
|
|
|
## Usage
|
|
|
|
|
|
```
|
|
$ TELEGRAM_APITOKEN=YOUR_API_TOKEN ./alarm_bot --satel_addr=127.0.0.1 --satel_port=31337 --tg_chat_id=YOUR_CHAT_ID_FROM_BOTFATHER
|
|
```
|
|
|
|
### Notification via HTTP callbacks
|
|
|
|
Set the following environment variables:
|
|
|
|
- `NOTIFY_URL_ARM` - for an URL that will be POST when partition **0** is armed
|
|
- `NOTIFY_URL_DISARM` - for an URL that will be POST when partition **0** is unarmed
|
|
- `ALARM_URL_ARM` - for an URL that will be POST when **any** partition alarm is activated
|
|
|
|
### Filtering events by change type
|
|
|
|
It's possible to filter events by change type. Use the `--allowed-types=TYPE1,TYPE2,...` command line parameter to do that. If that parameter is not provided, then all change types are allowed, otherwise only the provided ones will be used for notifications.
|
|
|
|
Supported types are:
|
|
- `zone-violation`
|
|
- `zone-tamper`
|
|
- `zone-alarm`
|
|
- `zone-tamper-alarm`
|
|
- `zone-alarm-memory`
|
|
- `zone-tamper-alarm-memory`
|
|
- `zone-bypass`
|
|
- `zone-no-violation-trouble`
|
|
- `zone-long-violation-trouble`
|
|
- `armed-partition-suppressed`
|
|
- `armed-partition`
|
|
- `partition-armed-mode-2`
|
|
- `partition-armed-mode-3`
|
|
- `partition-with-1st-code-enter`
|
|
- `partition-entry-time`
|
|
- `partition-exit-time-over-10s`
|
|
- `partition-exit-time-under-10s`
|
|
- `partition-temporary-blocked`
|
|
- `partition-blocked-guard-round`
|
|
- `partition-alarm`
|
|
- `partition-fire-alarm`
|
|
- `partition-alarm-memory`
|
|
- `partition-fire-alarm-memory`
|
|
- `output`
|
|
- `doors-opened`
|
|
- `doors-opened-long`
|
|
- `status-bit`
|
|
- `trouble-part-1`
|
|
- `trouble-part-2`
|
|
- `trouble-part-3`
|
|
- `trouble-part-4`
|
|
- `trouble-part-5`
|
|
- `trouble-memory-part-1`
|
|
- `trouble-memory-part-2`
|
|
- `trouble-memory-part-3`
|
|
- `trouble-memory-part-4`
|
|
- `trouble-memory-part-5`
|
|
- `partition-with-violated-zones`
|
|
- `zone-isolate`
|
|
|
|
### Filtering events by index (which meaning depends on the change type)
|
|
|
|
Use the `--allowed-indexes=1,2,3,...` command line parameter to set the list of allowed indexes (of course provide your own list instead of `1,2,3,...`). If that parameter is not provided, then all indexes are allowed; otherwise the notification is sent for all indexes.
|
|
|
|
## example systemd unit
|
|
|
|
```
|
|
[Unit]
|
|
Description=Satel Alarm Telegram Status Notifier
|
|
Requires=network.target
|
|
After=network.target
|
|
|
|
[Service]
|
|
Type=simple
|
|
ExecStart=/path/to/alarm_bot --satel-addr=192.168.13.37 --satel-port=7094 --tg-chat-id=1234,4567,9876
|
|
Environment=TELEGRAM_APITOKEN=YOUR_API_TOKEN
|
|
Environment=NOTIFY_URL_DISARM="http://localhost/disarmed"
|
|
Environment=NOTIFY_URL_ARM="http://localhost/armed"
|
|
DynamicUser=True
|
|
RuntimeDirectory=hswro-alarm-bot
|
|
StateDirectory=hswro-alarm-bot
|
|
RestartSec=30
|
|
Restart=on-failure
|
|
|
|
CPUAccounting=true
|
|
CPUQuota=5%
|
|
MemoryAccounting=true
|
|
MemoryHigh=25M
|
|
MemoryMax=50M
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
|
|
```
|
|
|
|
## Debugging
|
|
|
|
Set the `OMIT_TG` environment variable to, well, omit sending anything over to Telegram and just see the logs instead.
|