Sida 1 av 1

DS2405 Dörrövervakning med mail tjänst och mysql, owfs.

Postat: 26 jul 2008, 19:34
av Plutonium
Hej.
Efter en veckas knåpande och donande fungerar allt enligt planerat och tänkte dela med mig av hur jag har gjort.
overvakning.sh scriptet körs varje sekund och kollar om sensed filen har ändrats, allt för att slippa crond..
Fördel med detta..
Jo har du ett script som körs med crond med minimum 1 minut uppdatering och någon är väldigt snabb att låsa upp & låsa under denna 1 minut så kommer inte detta att registreras, men med detta skript får man vara jäkligt snabb för att komma obemärkt förbi dörren..


Databas strukturen:

Kod: Markera allt

-- phpMyAdmin SQL Dump
-- version 2.11.1.1
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Jul 26, 2008 at 07:22 PM
-- Server version: 5.0.37
-- PHP Version: 5.2.3

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- Database: `1wire`
--

-- --------------------------------------------------------

--
-- Table structure for table `entredoor`
--

CREATE TABLE IF NOT EXISTS `entredoor` (
  `id` int(20) NOT NULL auto_increment,
  `status` varchar(20) NOT NULL,
  `datum` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  KEY `id` (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

--
-- Dumping data for table `entredoor`
--

INSERT INTO `entredoor` (`id`, `status`, `datum`) VALUES
(1, 'låst', '2008-07-26 18:55:39'),
(2, 'upplåst', '2008-07-26 18:56:09'),
(3, 'låst', '2008-07-26 19:16:09'),
(4, 'upplåst', '2008-07-26 19:16:30');

-- --------------------------------------------------------

--
-- Table structure for table `settings`
--

CREATE TABLE IF NOT EXISTS `settings` (
  `id` int(14) NOT NULL auto_increment,
  `setting` varchar(16) NOT NULL,
  `value` tinyint(1) default NULL,
  KEY `id` (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

--
-- Dumping data for table `settings`
--

INSERT INTO `settings` (`id`, `setting`, `value`) VALUES
(1, 'smsalarm', 1);
Jag la till att man kan aktivera och inaktivera mailtjänsten i databasen.. För att lättast kunna sätta på den eller stänga av den från webben..


overvakning.sh

Kod: Markera allt

##
## Made by Dukeman & Plutonium -08
##
    #!/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
    SMSLARM="Entre dörren är nu upplåst."
                    #echo "Upplåst"
       $MYSQL "INSERT INTO entredoor (status) VALUES ('upplåst')"
          
       else
    SMSLARM="Entre dörren är nu låst."
                      #echo "Låst!"
       $MYSQL "INSERT INTO entredoor (status) VALUES ('låst')"


            fi

    }

    function smslarm {

    if [ $LARM_VALUE -eq 1 ]; then

	echo -e "subject: Status$*\n\n  $(date +%Y:%m:%d:%k:%M:%S)"     $SMSLARM | sendmail -f Vakt@Home.nu 0730******@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' ')

	if [ `cat $FIL` -eq `cat $TEMPFIL` ]; then

		#echo "Value är lika med value"
		sleep 1

	elif [ `cat $FIL` -ne `cat $TEMPFIL` ]; then

		#echo "Filen har ändrats, då sover vi 4 sek och kollar igen"

		sleep 4

	                if [ `cat $FIL` -eq `cat $TEMPFIL` ]; then

				echo "Avbryt eld upphör!" &>/dev/null
			
			else
        			#echo "Allt stämde så skriv till databasen!"

	   diff -qs $FIL $TEMPFIL &>/dev/null
           [ $? -ne 0 ] && reagera $(cat $FIL | cut -d " " -f 1) && smslarm
           cp "$FIL" "$TEMPFIL"

			fi 

	else

		echo "Allt är åt helskotta nu skiter jag i detta" &>/dev/null

        fi

        done

overvakning.sh körs enligt följande:
Du måste göra filen körbar med chmod +x overvakning.sh
/path/overvakning.sh /mnt/1wire/uncached/05.*****/sensed &

Posta gärna lite feedback om vad är bra och dåligt..

Re: DS2405 Dörrövervakning med mail tjänst och mysql, owfs.

Postat: 27 jul 2008, 12:38
av Dowser
Trevligt!

Fast visst borde det inte behöva loggas så tätt om man istället använde en DS2413 och kollade på status-flaggan också?

Re: DS2405 Dörrövervakning med mail tjänst och mysql, owfs.

Postat: 27 jul 2008, 18:29
av Plutonium
Tackar..
Jag har tyvärr ingen erfarenhet om ds2413, har den ett minne då eller?

Re: DS2405 Dörrövervakning med mail tjänst och mysql, owfs.

Postat: 27 jul 2008, 18:53
av Dowser
Mja, ds2406 har ju det och ds2413 skall ju ersätta både ds2405 & ds2406.
Men man borde nog läsa databladet för att vara säker. :)

Re: DS2405 Dörrövervakning med mail tjänst och mysql, owfs.

Postat: 27 jul 2008, 19:15
av Plutonium
Okey :)
Låter intressant.. Får se om man kan komma på något bra användningsområde..
Skickade efter ibuttons igår, får se om man kan komma på nått bra med dessa intilligenta saker först.

Re: DS2405 Dörrövervakning med mail tjänst och mysql, owfs.

Postat: 18 sep 2008, 17:42
av elf98
DS2413 har inte något minne. Och det går inte direkt att läsa av om statusen har ändrats.

En variant är att låta strömbrytaren styra båda ingångarna på ett chip, där den ena är transistorstyrd och återkopplad. Använd ytterligare en DS2413 för att styra spänningen till transistorn så kan du resetta detta externa "minne".

Utgå från IO-kortet (http://shop.temperatur.nu/iokort-4-kanaler-p-154.html) så behöver du antagligen bara ytterligare ett motstånd och 1st transistor.

Re: DS2405 Dörrövervakning med mail tjänst och mysql, owfs.

Postat: 30 dec 2011, 19:56
av noak
Hej, försöker förstå hur DS2413 / DS2406 avläses. Ligger scriptet och kör konstant eller triggas det automatiskt när förändringar görs i owfs filstruktur?
Hur fungerar denna rad? Läser den bara av värdet och stoppar in detta i overvakning.sh

Kod: Markera allt

/path/overvakning.sh /mnt/1wire/uncached/05.*****/sensed &
Behöver man då ett script som lopar denna rad t.ex varje sekund eller mountar raden någon trigger i katalogen för sensorn som i sin tur triggar igång overvakning.sh vid förändring?
Har inga sensorer att testa med men kommer att beställa ett antal innan vinterrean tar slut.

Re: DS2405 Dörrövervakning med mail tjänst och mysql, owfs.

Postat: 30 jan 2013, 10:43
av maglub
noak skrev:Hej, försöker förstå hur DS2413 / DS2406 avläses. Ligger scriptet och kör konstant eller triggas det automatiskt när förändringar görs i owfs filstruktur?
Hur fungerar denna rad? Läser den bara av värdet och stoppar in detta i overvakning.sh

Kod: Markera allt

/path/overvakning.sh /mnt/1wire/uncached/05.*****/sensed &
Behöver man då ett script som lopar denna rad t.ex varje sekund eller mountar raden någon trigger i katalogen för sensorn som i sin tur triggar igång overvakning.sh vid förändring?
Har inga sensorer att testa med men kommer att beställa ett antal innan vinterrean tar slut.
Hej noak,

Av en slump fastnade jag på den här sidan och såg att ingen svarat dig. Koden i sig är inte jättekomplicerad om man är van att läsa shell-script.

Raden du frågar efter behöver inte köras varje sekund, utan kommer själv att gå i en slinga/loop. Ampersanden i slutet betyder att programmet körs i bakgrunden utan att du ser det.

Raden i scriptet som lyder:

Kod: Markera allt

while /bin/true; do
... sätter programmet i en oändlig loop. Sedan kollas en fil (/mnt/1wire/uncached/05.*****/sensed), ifall den är lika dan som sist den kollades på (vilket säkerställs genom att filen kopieras till en TEMPFIL), varpå scriptet sover (sleep 1) ifall den är lika dan som sist. Filen som kollas är en virtuell fil, som uppdateras av mjukvaran som hör till 1-wire-dongeln och representerar det som händer med enheten som är kopplad till dörren.

Ha en bra dag!
//magnus

Re: DS2405 Dörrövervakning med mail tjänst och mysql, owfs.

Postat: 09 jul 2014, 08:29
av chrilleman
Ursäkta jag tar upp en gammal tråd men har precis gett mig på detta projektet.
Har fått allting att snurra i labbet och ska nu ge mig på dörrarna, när jag bytte dörrar drog jag fram kabel bakom slutblecket så det är på plats snyggt o fint.

MEN, hur har ni gjort vid slutblecket? Mikrobrytare eller annan lösning? Där är inte jätte gott om plats precis bakom slutblecket.

Tacksam för idéer då jag kört lite fast :)

Re: DS2405 Dörrövervakning med mail tjänst och mysql, owfs.

Postat: 09 jul 2014, 14:35
av Plutonium
Kul att det funkar för dig i labbet.
Jag använde mig av en sådan här:
http://www.kjell.com/sortiment/el/elekt ... %29-p36023
som låskolven tryckte till i sitt yttre (låst) läge.

Nu har jag dock bytt dörr och karm, och i min nya så är det en sådan låskolv som "svingar" ner.. Men med lite finess så borde det inte vara så krångligt att sätta en likadan tryckströmbrytare som där kolven slår till och håller nere när det är låst.

Hoppas det klarnar lite för dig.

Re: DS2405 Dörrövervakning med mail tjänst och mysql, owfs.

Postat: 09 jul 2014, 15:38
av chrilleman
Aha! Nu blev jag lite klokare, att jag inte tänkt på en vanlig tryckströmbrytare.
Testade med mikrobrytare men lyckades aldrig fästa den på något bra sätt, men en tryckströmbrytare kan man borra hål bakifrån på slutblecket och ställa snyggt med muttern så de blir lagom längd fram till kolven.

Ska prövas, tackar!

Re: DS2405 Dörrövervakning med mail tjänst och mysql, owfs.

Postat: 09 jul 2014, 15:49
av Plutonium
Precis ;)
Inte lätt att tänka på allt :D