From 5152252653439bf70e5f3f8a80dd77f21eafd343 Mon Sep 17 00:00:00 2001 From: lejubila Date: Sat, 24 Apr 2021 09:55:57 +0200 Subject: [PATCH] Aggiornato driver rainsensorqty alla versione 0.2.5c --- CHANGELOG.md | 3 ++ .../{_version_0.2.5b => _version_0.2.5c} | 0 drv/rainsensorqty/commands/test_pulse | 1 + drv/rainsensorqty/common.include.sh | 42 ++++++++++++++++++- .../drv_rainsensorqty_monitor.sh | 39 +++++++++++++---- piGarden.sh | 2 +- 6 files changed, 78 insertions(+), 9 deletions(-) rename drv/rainsensorqty/{_version_0.2.5b => _version_0.2.5c} (100%) create mode 100755 drv/rainsensorqty/commands/test_pulse diff --git a/CHANGELOG.md b/CHANGELOG.md index a4c6635..fe3a83d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +# 0.6.2 - 24/04/2021 +- Update rainsensorqty driver to version 0.2.5c + # 0.6.1 - 06/09/2020 - Add support for send log to piGardenWeb diff --git a/drv/rainsensorqty/_version_0.2.5b b/drv/rainsensorqty/_version_0.2.5c similarity index 100% rename from drv/rainsensorqty/_version_0.2.5b rename to drv/rainsensorqty/_version_0.2.5c diff --git a/drv/rainsensorqty/commands/test_pulse b/drv/rainsensorqty/commands/test_pulse new file mode 100755 index 0000000..0662256 --- /dev/null +++ b/drv/rainsensorqty/commands/test_pulse @@ -0,0 +1 @@ +echo 1 > /tmp/tick ; sleep 0.9 ; echo 0 > /tmp/tick diff --git a/drv/rainsensorqty/common.include.sh b/drv/rainsensorqty/common.include.sh index 7b9878f..40ebc64 100644 --- a/drv/rainsensorqty/common.include.sh +++ b/drv/rainsensorqty/common.include.sh @@ -60,6 +60,46 @@ en_echo() # enhanched echo - check verbose variable [[ $RAINSENSORQTY_verbose = yes ]] && echo "$(d) $*" } +check_incomplete_loop() +{ + [[ ! -f $RAINSENSORQTY_HISTORYRAW ]] && return 1 + [[ ! -f $RAINSENSORQTY_HISTORY ]] && touch $RAINSENSORQTY_HISTORY + > $RAINSENSORQTY_HISTORYTMP + + if lastrainevent=$( rainevents 1 ) ; then + : # done ok + else + echo "WARNING: rainevents function had errors" + return 1 + fi + + set -- ${lastrainevent//:/ } + local started=$1 + local before=$2 + local counter=$3 + + wrongevent=$(awk -F ":" '$1=="'$started'" && $2!="'$before'" {print $0}' $RAINSENSORQTY_HISTORY) + if [[ -n $wrongevent ]] ; then + echo "ERROR: wrong last rain event found: $wrongevent , right one should be: $lastrainevent" + return 2 + fi + + if grep -q ^${lastrainevent}$ $RAINSENSORQTY_HISTORY ; then + : # already present + return 0 + else + + : # missing and fixed + if [[ $1 == tmp ]] ; then + echo $lastrainevent > $RAINSENSORQTY_HISTORYTMP + else + echo $lastrainevent >> $RAINSENSORQTY_HISTORY + fi + return 1 + fi +} + +#next function is not used anymore rain_history() { [[ ! -f $RAINSENSORQTY_HISTORYRAW ]] && return 1 @@ -134,7 +174,7 @@ rainevents() newloop=no fi if (( sequence == 1 )) ; then -# [[ $skiplast=true ]] && { skilast=false ; continue ; } +# [[ $skiplast=true ]] && { skiplast=false ; continue ; } echo $time:$endtime:$endsequence newloop=yes (( event +=1 )) diff --git a/drv/rainsensorqty/drv_rainsensorqty_monitor.sh b/drv/rainsensorqty/drv_rainsensorqty_monitor.sh index 4a89948..ef7d625 100755 --- a/drv/rainsensorqty/drv_rainsensorqty_monitor.sh +++ b/drv/rainsensorqty/drv_rainsensorqty_monitor.sh @@ -4,8 +4,8 @@ # Author: androtto # file "drv_rainsensorqty_monitor.sh" # monitor script -# Version: 0.2.5b -# Data: 12/May/2020 +# Version: 0.2.5c +# Data: 08/Dec/2020 resetcounter() { @@ -14,6 +14,19 @@ resetcounter() echo "SIGUSR1 received after last PULSE - counter resetted" } +# DEBUG FUNCTION: +testloop() +{ + touch /tmp/tick + while true + do + if [[ $( < /tmp/tick ) = "1" ]] ; then + break + fi + sleep 1 + done +} + ############### # MAIN # ############### @@ -51,30 +64,41 @@ fi echo $$ > $RAINSENSORQTY_MONPID drv_rainsensorqty_writelog $f "NORMAL - $$ pid monitor process started - see $RAINSENSORQTY_MONPID" +echo "" +en_echo "---- NEW RUN ----" + +# check if monitor script was killed before writing a complete rain event +check_incomplete_loop +case $? in + 2) echo "\$RAINSENSORQTY_HISTORY - wrong entry found - no fix possible" ;; + 1) echo "\$RAINSENSORQTY_HISTORY - fixed incomplete loop" ;; + 0) echo "\$RAINSENSORQTY_HISTORY - no incomplete loop needed to be fixed" ;; +esac + # init variables MMEACH="$RAINSENSORQTY_MMEACH" (( counter=0 )) -rain_history +before="-1" -echo "" -en_echo "---- NEW RUN ----" en_echo "WAITING FOR $RAINSENSORQTY_PULSE PULSE" # loop forever while true do - before=`date +%s` sleep $RAINSENSOR_DEBOUNCE + #DEBUG: testloop #DEBUG $GPIO -g wfi $gpio_port $RAINSENSORQTY_PULSE now=`date +%s` (( elapsed = now - before )) if (( elapsed >= RAINSENSORQTY_SECSBETWEENRAINEVENT )) ; then + last_event="$started:$before:$counter" (( counter=0 )) drv_rainsensorqty_writelog $f "first drops after $elapsed seconds since last rain ( greater than $RAINSENSORQTY_SECSBETWEENRAINEVENT )- new cycle - waiting for $( $JQ -n "$RAINSENSORQTY_LOOPSFORSETRAINING * $MMEACH" ) mm of rain" & + (( before > 0 )) && echo $last_event >> $RAINSENSORQTY_HISTORY en_echo "---- NEW CYCLE ----" - rain_history & fi (( counter+=1 )) + (( counter == 1 )) && (( started = now )) echo "$now:$counter" >> ${RAINSENSORQTY_HISTORYRAW} & MMWATER=$( $JQ -n "$counter*$MMEACH" ) en_echo $( printf "%s PULSE #%d RECEIVED (%.2f mm)" $RAINSENSORQTY_PULSE $counter $MMWATER ) @@ -85,4 +109,5 @@ do else drv_rainsensorqty_writelog $f "now is $text" & fi + (( before = now )) done diff --git a/piGarden.sh b/piGarden.sh index 4914904..6269f7a 100755 --- a/piGarden.sh +++ b/piGarden.sh @@ -1004,7 +1004,7 @@ function debug2 { VERSION=0 SUB_VERSION=6 -RELEASE_VERSION=1 +RELEASE_VERSION=2 DIR_SCRIPT=`dirname $0` NAME_SCRIPT=${0##*/}