Raspberry als home controller

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • BenPi
  • Registratie: Februari 2013
  • Laatst online: 23-09-2024
Hoi allemaal,

Ik wil mijn "homecontrol" die nu onder een PIC2550 draaid vervangen door een Raspberry.
De i2c bus werkt, status uitlezen diverse deuren,ramen , temp sensoren etc.
De slimme energiemeter werkt , serieele data komt binnen. 1 x per 10sec.
Nu haal ik met crontab elke 10 minuten van de slimmemeter de data op.
Dit gaat al naar Cosm.com https://cosm.com/feeds/103524 :)

Het probleem:
Er zit dan wel soms tot bijna 10sec wachttijd eer de data wordt aangeboden van de slimmemeter.
Ondertussen moet de I2c bus wel verder scannen.
Kan de Raspberry "tegelijk" de I2c bus scannen EN om de 10sec de data van de serieele bus afwachten?

Tot nu toe programmeerde ik in PICBASIC, dus simpel.
Linux is nieuw voor mij en toch wel lastig.
Zou ik bovenstaande met "bashscript" kunnen laten werken? :>
Wie kan me verder op weg helpen.

Ben

Acties:
  • 0 Henk 'm!

  • Tha_Butcha
  • Registratie: November 2000
  • Laatst online: 20-01 18:05
check www.domotiga.nl wellicht overkill over je, maar dat is een heel systeem wat je op je raspberry kan zetten en interfacet met behoorlijk wat dingen. Tis gemaakt in Gambas, een basic afgeleide.

Compromises are for the weak


Acties:
  • 0 Henk 'm!

  • BenPi
  • Registratie: Februari 2013
  • Laatst online: 23-09-2024
Beste,
inmiddels ww.domotiga.nl bekeken maar inderdaad overkill.
Ik heb een scriptje "scanbjk" gemaakt dat op zich perfekt werkt.
Echter het stopt na verloop van tijd.
Afgelopen weekend schone image geinstalleerd met de nodige drivers voor de I2C bus.
Zelfde probleem. Soms na half uur ,soms na 3 uur .
Waar kan hier de oorzaak liggen ?
Ik start het script nu via WinSCP en laat een led ter info meelopen.


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#!/bin/bash
echo 
# sudo su -
echo "25" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio25/direction
echo "Starttijd:" "`date +%Y.%m.%d`" "`date +%H:%M`" >> test.log

scanning () {
WinSCP
# I2C wwarde ophalen en omzetting hex naar decimaal
a=$(i2cget -y 1 0x27  | awk '{print("",(a=(("0x"substr($1,3,2))*1)))}')
b=$(i2cget -y 1 0x23  | awk '{print("",(a=(("0x"substr($1,3,2))*1)))}')
c=$(i2cget -y 1 0x38  | awk '{print("",(a=(("0x"substr($1,3,2))*1)))}')


# wijzigingen opslaan
let "q=$atemp-$a" 
let "r=$btemp-$b" 
let "s=$ctemp-$c"

# tussen geheugen
atemp=$a
btemp=$b
ctemp=$c


# Weergave PCF8574 "voor"
if [[ $(( $q -  1 )) == 0 ]]  ; then echo "Garagedeur   dicht" "`date +%Y.%m.%d`" "`date +%H:%M`" $a  >> /home/bjk/test.log  ;fi
if [[ $(( $q +  1 )) == 0 ]]  ; then echo "Garagedeur   open " "`date +%Y.%m.%d`" "`date +%H:%M`" $a  >> /home/bjk/test.log  ;fi
if [[ $(( $q -  2 )) == 0 ]]  ; then echo "IR Oprit     actie" "`date +%Y.%m.%d`" "`date +%H:%M`" $a  >> /home/bjk/test.log  ;fi
if [[ $(( $q +  2 )) == 0 ]]  ; then echo "IR Oprit     rust " "`date +%Y.%m.%d`" "`date +%H:%M`" $a  >> /home/bjk/test.log  ;fi
if [[ $(( $q -  4 )) == 0 ]]  ; then echo "Logeerraam   dicht" "`date +%Y.%m.%d`" "`date +%H:%M`" $a  >> /home/bjk/test.log  ;fi
if [[ $(( $q +  4 )) == 0 ]]  ; then echo "Logeerraam   open " "`date +%Y.%m.%d`" "`date +%H:%M`" $a  >> /home/bjk/test.log  ;fi
if [[ $(( $q -  8 )) == 0 ]]  ; then echo "Hobbyraam    dicht" "`date +%Y.%m.%d`" "`date +%H:%M`" $a  >> /home/bjk/test.log  ;fi
if [[ $(( $q +  8 )) == 0 ]]  ; then echo "Hobbyraam    open " "`date +%Y.%m.%d`" "`date +%H:%M`" $a  >> /home/bjk/test.log  ;fi
if [[ $(( $q - 16 )) == 0 ]]  ; then echo "Hobbydeur    dicht" "`date +%Y.%m.%d`" "`date +%H:%M`" $a  >> /home/bjk/test.log  ;fi
if [[ $(( $q + 16 )) == 0 ]]  ; then echo "Hobbydeur    open " "`date +%Y.%m.%d`" "`date +%H:%M`" $a  >> /home/bjk/test.log  ;fi
if [[ $(( $q + 32 )) == 0 ]]  ; then echo "Voorraam 1   open " "`date +%Y.%m.%d`" "`date +%H:%M`" $b  >> /home/bjk/test.log  ;fi
if [[ $(( $q - 32 )) == 0 ]]  ; then echo "Voorraam 1   dicht" "`date +%Y.%m.%d`" "`date +%H:%M`" $b  >> /home/bjk/test.log  ;fi
if [[ $(( $q + 64 )) == 0 ]]  ; then echo "SABLUS 3     open " "`date +%Y.%m.%d`" "`date +%H:%M`" $b  >> /home/bjk/test.log  ;fi
if [[ $(( $q - 64 )) == 0 ]]  ; then echo "SABLUS 3     dicht" "`date +%Y.%m.%d`" "`date +%H:%M`" $b  >> /home/bjk/test.log  ;fi
if [[ $(( $q + 128 )) == 0 ]] ; then echo "Voorraam 2   open " "`date +%Y.%m.%d`" "`date +%H:%M`" $b  >> /home/bjk/test.log  ;fi
if [[ $(( $q - 128 )) == 0 ]] ; then echo "Voorraam 2   dicht" "`date +%Y.%m.%d`" "`date +%H:%M`" $b  >> /home/bjk/test.log  ;fi

#Weergave PCF8574 "achter"
if [[ $(( $r +  1 )) == 0 ]]  ; then echo "SABLUS 1     open " "`date +%Y.%m.%d`" "`date +%H:%M`" $b  >> /home/bjk/test.log  ;fi
if [[ $(( $r -  1 )) == 0 ]]  ; then echo "SABLUS 2     dicht" "`date +%Y.%m.%d`" "`date +%H:%M`" $b  >> /home/bjk/test.log  ;fi
if [[ $(( $r +  2 )) == 0 ]]  ; then echo "SABLUS 2     open " "`date +%Y.%m.%d`" "`date +%H:%M`" $b  >> /home/bjk/test.log  ;fi
if [[ $(( $r -  2 )) == 0 ]]  ; then echo "SABLUS 2     dicht" "`date +%Y.%m.%d`" "`date +%H:%M`" $b  >> /home/bjk/test.log  ;fi
if [[ $(( $r +  4 )) == 0 ]]  ; then echo "Badkamerraam open " "`date +%Y.%m.%d`" "`date +%H:%M`" $b  >> /home/bjk/test.log  ;fi
if [[ $(( $r -  4 )) == 0 ]]  ; then echo "Badkamerraam dicht" "`date +%Y.%m.%d`" "`date +%H:%M`" $b  >> /home/bjk/test.log  ;fi
if [[ $(( $r +  8 )) == 0 ]]  ; then echo "Schuifpui    open " "`date +%Y.%m.%d`" "`date +%H:%M`" $b  >> /home/bjk/test.log  ;fi
if [[ $(( $r -  8 )) == 0 ]]  ; then echo "Schuifpui    dicht" "`date +%Y.%m.%d`" "`date +%H:%M`" $b  >> /home/bjk/test.log  ;fi
if [[ $(( $r + 16 )) == 0 ]]  ; then echo "Achterdeur   open " "`date +%Y.%m.%d`" "`date +%H:%M`" $b  >> /home/bjk/test.log  ;fi
if [[ $(( $r - 16 )) == 0 ]]  ; then echo "Achterdeur   dicht" "`date +%Y.%m.%d`" "`date +%H:%M`" $b  >> /home/bjk/test.log  ;fi
if [[ $(( $r + 32 )) == 0 ]]  ; then echo "Masterraam   open " "`date +%Y.%m.%d`" "`date +%H:%M`" $b  >> /home/bjk/test.log  ;fi
if [[ $(( $r - 32 )) == 0 ]]  ; then echo "Masterraam   dicht" "`date +%Y.%m.%d`" "`date +%H:%M`" $b  >> /home/bjk/test.log  ;fi
if [[ $(( $r + 64 )) == 0 ]]  ; then echo "Masterdeur   open " "`date +%Y.%m.%d`" "`date +%H:%M`" $b  >> /home/bjk/test.log  ;fi
if [[ $(( $r - 64 )) == 0 ]]  ; then echo "Masterdeur   dicht" "`date +%Y.%m.%d`" "`date +%H:%M`" $b  >> /home/bjk/test.log  ;fi
if [[ $(( $r + 128 )) == 0 ]] ; then echo "Voordeur     open " "`date +%Y.%m.%d`" "`date +%H:%M`" $b  >> /home/bjk/test.log  ;fi
if [[ $(( $r - 128 )) == 0 ]] ; then echo "Voordeur     dicht" "`date +%Y.%m.%d`" "`date +%H:%M`" $b  >> /home/bjk/test.log  ;fi

# Weergave PCF8574 "meterkast"
if [[ $(( $s +  4 )) == 0 ]]  ; then echo "Dag   licht     " "`date +%Y.%m.%d`" "`date +%H:%M`" $c  >> /home/bjk/test.log  ;fi
if [[ $(( $s -  4 )) == 0 ]]  ; then echo "Nacht donker   " "`date +%Y.%m.%d`" "`date +%H:%M`" $c  >> /home/bjk/test.log  ;fi
if [[ $(( $s + 128 )) == 0 ]] ; then echo "Buitenlamp uit " "`date +%Y.%m.%d`" "`date +%H:%M`" $c  >> /home/bjk/test.log  ;fi
if [[ $(( $s - 128 )) == 0 ]] ; then echo "Buitenlamp aan " "`date +%Y.%m.%d`" "`date +%H:%M`" $c  >> /home/bjk/test.log  ;fi

cat /home/bjk/test.log > /var/www/test.log

# Indicatie dat programma loopt met led
sleep 0.25 
cd /sys/class/gpio/gpio25/ 
echo "1" > value
sleep 0.25
echo "0" > value
cd 

}

