diff options
Diffstat (limited to 'bigclown-gateway')
| -rw-r--r-- | bigclown-gateway/Makefile | 46 | ||||
| -rw-r--r-- | bigclown-gateway/files/config | 10 | ||||
| -rwxr-xr-x | bigclown-gateway/files/init | 58 | 
3 files changed, 114 insertions, 0 deletions
| diff --git a/bigclown-gateway/Makefile b/bigclown-gateway/Makefile new file mode 100644 index 0000000..068edfd --- /dev/null +++ b/bigclown-gateway/Makefile @@ -0,0 +1,46 @@ +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=bigclown-gateway +PKG_VERSION:=1.16.1 +PKG_RELEASE:=1 + +PKG_SOURCE_URL:=https://codeload.github.com/bigclownlabs/bch-gateway/tar.gz/v$(PKG_VERSION)? +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_HASH:=9dad4663be59b8184e4501aca70295e91271d3416197d8dd123b9fbcdbcca638 +PKG_LICENSE:=MIT +PKG_BUILD_DIR:=$(BUILD_DIR)/bch-gateway-$(PKG_VERSION) + +include $(INCLUDE_DIR)/package.mk +include ../../../lang/python/python3-package.mk + +define Package/$(PKG_NAME) +  SECTION:=utils +  CATEGORY:=Utilities +  SUBMENU:=BigClown +  URL:=https://github.com/bigclownlabs/bch-gateway +  TITLE:=BigCLown gateway +  DEPENDS:=+kmod-usb-serial-ftdi +kmod-usb-acm +click-log +python3-paho-mqtt +python3-pyserial +python3-pyyaml +python3-simplejson + python3-schema python3-appdirs +endef + +define Py3Package/$(PKG_NAME)/install +	$(INSTALL_DIR) $(1)/etc/config +	$(INSTALL_CONF) ./files/config $(1)/etc/config/bigclown-gateway +	$(INSTALL_DIR) $(1)/etc/init.d +	$(INSTALL_BIN) ./files/init $(1)/etc/init.d/bigclown-gateway +endef + +define Package/$(PKG_NAME)/conffiles +/etc/config/bigclown-gateway +endef + +define Build/Compile +	sed -i 's/@@VERSION@@/$(PKG_VERSION)/' "$(PKG_BUILD_DIR)/setup.py" +	$(call Py3Build/Compile/Default) +endef + +$(eval $(call Py3Package,$(PKG_NAME))) +$(eval $(call BuildPackage,$(PKG_NAME))) diff --git a/bigclown-gateway/files/config b/bigclown-gateway/files/config new file mode 100644 index 0000000..6a60ae4 --- /dev/null +++ b/bigclown-gateway/files/config @@ -0,0 +1,10 @@ + +config gateway 'gateway' +	option enabled '0' +	option name 'usb-dongle' +	option device '/dev/ttyUSB0' +	option automatic_rename_kit_nodes '1' + +config mqtt 'mqtt' +	option host 'localhost' +	option port '1883' diff --git a/bigclown-gateway/files/init b/bigclown-gateway/files/init new file mode 100755 index 0000000..47c12b9 --- /dev/null +++ b/bigclown-gateway/files/init @@ -0,0 +1,58 @@ +#!/bin/sh /etc/rc.common + +START=98 +STOP=1 + +USE_PROCD=1 + +PROG=/usr/bin/bcg +CONF=/tmp/etc/bigclown-gateway.conf + +append() { +	local cfg="$1" +	local uci_name="$2" +	local out_name="$3" +	local default="$4" +	config_get val $cfg $uci_name $default +	if [ -n "$val" ]; then +	  echo "$out_name $val" >> $CONF +	fi +} + +start_service() { +	config_load bigclown-gateway + +	local enabled +	config_get_bool enabled gateway enabled "0" +	[ "$enabled" = "1" ] || { +		echo "Bigclown gateway service disabled" +		exit 1 +	} + +	rm -rf $CONF +	echo "Generating bigclown-gateway config file in $CONF" + +	append gateway name 'name:' usb-dongle +	# TODO add hotplug script and use different default here +	append gateway device 'device:' /dev/ttyUSB0 +	append gateway automatic_rename_kit_nodes 'automatic_rename_kit_nodes:' 1 +	append gateway base_topic_prefix 'base_topic_prefix:' + +	echo "mqtt:" >> $CONF +	append mqtt host '  host:' localhost +	append mqtt port '  port:' 1883 +	append mqtt cafile '  cafile:' +	append mqtt certfile '  certfile:' +	append mqtt keyfile '  keyfile:' + +	procd_open_instance +	procd_set_param respawn ${respawn_threshold:-3600} ${respawn_timeout:-5} ${respawn_retry:-5} +	procd_set_param command "$PROG" -c "$CONF" -W +	procd_set_param stdout 1 +	procd_set_param stderr 1 +	procd_close_instance +} + +service_triggers() { +	procd_add_reload_trigger 'bigclown-gateway' +} | 
