wifi-presence: add new package
See https://github.com/awilliams/wifi-presence for details. Signed-off-by: Adam Williams <pwnfactory@gmail.com>
This commit is contained in:
parent
a39470c44d
commit
aabd0da680
3 changed files with 167 additions and 0 deletions
55
net/wifi-presence/Makefile
Normal file
55
net/wifi-presence/Makefile
Normal file
|
@ -0,0 +1,55 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=wifi-presence
|
||||
PKG_VERSION:=0.1.2
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=-$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://codeload.github.com/awilliams/wifi-presence/tar.gz/v$(PKG_VERSION)?
|
||||
PKG_HASH:=f5cf8bf36e3c17ad4b0486007532030760c22c5f63bd63707d911ab94bd744df
|
||||
|
||||
PKG_LICENSE:=MIT
|
||||
PKG_MAINTAINER:=Adam Williams <pwnfactory@gmail.com>
|
||||
|
||||
PKG_BUILD_DEPENDS:=golang/host
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
PKG_USE_MIPS16:=0
|
||||
|
||||
GO_PKG:=github.com/awilliams/wifi-presence
|
||||
GO_PKG_BUILD_PKG:=$(GO_PKG)/cmd/wifi-presence
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
include ../../lang/golang/golang-package.mk
|
||||
|
||||
define Package/wifi-presence
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
TITLE:=WiFi presence detection with Home Assistant integration
|
||||
URL:=https://github.com/awilliams/wifi-presence
|
||||
DEPENDS:=$(GO_ARCH_DEPENDS)
|
||||
endef
|
||||
|
||||
define Package/wifi-presence/description
|
||||
WiFi presence detection with Home Assistant integration.
|
||||
Publish WiFi client connect and disconnect events to MQTT.
|
||||
endef
|
||||
|
||||
define Package/wifi-presence/conffiles
|
||||
/etc/config/wifi-presence
|
||||
endef
|
||||
|
||||
define Package/wifi-presence/install
|
||||
$(call GoPackage/Package/Install/Bin,$(PKG_INSTALL_DIR))
|
||||
|
||||
$(INSTALL_DIR) $(1)/usr/bin
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/wifi-presence $(1)/usr/bin
|
||||
|
||||
$(INSTALL_DIR) $(1)/etc/config
|
||||
$(INSTALL_CONF) ./files/wifi-presence.conf $(1)/etc/config/wifi-presence
|
||||
|
||||
$(INSTALL_DIR) $(1)/etc/init.d
|
||||
$(INSTALL_BIN) ./files/wifi-presence.init $(1)/etc/init.d/wifi-presence
|
||||
endef
|
||||
|
||||
$(eval $(call GoBinPackage,wifi-presence))
|
||||
$(eval $(call BuildPackage,wifi-presence))
|
46
net/wifi-presence/files/wifi-presence.conf
Normal file
46
net/wifi-presence/files/wifi-presence.conf
Normal file
|
@ -0,0 +1,46 @@
|
|||
config wifi-presence main
|
||||
## MQTT broker address. Ex: 'tcp://192.168.1.2:1883'
|
||||
## Required.
|
||||
option mqttAddr ''
|
||||
|
||||
## MQTT client ID.
|
||||
## Defaults to 'wifi-presence.<hostname>'
|
||||
# option mqttID ''
|
||||
|
||||
## MQTT topic prefix.
|
||||
## Defaults to 'wifi-presence'
|
||||
# option mqttPrefix 'wifi-presence'
|
||||
|
||||
## MQTT username and password (optional).
|
||||
# option mqttUsername ''
|
||||
# option mqttPassword ''
|
||||
|
||||
## Verbose logging output if true.
|
||||
## Defaults to false.
|
||||
# option verbose 1
|
||||
|
||||
## Debounce duration (using Go duration syntax). Ex: '5s', '10m', '1s', '0'
|
||||
## Time until a client is considered disconnected and MQTT disconnect message
|
||||
## is published.
|
||||
## Defaults to 10s.
|
||||
# option debounce '10s'
|
||||
|
||||
## Access Point (AP) name. Included in MQTT topic and message payload.
|
||||
## Defaults to hostname.
|
||||
# option apName 'my-ap-name'
|
||||
|
||||
## hostapd control interface sockets.
|
||||
## Separate multiple sockets using ':'. Ex: '/var/run/hostapd/wlan0:/var/run/hostapd/wlan1'.
|
||||
## The hostadp configuration file contains the location where these sockets
|
||||
## will be created.
|
||||
## Defaults to any Unix socket(s) found in /var/run/hostapd, which is
|
||||
## the default hostapd directory.
|
||||
# option hostapdSocks ''
|
||||
|
||||
## Home Assistant options:
|
||||
## Publish MQTT auto discovery messages for each configured device.
|
||||
## Default is true.
|
||||
# option hassAutodiscovery 1
|
||||
## Set the MQTT topic prefix used by Home Assistant.
|
||||
## Default is 'homeassistant' (also Home Assistant's default value).
|
||||
# option hassPrefix 'homeassistant'
|
66
net/wifi-presence/files/wifi-presence.init
Normal file
66
net/wifi-presence/files/wifi-presence.init
Normal file
|
@ -0,0 +1,66 @@
|
|||
#!/bin/sh /etc/rc.common
|
||||
|
||||
USE_PROCD=1
|
||||
|
||||
START=95
|
||||
# stops before networking stops
|
||||
STOP=89
|
||||
|
||||
PROG=/usr/bin/wifi-presence
|
||||
CONF=wifi-presence
|
||||
|
||||
start_service() {
|
||||
# Load config.
|
||||
config_load "${CONF}"
|
||||
|
||||
local apName
|
||||
local debounce
|
||||
local hassAutodiscovery
|
||||
local hassPrefix
|
||||
local hostapdSocks
|
||||
local mqttAddr
|
||||
local mqttID
|
||||
local mqttUsername
|
||||
local mqttPassword
|
||||
local mqttPrefix
|
||||
local sockDir
|
||||
local verbose
|
||||
|
||||
config_get apName main apName
|
||||
config_get debounce main debounce
|
||||
config_get hassAutodiscovery main hassAutodiscovery
|
||||
config_get hassPrefix main hassPrefix
|
||||
config_get hostapdSocks main hostapdSocks
|
||||
config_get mqttAddr main mqttAddr
|
||||
config_get mqttID main mqttId
|
||||
config_get mqttUsername main mqttUsername
|
||||
config_get mqttPassword main mqttPassword
|
||||
config_get mqttPrefix main mqttPrefix
|
||||
config_get sockDir main sockDir
|
||||
config_get_bool verbose main verbose
|
||||
|
||||
procd_open_instance
|
||||
|
||||
procd_set_param command ${PROG}
|
||||
[ -n "${apName}" ] && procd_append_param command "-apName=${apName}"
|
||||
[ -n "${debounce}" ] && procd_append_param command "-debounce=${debounce}"
|
||||
[ -n "${hassAutodiscovery}" ] && procd_append_param command "-hass.autodiscovery=${hassAutodiscovery}"
|
||||
[ -n "${hassPrefix}" ] && procd_append_param command "-hass.prefix=${hassPrefix}"
|
||||
[ -n "${hostapdSocks}" ] && procd_append_param command "-hostapd.socks=${hostapdSocks}"
|
||||
[ -n "${mqttAddr}" ] && procd_append_param command "-mqtt.addr=${mqttAddr}"
|
||||
[ -n "${mqttID}" ] && procd_append_param command "-mqtt.id=${mqttID}"
|
||||
[ -n "${mqttUsername}" ] && procd_append_param command "-mqtt.username=${mqttUsername}"
|
||||
[ -n "${mqttPassword}" ] && procd_append_param command "-mqtt.password=${mqttPassword}"
|
||||
[ -n "${mqttPrefix}" ] && procd_append_param command "-mqtt.prefix=${mqttPrefix}"
|
||||
[ -n "${sockDir}" ] && procd_append_param command "-sockDir=${sockDir}"
|
||||
[ -n "${verbose}" ] && procd_append_param command "-verbose=${verbose}"
|
||||
|
||||
procd_set_param file "/etc/config/${CONF}"
|
||||
procd_set_param stdout 1
|
||||
procd_set_param stderr 1
|
||||
|
||||
# Restart every 5 seconds, indefinitely.
|
||||
procd_set_param respawn 0 5 0
|
||||
|
||||
procd_close_instance
|
||||
}
|
Loading…
Reference in a new issue