# Start en eindloze loop
main() {
scanning
main
}

#What to do ?
case $1 in
  "help"   ) help;;
  "create" ) create;;
  *        ) main;;
esac


Wie kan me helpen?

Acties:
  • 0 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Nu online
BenPi schreef op woensdag 06 maart 2013 @ 17:59:
Beste,
inmiddels ww.domotiga.nl bekeken maar inderdaad overkill.
Ik heb een scriptje "scanbjk" gemaakt dat op zich perfekt werkt.
Echter het stopt na verloop van tijd.
Afgelopen weekend schone image geinstalleerd met de nodige drivers voor de I2C bus.
Zelfde probleem. Soms na half uur ,soms na 3 uur .
Waar kan hier de oorzaak liggen ?
Hoe breng je het programma naar de achtergrond zodat het als een daemon draait?

Daarnaast zou gebrek aan garbage collectie een probleem zijn.

Sinds de 2 dagen regel reageer ik hier niet meer


Acties:
  • 0 Henk 'm!

  • BenPi
  • Registratie: Februari 2013
  • Laatst online: 23-09-2024
Momenteel start ik het script door in WinSCP op het script te gaan staan en met de rechtermuistoest ->
eigen opdrachten -> uitvoeren te kiezen.

"garbage collectie" zegt mij tot op heden niets.

BenPi

Acties:
  • 0 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Nu online
Kijk eens met "free -m" hoeveel geheugen er gebruikt wordt. Stopt je script niet als je WinSCP afsluit?

Sinds de 2 dagen regel reageer ik hier niet meer


Acties:
  • 0 Henk 'm!

  • BenPi
  • Registratie: Februari 2013
  • Laatst online: 23-09-2024
Met free -m:

total used free shared buffers cached
Mem: 438 176 261 0 45 76
-/+ buffers/cache: 54 383
Swap: 99 0 99

Juist omdat het program doorloopt op deze manier kan ik WinSCP afsluiten.

Indien ik program start met PuTTY , stopt het na het afsluiten van PuTTY. grr!

Acties:
  • 0 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Nu online
Start het programma eens met WinSCP, sluit deze af, log in met Putty en kijk of hij nog draait met:
code:
1
ps -aux

Sinds de 2 dagen regel reageer ik hier niet meer


Acties:
  • 0 Henk 'm!

  • BenPi
  • Registratie: Februari 2013
  • Laatst online: 23-09-2024
root 12907 3.6 0.4 4968 1920 ? S 21:37 0:04 /bin/bash ./scanbjk.sh

Het loopt, maar wel in root hoewel prog in /home/bjk/ staat.
Ook knipperd het ledje.

Acties:
  • 0 Henk 'm!

  • BenPi
  • Registratie: Februari 2013
  • Laatst online: 23-09-2024
Met WinSCP log ik wel via root in.
Dat misschien dat ie in de root staat ?

hier nog een stukje van de geproduceerde test.log:

Starttijd: 2013.03.06 06:54
Buitenlamp uit 2013.03.06 06:56 255
Achterdeur open 2013.03.06 07:04 51
Achterdeur dicht 2013.03.06 07:04 35
Voordeur open 2013.03.06 07:34 163
Voordeur dicht 2013.03.06 07:35 35
IR Oprit actie 2013.03.06 07:35 240
IR Oprit rust 2013.03.06 07:35 242
IR Oprit actie 2013.03.06 08:51 240
IR Oprit rust 2013.03.06 08:51 242
Masterdeur open 2013.03.06 08:57 99
Achterdeur open 2013.03.06 09:00 115
Achterdeur dicht 2013.03.06 09:01 99
Starttijd: 2013.03.06 17:07
Hobbydeur dicht 2013.03.06 17:20 226
Hobbydeur open 2013.03.06 17:20 242
Achterdeur dicht 2013.03.06 17:31 99
Achterdeur open 2013.03.06 17:42 115
Achterdeur dicht 2013.03.06 17:44 99
Buitenlamp aan 2013.03.06 18:36 124
IR Oprit actie 2013.03.06 19:53 240
IR Oprit rust 2013.03.06 19:53 242
IR Oprit actie 2013.03.06 19:53 240

[ Voor 86% gewijzigd door BenPi op 06-03-2013 21:52 ]


Acties:
  • 0 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Nu online
Hij draait niet in root, maar uitgevoerd door root.


Laten we eerst maar eens beginnen met wat optimalisaties, misschien komen we dan vanzelf het probleem wel tegen. Om te beginnen zou het goed zijn om dit op te slaan in een variabele:
code:
1
2
date +%Y.%m.%d
date +%H:%M


Al is het me niet helemaal duidelijk waarom je niet gewoon gelijk dit doet:
code:
1
date "+%Y.%m.%d %H:%M"



Ook kan je alle tekst die je weg wilt schrijven naar de log gewoon cachen in een string en dan alles in één keer wegschrijven.


Dit kan ook anders:
code:
1
2
cd /sys/class/gpio/gpio25/ 
echo "1" > value


code:
1
echo 1 > /sys/class/gpio/gpio25/value



Een infinite loop maak je doorgaans zo:
code:
1
2
3
4
5
main() {
    while [ 1 ]; do
        scanning
    done;
}

Jouw methode is gebruikelijk bij recursiviteit.


Ook dit is nodeloos ingewikkeld:
code:
1
cat /home/bjk/test.log > /var/www/test.log


code:
1
cp /home/bjk/test.log /var/www/



code:
1
let "q=$atemp-$a"


code:
1
q=$(($atemp-$a));



code:
1
if [[ $(( $q -  1 )) == 0 ]]


code:
1
if [ $(( $q -  1 )) -eq 0 ]

Sinds de 2 dagen regel reageer ik hier niet meer


Acties:
  • 0 Henk 'm!

  • Sissors
  • Registratie: Mei 2005
  • Niet online
Als ik het goed heb maakt hij een oneindige loop door zijn main functie in zijn main functie aan te roepen? Gaat er dan niet een stack pointer ofzo oneindig lang groeien? (Afhankelijk van hoe het intern precies is geregeld).

Acties:
  • 0 Henk 'm!

  • BenPi
  • Registratie: Februari 2013
  • Laatst online: 23-09-2024
Beste CurlyMo,

Zoals in begin al aangeven, ben ik eigenlijk een "basic" man.
Linux is volledig nieuw voor mij.
Ik ga het script morgen "proberen" te optimaliseren zoals je voorstelt.

citaat:
"Ook kan je alle tekst die je weg wilt schrijven naar de log gewoon cachen in een string en dan alles in één keer wegschrijven."
is me niet duidelijk hoe.

Ik laat dan weer van me weten.

Acties:
  • 0 Henk 'm!

  • BenPi
  • Registratie: Februari 2013
  • Laatst online: 23-09-2024
@furby-killer
de twee reakties tegelijk.
Hoe anders te doen?

BenPi

Acties:
  • 0 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Nu online
Hoe anders te doen
Door mijn while loop suggestie.
is me niet duidelijk hoe.
code:
1
2
3
4
5
6
7
LOG="Start\n"
if [ 1 == 0 ]; then
    LOG+="Uit\n"
else
    LOG+="Aan\n";
fi
echo -e "$LOG" > log.txt

Sinds de 2 dagen regel reageer ik hier niet meer


Acties:
  • 0 Henk 'm!

  • BenPi
  • Registratie: Februari 2013
  • Laatst online: 23-09-2024
Script gestart met new "main loop" script.
we wachten vannacht af. O-)

BenPi

Acties:
  • 0 Henk 'm!

  • BenPi
  • Registratie: Februari 2013
  • Laatst online: 23-09-2024
