diff --git a/libs/libsml/Makefile b/libs/libsml/Makefile new file mode 100644 index 00000000000000..c51a77b0b250dd --- /dev/null +++ b/libs/libsml/Makefile @@ -0,0 +1,50 @@ +include $(TOPDIR)/rules.mk + +PKG_NAME:=libsml +PKG_SOURCE_PROTO:=git +PKG_SOURCE_URL=https://github.com/volkszaehler/libsml.git +PKG_RELEASE:=1 +PKG_SOURCE_DATE:=2025-09-27 +PKG_SOURCE_VERSION:=9ff113e448efd1b14f871e556ce189a797032447 + +PKG_MAINTAINER:=Andy Voigt +PKG_LICENSE:=GPL-3.0-or-later +PKG_LICENSE_FILES:=LICENSE + +include $(INCLUDE_DIR)/package.mk + +define Package/libsml + SECTION:=libs + CATEGORY:=Libraries + TITLE:=libsml + URL:=volkszaehler.org + DEPENDS:=+libuuid +endef + +define Package/libsml/description + libSML is a library which implements the Smart Message Language (SML) protocol + specified by VDE's Forum Netztechnik/Netzbetrieb (FNN). It can be utilized to + communicate to FNN specified Smart Meters or Smart Meter components (EDL/MUC). +endef + +define Build/Compile + $(MAKE) -C $(PKG_BUILD_DIR)/sml \ + CC="$(TARGET_CC)" \ + LD="$(TARGET_CROSS)ld" +endef + +define Build/InstallDev + $(INSTALL_DIR) $(1)/usr/include + $(CP) -a $(PKG_BUILD_DIR)/sml/include/* $(1)/usr/include/ + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_BUILD_DIR)/sml/lib/libsml.{a,so*} $(1)/usr/lib/ + $(LN) libsml.so.$(PKG_VERSION) $(1)/usr/lib/libsml.so +endef + +define Package/libsml/install + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_BUILD_DIR)/sml/lib/libsml.{a,so*} $(1)/usr/lib/ + $(LN) libsml.so.$(PKG_VERSION) $(1)/usr/lib/libsml.so +endef + +$(eval $(call BuildPackage,libsml)) diff --git a/utils/vzlogger/Makefile b/utils/vzlogger/Makefile new file mode 100644 index 00000000000000..ad001ccc95a1f7 --- /dev/null +++ b/utils/vzlogger/Makefile @@ -0,0 +1,42 @@ +include $(TOPDIR)/rules.mk + +PKG_NAME:=vzlogger +PKG_SOURCE_PROTO:=git +PKG_SOURCE_URL=https://github.com/volkszaehler/vzlogger.git +PKG_RELEASE:=1 +PKG_SOURCE_DATE:=2025-10-06 +PKG_SOURCE_VERSION:=fdad271ea3884f1ee970a8b0b6c42451d93f20a4 + +PKG_MAINTAINER:=Andy Voigt +PKG_LICENSE:=GPL-3.0-or-later +PKG_LICENSE_FILES:=COPYING + +include $(INCLUDE_DIR)/package.mk +include $(INCLUDE_DIR)/cmake.mk + +CMAKE_INSTALL:=1 +CMAKE_OPTIONS += \ + -DBUILD_TEST:BOOL=OFF + +define Package/vzlogger + SECTION:=utils + CATEGORY:=Utilities + TITLE:=vzlogger + URL:=volkszaehler.org + DEPENDS:=+libmosquitto-ssl +libsml +libmicrohttpd-no-ssl +libcurl +libunistring +libsasl2 +libgcrypt +libgnutls +libstdcpp +libjson-c +endef + +define Package/vzlogger/description + vzlogger is a tool to read values from sensors and smartmeters. + It is used to collect data which can be forwarded to the volkszaehler.org Middleware + or to an MQTT broker +endef + +define Package/vzlogger/install + $(INSTALL_DIR) $(1)/usr/bin $(1)/etc/init.d $(1)/etc/config + $(CP) $(PKG_INSTALL_DIR)/usr/bin/vzlogger $(1)/usr/bin/ + $(INSTALL_BIN) ./files/vzlogger.init $(1)/etc/init.d/vzlogger + $(INSTALL_CONF) ./files/vzlogger.conf $(1)/etc/config/vzlogger.conf +endef + +$(eval $(call BuildPackage,vzlogger)) diff --git a/utils/vzlogger/files/vzlogger.conf b/utils/vzlogger/files/vzlogger.conf new file mode 100644 index 00000000000000..d91fc640a11a61 --- /dev/null +++ b/utils/vzlogger/files/vzlogger.conf @@ -0,0 +1,29 @@ +{ + "retry": 2, + "verbosity": 1, + "log": "/var/log/vzlogger.log", + "push": [], + "local": { + "enabled": true, + "port": 8080, + "index": true, + "timeout": 0, + "buffer": 0 + }, + "meters": [ + { + "enabled": true, + "allowskip": false, + "interval": -1, + "aggtime": 10, + "aggfixedinterval": true, + "channels": [], + "protocol": "sml", + "device": "/dev/ttyUSB0", + "pullseq": "", + "baudrate": 9600, + "parity": "8n1", + "use_local_time": false + } + ] +} diff --git a/utils/vzlogger/files/vzlogger.init b/utils/vzlogger/files/vzlogger.init new file mode 100644 index 00000000000000..38d2c07ed4d698 --- /dev/null +++ b/utils/vzlogger/files/vzlogger.init @@ -0,0 +1,14 @@ +#!/bin/sh /etc/rc.common + +USE_PROCD=1 + +START=95 +STOP=01 + +start_service() { + procd_open_instance + procd_set_param command /usr/bin/vzlogger -c /etc/config/vzlogger.conf + procd_set_param stdout 1 + procd_set_param stderr 1 + procd_close_instance +} diff --git a/utils/vzlogger/patches/001-disable-werror.patch b/utils/vzlogger/patches/001-disable-werror.patch new file mode 100644 index 00000000000000..4a56169bcc74bf --- /dev/null +++ b/utils/vzlogger/patches/001-disable-werror.patch @@ -0,0 +1,33 @@ +Index: vzlogger-2025-10-06-fdad271/modules/CompilerFlags.cmake +=================================================================== +--- vzlogger-2022-08-20-fdad271.orig/modules/CompilerFlags.cmake ++++ vzlogger-2022-08-20-fdad271/modules/CompilerFlags.cmake +@@ -8,7 +8,7 @@ if(NOT WIN32) + message(STATUS "using gcc compiler ${CMAKE_CXX_COMPILER_ID}") + include (CheckCXXSourceCompiles) + +- set(CMAKE_CXX_FLAGS "$ENV{CXXFLAGS} -W -Wall -Wextra -Werror -Wnon-virtual-dtor -Wno-system-headers") ++ set(CMAKE_CXX_FLAGS "$ENV{CXXFLAGS} -W -Wall -Wextra -Wnon-virtual-dtor -Wno-system-headers") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-declarations") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Winit-self -Wmissing-include-dirs -Wno-pragmas -Wredundant-decls") +@@ -32,7 +32,7 @@ if(NOT WIN32) + # release flags + # Releases are made with the release build. Optimize code. + set(CMAKE_CXX_FLAGS_RELEASE "-O3 -Wno-unused-parameter") +- #set(CMAKE_CXX_FLAGS_RELEASE "-O3 -Werror -Wno-non-virtual-dtor") ++ #set(CMAKE_CXX_FLAGS_RELEASE "-O3 -Wno-non-virtual-dtor") + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wno-redundant-decls") + #set(CMAKE_CXX_FLAGS_RELEASE "-O3 -Wno-non-virtual-dtor") + +@@ -59,7 +59,7 @@ if(NOT WIN32) + set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_PROFILE} -ftest-coverage") + + # Experimental +- set(CMAKE_CXX_FLAGS_EXPERIMENTAL "-O0 -pg -g -ggdb -Wall -Werror -W -Wshadow") ++ set(CMAKE_CXX_FLAGS_EXPERIMENTAL "-O0 -pg -g -ggdb -Wall -W -Wshadow") + set(CMAKE_CXX_FLAGS_EXPERIMENTAL "${CMAKE_CXX_FLAGS_EXPERIMENTAL} -Wunused-variable") + set(CMAKE_CXX_FLAGS_EXPERIMENTAL "${CMAKE_CXX_FLAGS_EXPERIMENTAL} -Wunused-parameter") + set(CMAKE_CXX_FLAGS_EXPERIMENTAL "${CMAKE_CXX_FLAGS_EXPERIMENTAL} -Wunused-function") +-- +2.53.0 diff --git a/utils/vzlogger/patches/002-disable-optimization.patch b/utils/vzlogger/patches/002-disable-optimization.patch new file mode 100644 index 00000000000000..493c290c1ceafa --- /dev/null +++ b/utils/vzlogger/patches/002-disable-optimization.patch @@ -0,0 +1,18 @@ +Index: vzlogger-2022-08-20-fdad271/modules/CompilerFlags.cmake +=================================================================== +--- vzlogger-2022-08-20-fdad271.orig/modules/CompilerFlags.cmake ++++ vzlogger-2022-08-20-fdad271/modules/CompilerFlags.cmake +@@ -29,10 +29,10 @@ if(NOT WIN32) + + # release flags + # Releases are made with the release build. Optimize code. +- set(CMAKE_CXX_FLAGS_RELEASE "-O3 -Wno-unused-parameter") +- #set(CMAKE_CXX_FLAGS_RELEASE "-O3 -Wno-non-virtual-dtor") ++ set(CMAKE_CXX_FLAGS_RELEASE "-Wno-unused-parameter") ++ #set(CMAKE_CXX_FLAGS_RELEASE "-Wno-non-virtual-dtor") + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wno-redundant-decls") +- #set(CMAKE_CXX_FLAGS_RELEASE "-O3 -Wno-non-virtual-dtor") ++ #set(CMAKE_CXX_FLAGS_RELEASE "-Wno-non-virtual-dtor") + + # debug flags + set(CMAKE_CXX_FLAGS_DEBUG