DS2405 Dörrövervakning med mail tjänst.

I detta forum hör diskussioner gällande teknik i största allmänhet och hemautomation i synnerhet hemma.
Kategoriregler
Vill du visa bilder i ditt inlägg? Använd funktionen "Ladda upp bilaga" nedanför textrutan!
Användarvisningsbild
Plutonium
Moderator
Inlägg: 1246
Blev medlem: 04 jan 2008, 02:34
Ort: Nossebro
Kontakt:

DS2405 Dörrövervakning med mail tjänst.

Inlägg av Plutonium »

Hej.
Sitter och kodar ett shell script som skall övervaka entré dörren och det kommer att skicka ett sms till mig dörren låses upp på oönskad tid mm..

Dock har jag ett problem.
Nu är inte detta renskrivet skall väl tillläggas, men det funkar till stora drag förutom en sak :)
Variablern $TEST får helt fel värde, antingen blandar dom ihop sig eller så får jag ett sms med båda värden i.. Förstår inte riktigt hur detta är möjligt, dom ligger ju i en if sats där det är antingen eller (inte båda eller fel) som det är i mitt fall :)..

Kod: Markera allt

#!/bin/bash

# Mysql 
USER="1wire"
PASSWD="*****"
DB="1wire"
MYSQL="mysql -u $USER -p$PASSWD -D $DB -e"

# Första argumentet i funktionen är första ordet i filen (nytt värde)
function reagera {
        if [ ${1} -eq 0 ]; then

                echo "Låst"
	$MYSQL "INSERT INTO entredoor (status) VALUES ('låst')"
	
TEST="låst"
		
	else

               	echo "Upplåst!"
	$MYSQL "INSERT INTO entredoor (status) VALUES ('upplåst')"

TEST="upplåst"

        fi
 }


function smslarm {
if [ "$LARM_VALUE" -eq 1 ]; then

echo -e "subject:$(date)\n  Entre dörren är nu "$TEST | sendmail -f Vakt@Home.nu 07******@sms.comviq.se


fi
}

# Inte lämna skräfiler kvar
function cleanup {
        rm "$TEMPFIL"
        exit 0
}

# Första argumentet måste vara en fil
[ -z "$1" -o ! -f "$1" ] && echo "overvakning.sh <fil>" && exit 1

FIL=$1
TEMPFIL=$(tempfile)
 
# Hantera ^C och dylikt
trap cleanup SIGHUP SIGINT SIGTERM

cp "$FIL" "$TEMPFIL"

while /bin/true; do
# Kollar värdet sms alarm
   ROWS=`$MYSQL "SELECT value FROM settings WHERE setting='smsalarm'"`
   LARM_VALUE=$(echo $ROWS | cut -f2 -d' ')

# Se efter om den gamla kopian skiljer sig från den nuvarande filen
   diff -qs $FIL $TEMPFIL &>/dev/null
   [ $? -ne 0 ] && smslarm && reagera $(cat $FIL | cut -d " " -f 1)
   cp "$FIL" "$TEMPFIL"
   sleep 1
done

Jag får rätt värden i de andra variablarna, inga konstigheter alls.. Det är just $TEST variablern jag får fel hela tiden..

Någon som känner sig manad att hjälpa mig?
Senast redigerad av Plutonium den 20 jul 2008, 19:28, redigerad totalt 1 gånger.
http://essunga.org
Moderator - Temperatur.nu
Användarvisningsbild
hanpa
Tar hemautomation på allvar
Inlägg: 59
Blev medlem: 25 jun 2007, 18:21
Ort: Linköping
Kontakt:

Re: DS2405 Dörrövervakning med mail tjänst.

Inlägg av hanpa »

Vad är syftet med de två olika testvariablerna? Du sätter visserligen bara den ena eller den andra i funktionen reagera men du nollställer ju aldrig variablerna så gamla värdet ligger ju kvar. Om du nu ska ha separata testvaribler för både öppning resp. stängning så borde du nollställa dem någonstans också, antingen i huvudloopen eller komplementärt i reagera.
Användarvisningsbild
Plutonium
Moderator
Inlägg: 1246
Blev medlem: 04 jan 2008, 02:34
Ort: Nossebro
Kontakt:

Re: DS2405 Dörrövervakning med mail tjänst.

Inlägg av Plutonium »

Det bara blev så att jag använde 2st för att när dom hete samma funkade inte. Men tanken är ju att det skall heta samma.

Hur nollställer man en variabel?
http://essunga.org
Moderator - Temperatur.nu
Användarvisningsbild
hanpa
Tar hemautomation på allvar
Inlägg: 59
Blev medlem: 25 jun 2007, 18:21
Ort: Linköping
Kontakt:

Re: DS2405 Dörrövervakning med mail tjänst.

Inlägg av hanpa »

Du borde väl kunna ha en och samma testvariabel. Annars är det ju bara att nollställa via TEST="" eller t.o.m. bara TEST=
Användarvisningsbild
Plutonium
Moderator
Inlägg: 1246
Blev medlem: 04 jan 2008, 02:34
Ort: Nossebro
Kontakt:

Re: DS2405 Dörrövervakning med mail tjänst.

Inlägg av Plutonium »

Har testat det också.. Resultatet blir på följande:

Värde = 1
låst
Upplåst!
Värder = 0
Upplåst
Låst
osv, alltså $TEST har värdet förväxlat mot verkligheten.
Förstår inte riktigt varför han gör detta men..
http://essunga.org
Moderator - Temperatur.nu
Skriv svar