Ter info:
Voor het eerst de hele nacht gedraaid. :)
Echter maar 2x een aktie gelogt, hoewel er duidelijk meer zijn geweest.
Opnieuw gestart om 07.00 u, en is na 9u30 weer gestopt, althans was de laatste aktie log.
Nu wel meerdere akties gelogt.
Rond 18u00 weer gestart en ongeveer een uur gedraaid.
Dus nog niet goed helaas. :-(

Acties:
  • 0 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Nu online
Kan je je nieuwe script op pastebin plaatsen?

Sinds de 2 dagen regel reageer ik hier niet meer


Acties:
  • 0 Henk 'm!

  • BenPi
  • Registratie: Februari 2013
  • Laatst online: 23-09-2024
Momenteel draait dit onderstaande script, gestart vanuit WinSCP


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#!/bin/bash
echo 
# sudo su -

NOW=`date +"%Hu%M %d-%m-%Y"`

echo "25" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio25/direction

#Log melding wanneer script is gestart
echo "Starttijd: ------>" "$NOW" >> test.log

scanning () {
NOW=`date +"%Hu%M %d-%m-%Y"`

# omzetting hex naar decimaal
a=$(i2cget -y 1 0x27  | awk '{print("",(a=(("0x"substr($1,3,2))*1)))}')
b=$(i2cget -y 1 0x23  | awk '{print("",(a=(("0x"substr($1,3,2))*1)))}')
c=$(i2cget -y 1 0x38  | awk '{print("",(a=(("0x"substr($1,3,2))*1)))}')


q=$(($atemp-$a));
r=$(($atemp-$b));
s=$(($atemp-$c));

atemp=$a
btemp=$b
ctemp=$c


#PCF voor
if [ $(( $q -  1 )) -eq 0 ]  ; then echo "Garagedeur   dicht" "$NOW" $a  >> /home/bjk/test.log  ;fi
if [ $(( $q +  1 )) -eq 0 ]  ; then echo "Garagedeur   open " "$NOW" $a  >> /home/bjk/test.log  ;fi
if [ $(( $q -  2 )) -eq 0 ]  ; then echo "IR Oprit     actie" "$NOW" $a  >> /home/bjk/test.log  ;fi
if [ $(( $q +  2 )) -eq 0 ]  ; then echo "IR Oprit     rust " "$NOW" $a  >> /home/bjk/test.log  ;fi
if [ $(( $q -  4 )) -eq 0 ]  ; then echo "Logeerraam   dicht" "$NOW" $a  >> /home/bjk/test.log  ;fi
if [ $(( $q +  4 )) -eq 0 ]  ; then echo "Logeerraam   open " "$NOW" $a  >> /home/bjk/test.log  ;fi
if [ $(( $q -  8 )) -eq 0 ]  ; then echo "Hobbyraam    dicht" "$NOW" $a  >> /home/bjk/test.log  ;fi
if [ $(( $q +  8 )) -eq 0 ]  ; then echo "Hobbyraam    open " "$NOW" $a  >> /home/bjk/test.log  ;fi
if [ $(( $q - 16 )) -eq 0 ]  ; then echo "Hobbydeur    dicht" "$NOW" $a  >> /home/bjk/test.log  ;fi
if [ $(( $q + 16 )) -eq 0 ]  ; then echo "Hobbydeur    open " "$NOW" $a  >> /home/bjk/test.log  ;fi
if [ $(( $q + 32 )) -eq 0 ]  ; then echo "Voorraam 1   open " "$NOW" $b  >> /home/bjk/test.log  ;fi
if [ $(( $q - 32 )) -eq 0 ]  ; then echo "Voorraam 1   dicht" "$NOW" $b  >> /home/bjk/test.log  ;fi
if [ $(( $q + 64 )) -eq 0 ]  ; then echo "SABLUS 3     open " "$NOW" $b  >> /home/bjk/test.log  ;fi
if [ $(( $q - 64 )) -eq 0 ]  ; then echo "SABLUS 3     dicht" "$NOW" $b  >> /home/bjk/test.log  ;fi
if [ $(( $q + 128 )) -eq 0 ] ; then echo "Voorraam 2   open " "$NOW" $b  >> /home/bjk/test.log  ;fi
if [ $(( $q - 128 )) -eq 0 ] ; then echo "Voorraam 2   dicht" "$NOW" $b  >> /home/bjk/test.log  ;fi

#PCF achter
if [ $(( $r +  1 )) -eq 0 ]  ; then echo "SABLUS 1     open " "$NOW" $b  >> /home/bjk/test.log  ;fi
if [ $(( $r -  1 )) -eq 0 ]  ; then echo "SABLUS 2     dicht" "$NOW" $b  >> /home/bjk/test.log  ;fi
if [ $(( $r +  2 )) -eq 0 ]  ; then echo "SABLUS 2     open " "$NOW" $b  >> /home/bjk/test.log  ;fi
if [ $(( $r -  2 )) -eq 0 ]  ; then echo "SABLUS 2     dicht" "$NOW" $b  >> /home/bjk/test.log  ;fi
if [ $(( $r +  4 )) -eq 0 ]  ; then echo "Badkamerraam open " "$NOW" $b  >> /home/bjk/test.log  ;fi
if [ $(( $r -  4 )) -eq 0 ]  ; then echo "Badkamerraam dicht" "$NOW" $b  >> /home/bjk/test.log  ;fi
if [ $(( $r +  8 )) -eq 0 ]  ; then echo "Schuifpui    open " "$NOW" $b  >> /home/bjk/test.log  ;fi
if [ $(( $r -  8 )) -eq 0 ]  ; then echo "Schuifpui    dicht" "$NOW" $b  >> /home/bjk/test.log  ;fi
if [ $(( $r + 16 )) -eq 0 ]  ; then echo "Achterdeur   open " "$NOW" $b  >> /home/bjk/test.log  ;fi
if [ $(( $r - 16 )) -eq 0 ]  ; then echo "Achterdeur   dicht" "$NOW" $b  >> /home/bjk/test.log  ;fi
if [ $(( $r + 32 )) -eq 0 ]  ; then echo "Masterraam   open " "$NOW" $b  >> /home/bjk/test.log  ;fi
if [ $(( $r - 32 )) -eq 0 ]  ; then echo "Masterraam   dicht" "$NOW" $b  >> /home/bjk/test.log  ;fi
if [ $(( $r + 64 )) -eq 0 ]  ; then echo "Masterdeur   open " "$NOW" $b  >> /home/bjk/test.log  ;fi
if [ $(( $r - 64 )) -eq 0 ]  ; then echo "Masterdeur   dicht" "$NOW" $b  >> /home/bjk/test.log  ;fi
if [ $(( $r + 128 )) -eq 0 ] ; then echo "Voordeur     open " "$NOW" $b  >> /home/bjk/test.log  ;fi
if [ $(( $r - 128 )) -eq 0 ] ; then echo "Voordeur     dicht" "$NOW" $b  >> /home/bjk/test.log  ;fi

# PCF meterkast
if [ $(( $s +  4 )) -eq 0 ]  ; then echo "Dag  licht        " "$NOW" $c  >> /home/bjk/test.log  ;fi
if [ $(( $s -  4 )) -eq 0 ]  ; then echo "Nacht donker      " "$NOW" $c  >> /home/bjk/test.log  ;fi
if [ $(( $s + 128 )) -eq 0 ] ; then echo "Buitenlamp uit    " "$NOW" $c  >> /home/bjk/test.log  ;fi
if [ $(( $s - 128 )) -eq 0 ] ; then echo "Buitenlamp aan    " "$NOW" $c  >> /home/bjk/test.log  ;fi


# kopie voor later gebruik in www  
# cat /home/bjk/test.log > /var/www/test.log
cp /home/bjk/test.log /var/www/


# led knipperen
sleep 0.25 
cd /sys/class/gpio/gpio25/ 
echo "1" > value
sleep 0.25
echo "0" > value
cd 

}

main() {
    while [ 1 ]; do
        scanning
    done;
}

#What to do ?
case $1 in
  "help"   ) help;;
  "create" ) create;;
             
  *        ) main;;
 esac

Acties:
  • 0 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Nu online
Zou je ook de rest van de suggesties op willen pakken.

Sinds de 2 dagen regel reageer ik hier niet meer


Acties:
  • 0 Henk 'm!

  • HJT!
  • Registratie: Juli 2009
  • Laatst online: 12-11-2020
Ook als eens gekeken naar Razberry?

Acties:
  • 0 Henk 'm!

  • BenPi
  • Registratie: Februari 2013
  • Laatst online: 23-09-2024
Restant volgens suggestie aangepast .


@HJT , nee nog niet naar gekeken.

Acties:
  • 0 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Nu online
BenPi schreef op donderdag 07 maart 2013 @ 21:42:
Restant volgens suggestie aangepast .
Nu rest van de rest nog ;)

Sinds de 2 dagen regel reageer ik hier niet meer


Acties:
  • 0 Henk 'm!

  • BenPi
  • Registratie: Februari 2013
  • Laatst online: 23-09-2024
En zo verder, stapje stapje,

Acties:
  • 0 Henk 'm!

  • BenPi
  • Registratie: Februari 2013
  • Laatst online: 23-09-2024
De hele nacht en ochtend zonder probleem gedraaid. >:)

BenPi

Acties:
  • 0 Henk 'm!

  • Bravo51
  • Registratie: April 2008
  • Laatst online: 14:56
Je zou het script ook kunnen starten via putty. Je gebruikt dan het screen commando. Dan draait het een apparte screen sessie en kun je gewoon uitloggen zonder het te stoppen.

Acties:
  • 0 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Nu online
Of via nohup of daemon of:
code:
1
./program &

Sinds de 2 dagen regel reageer ik hier niet meer


Acties:
  • 0 Henk 'm!

  • BenPi
  • Registratie: Februari 2013
  • Laatst online: 23-09-2024
Starten is dus eenvoudig, maar stoppen ??

Acties:
  • 0 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Nu online
code:
1
kill -9 $(pgrep scanbjk.sh);

Sinds de 2 dagen regel reageer ik hier niet meer


Acties:
  • 0 Henk 'm!

  • BenPi
  • Registratie: Februari 2013
  • Laatst online: 23-09-2024
Weer de hele nacht gedraaid.
Je moet het maar weten, al die commando's maar werkt perfekt.
Geweldig. _/-\o_
Nu op naar weer een volgende stap.

Acties:
  • 0 Henk 'm!

  • BenPi
  • Registratie: Februari 2013
  • Laatst online: 23-09-2024
Nu krijg ik veel data binnen. :*)
Ik zou die data op een webpage van de Raspberry willen visualiseren.
Bijv met een schuifbalk over een tijdlijn scrollen en dan op de plattegrond van mijn huis zien wat er gebeurt.
Op die manier ziet het er "leuk" uit en via vpn o.id. overal toegankelijk ook tijdens de vakantie. 8)

Hoe zou ik zoiets kunnen gaan opzetten?
Met name die plattegrond "grafisch" met open en dicht gaande deuren is weer een nieuwe uitdaging.

Ben

Acties:
  • 0 Henk 'm!

  • BenPi
  • Registratie: Februari 2013
  • Laatst online: 23-09-2024
Helaas, na een aantal dagen testen blijkt mijn script toch niet betrouwbaar te lopen.( 24/7) :'(
Soms een dag soms maar twee uur.
Elke keer kan ik het script zonder probleem weer opstarten en loopt weer voor "??" tijd.
Om toch te kunnen gebruiken zit ik aan een soort watchdog te denken.
Dus tijdens lopen steeds een "reset" naar de watchdog o.i.d.
Als die "reset"niet komt dan na x sec weer starten.
Met watchdog wordt het hele sys gereboot, maar dat wil ik liever niet.
Of kan ik met watchdog ook alleen dat script weer gaan starten ? :/

BenPi

Acties:
  • 0 Henk 'm!

  • inbedrijf
  • Registratie: Juli 2006
  • Laatst online: 16-06 23:14
Ik denk dat je toch iets meer moet gaan loggen, om het probleem te vinden. Ergens moet er toch iets gebeuren dat het script stop. Doet je rasberry niet iets vreemds? kijk ook eens in die logs.

Leuk topic trouwens.

[ Voor 5% gewijzigd door inbedrijf op 15-03-2013 16:54 ]


Acties:
  • 0 Henk 'm!

  • BenPi
  • Registratie: Februari 2013
  • Laatst online: 23-09-2024
Welke log bestanden zijn in dit geval belangrijk voor de info?

Acties:
  • 0 Henk 'm!

  • BenPi
  • Registratie: Februari 2013
  • Laatst online: 23-09-2024
Ondertussen wil ik eigenlijk al wel dat het script loopt, om data te vergaren.

Acties:
  • 0 Henk 'm!

  • _ferry_
  • Registratie: Januari 2002
  • Niet online

_ferry_

Moderator Tweaking

Nipple Tweaker

zou je voortaan de "wijzig" knop willen gebruiken in plaats van elke keer een nieuwe reactie te plaatsen? Zie ook de melding welke verschijnt wanneer je als laatste hebt gereageerd

Acties:
  • 0 Henk 'm!

  • BenPi
  • Registratie: Februari 2013
  • Laatst online: 23-09-2024
Doen we !

Acties:
  • 0 Henk 'm!

  • BenPi
  • Registratie: Februari 2013
  • Laatst online: 23-09-2024
Na veel tijd in SW en hardware te hebben gestoken hier een update van mijn project.
Inmiddels loopt mijn Raspberry al een paar maanden naar volle tevredenheid. >:)

De volgende taken worden 24u/7d/week uitgevoerd:

1e: loggen I2C homebus, status deur/raam schakelaars.
2e: loggen van warmwatertemperatuur en de aan- en retour temperatuur van de CV ketel
3e: loggen waterverbruik
4e: loggen Slimme meter elektra en gas
5e: de data op Cosm (Xively) plaatsen https://xively.com/feeds/103524
6e: bij oprit bewegingsdetektie met in/uitschakelen camera en monitor
6e: draadloze besturing 6 mainswitches van Action o.a. vakantie programma
7e: besturing m.b.v. RC5 code Philips via 433Mhz i.v.m. rolluikbedienng
8e: lokaal toetsenbord voor handbediening diverse switches
9e: bezig met bediening en monitoring via smartphone
10e: in de planning "feedback mainswitches"

Er zal ongetwijfeld nog toevoegingen komen.
Met dank aan ieder voor de hulp op de diverse forums via internet. _/-\o_

Acties:
  • 0 Henk 'm!

  • Wizzmerlin
  • Registratie: Mei 2006
  • Laatst online: 29-05 19:46
Boeiend topic. Begrijp ik dat je vooralsnog alleen 'tekstueel' data verzameld/toont? Komt er nog een grafische omgeving?

Acties:
  • 0 Henk 'm!

  • BenPi
  • Registratie: Februari 2013
  • Laatst online: 23-09-2024
Jazeker, de bedoeling is een "grafische"plattegrond van mijn huis waarin direkt te zien is welke ramen/deuren etc open of dicht zijn.
Bijvoorbeeld d.m.v. een slicer dan de diverse tijdstippen kiezen, deur open/dicht lijkt me geweldig.
Maar helaas, daar is SW voor nodig die ik niet beheers.
Misschien een leuk projekt ;) voor iemand, die daarbij wil helpen ?

Ben

PS: inmiddels ook mijn weerstation werkend op de Raspberry (test)
link verwijderd i.v.m. virus

[ Voor 19% gewijzigd door BenPi op 07-07-2013 23:23 ]


Acties:
  • 0 Henk 'm!

  • Wizzmerlin
  • Registratie: Mei 2006
  • Laatst online: 29-05 19:46
Klinkt ambitieus. :)
Mss dat ik ook maar eens aan de Razberry ga. Ik blijf dit topic ff volgen.

Acties:
  • 0 Henk 'm!

  • Bikkel70
  • Registratie: Juni 2008
  • Laatst online: 18-05 22:05
Je kan bijvoorbeeld de huidige statussen van de verschillende deuren/switches in een stukje shared memory bewaren die je met een CGI script / programma ophaalt.
Met behulp van HTML / AJAX kun je dan redelijk makkelijk een realtime grafische presentatie maken.. dicht en opengaande deuren is wel lastiger ( voor mij dan ), maar je kan wel makkelijk met kleuren werken ( rood = dicht , groen = open o.i.d. ).

Marc

Acties:
  • 0 Henk 'm!

  • Promy
  • Registratie: Oktober 2002
  • Laatst online: 15-06 22:52
Ik ben sinds enige tijd ook bezig met een Pi als "hart" voor m'n domotica. Ik heb een verbinding met Nikobus, lees verbruik (elek/water), temperaturen (1-wire) en heb ook een connectie met m'n alarm.

Voor dat laatste lijkt me wat Bikkel70 voorstelt wel interessant: mijn alarm is via een seriele poort verbonden met de Pi. Ik kan hierdoor commando's versturen naar het alarm (is virtueel keypad) en bij verandering van een sensor (pir/magneetcontact) komt er op de seriele bus een status langs (dus enkel bij verandering).
Nu schrijf ik dit weg naar een txt bestandje die ik terug inlees in de webpagina, maar dit geeft wat problemen als er net tegelijkertijd lees en schrijfacties zijn.

Bikkel70: kan je jou methode eens verder toelichten? ik luister naar de seriele poort dmv een batchscript.
- open en dichtgaande deuren kan je misschien via 2 images doen? eventueel in combinatie met kleur?

[ Voor 5% gewijzigd door Promy op 08-07-2013 13:13 ]


Acties:
  • 0 Henk 'm!

  • Bikkel70
  • Registratie: Juni 2008
  • Laatst online: 18-05 22:05
Je moet een stuk shared memory maken die je vanuit je eigen applicatie schrijft en dan met het CGI script leest wanneer deze wordt aangeroepen. Ik heb het alleen in C gedaan, maar via het linux commando ipcmk moet het vanuit een script ook lukken ( geen idee hoe je vervolgens vanuit het script dan in het shared memory kan schrijven ).

Het is dan ook handig een semaphore aan te maken zodat je mutual exclusion kan afdwingen bij het schrijven/lezen van dit stuk geheugen. Anders krijg je nog steeds problemen die je al eerder beschreef wanneer er gelijktijdig geschreven/gelezen wordt uit dit stuk geheugen ) Ook de semaphore kan met ipcmk gemaakt worden.

Via de html pagina roep je dan via een AJAX call je cgi script aan. Je zorgt er dan bijvoorbeeld voor dat het cgi script alleen gewijzigde informatie retourneert ( het is het makkelijkst als je het JSON formaat hiervoor gebruikt ). In de callback routine van de AJAX call handel je vervolgens de informatie af ( zet plaatjes aan/uit, verplaats een plaatje, geef een tekst een andere kleur, use you imagination..... ).

Op Google is veel over dit alles te vinden, maar ik wil eventueel wel een voorbeeldje maken.

Marc

Acties:
  • 0 Henk 'm!

  • BenPi
  • Registratie: Februari 2013
  • Laatst online: 23-09-2024
@Bikkel70
Zelf heb ik al eens met een plattegrond in Visual Basic wat gedaan maar liep daar toch vast vanwege de toen gebruikte PIC als hart in combinatie met VB.
Nu met de raspberry gaat alles veel makkelijker met name om data op een site te krijgen.
Maar grafisch verwerken is toch nog lastig.
Misschien dat je een basis zou kunnen maken die aan persoonlijke wensen kan worden aangepast.
Ben

Acties:
  • 0 Henk 'm!

  • Promy
  • Registratie: Oktober 2002
  • Laatst online: 15-06 22:52
@Bikkel70: mocht je het zien zitten om een voorbeeldje te schrijven zou ik dat zeer appreciëren!
Mooier zou nog zijn mocht je iets kunnen maken die de seriele poort uitleest.
Als voorbeeld hierbij mijn php command script:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
    include "php_serial.class.php";

    // Let's start the class
    $serial = new phpSerial();

    // First we must specify the device. This works on both Linux and Windows (if
    // your Linux serial device is /dev/ttyS0 for COM1, etc.)
    $serial->deviceSet("/dev/ttyAMA0");

    // Set for 9600-8-N-1 (no flow control)
    $serial->confBaudRate(19200); //Baud rate: 9600
    $serial->confParity("none");  //Parity (this is the "N" in "8-N-1")
    $serial->confCharacterLength(8); //Character length     (this is the "8" in "8-N-1")
    $serial->confStopBits(1);  //Stop bits (this is the "1" in "8-N-1")
    $serial->confFlowControl("none");

    // Then we need to open it
    $serial->deviceOpen();

// read from serial port
$read = $serial->readPort();
$totaalzone = "Z0000000000000000000000000000000000000000" ;// we voorzien 40 mogelijke contacten, nu 38 aangesloten
$myFile = "/var/www/testfile.txt";
   while(1){
       $read = $serial->readPort();
       print $read;
       if (substr($read,1,1) == "Z") {  //het is een zone commando die opgevangen is
            $zone_nr = intval(substr($read,2,3));
            $zone_status = $read[5];
            if ($zone_nr < 41) { // om geen foutmelding te krijgen als we iets fout uitlezen
                $totaalzone[$zone_nr] = $zone_status;                        }
       }
       if (substr($read,2,1) == "*") {  //het is een LCD status commando die opgevangen is
            $lcd_status = substr($read,1,strlen($read)-1);
       }
       
       // nu het geheel in een text file wegschrijven
       $fh = fopen($myFile, 'w') or die("can't open file");
        $stringData = $totaalzone . "\n";
        fwrite($fh, $stringData);
        fwrite($fh,"test");
        fclose($fh);
    $serial->deviceClose();

Acties:
  • 0 Henk 'm!

  • Bikkel70
  • Registratie: Juni 2008
  • Laatst online: 18-05 22:05
@BenPi : Ik begrijp dat je je project in Python hebt geschreven.. Ik zal een voorbeeld Python CGI script ( en bijbehorende HTML pagina ) maken. Heb nog nooit iets met Python gedaan, maar dat moet lukken.
Dan kun je zien hoe je gegevens van je applicatie opgehaald worden door een webpagina zonder dat je de pagina hoeft te refreshen. Ik probeer er deze week wat tijd in te steken.

@Promy: Ik ga eerst TS op weg helpen. Als je straks het voorbeeld ziet, kun je waarschijnlijk zelf vooruit.

Acties:
  • 0 Henk 'm!

  • BenPi
  • Registratie: Februari 2013
  • Laatst online: 23-09-2024
Even wat meer info.
Python is deels. :>
Het meeste is in bashscript.
Met crontab worden een aantal scrips op bepaalde tijden aangeroepen.Die zorgen voor het uitlezen Slimme meter, besturen RF mainsswitches enz.
De I2c bus wordt doorlopend gescant en als er een wijziging ontstaat wordt de data dan opgeslagen in een log bestand.
Zo ook worden de temperatuur sensoren, LM 75, regelmatig uitgelezen en ook in een log bestand opgeslagen.
En met mijn aangepaste bashscript van MBSOLGET, zie hier en te downloaden:
http://www.embezon.nl/ind...2-uitlezen-smart-meter-p1
worden de logbestanden samengevoegd en verstuurd naar Xively en verwerkt naar RRD grafieken.
Ik heb een tijdelijke site waar al wat op staat. Op de een of andere manier geeft die een foutmelding als ik hem hier post. Maar misschien gaat het zo wel goed. -> het-klusteam.nl
En het wordt steeds leuker als daar nu ook nog een grafische weergave bijkomt. >:)
Ben

[ Voor 170% gewijzigd door BenPi op 08-07-2013 23:21 ]


Acties:
  • 0 Henk 'm!

  • Bikkel70
  • Registratie: Juni 2008
  • Laatst online: 18-05 22:05
Ben : je linkje werkt niet.
Heb al even een gedeelte wat gemaakt. Het draait nu op een webserver, maar moet straks natuurlijk op jou Pi draaien. http://www.digiweert.nl/raspdemo
Als je op start monitoring klikt, zorgt een stuk javascript ervoor dat op de achtergrond verse informatie wordt opgehaald. Nu zorgt een simple php script elke seconde voor wat random informatie ( in JSON formaat ), maar straks komt dat van je applicatie af. Het is maar even om de werking nu te demonstreren.

Vanavond ga ik met het Python scriptje aan de slag. :)

[ Voor 10% gewijzigd door Bikkel70 op 10-07-2013 15:30 ]


Acties:
  • 0 Henk 'm!

  • BenPi
  • Registratie: Februari 2013
  • Laatst online: 23-09-2024
Dat adres is:----het-klusteam.nl/weather/index.php---- in de browser intikken en met www. ervoor.
Super man. :)
Zo heb ik het ongeveer in gedachten en dan twee of drie verdiepingen.
Zie ook hier, had ik ook bekeken, iets gelijks : http://fhem.de/tirreG.jpg
Je geeft steeds een vinkje aan/uit bij de deuren/ramen, maar is het zichtbaar open/dicht misschien mogelijk ?
Zelf had ik op mijn eerdere test in VB dat er een deur open of deur dicht image werd geladen.
Is optisch wat duidelijker denk ik.
Blijft een "slicer" wel mogelijk, om zodoende in de tijd terug te schuiven ?
Als de basis er maar is.
Ben

[ Voor 10% gewijzigd door BenPi op 10-07-2013 18:34 ]


Acties:
  • 0 Henk 'm!

  • Bikkel70
  • Registratie: Juni 2008
  • Laatst online: 18-05 22:05
Tuurlijk kan dat . Heb een kleine update gemaakt.. 2 deuren ( veranda / garage ) gaan nu zichtbaar open/dicht. Dit door inderdaad een ander plaatje te projecteren. is wel een stuk meer werk om te maken omdat alle deuren ook nog eens verschillend zijn georiënteerd. Je kan het zo gek maken als je wil, tis maar net hoeveel tijd je eraan wil spenderen ;-)

Ben met het python cgi voorbeeld al wel wat opgeschoten.. gaat niet zo snel omdat ik nog nooit eerder iets in Python heb geschreven.
Heb al wel het shared memory / semaphore gedeelte klaar ( op de RPi ) zodat het cgi scripts met een andere applicatie kan communiceren. Ik ga er na het weekend mee verder.

Een slider control om terug te kijken kan wel, maar dan is het een stuk makkelijker als je je gedetecteerde 'events' direct vanuit je eigen applicatie in een database ( mysql bijvoorbeeld ) op kan slaan. het cgi script kan dan op een makkelijke manier de benodigde data ophalen. De shared memory methode zoals het voorbeeld waar ik mee bezig ben heb je dan zelfs niet meer nodig.

Acties:
  • 0 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Nu online
Zou het niet een goed idee zijn om wat krachten te bundelen. Ik ben zelf al namelijk erg ver met het maken van een domitica oplossing in C, dat ook door veel Raspberry Pi gebruikers wordt gebruikt. De bijbehorende daemon communiceert via socket met behulp van json objecten. Het geheel is dus makkelijk uit te breiden (in andere talen). Zo ben ik nu bijv. bezig met een Android app in Java:
https://github.com/CurlyMoo/433.92-Raspberry-Pi/

[ Voor 8% gewijzigd door CurlyMo op 12-07-2013 11:38 ]

Sinds de 2 dagen regel reageer ik hier niet meer


Acties:
  • 0 Henk 'm!

  • BenPi
  • Registratie: Februari 2013
  • Laatst online: 23-09-2024
@Bikkel70
Hartstikke goed man. _/-\o_
Die slider control lijkt me visueel erg mooi en makkelijk in gebruik, maar er zijn natuurlijk veel meer mogelijkheden.
Mijn data wordt al in een lokale database opgeslagen zoals bij "mbsolget" gebeurd:
1e: als sql per dag bijv: mbsolget_p1-20130623.sql
2e: ook als dagelijkse *.csv bestand.
3e: en ook bijv. xively-20130712-1220.json als log bestand.
Dus data genoeg. :)
Ik wordt steeds nieuwsgieriger.

@CurlyMo
Ik heb de afgelopen jaren al erg veel verschillende domotica projekten gevolgt en geprobeerd.
En steeds loop ik tegen SW problemen aan die uitgaan van bestaande gangbare protocollen.Logisch. :|
Wat ik nu heb is een combinatie van diverse projekten/voorbeelden etc op de Raspberry Pi.
Wat Bikkel70 nu maakt is eigenlijk de laatste schakel en daar ben ik blij mee. ;)
Als er iets dergelijks te maken is wat universeel, voor de Raspberry Pi, en bijv met bashscript naar eigen wensen te maken/ in te stellen is ben ik het helemaal met je eens.
Maar het moet overzichtelijk blijven.
Je maakt het voor veel beginners en ervaren (oudere basic) mensen wel heel toegankelijk.
Mijn stem heb je. :*)

Ben


daarvan

Acties:
  • 0 Henk 'm!

  • Bikkel70
  • Registratie: Juni 2008
  • Laatst online: 18-05 22:05
Ben : Ik ben weer een stuk verder. Heb het voorbeeld geheel op de RPi draaien nu. Dus een serverscript welke de deuren/ramen/temp sensoren emuleert, en CGI script dat informatie ( JSON ) uit een stuk shared memory haalt, en de HTML pagina welke op zijn beurt weer het cgi script aanroept om de data op te halen.
Ik zal vanavond / morgen het geheel van wat commentaar voorzien om het vervolgens beschikbaar te stellen.

Acties:
  • 0 Henk 'm!

  • BenPi
  • Registratie: Februari 2013
  • Laatst online: 23-09-2024
Geweldig, >:)

Ik ben benieuwd.
Heb natuurlijk wel steeds even op http://www.digiweert.nl/raspdemo gekeken 8)

Acties:
  • 0 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Nu online
@Bikkel70, waarom shared memory en geen sockets?

Sinds de 2 dagen regel reageer ik hier niet meer


Acties:
  • 0 Henk 'm!

  • Bikkel70
  • Registratie: Juni 2008
  • Laatst online: 18-05 22:05
Geen specifiek reden hoor. Er zijn meer wegen die naar Rome leiden, en dit is er een van. Ik heb al eens dergelijke constructie gemaakt voor een ander project, vandaar denk ik.
Met Unix sockets heb ik eigenlijk nog nooit iets gemaakt. Ik heb nog niet zo heel veel ervaring met Unix/Linux, maar ben wel bereid wat bij te leren natuurlijk.
Ik begrijp dat jij de voorkeur voor sockets hebt ? Heb jij daar specifieke redenen voor ?

Acties:
  • 0 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Nu online
Ja, omdat ik het niet voor elkaar kreeg om via shared memory de disk io te omzeilen en het compleet cross platform is. Voel je vrij om een van mijn (aangepaste) libs te gebruiken.

Sinds de 2 dagen regel reageer ik hier niet meer


Acties:
  • 0 Henk 'm!

  • Bikkel70
  • Registratie: Juni 2008
  • Laatst online: 18-05 22:05
Ik ga zeker je project nog nader bestuderen. Kijken of we wellicht een en ander aan elkaar kunnen knopen. ;)

Acties:
  • 0 Henk 'm!

  • Bikkel70
  • Registratie: Juni 2008
  • Laatst online: 18-05 22:05
@Ben : Ik heb een bestand online gezet www.digiweert.nl/raspdemo/Raspdemo.tar.gz. Er zit ook een README bij. Hoop dat je het werkende krijgt, aen anders hoor ik het wel. :)

Groet,

Marc

Acties:
  • 0 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Nu online
Ik hoor het wel, het lijkt me in ieder geval een goed idee :)

Sinds de 2 dagen regel reageer ik hier niet meer


Acties:
  • 0 Henk 'm!

  • BenPi
  • Registratie: Februari 2013
  • Laatst online: 23-09-2024
@Bikkel70 Ik ga ermee bezig ,morgen.

@Bikkel70

Ik heb de SW geinstalleerd, echter bij de "plattegrond" krijg bij "Status" alleen de melding "Not Connected" en ook geen verdere temperatuur en deur info, dus wel de plattegrond met vraagtekens zelf. ;(
Waarschijnlijk heb ik toch iets niet goed staan.
Mijn filestruktuur is:
var/www/raspdemo/index.html en digital-7__mono_.ttf
var/www/raspdemo/img/ (de complete img inhoud)
var/www/cgi-bin/demo.cgi
In de root start ik server.py, daarmee kan ik wel de statussen wijzigen met 0, 1, van D en R .

Ben
.

[ Voor 97% gewijzigd door BenPi op 16-07-2013 21:30 ]


Acties:
  • 0 Henk 'm!

  • Bikkel70
  • Registratie: Juni 2008
  • Laatst online: 18-05 22:05
De structuur lijkt goed...
Wat krijg je als je het cgi script direct aanroept ?: dus http://[ip van pi]/cgi-bin/demo.cgi ? Als het goed is zie je dan een Json string voorbij komen.
Is het cgi script uitvoerbaar vanuit de terminal ? Zo ja.. heeft het script execute rechten voor alle gebruikers ?

Acties:
  • 0 Henk 'm!

  • fheerens
  • Registratie: Juli 2005
  • Laatst online: 16-06 21:19

fheerens

ir.

BenPi schreef op donderdag 07 maart 2013 @ 21:06:
Momenteel draait dit onderstaande script, gestart vanuit WinSCP


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#!/bin/bash
echo 
# sudo su -

NOW=`date +"%Hu%M %d-%m-%Y"`

echo "25" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio25/direction

#Log melding wanneer script is gestart
echo "Starttijd: ------>" "$NOW" >> test.log

scanning () {
NOW=`date +"%Hu%M %d-%m-%Y"`

# omzetting hex naar decimaal
a=$(i2cget -y 1 0x27  | awk '{print("",(a=(("0x"substr($1,3,2))*1)))}')
b=$(i2cget -y 1 0x23  | awk '{print("",(a=(("0x"substr($1,3,2))*1)))}')
c=$(i2cget -y 1 0x38  | awk '{print("",(a=(("0x"substr($1,3,2))*1)))}')


q=$(($atemp-$a));
r=$(($atemp-$b));
s=$(($atemp-$c));

atemp=$a
btemp=$b
ctemp=$c


#PCF voor
if [ $(( $q -  1 )) -eq 0 ]  ; then echo "Garagedeur   dicht" "$NOW" $a  >> /home/bjk/test.log  ;fi
if [ $(( $q +  1 )) -eq 0 ]  ; then echo "Garagedeur   open " "$NOW" $a  >> /home/bjk/test.log  ;fi
if [ $(( $q -  2 )) -eq 0 ]  ; then echo "IR Oprit     actie" "$NOW" $a  >> /home/bjk/test.log  ;fi
if [ $(( $q +  2 )) -eq 0 ]  ; then echo "IR Oprit     rust " "$NOW" $a  >> /home/bjk/test.log  ;fi
if [ $(( $q -  4 )) -eq 0 ]  ; then echo "Logeerraam   dicht" "$NOW" $a  >> /home/bjk/test.log  ;fi
if [ $(( $q +  4 )) -eq 0 ]  ; then echo "Logeerraam   open " "$NOW" $a  >> /home/bjk/test.log  ;fi
if [ $(( $q -  8 )) -eq 0 ]  ; then echo "Hobbyraam    dicht" "$NOW" $a  >> /home/bjk/test.log  ;fi
if [ $(( $q +  8 )) -eq 0 ]  ; then echo "Hobbyraam    open " "$NOW" $a  >> /home/bjk/test.log  ;fi
if [ $(( $q - 16 )) -eq 0 ]  ; then echo "Hobbydeur    dicht" "$NOW" $a  >> /home/bjk/test.log  ;fi
if [ $(( $q + 16 )) -eq 0 ]  ; then echo "Hobbydeur    open " "$NOW" $a  >> /home/bjk/test.log  ;fi
if [ $(( $q + 32 )) -eq 0 ]  ; then echo "Voorraam 1   open " "$NOW" $b  >> /home/bjk/test.log  ;fi
if [ $(( $q - 32 )) -eq 0 ]  ; then echo "Voorraam 1   dicht" "$NOW" $b  >> /home/bjk/test.log  ;fi
if [ $(( $q + 64 )) -eq 0 ]  ; then echo "SABLUS 3     open " "$NOW" $b  >> /home/bjk/test.log  ;fi
if [ $(( $q - 64 )) -eq 0 ]  ; then echo "SABLUS 3     dicht" "$NOW" $b  >> /home/bjk/test.log  ;fi
if [ $(( $q + 128 )) -eq 0 ] ; then echo "Voorraam 2   open " "$NOW" $b  >> /home/bjk/test.log  ;fi
if [ $(( $q - 128 )) -eq 0 ] ; then echo "Voorraam 2   dicht" "$NOW" $b  >> /home/bjk/test.log  ;fi

#PCF achter
if [ $(( $r +  1 )) -eq 0 ]  ; then echo "SABLUS 1     open " "$NOW" $b  >> /home/bjk/test.log  ;fi
if [ $(( $r -  1 )) -eq 0 ]  ; then echo "SABLUS 2     dicht" "$NOW" $b  >> /home/bjk/test.log  ;fi
if [ $(( $r +  2 )) -eq 0 ]  ; then echo "SABLUS 2     open " "$NOW" $b  >> /home/bjk/test.log  ;fi
if [ $(( $r -  2 )) -eq 0 ]  ; then echo "SABLUS 2     dicht" "$NOW" $b  >> /home/bjk/test.log  ;fi
if [ $(( $r +  4 )) -eq 0 ]  ; then echo "Badkamerraam open " "$NOW" $b  >> /home/bjk/test.log  ;fi
if [ $(( $r -  4 )) -eq 0 ]  ; then echo "Badkamerraam dicht" "$NOW" $b  >> /home/bjk/test.log  ;fi
if [ $(( $r +  8 )) -eq 0 ]  ; then echo "Schuifpui    open " "$NOW" $b  >> /home/bjk/test.log  ;fi
if [ $(( $r -  8 )) -eq 0 ]  ; then echo "Schuifpui    dicht" "$NOW" $b  >> /home/bjk/test.log  ;fi
if [ $(( $r + 16 )) -eq 0 ]  ; then echo "Achterdeur   open " "$NOW" $b  >> /home/bjk/test.log  ;fi
if [ $(( $r - 16 )) -eq 0 ]  ; then echo "Achterdeur   dicht" "$NOW" $b  >> /home/bjk/test.log  ;fi
if [ $(( $r + 32 )) -eq 0 ]  ; then echo "Masterraam   open " "$NOW" $b  >> /home/bjk/test.log  ;fi
if [ $(( $r - 32 )) -eq 0 ]  ; then echo "Masterraam   dicht" "$NOW" $b  >> /home/bjk/test.log  ;fi
if [ $(( $r + 64 )) -eq 0 ]  ; then echo "Masterdeur   open " "$NOW" $b  >> /home/bjk/test.log  ;fi
if [ $(( $r - 64 )) -eq 0 ]  ; then echo "Masterdeur   dicht" "$NOW" $b  >> /home/bjk/test.log  ;fi
if [ $(( $r + 128 )) -eq 0 ] ; then echo "Voordeur     open " "$NOW" $b  >> /home/bjk/test.log  ;fi
if [ $(( $r - 128 )) -eq 0 ] ; then echo "Voordeur     dicht" "$NOW" $b  >> /home/bjk/test.log  ;fi

# PCF meterkast
if [ $(( $s +  4 )) -eq 0 ]  ; then echo "Dag  licht        " "$NOW" $c  >> /home/bjk/test.log  ;fi
if [ $(( $s -  4 )) -eq 0 ]  ; then echo "Nacht donker      " "$NOW" $c  >> /home/bjk/test.log  ;fi
if [ $(( $s + 128 )) -eq 0 ] ; then echo "Buitenlamp uit    " "$NOW" $c  >> /home/bjk/test.log  ;fi
if [ $(( $s - 128 )) -eq 0 ] ; then echo "Buitenlamp aan    " "$NOW" $c  >> /home/bjk/test.log  ;fi


# kopie voor later gebruik in www  
# cat /home/bjk/test.log > /var/www/test.log
cp /home/bjk/test.log /var/www/


# led knipperen
sleep 0.25 
cd /sys/class/gpio/gpio25/ 
echo "1" > value
sleep 0.25
echo "0" > value
cd 

}

main() {
    while [ 1 ]; do
        scanning
    done;
}

#What to do ?
case $1 in
  "help"   ) help;;
  "create" ) create;;
             
  *        ) main;;
 esac
if [ $(( $r - 1 )) -eq 0 ] ; then echo "SABLUS 2 dicht" "$NOW" $b >> /home/bjk/test.log ;fi

Hier staat 3 keer sablus 2 in echo. Kleinigheidje... :9

In AvE we trust


Acties:
  • 0 Henk 'm!

  • Bikkel70
  • Registratie: Juni 2008
  • Laatst online: 18-05 22:05
@Ben: Welk weerstation gebruik je als ik vragen mag ? Ik wil zelf een wat uitgebreidere aanschaffen en deze dan via de RPi uitlezen als onderdeel voor voor mijn volgende project "Slimme Wekker".

Acties:
  • +1 Henk 'm!

  • BenPi
  • Registratie: Februari 2013
  • Laatst online: 23-09-2024
@ fheerens -> Scherp gezien !! :*)
Is mij nog niet opgevallen, waarschijnlijk die melding nog nooit is geweest.Sablus is een sabotagelus.
Thanks.
@Bikkel70
Ik heb een chinakloon: Weather Station Model: WH1080
Wat ik nu ook zie is dat de communicatie op 868.3 Mhz is.
Ik moet nu ook CurlyMo teleurstellen. De code via 433 gaat niet lukken. ;w

Wat betreft de demo;

Direkt via http:// IP / cgi-bin/demo.cgi krijg ik de melding:
------
NOT FOUND
The requested URL /cgi-bin/demo.cgi was not found on this server.
------

Vanuit terminal:
root@raspberrypi:/var/www/cgi-bin# python demo.cgi
Content-type: text/html

{"Status":"Server Offline"}

root@raspberrypi:/var/www/cgi-bin#

[ Voor 32% gewijzigd door BenPi op 17-07-2013 13:52 ]


Acties:
  • 0 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Nu online
Ik moet nu ook CurlyMo teleurstellen. De code via 433 gaat niet lukken. ;w
Kijk eerst maar eens of je een 868.3Mhz ontvanger aan de gang krijgt.

Sinds de 2 dagen regel reageer ik hier niet meer


Acties:
  • 0 Henk 'm!

  • Bikkel70
  • Registratie: Juni 2008
  • Laatst online: 18-05 22:05
Als ik naar je script kijk, gaat het volgens mij niet goed als er 2 inputs van dezelde groep ( bv garagedeur en logeerraam ) tegelijkertijd van status veranderen. Je kjjkt steeds naar het verschil met de vorige toestand, maar vangt simultane veranderingen dus niet af.. verschil kan in dit voorbeeld ook -5, -3 , 3 of 5 worden.

Je kan beter een bitwise compare doen. dus iets in vorm van :

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# oude mask XOR met nieuwe mask levert enkel de gewijzigde bits
changed = ( oldmask ^ mask )

# AND'en met bitmask voor bepaalde input  bevestigd dat het om deze specifiek input gaat
if (changed  & 1) -eq  1
then
   # Dan kijken naar de status van dit bit
   if( mask & 1 ) :  #deur open
else
    #deur dicht
fi

if (changed  & 2) -eq  2
then
   if( mask & 2 ) :  #deur 2 open
else
   #deur 2 dicht
fi

if (changed  & 4) -eq  4
then
   if( mask & 4 ) :  #deur 3 open
else
    #deur 3 dicht
fi
#enz..


Wat betreft de demo.. wat zijn de rechten op je cgi-bin map ?
En kun je het script ook direct draaien ? :
Dus niet : root@raspberrypi:/var/www/cgi-bin# python demo.cgi
maar : root@raspberrypi:/var/www/cgi-bin/demo.cgi

[ Voor 16% gewijzigd door Bikkel70 op 17-07-2013 14:34 ]


Acties:
  • 0 Henk 'm!

  • BenPi
  • Registratie: Februari 2013
  • Laatst online: 23-09-2024
Jouw tip voor bitwise zal ik gaan bekijken maar eerst de demo werkend krijgen toch ?

de rechten voor cgi-bin zijn 777
own is root

root@raspberrypi:~# /var/www/cgi-bin/demo.cgi "enter" geeft:

Content-type: text/html

{"Status":"Server Offline"}
root@raspberrypi:~#

[ Voor 19% gewijzigd door BenPi op 17-07-2013 15:01 ]


Acties:
  • 0 Henk 'm!

  • Bikkel70
  • Registratie: Juni 2008
  • Laatst online: 18-05 22:05
script output klopt.. als je het server script ook actief maakt, die je meer data.
Ik zal vanavond even verder kijken wat er aan de hand kan zijn..

Wat betreft het bitwise compare verhaal. Nee .. heeft niets met de demo te maken. Zoals je het nu hebt, registreer je niets in je logfile als 2 inputs tegelijkertijd veranderen ( dat is mijn theorie tenminste ).

[ Voor 42% gewijzigd door Bikkel70 op 17-07-2013 15:10 ]


Acties:
  • 0 Henk 'm!

  • BenPi
  • Registratie: Februari 2013
  • Laatst online: 23-09-2024
Klopt, ik zie nu de complete regel met data voorbij komen.

Acties:
  • 0 Henk 'm!

  • Bikkel70
  • Registratie: Juni 2008
  • Laatst online: 18-05 22:05
Hmm... volgens mij moet je nog instellen waar de CGI scipts staan.. kan me herinneren zoiets gedaan te hebben, maar weet niet precies waar. ff googlen leert dat het in /etc/apache2/httpd.conf ( als je apache gebruikt natuurlijk ) moet staan :

#
# CGI-BIN
#

ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"


Ik heb nu geen pi bij de hand, maar kan vanavond wel even kijken.

edit:
het bestand bestaat niet in mijn configuratie.. Weet niet wat er aan de hand is . Ik zal met een verse wheezy image het cgi gedeelte opnieuw proberen op te zetten.. zal wel morgen worden.

[ Voor 22% gewijzigd door Bikkel70 op 17-07-2013 22:23 ]


Acties:
  • 0 Henk 'm!

  • Bikkel70
  • Registratie: Juni 2008
  • Laatst online: 18-05 22:05
Ik neem nog steeds aan de je Apache gebruikt als webserver ?
In dat geval staat in de file /etc/apache2/sites-available/default standaard het volgende :

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

Zet je cgi script dus in /usr/lib/cgi-bin/ of pas dit bestand aan zodat het naar /var/www/cgi-bin/ wijst.
Volgens mij moet het dan werken.

Acties:
  • 0 Henk 'm!

  • BenPi
  • Registratie: Februari 2013
  • Laatst online: 23-09-2024
De demo.cgi in /usr/lib/cgi-bin/ geplaatst en rechten toegewezen.
Nu werkt de demo. >:)
Ik ga nu eens even kijken wat er allemaal aan te passen is.
Bedankt zover !!

Acties:
  • 0 Henk 'm!

  • Bikkel70
  • Registratie: Juni 2008
  • Laatst online: 18-05 22:05
Da's mooi :) Ik vraag me nu alleen af hoe je een en ander vanuit het bash script moet doen. Het zou een stuk makkelijker zijn om alles naar python ( of C ) om te schrijven. Voor dat script wat je hebt gepost is dat niet zoveel werk lijkt me.

Heb ook nog naar een socket oplossing gekeken. Met deze methode kun je heel makkelijk specifieke data door je cgi script op laten vragen bij je homecontrol applicatie. Dit is heel handig als je meerdere plattegronden wil laten zien.. je kan dan bv alleen de statussen van de begane grond laten ophalen. Ik zal komend weekend deze proof of concept ( met socket ipv shared memory ) ook even uitwerken.

Acties:
  • 0 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Nu online
Als je hulp nodig hebt de socket implementatie dan hoor ik het wel. Gisteren de low-pass filter werkend gekregen waardoor ik nagenoeg ruisloze 433.92 signalen kan ontvangen.

Sinds de 2 dagen regel reageer ik hier niet meer


Acties:
  • 0 Henk 'm!

  • Bikkel70
  • Registratie: Juni 2008
  • Laatst online: 18-05 22:05
Ik had het gelezen van je low pass filter.. mooi man >:)
Wat die sockets betreft, dat gaat wel lukken. Is wel even zoeken/lezen, maar al doende leert men.

Acties:
  • 0 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Nu online
Wat ik bedoelde was vooral, als je je GUI aan mijn code wilt knopen en je bepaalde data nodig heb vanuit mijn deamon, laat het even weten. Dan lever ik dat aan.

Sinds de 2 dagen regel reageer ik hier niet meer


Acties:
  • 0 Henk 'm!

  • BenPi
  • Registratie: Februari 2013
  • Laatst online: 23-09-2024
@Bikkel70 Als die socket oplossing universeler en handiger is dan gaan we daar toch voor.
Er zijn inderdaad meer plattegronden , verdiepingen en ongeving

@CurlyMo zie je GPIO threat.

Acties:
  • 0 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Nu online
Socket is handiger ja, vrijwel alle talen ondersteunen ze. Daarnaast is het grote voordeel dat je ook kan communiceren in je netwerk. Je programma hoeven niet op dezelfde computer te draaien of dezelfde architectuur.

[ Voor 57% gewijzigd door CurlyMo op 19-07-2013 11:21 ]

Sinds de 2 dagen regel reageer ik hier niet meer


Acties:
  • 0 Henk 'm!

  • Bikkel70
  • Registratie: Juni 2008
  • Laatst online: 18-05 22:05
@CurlyMo : wat ik van jouw deamon wil weten is wat de huidige status is van of meer devices in een json string waarbij de "key" de naam is van het device en "value" de status.
In de html zorg ik er dan voor dat de ID van een bepaald element dezelfde naam heeft als de "key' uit de Json. Het is dan wel makkelijk als ik aan de key kan zien wat voor type device het is zodat ik kan bepalen wat er moet gebeuren op de pagina.. Bijvoorbeeld deuren beginnen met"D" , Temperatuurlabels met een "tmp", tekstberichten met "txt" enz..
Status van deuren mag dan bv "1"of "0" zijn . Temperaturen bv "23.7", enz

Ik geeft aan het CGI script door van welke groep ik de data wil hebben ( bv. alleen etage 1 ). en het cgi script vraagt dan via de socket aan jou deamon de gewenste info.. hier moeten we wel even een protocolletje over afspreken natuurlijk. De json die jou deamon door diezelfde socket dan als reply terugstuurt, geef ik 1 op 1 door aan de webpagina. Op deze manier is het volgens mij een universeel dingetje dat Ben ook kan gebruiken.

Kan via de webpagina natuurlijk ook commando's naar jouw deamon sturen om e.e.a in/uit te schakelen.

Ik kan in jouw source even niet ontdekken of je een of andere vorm van persistentie gebruikt om de statussen bij te houden, maar heb 'm nog niet goed doorgekeken hoor.

[ Voor 4% gewijzigd door Bikkel70 op 19-07-2013 15:36 ]


Acties:
  • 0 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Nu online
Hier zou alles moeten staan:
https://github.com/CurlyM...aspberry-Pi/wiki/Code-API
Bikkel70 schreef op vrijdag 19 juli 2013 @ 14:29:
Ik geeft aan het CGI script door van welke groep ik de data wil hebben ( bv. alleen etage 1 ). en het cgi script vraagt dan via de socket aan jou deamon de gewenste info.. hier moeten we wel even een protocolletje over afspreken natuurlijk. De json die jou deamon door diezelfde socket dan als reply terugstuurt, geef ik 1 op 1 door aan de webpagina.
Op dit moment zijn hier twee optie voor:
1) Je wacht of reactie van de daemon zodra er veranderingen zijn. Deze worden vanzelf doorgegeven.
2) Deze veranderingen worden ook bijgewerkt in het config bestand (welke ik later ook MySQL support wil geven). Eventueel kan je dus gewoon opnieuw een config request doen, welke de status van alle apparaten in de config doorgeeft.

Voor beide gevallen, zie mijn API.




Een voorbeeld config staat op mijn github, maar voor het gemak:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
{
    "living": {
        "name": "Living",
        "bookshelve": {
            "name": "Book Shelve Light",
            "protocol": "kaku_switch",
            "type": 1,
            "id": 1234,
            "unit": 0,
            "state": "off",
            "values": [ "on", "off" ]
        },
        "main": {
            "name": "Main",
            "protocol": "kaku_dimmer",
            "type": 1,
            "id": 1234,
            "unit": 1,
            "state": 0,
            "values": [ 0, 3, 5, 7, 9, 11, 13, 15 ]
        }
    },
    "bedroom": {
        "name": "Bedroom",
        "main": {
            "name": "Main",
            "protocol": "elro",
            "type": 1,
            "id": 5678,
            "unit": 0,
            "state": "on",
            "values": [ "on", "off" ]
        }
    },
    "garden": {
        "name": "Garden",   
        "weather": {
            "name": "Weather Station",
            "protocol": "alecto",
            "type": 3,
            "id": 100,
            "humidity": 50,
            "temperature": 1530,
            "battery": 1
        }
    }       
}

[ Voor 134% gewijzigd door CurlyMo op 19-07-2013 19:48 ]

Sinds de 2 dagen regel reageer ik hier niet meer


Acties:
  • 0 Henk 'm!

  • Bikkel70
  • Registratie: Juni 2008
  • Laatst online: 18-05 22:05
@Ben: Ik heb de demopagina iets uitgebreid. Als je nu op de develop knop drukt,dan komen er border rond de plaatjes en kun je ze verplaatsen ( draggen ) met je muis. Als je de muisknop dan weer loslaat, komt er een popup met de nieuwe coördinaten. Is makkelijker om plaatjes op de juiste plek te zetten. Ik ga e.e.a.nog veel verder uitbreiden zodat er een complete plattegrond editor ontstaat, maar daar begin ik na mijn ( welverdiende ;) ) vakantie pas mee. Hopelijk heb ik dan mijn 433Mhz zender/ontvanger ook binnen. Het nieuwe weerstation ( TFA Nexus ) is al onderweg.

@CurlyMo : 433 Mhz setje besteld op Ebay.. zodra zit binnen is ga ik aan de slag met je software. Is een stuk makkelijker als ik hier wat dingen zelf kan testen.

Acties:
  • 0 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Nu online
@Bikkel70, ik heb een eigen topic geopend voor mijn code. Laten we daar verder gaan met kletsen :):
Betaalbare en modulaire domotica via de Raspberry Pi (€ 10)

Sinds de 2 dagen regel reageer ik hier niet meer


Acties:
  • 0 Henk 'm!

  • Promy
  • Registratie: Oktober 2002
  • Laatst online: 15-06 22:52
@Bikkel70: ik heb ook dat weerstation. Het heeft echter verschrikkelijk last van uitvallende sensoren, zeker als je de usb aansluit.
Ik heb ook een 433MHz ontvanger besteld in de hoop dat ik ze rechtstreeks kan uitlezen. Uit een ander weerstation wil ik dan een barometer halen om zo volledige info te hebben. (binnentemperaturen heb ik al via DS18B20's)

Heb je toevallig al iets werkend met sockets?

[ Voor 6% gewijzigd door Promy op 28-07-2013 21:01 ]


Acties:
  • 0 Henk 'm!

  • Bikkel70
  • Registratie: Juni 2008
  • Laatst online: 18-05 22:05
Ok, ik kijk het even aan. En anders gaat ie gewoon weer terug. Voor de barometer kun je ook de BMP085 van Bosch gebruiken.. deze kun je via I2C uitlezen. Heb 'm zelf ook een keer gebruikt.. werkt goed..

Die demo gebaseerd op sockets zal ik vandaag of morgen even afmaken. Werkt al wel via Unix domain socket, maar moet op TCP socket komen. Is niet zoveel werk.

Acties:
  • 0 Henk 'm!

  • BenPi
  • Registratie: Februari 2013
  • Laatst online: 23-09-2024
@Bikkel70, Ja dat is een handige toevoeging om op die manier snel de coördinaten te bepalen. :*)
Ik was daar al een tijdje mee aan het klooien bij mijn eigen platte grond.
Ik hoop voor je dat het probleem van Promy met zijn weerstation een uitzondering is.

@CurlyMo . Goed om op met een new topic alles wat de domotica betreft gecombineerd te hebben. :*)

PS: Om hardwarematig helemaal goed te doen moeten de niet gebruikte ingangen van de sn74hc14 vast gepint worden aan massa of aan de VCC !
De uitgang van de LM358 kan 5V worden , en zodoende ook de ingang van de eerste smitt trigger.die max 3.3 V mag hebben (VCC= 3.3V). Er zal een clampstroom van 20mA kunnen lopen.
Ik zou een weerstand van bijv 1k in serie plaatsen. Maakt voor de werking niets uit.

Acties:
  • 0 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Nu online
@BenPi, die zaken kunnen we mooi bediscussiëren in het andere topic. Het werkt nu in ieder geval naar behoren (met KaKu). Wat ik wel kan zeggen is dat ik de ontvanger lange tijd zonder problemen op de GPIO pinnen van de RPi aangesloten heb gehad zonder enige probleem. De uitgang van de ontvanger is naar waarschijnlijkheid dus nooit 5v (alhoewel de opamp wel versterkt met een factor 2.2...).

Zelf heb ik ook al zitten denken hoe we andere toepassingen kunnen combineren in mijn daemon zoals relays via GPIO, I2C, P1 poort enz. Ook dat kunnen we mooi in dat topic doen, want ik denk dat mijn code daar een mooie basis voor is. Nu eerst de mooie GUI van Bikken70.

Ik kan daar ovigerens wel wat mede auteurs gebruiken voor de verschillende onderdelen (electronica, gui's, etc.) dus als daar interesse voor is...

[ Voor 14% gewijzigd door CurlyMo op 28-07-2013 23:29 ]

Sinds de 2 dagen regel reageer ik hier niet meer


Acties:
  • 0 Henk 'm!

  • Promy
  • Registratie: Oktober 2002
  • Laatst online: 15-06 22:52
@Bikkel70: ik ben hier wat aan het experimenteren in het aanpassen van jouw demo.
Wat ik echter voorlopig een probleem mee heb is het stoppen van het script? ik kan dit enkel door kill -9 en dan het processnr te gebruiken... is er een andere manier?

Acties:
  • 0 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Nu online
@Promy, Bikkel70 is op vakantie en daarnaast heeft hij de discussie over zijn demo verplaatst naar mijn domotica topic. Ik denk dus dat je daar meer heil haalt.

Sinds de 2 dagen regel reageer ik hier niet meer

Pagina: 1