mirror of https://github.com/sfeakes/AqualinkD.git
Update 3.2.6
parent
322924617d
commit
7a27d80b73
|
@ -0,0 +1,66 @@
|
||||||
|
#####################################
|
||||||
|
#
|
||||||
|
# Build container
|
||||||
|
# The most basic build for aqualinkd latest version
|
||||||
|
#####################################
|
||||||
|
|
||||||
|
FROM debian:bookworm AS aqualinkd-build
|
||||||
|
|
||||||
|
#ARG AQUALINKD_VERSION=2.3.3
|
||||||
|
ARG AQUALINKD_VERSION
|
||||||
|
ARG AQUALINKD_SOURCE
|
||||||
|
|
||||||
|
RUN test -n "$AQUALINKD_VERSION" || (echo "AQUALINKD_VERSION not set" && false)
|
||||||
|
RUN test -n "$AQUALINKD_SOURCE" || (echo "AQUALINKD_SOURCE not set" && false)
|
||||||
|
|
||||||
|
#VOLUME ["/aqualinkd-build"]
|
||||||
|
|
||||||
|
RUN apt-get update && \
|
||||||
|
apt-get -y install build-essential libsystemd-dev
|
||||||
|
|
||||||
|
# Seup working dir
|
||||||
|
RUN mkdir /home/AqualinkD
|
||||||
|
WORKDIR /home/AqualinkD
|
||||||
|
|
||||||
|
# Get latest release
|
||||||
|
RUN curl -sL $(curl -s https://api.github.com/repos/sfeakes/AqualinkD/releases/latest | grep "tarball_url" | cut -d'"' -f4) | tar xz --strip-components=1
|
||||||
|
|
||||||
|
# Build aqualinkd
|
||||||
|
RUN make clean && \
|
||||||
|
make container
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
#
|
||||||
|
# Runtime container
|
||||||
|
#
|
||||||
|
#####################################
|
||||||
|
|
||||||
|
FROM debian:bookworm-slim AS aqualinkd
|
||||||
|
|
||||||
|
#ARG AQUALINKD_VERSION
|
||||||
|
|
||||||
|
RUN apt-get update && \
|
||||||
|
apt-get install -y cron curl && \
|
||||||
|
apt-get clean
|
||||||
|
|
||||||
|
# Set cron to read local.d
|
||||||
|
RUN sed -i '/EXTRA_OPTS=.-l./s/^#//g' /etc/default/cron
|
||||||
|
|
||||||
|
# Add Open Container Initiative (OCI) annotations.
|
||||||
|
# See: https://github.com/opencontainers/image-spec/blob/main/annotations.md
|
||||||
|
|
||||||
|
LABEL org.opencontainers.image.title="AqualinkD"
|
||||||
|
LABEL org.opencontainers.image.url="https://hub.docker.com/repository/docker/sfeakes/aqualinkd/general"
|
||||||
|
LABEL org.opencontainers.image.source="https://github.com/sfeakes/AqualinkD"
|
||||||
|
LABEL org.opencontainers.image.documentation="https://github.com/sfeakes/AqualinkD"
|
||||||
|
#LABEL org.opencontainers.image.version=$AQUALINKD_VERSION
|
||||||
|
|
||||||
|
|
||||||
|
COPY --from=aqualinkd-build /home/AqualinkD/release/aqualinkd /usr/local/bin/aqualinkd
|
||||||
|
COPY --from=aqualinkd-build /home/AqualinkD/release/serial_logger /usr/local/bin/serial_logger
|
||||||
|
COPY --from=aqualinkd-build /home/AqualinkD/web/ /var/www/aqualinkd/
|
||||||
|
COPY --from=aqualinkd-build /home/AqualinkD/release/aqualinkd.conf /etc/aqualinkd.conf
|
||||||
|
#COPY --from=aqualinkd-build /home/AqualinkD/docker/aqualinkd-docker.cmd /usr/local/bin/aqualinkd-docker
|
||||||
|
RUN curl -s -o /usr/local/bin/aqualinkd-docker https://raw.githubusercontent.com/sfeakes/AqualinkD/master/extras/aqualinkd-docker.cmd
|
||||||
|
|
||||||
|
CMD ["sh", "-c", "/usr/local/bin/aqualinkd-docker"]
|
|
@ -37,7 +37,10 @@ else
|
||||||
AQUA_CONF="/etc/aqualinkd.conf"
|
AQUA_CONF="/etc/aqualinkd.conf"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# See if we have any execpre files to run.
|
||||||
|
if [[ -x "$CONFDIR/aqexec-pre.sh" ]]; then
|
||||||
|
"$CONFDIR/aqexec-pre.sh"
|
||||||
|
fi
|
||||||
|
|
||||||
# Start cron
|
# Start cron
|
||||||
service cron start
|
service cron start
|
|
@ -2,7 +2,7 @@ services:
|
||||||
aqualinkd:
|
aqualinkd:
|
||||||
#image: sfeakes/aqualinkd:latest
|
#image: sfeakes/aqualinkd:latest
|
||||||
build:
|
build:
|
||||||
context: https://github.com/sfeakes/AqualinkD-Docker.git#main
|
context: https://github.com/sfeakes/AqualinkD.git#main
|
||||||
ports:
|
ports:
|
||||||
- "6171:80"
|
- "6171:80"
|
||||||
volumes:
|
volumes:
|
333
Makefile
333
Makefile
|
@ -22,8 +22,11 @@ AQ_MANAGER =true
|
||||||
# Turn off threadded net services
|
# Turn off threadded net services
|
||||||
AQ_NO_THREAD_NETSERVICE = false
|
AQ_NO_THREAD_NETSERVICE = false
|
||||||
|
|
||||||
# define the C compiler to use
|
# define the C compiler(s) to use
|
||||||
CC = gcc
|
CC = gcc
|
||||||
|
CC_ARM64 = aarch64-linux-gnu-gcc
|
||||||
|
CC_ARMHF = arm-linux-gnueabihf-gcc
|
||||||
|
CC_AMD64 = x86_64-linux-gnu-gcc
|
||||||
|
|
||||||
#LIBS := -lpthread -lm
|
#LIBS := -lpthread -lm
|
||||||
#LIBS := -l pthread -l m
|
#LIBS := -l pthread -l m
|
||||||
|
@ -62,14 +65,16 @@ else
|
||||||
MKDIR = mkdir -p
|
MKDIR = mkdir -p
|
||||||
FixPath = $1
|
FixPath = $1
|
||||||
# Get some system information
|
# Get some system information
|
||||||
PI_OS_VERSION = $(shell cat /etc/os-release | grep VERSION= | cut -d\" -f2)
|
# PI_OS_VERSION = $(shell cat /etc/os-release | grep VERSION= | cut -d\" -f2)
|
||||||
$(info OS: $(PI_OS_VERSION) )
|
# $(info OS: $(PI_OS_VERSION) )
|
||||||
GLIBC_VERSION = $(shell ldd --version | grep ldd)
|
# GLIBC_VERSION = $(shell ldd --version | grep ldd)
|
||||||
$(info GLIBC build with: $(GLIBC_VERSION) )
|
# $(info GLIBC build with: $(GLIBC_VERSION) )
|
||||||
$(info GLIBC Prefered : 2.24-11+deb9u1 2.24 )
|
# $(info GLIBC Prefered : 2.24-11+deb9u1 2.24 )
|
||||||
endif
|
endif
|
||||||
# OSX
|
# OSX
|
||||||
ifeq ($(UNAME_S),Darwin)
|
ifeq ($(UNAME_S),Darwin)
|
||||||
|
MKDIR = mkdir -p
|
||||||
|
FixPath = $1
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -139,19 +144,46 @@ OBJ_DIR := ./build
|
||||||
DBG_OBJ_DIR := $(OBJ_DIR)/debug
|
DBG_OBJ_DIR := $(OBJ_DIR)/debug
|
||||||
SL_OBJ_DIR := $(OBJ_DIR)/slog
|
SL_OBJ_DIR := $(OBJ_DIR)/slog
|
||||||
|
|
||||||
|
OBJ_DIR_ARMHF := $(OBJ_DIR)/armhf
|
||||||
|
OBJ_DIR_ARM64 := $(OBJ_DIR)/arm64
|
||||||
|
SL_OBJ_DIR_ARMHF := $(OBJ_DIR_ARMHF)/slog
|
||||||
|
SL_OBJ_DIR_ARM64 := $(OBJ_DIR_ARM64)/slog
|
||||||
|
|
||||||
# Object files
|
# Object files
|
||||||
OBJ_FILES := $(patsubst %.c,$(OBJ_DIR)/%.o,$(SRCS))
|
OBJ_FILES := $(patsubst %.c,$(OBJ_DIR)/%.o,$(SRCS))
|
||||||
DBG_OBJ_FILES := $(patsubst %.c,$(DBG_OBJ_DIR)/%.o,$(DBG_SRC))
|
DBG_OBJ_FILES := $(patsubst %.c,$(DBG_OBJ_DIR)/%.o,$(DBG_SRC))
|
||||||
SL_OBJ_FILES := $(patsubst %.c,$(SL_OBJ_DIR)/%.o,$(SL_SRC))
|
SL_OBJ_FILES := $(patsubst %.c,$(SL_OBJ_DIR)/%.o,$(SL_SRC))
|
||||||
|
|
||||||
|
OBJ_FILES_ARMHF := $(patsubst %.c,$(OBJ_DIR_ARMHF)/%.o,$(SRCS))
|
||||||
|
OBJ_FILES_ARM64 := $(patsubst %.c,$(OBJ_DIR_ARM64)/%.o,$(SRCS))
|
||||||
|
SL_OBJ_FILES_ARMHF := $(patsubst %.c,$(SL_OBJ_DIR_ARMHF)/%.o,$(SL_SRC))
|
||||||
|
SL_OBJ_FILES_ARM64 := $(patsubst %.c,$(SL_OBJ_DIR_ARM64)/%.o,$(SL_SRC))
|
||||||
#MG_OBJ_FILES := $(patsubst %.c,$(OBJ_DIR)/%.o,$(MG_SRC))
|
#MG_OBJ_FILES := $(patsubst %.c,$(OBJ_DIR)/%.o,$(MG_SRC))
|
||||||
|
|
||||||
# define the executable file
|
# define the executable file
|
||||||
MAIN = ./release/aqualinkd
|
MAIN = ./release/aqualinkd
|
||||||
SLOG = ./release/serial_logger
|
SLOG = ./release/serial_logger
|
||||||
DEBG = ./release/aqualinkd-debug
|
DEBG = ./release/aqualinkd-debug
|
||||||
|
|
||||||
|
MAIN_ARM64 = ./release/aqualinkd-arm64
|
||||||
|
MAIN_ARMHF = ./release/aqualinkd-armhf
|
||||||
|
|
||||||
|
SLOG_ARM64 = ./release/serial_logger-arm64
|
||||||
|
SLOG_ARMHF = ./release/serial_logger-armhf
|
||||||
#LOGR = ./release/log_reader
|
#LOGR = ./release/log_reader
|
||||||
#PLAY = ./release/aqualinkd-player
|
#PLAY = ./release/aqualinkd-player
|
||||||
|
|
||||||
|
# Rules with no targets
|
||||||
|
.PHONY: clean clean-buildfiles buildrelease release install
|
||||||
|
|
||||||
|
release:
|
||||||
|
sudo docker run -it --mount type=bind,source=./,target=/build aqualinkd-releasebin make buildrelease
|
||||||
|
$(info Binaries for release have been built)
|
||||||
|
|
||||||
|
# This is run inside container Dockerfile.releaseBinariies
|
||||||
|
buildrelease: clean armhf arm64
|
||||||
|
$(shell cd release && ln -s ./aqualinkd-armhf ./aqualinkd && ln -s ./serial_logger-armhf ./serial_logger)
|
||||||
|
|
||||||
|
|
||||||
# Rules to pass to make.
|
# Rules to pass to make.
|
||||||
all: $(MAIN) $(SLOG)
|
all: $(MAIN) $(SLOG)
|
||||||
|
@ -170,14 +202,33 @@ container: $(MAIN) $(SLOG)
|
||||||
$(info $(MAIN) has been compiled (** For Container use **))
|
$(info $(MAIN) has been compiled (** For Container use **))
|
||||||
$(info $(SLOG) has been compiled (** For Container use **))
|
$(info $(SLOG) has been compiled (** For Container use **))
|
||||||
|
|
||||||
|
container-arm64: CC := $(CC_ARM64)
|
||||||
|
container-arm64: container
|
||||||
|
|
||||||
|
container-amd64: CC := $(CC_AMD64)
|
||||||
|
container-amd64: container
|
||||||
|
|
||||||
|
# armhf
|
||||||
|
armhf: CC := $(CC_ARMHF)
|
||||||
|
armhf: $(MAIN_ARMHF) $(SLOG_ARMHF)
|
||||||
|
$(info $(MAIN_ARMHF) has been compiled)
|
||||||
|
$(info $(SLOG_ARMHF) has been compiled)
|
||||||
|
|
||||||
|
# arm64
|
||||||
|
arm64: CC := $(CC_ARM64)
|
||||||
|
arm64: $(MAIN_ARM64) $(SLOG_ARM64)
|
||||||
|
$(info $(MAIN_ARM64) has been compiled)
|
||||||
|
$(info $(SLOG_ARM64) has been compiled)
|
||||||
|
|
||||||
#debug, Just change compile flags and call MAIN
|
#debug, Just change compile flags and call MAIN
|
||||||
debug: CFLAGS = $(DFLAGS)
|
debug: CFLAGS = $(DFLAGS)
|
||||||
debug: $(MAIN) $(SLOG)
|
debug: $(MAIN) $(SLOG)
|
||||||
$(info $(MAIN) has been compiled (** DEBUG **))
|
$(info $(MAIN) has been compiled (** DEBUG **))
|
||||||
$(info $(SLOG) has been compiled (** DEBUG **))
|
$(info $(SLOG) has been compiled (** DEBUG **))
|
||||||
|
|
||||||
install: $(MAIN)
|
#install: $(MAIN)
|
||||||
./release/install.sh
|
install:
|
||||||
|
./release/install.sh from-make
|
||||||
|
|
||||||
|
|
||||||
# Rules to compile
|
# Rules to compile
|
||||||
|
@ -190,10 +241,29 @@ $(DBG_OBJ_DIR)/%.o: %.c | $(DBG_OBJ_DIR)
|
||||||
$(SL_OBJ_DIR)/%.o: %.c | $(SL_OBJ_DIR)
|
$(SL_OBJ_DIR)/%.o: %.c | $(SL_OBJ_DIR)
|
||||||
$(CC) $(CFLAGS) $(INCLUDES) -c -o $@ $<
|
$(CC) $(CFLAGS) $(INCLUDES) -c -o $@ $<
|
||||||
|
|
||||||
|
$(OBJ_DIR_ARMHF)/%.o: %.c | $(OBJ_DIR_ARMHF)
|
||||||
|
$(CC) $(CFLAGS) $(INCLUDES) -c -o $@ $<
|
||||||
|
|
||||||
|
$(SL_OBJ_DIR_ARMHF)/%.o: %.c | $(SL_OBJ_DIR_ARMHF)
|
||||||
|
$(CC) $(CFLAGS) $(INCLUDES) -c -o $@ $<
|
||||||
|
|
||||||
|
$(OBJ_DIR_ARM64)/%.o: %.c | $(OBJ_DIR_ARM64)
|
||||||
|
$(CC) $(CFLAGS) $(INCLUDES) -c -o $@ $<
|
||||||
|
|
||||||
|
$(SL_OBJ_DIR_ARM64)/%.o: %.c | $(SL_OBJ_DIR_ARM64)
|
||||||
|
$(CC) $(CFLAGS) $(INCLUDES) -c -o $@ $<
|
||||||
|
|
||||||
|
|
||||||
# Rules to link
|
# Rules to link
|
||||||
$(MAIN): $(OBJ_FILES)
|
$(MAIN): $(OBJ_FILES)
|
||||||
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $^ $(LIBS)
|
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $^ $(LIBS)
|
||||||
|
|
||||||
|
$(MAIN_ARM64): $(OBJ_FILES_ARM64)
|
||||||
|
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $^ $(LIBS)
|
||||||
|
|
||||||
|
$(MAIN_ARMHF): $(OBJ_FILES_ARMHF)
|
||||||
|
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $^ $(LIBS)
|
||||||
|
|
||||||
$(DEBG): $(DBG_OBJ_FILES)
|
$(DEBG): $(DBG_OBJ_FILES)
|
||||||
$(CC) $(DBG_CFLAGS) $(INCLUDES) -o $@ $^ $(LIBS)
|
$(CC) $(DBG_CFLAGS) $(INCLUDES) -o $@ $^ $(LIBS)
|
||||||
|
|
||||||
|
@ -201,6 +271,15 @@ $(SLOG): CFLAGS := $(CFLAGS) -D SERIAL_LOGGER
|
||||||
$(SLOG): $(SL_OBJ_FILES)
|
$(SLOG): $(SL_OBJ_FILES)
|
||||||
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $^ $(LIBS)
|
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $^ $(LIBS)
|
||||||
|
|
||||||
|
$(SLOG_ARMHF): CFLAGS := $(CFLAGS) -D SERIAL_LOGGER
|
||||||
|
$(SLOG_ARMHF): $(SL_OBJ_FILES_ARMHF)
|
||||||
|
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $^ $(LIBS)
|
||||||
|
|
||||||
|
$(SLOG_ARM64): CFLAGS := $(CFLAGS) -D SERIAL_LOGGER
|
||||||
|
$(SLOG_ARM64): $(SL_OBJ_FILES_ARM64)
|
||||||
|
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $^ $(LIBS)
|
||||||
|
|
||||||
|
|
||||||
# Rules to make object directories.
|
# Rules to make object directories.
|
||||||
$(OBJ_DIR):
|
$(OBJ_DIR):
|
||||||
$(MKDIR) $(call FixPath,$@)
|
$(MKDIR) $(call FixPath,$@)
|
||||||
|
@ -211,228 +290,26 @@ $(SL_OBJ_DIR):
|
||||||
$(DBG_OBJ_DIR):
|
$(DBG_OBJ_DIR):
|
||||||
$(MKDIR) $(call FixPath,$@)
|
$(MKDIR) $(call FixPath,$@)
|
||||||
|
|
||||||
|
$(OBJ_DIR_ARMHF):
|
||||||
|
$(MKDIR) $(call FixPath,$@)
|
||||||
|
|
||||||
|
$(SL_OBJ_DIR_ARMHF):
|
||||||
|
$(MKDIR) $(call FixPath,$@)
|
||||||
|
|
||||||
|
$(OBJ_DIR_ARM64):
|
||||||
|
$(MKDIR) $(call FixPath,$@)
|
||||||
|
|
||||||
|
$(SL_OBJ_DIR_ARM64):
|
||||||
|
$(MKDIR) $(call FixPath,$@)
|
||||||
|
|
||||||
|
|
||||||
# Clean rules
|
# Clean rules
|
||||||
.PHONY: clean
|
|
||||||
clean:
|
clean: clean-buildfiles
|
||||||
$(RM) *.o *~ $(MAIN) $(MAIN_U) $(PLAY) $(PL_EXOBJ) $(DEBG)
|
$(RM) *.o *~ $(MAIN) $(MAIN_U) $(PLAY) $(PL_EXOBJ) $(DEBG)
|
||||||
$(RM) $(wildcard *.o) $(wildcard *~) $(OBJ_FILES) $(DBG_OBJ_FILES) $(SL_OBJ_FILES) $(MAIN) $(MAIN_U) $(PLAY) $(PL_EXOBJ) $(LOGR) $(PLAY) $(DEBG)
|
$(RM) $(wildcard *.o) $(wildcard *~) $(MAIN) $(MAIN_ARM64) $(MAIN_ARMHF) $(SLOG) $(SLOG_ARM64) $(SLOG_ARMHF) $(MAIN_U) $(PLAY) $(PL_EXOBJ) $(LOGR) $(PLAY) $(DEBG)
|
||||||
|
|
||||||
|
clean-buildfiles:
|
||||||
|
$(RM) $(wildcard *.o) $(wildcard *~) $(OBJ_FILES) $(DBG_OBJ_FILES) $(SL_OBJ_FILES) $(OBJ_FILES_ARMHF) $(OBJ_FILES_ARM64) $(SL_OBJ_FILES_ARMHF) $(SL_OBJ_FILES_ARM64)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
define DO_NOT_USE
|
|
||||||
|
|
||||||
# OLD MAKEFILE, STILL NEED TO MOVE THE BELOW OVER TO NEW Makefile
|
|
||||||
LOGR = ./release/log_reader
|
|
||||||
PLAY = ./release/aqualinkd-player
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# Options
|
|
||||||
#
|
|
||||||
# make // standard everything
|
|
||||||
# make debug // Give standard binary just with debugging
|
|
||||||
# make aqdebug // Compile with extra aqualink debug information like timings
|
|
||||||
# make slog // Serial logger
|
|
||||||
# make <other> // not documenting
|
|
||||||
#
|
|
||||||
|
|
||||||
# Valid flags for AQ_FLAGS
|
|
||||||
AQ_RS16 = true
|
|
||||||
AQ_PDA = true
|
|
||||||
AQ_ONETOUCH = true
|
|
||||||
AQ_IAQTOUCH = true
|
|
||||||
#AQ_MEMCMP = true // Not implimented correctly yet.
|
|
||||||
|
|
||||||
# Turn off threadded net services
|
|
||||||
AQ_NO_THREAD_NETSERVICE = false
|
|
||||||
|
|
||||||
# Get some system information
|
|
||||||
PI_OS_VERSION = $(shell cat /etc/os-release | grep VERSION= | cut -d\" -f2)
|
|
||||||
$(info OS: $(PI_OS_VERSION) )
|
|
||||||
GLIBC_VERSION = $(shell ldd --version | grep ldd)
|
|
||||||
$(info GLIBC build with: $(GLIBC_VERSION) )
|
|
||||||
$(info GLIBC Prefered : 2.24-11+deb9u1 2.24 )
|
|
||||||
|
|
||||||
|
|
||||||
# define the C compiler to use
|
|
||||||
CC = gcc
|
|
||||||
|
|
||||||
#LIBS := -lpthread -lm
|
|
||||||
LIBS := -l pthread -l m
|
|
||||||
#LIBS := -l pthread -l m -static # Take out -static, just for dev
|
|
||||||
|
|
||||||
# Standard compile flags
|
|
||||||
GCCFLAGS = -Wall -O3
|
|
||||||
#GCCFLAGS = -O3
|
|
||||||
#GCCFLAGS = -Wall -O3 -Wextra
|
|
||||||
#GCCFLAGS = -Wl,--gc-sections,--print-gc-sections
|
|
||||||
#GCCFLAGS = -Wall -O3 -ffunction-sections -fdata-sections
|
|
||||||
|
|
||||||
# Standard debug flags
|
|
||||||
DGCCFLAGS = -Wall -O0 -g
|
|
||||||
|
|
||||||
# Aqualink Debug flags
|
|
||||||
#DBGFLAGS = -g -O0 -Wall -fsanitize=address -D AQ_DEBUG -D AQ_TM_DEBUG
|
|
||||||
DBGFLAGS = -g -O0 -Wall -D AQ_DEBUG -D AQ_TM_DEBUG
|
|
||||||
|
|
||||||
# Mongoose flags
|
|
||||||
#MGFLAGS = -D MG_DISABLE_MD5 -D MG_DISABLE_HTTP_DIGEST_AUTH -D MG_DISABLE_MD5 -D MG_DISABLE_JSON_RPC
|
|
||||||
# Mongoose 6.18 flags
|
|
||||||
MGFLAGS = -D MG_ENABLE_HTTP_SSI=0 -D MG_ENABLE_DIRECTORY_LISTING=0 -D MG_ENABLE_HTTP_CGI=0
|
|
||||||
#MGFLAGS =
|
|
||||||
|
|
||||||
# define the C source files
|
|
||||||
#SRCS = aqualinkd.c utils.c config.c aq_serial.c init_buttons.c aq_programmer.c net_services.c json_messages.c pda.c pda_menu.c \
|
|
||||||
# pda_aq_programmer.c devices_jandy.c onetouch.c onetouch_aq_programmer.c packetLogger.c devices_pentair.c color_lights.c mongoose.c
|
|
||||||
|
|
||||||
SRCS = aqualinkd.c utils.c config.c aq_serial.c aq_panel.c aq_programmer.c net_services.c json_messages.c rs_msg_utils.c\
|
|
||||||
devices_jandy.c packetLogger.c devices_pentair.c color_lights.c serialadapter.c aq_timer.c aq_scheduler.c web_config.c\
|
|
||||||
mongoose.c
|
|
||||||
|
|
||||||
|
|
||||||
AQ_FLAGS =
|
|
||||||
# Add source and flags depending on protocols to support.
|
|
||||||
ifeq ($(AQ_PDA), true)
|
|
||||||
SRCS := $(SRCS) pda.c pda_menu.c pda_aq_programmer.c
|
|
||||||
AQ_FLAGS := $(AQ_FLAGS) -D AQ_PDA
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(AQ_ONETOUCH), true)
|
|
||||||
SRCS := $(SRCS) onetouch.c onetouch_aq_programmer.c
|
|
||||||
AQ_FLAGS := $(AQ_FLAGS) -D AQ_ONETOUCH
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(AQ_IAQTOUCH), true)
|
|
||||||
SRCS := $(SRCS) iaqtouch.c iaqtouch_aq_programmer.c
|
|
||||||
AQ_FLAGS := $(AQ_FLAGS) -D AQ_IAQTOUCH
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(AQ_RS16), true)
|
|
||||||
AQ_FLAGS := $(AQ_FLAGS) -D AQ_RS16
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(AQ_MEMCMP), true)
|
|
||||||
AQ_FLAGS := $(AQ_FLAGS) -D AQ_MEMCMP
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(AQ_NO_THREAD_NETSERVICE), true)
|
|
||||||
AQ_FLAGS := $(AQ_FLAGS) -D AQ_NO_THREAD_NETSERVICE
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
|
||||||
# Put all flags together.
|
|
||||||
CFLAGS = $(GCCFLAGS) $(AQ_FLAGS) $(MGFLAGS)
|
|
||||||
DFLAGS = $(DGCCFLAGS) $(AQ_FLAGS) $(MGFLAGS)
|
|
||||||
DBG_CFLAGS = $(DBGFLAGS) $(AQ_FLAGS) $(MGFLAGS)
|
|
||||||
|
|
||||||
# Other sources.
|
|
||||||
#DBG_SRC = timespec_subtract.c debug_timer.c
|
|
||||||
DBG_SRC = debug_timer.c
|
|
||||||
SL_SRC = serial_logger.c aq_serial.c utils.c packetLogger.c rs_msg_utils.c
|
|
||||||
LR_SRC = log_reader.c aq_serial.c utils.c packetLogger.c
|
|
||||||
PL_EXSRC = aq_serial.c
|
|
||||||
PL_EXOBJ = aq_serial_player.o
|
|
||||||
PL_SRC := $(filter-out aq_serial.c, $(SRCS))
|
|
||||||
|
|
||||||
OBJS = $(SRCS:.c=.o)
|
|
||||||
DBG_OBJS = $(DBG_SRC:.c=.o)
|
|
||||||
|
|
||||||
SL_OBJS = $(SL_SRC:.c=.o)
|
|
||||||
LR_OBJS = $(LR_SRC:.c=.o)
|
|
||||||
PL_OBJS = $(PL_SRC:.c=.o)
|
|
||||||
|
|
||||||
|
|
||||||
# define the executable file
|
|
||||||
MAIN = ./release/aqualinkd
|
|
||||||
SLOG = ./release/serial_logger
|
|
||||||
LOGR = ./release/log_reader
|
|
||||||
PLAY = ./release/aqualinkd-player
|
|
||||||
DEBG = ./release/aqualinkd-debug
|
|
||||||
|
|
||||||
|
|
||||||
all: $(MAIN) $(SLOG)
|
|
||||||
$(info $(MAIN) has been compiled)
|
|
||||||
$(info $(SLOG) has been compiled)
|
|
||||||
|
|
||||||
# debug, Just change compile flags and call MAIN
|
|
||||||
debug: CFLAGS = $(DFLAGS)
|
|
||||||
debug: $(MAIN)
|
|
||||||
$(info $(MAIN) has been compiled)
|
|
||||||
|
|
||||||
$(MAIN): $(OBJS)
|
|
||||||
$(CC) $(CFLAGS) $(INCLUDES) -o $(MAIN) $(OBJS) $(LIBS)
|
|
||||||
$(info $(MAIN) has been compiled)
|
|
||||||
|
|
||||||
slog: $(SLOG)
|
|
||||||
$(info $(SLOG) has been compiled)
|
|
||||||
|
|
||||||
$(SLOG): CFLAGS := $(CFLAGS) -D SERIAL_LOGGER
|
|
||||||
$(SLOG): $(SL_OBJS)
|
|
||||||
# $(CC) $(CFLAGS) $(INCLUDES) -o $(SLOG) $(SL_OBJS)
|
|
||||||
$(CC) $(INCLUDES) -o $(SLOG) $(SL_OBJS)
|
|
||||||
|
|
||||||
|
|
||||||
#.PHONY: clean_slog_o
|
|
||||||
#clean_slog_o:
|
|
||||||
# $(RM) $(SL_OBJS)
|
|
||||||
#
|
|
||||||
#.PHONY: test
|
|
||||||
#test: $(SLOG)
|
|
||||||
#test: clean_slog_o
|
|
||||||
#test: $(MAIN)
|
|
||||||
|
|
||||||
# Shouldn't need to use any of these options unless you're developing.
|
|
||||||
|
|
||||||
aqdebug: $(DEBG)
|
|
||||||
$(info $(DEBG) has been compiled)
|
|
||||||
|
|
||||||
$(DEBG): CFLAGS = $(DBG_CFLAGS)
|
|
||||||
$(DEBG): $(OBJS) $(DBG_OBJS)
|
|
||||||
$(CC) $(CFLAGS) $(INCLUDES) -o $(DEBG) $(OBJS) $(DBG_OBJS) $(DBGFLAGS) $(LIBS)
|
|
||||||
|
|
||||||
logr: $(LOGR)
|
|
||||||
$(info $(LOGR) has been compiled)
|
|
||||||
|
|
||||||
$(LOGR): $(LR_OBJS)
|
|
||||||
$(CC) $(CFLAGS) $(INCLUDES) -o $(LOGR) $(LR_OBJS)
|
|
||||||
|
|
||||||
player: $(PLAY)
|
|
||||||
$(info $(PLAY) has been compiled)
|
|
||||||
|
|
||||||
$(PL_EXOBJ): $(PL_EXSRC)
|
|
||||||
$(CC) $(CFLAGS) -D PLAYBACK_MODE $(INCLUDES) -c $(PL_EXSRC) -o $(PL_EXOBJ)
|
|
||||||
|
|
||||||
$(PLAY): $(PL_OBJS) $(PL_EXOBJ)
|
|
||||||
$(CC) $(CFLAGS) $(INCLUDES) -o $(PLAY) $(PL_OBJS) $(PL_EXOBJ)
|
|
||||||
|
|
||||||
# Fof github publishing
|
|
||||||
.PHONY: git
|
|
||||||
git: clean $(MAIN) $(SLOG)
|
|
||||||
./release/git_version.sh
|
|
||||||
|
|
||||||
|
|
||||||
# this is a suffix replacement rule for building .o's from .c's
|
|
||||||
# it uses automatic variables $<: the name of the prerequisite of
|
|
||||||
# the rule(a .c file) and $@: the name of the target of the rule (a .o file)
|
|
||||||
# (see the gnu make manual section about automatic variables)
|
|
||||||
.c.o:
|
|
||||||
$(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@
|
|
||||||
|
|
||||||
|
|
||||||
.PHONY: clean
|
|
||||||
clean:
|
|
||||||
$(RM) *.o *~ $(MAIN) $(MAIN_U) $(PLAY) $(PL_EXOBJ) $(DEBG)
|
|
||||||
$(RM) $(wildcard *.o) $(wildcard *~) $(MAIN) $(MAIN_U) $(PLAY) $(PL_EXOBJ) $(LOGR) $(PLAY) $(DEBG)
|
|
||||||
|
|
||||||
depend: $(SRCS)
|
|
||||||
makedepend $(INCLUDES) $^
|
|
||||||
|
|
||||||
install: $(MAIN)
|
|
||||||
./release/install.sh
|
|
||||||
|
|
||||||
endef
|
|
||||||
|
|
||||||
|
|
|
@ -110,6 +110,13 @@ Designed to mimic AqualinkRS devices, used to fully configure the master control
|
||||||
# Call for Help.
|
# Call for Help.
|
||||||
* The only Jandy devices I have not decoded yet are LX heater & Chemical Feeder. If you have either of these devices and are willing to post some logs, please let me know, or post in the [Discussions area](https://github.com/sfeakes/AqualinkD/discussions)
|
* The only Jandy devices I have not decoded yet are LX heater & Chemical Feeder. If you have either of these devices and are willing to post some logs, please let me know, or post in the [Discussions area](https://github.com/sfeakes/AqualinkD/discussions)
|
||||||
|
|
||||||
|
# Update in Release 2.3.6
|
||||||
|
* No functionality changes
|
||||||
|
* Build & Docker changes
|
||||||
|
* Going forward AqualinkD will release binaries for both armhf & arm64
|
||||||
|
* armhf = any Pi (or equiv board) running 32 bit Debain based OS, stretch or newer
|
||||||
|
* arm64 = Pi3/4/2w running 64 bit Debain based OS, buster or newer
|
||||||
|
|
||||||
# Update in Release 2.3.5
|
# Update in Release 2.3.5
|
||||||
* Added Home Assistant integration through MQTT discover
|
* Added Home Assistant integration through MQTT discover
|
||||||
* Please read the Home Assistant section of the [Wiki - HASSIO](https://github.com/sfeakes/AqualinkD/wiki#HASSIO)
|
* Please read the Home Assistant section of the [Wiki - HASSIO](https://github.com/sfeakes/AqualinkD/wiki#HASSIO)
|
||||||
|
|
Binary file not shown.
|
@ -0,0 +1 @@
|
||||||
|
./aqualinkd-armhf
|
Binary file not shown.
Binary file not shown.
|
@ -5,6 +5,7 @@
|
||||||
|
|
||||||
|
|
||||||
BUILD="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
BUILD="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
PARENT_COMMAND=$(ps -o comm= $PPID)
|
||||||
|
|
||||||
SERVICE="aqualinkd"
|
SERVICE="aqualinkd"
|
||||||
|
|
||||||
|
@ -21,6 +22,8 @@ DEFLocation="/etc/default"
|
||||||
WEBLocation="/var/www/aqualinkd/"
|
WEBLocation="/var/www/aqualinkd/"
|
||||||
MDNSLocation="/etc/avahi/services/"
|
MDNSLocation="/etc/avahi/services/"
|
||||||
|
|
||||||
|
SOURCEBIN=$BIN
|
||||||
|
|
||||||
if [[ $EUID -ne 0 ]]; then
|
if [[ $EUID -ne 0 ]]; then
|
||||||
echo "This script must be run as root"
|
echo "This script must be run as root"
|
||||||
exit 1
|
exit 1
|
||||||
|
@ -31,6 +34,49 @@ if [[ $(mount | grep " / " | grep "(ro,") ]]; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Figure out what system we are on and set correct binary.
|
||||||
|
# If we have been called from make, this is a custom build and install, so ignore check.
|
||||||
|
if [ "$PARENT_COMMAND" != "make" ] && [ "$1" != "from-make" ] && [ "$1" != "ignorearch" ]; then
|
||||||
|
# Use arch or uname -a to get above.
|
||||||
|
# dpkg --print-architecture
|
||||||
|
|
||||||
|
# Exit if we can't find systemctl
|
||||||
|
command -v dpkg >/dev/null 2>&1 || { echo -e "Can't detect system architecture, Please check path to 'dpkg' or install manually.\n"\
|
||||||
|
"Or run '$0 ignorearch'" >&2; exit 1; }
|
||||||
|
|
||||||
|
ARCH=$(dpkg --print-architecture)
|
||||||
|
BINEXT=""
|
||||||
|
|
||||||
|
case $ARCH in
|
||||||
|
arm64)
|
||||||
|
echo "Arch is $ARCH, Using 64bit AqualinkD"
|
||||||
|
BINEXT="-arm64"
|
||||||
|
;;
|
||||||
|
armhf)
|
||||||
|
echo "Arch is $ARCH, Using 32bit AqualinkD"
|
||||||
|
BINEXT="-armhf"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Arch $ARCH is unknown, Default to using 32bit HF AqualinkD, you may need to manually try ./release/aqualnkd_arm64"
|
||||||
|
BINEXT=""
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Need to check BINEXISTS
|
||||||
|
if [ -f $BUILD/$SOURCEBIN$BINEXT ]; then
|
||||||
|
SOURCEBIN=$BIN$BINEXT
|
||||||
|
elif [ -f $BUILD/$SOURCEBIN ]; then
|
||||||
|
# Not good
|
||||||
|
echo "Can't find correct aqualnkd binary for $ARCH, '$BUILD/$SOURCEBIN$BINEXT' using '$BUILD/$SOURCEBIN' ";
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Exit if we can't find binary
|
||||||
|
if [ ! -f $BUILD/$SOURCEBIN ]; then
|
||||||
|
echo "Can't find aqualnkd binary `$BUILD/$SOURCEBIN` ";
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
# Exit if we can't find systemctl
|
# Exit if we can't find systemctl
|
||||||
command -v systemctl >/dev/null 2>&1 || { echo "This script needs systemd's systemctl manager, Please check path or install manually" >&2; exit 1; }
|
command -v systemctl >/dev/null 2>&1 || { echo "This script needs systemd's systemctl manager, Please check path or install manually" >&2; exit 1; }
|
||||||
|
|
||||||
|
@ -80,7 +126,7 @@ fi
|
||||||
|
|
||||||
# copy files to locations, but only copy cfg if it doesn;t already exist
|
# copy files to locations, but only copy cfg if it doesn;t already exist
|
||||||
|
|
||||||
cp $BUILD/$BIN $BINLocation/$BIN
|
cp $BUILD/$SOURCEBIN $BINLocation/$BIN
|
||||||
cp $BUILD/$SRV $SRVLocation/$SRV
|
cp $BUILD/$SRV $SRVLocation/$SRV
|
||||||
|
|
||||||
if [ -f $CFGLocation/$CFG ]; then
|
if [ -f $CFGLocation/$CFG ]; then
|
||||||
|
|
Binary file not shown.
|
@ -0,0 +1 @@
|
||||||
|
./serial_logger-armhf
|
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue