Toon posts:

Raspberry Pi Watermeter

Pagina: 1
Acties:

Vraag


  • Toppe
  • Registratie: Januari 2004
  • Laatst online: 23:21
Goedemidddag,

Vanmiddag deze NPN sensor binnen gekregen met als doel deze als watermeter in te gaan zetten.

Nu heb ik heb aangesloten en geprobeerd op verschillende materialen (radiator, schroevendraaier) en natuurlijk op de watermeter. De LED gaat netjes branden op het moment dat hij een metalen object waarneemt.

Maar, met geen mogelijkheid krijg ik de waarde binnen op de Raspberry Pi.

Het betreft een Raspberry Pi 3B+ en de sensor is als volgt aangesloten:
Bruin = Pin 2 of 4 (5V)
Blauw = Pin 6 (GND)
Zwart = Pin 40 (Data)

Na
code:
1
python water_meter.py
Zie ik wel dat het tekst bestand netjes word aangemaakt met de standaard waarde. Verder gebeurt er helemaal niets.

Als ik 'kortsluiting' maak op de blauwe en zwarte draad dan verschijnt er opeens wel een +1 waarde in beeld.

Eerste keer krijg ik onderstaande melding, maar ik zou niet weten wat er nog meer op die pin zit (nooit wat op gehad) en ook andere pinnen geven het zelfde resultaat.
code:
1
2
water_meter.py:34: RuntimeWarning: This channel is already in use, continuing anyway.  Use GPIO.setwarnings(False) to disable warnings.
  GPIO.setup(40, GPIO.IN, pull_up_down = GPIO.PUD_UP)


Script (water_meter.py)
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
#!/usr/bin/python
import RPi.GPIO as GPIO
import time
import urllib2
import os

#Watermeter stand (wordt alleen initeel gebruikt als er geen bestand meterstand.txt is)
global Counter
Counter = 1154651

#Domoticz URL
domoticz_url = "http://192.168.2.1:8080"
#Domoticz IDX van de water sensor (RFXMeter)
idx = 73

#Open meterstand.txt file en lees meterstand
#Als meterstand.txt niet aanwezig is maakt script bestand aan en vult de meterstand
fn = "/home/pi/domoticz/scripts/meterstand.txt"
if os.path.exists(fn):
    f = file(fn, "r+")
    f = open(fn)
    inhoud = f.readline()
    a,b,c = inhoud.split()
    Counter = int(c)
else:
    f = open(fn, "w")
    f.write( 'meterstand = ' + repr(Counter))
    f.close()

#Board is pin nr, BMC is GPIO nr
#Read output from water meter op pin 40
GPIO.setmode(GPIO.BOARD)
# Set GPIO 21 (Pin 40) als Input aditioneel als Pullup-Weerstand aktiveren
GPIO.setup(40, GPIO.IN, pull_up_down = GPIO.PUD_UP)

#Functie  callback
#Dit is de functie die aangeroepen wordt in de interrupt
def Interrupt(channel):
  #Teller elke interupt uitlezen en met 1 liter verhogen 
  f = file(fn, "r+")
  f = open(fn)
  inhoud = f.readline()
  a,b,c = inhoud.split()
  Counter = int(c)
  Counter = Counter + 1
  f.close()
  #Schrijf meterstand naar bestand
  f = open( fn, 'w')
  f.write( 'meterstand = ' + repr(Counter))
  f.close()
  #Send counter to domoticz JSON
  url1 = domoticz_url+'/json.htm?type=command&param=udevice&idx='+str(idx)+'&svalue='+str(Counter)
  req1 = urllib2.Request(url1)
  response1 = urllib2.urlopen(req1)
  #Voor debug => print voorbeeld van de JSON aanroep en/of de counter
  #print "JSON call = "+ str(url1)
  #print "Watermeter Counter = " + str(Counter)

#Interrupt-Event toevoegen, bij een NPN off geeft sensor een 1 en en bij detectie een 0
#Bij detectie (LED on) een 0 daarom check dalende interrupt.
GPIO.add_event_detect(40, GPIO.FALLING, callback = Interrupt, bouncetime = 350)

try:
  while True:
      time.sleep(1)
except KeyboardInterrupt:
  GPIO.cleanup()
  print "\nBye"


gpis readall
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
 +-----+-----+---------+------+---+---Pi 3+--+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 |     |     |    3.3v |      |   |  1 || 2  |   |      | 5v      |     |     |
 |   2 |   8 |   SDA.1 |   IN | 1 |  3 || 4  |   |      | 5v      |     |     |
 |   3 |   9 |   SCL.1 |   IN | 1 |  5 || 6  |   |      | 0v      |     |     |
 |   4 |   7 | GPIO. 7 |   IN | 0 |  7 || 8  | 0 | IN   | TxD     | 15  | 14  |
 |     |     |      0v |      |   |  9 || 10 | 1 | IN   | RxD     | 16  | 15  |
 |  17 |   0 | GPIO. 0 |   IN | 0 | 11 || 12 | 0 | IN   | GPIO. 1 | 1   | 18  |
 |  27 |   2 | GPIO. 2 |   IN | 0 | 13 || 14 |   |      | 0v      |     |     |
 |  22 |   3 | GPIO. 3 |   IN | 0 | 15 || 16 | 0 | IN   | GPIO. 4 | 4   | 23  |
 |     |     |    3.3v |      |   | 17 || 18 | 0 | IN   | GPIO. 5 | 5   | 24  |
 |  10 |  12 |    MOSI |   IN | 0 | 19 || 20 |   |      | 0v      |     |     |
 |   9 |  13 |    MISO |   IN | 0 | 21 || 22 | 0 | IN   | GPIO. 6 | 6   | 25  |
 |  11 |  14 |    SCLK |   IN | 0 | 23 || 24 | 1 | IN   | CE0     | 10  | 8   |
 |     |     |      0v |      |   | 25 || 26 | 1 | IN   | CE1     | 11  | 7   |
 |   0 |  30 |   SDA.0 |   IN | 1 | 27 || 28 | 1 | IN   | SCL.0   | 31  | 1   |
 |   5 |  21 | GPIO.21 |   IN | 1 | 29 || 30 |   |      | 0v      |     |     |
 |   6 |  22 | GPIO.22 |   IN | 1 | 31 || 32 | 0 | IN   | GPIO.26 | 26  | 12  |
 |  13 |  23 | GPIO.23 |   IN | 0 | 33 || 34 |   |      | 0v      |     |     |
 |  19 |  24 | GPIO.24 |   IN | 0 | 35 || 36 | 0 | IN   | GPIO.27 | 27  | 16  |
 |  26 |  25 | GPIO.25 |   IN | 0 | 37 || 38 | 0 | IN   | GPIO.28 | 28  | 20  |
 |     |     |      0v |      |   | 39 || 40 | 1 | IN   | GPIO.29 | 29  | 21  |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+---Pi 3+--+---+------+---------+-----+-----+


Ik kom tot 2 uitkomsten: sensor kapot of bedrading zit toch verkeerd?

Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!

Beste antwoord (via Toppe op 17-11-2018 09:41)


  • dennisdew16
  • Registratie: Augustus 2010
  • Niet online
Ik heb twee weken geleden exact hetzelfde gehad(met zelfde type sensor), alleen dan met het aansluiten op een wemos mini. Heb door dit fora en nog enkele anderen het werkend gekregen.
- Heb je bij het aansluiten op de RPi ook een weerstand gebruikt tussen het signaaldraad en GND? Dit omdat er zoals vermeld anders een te hoge spanning op je RPi komt te staan. Het liefst wil je rond de 3V uitkomen, wat je met een voltage divider realiseert. Aangezien er inwendig al een 10K ohm weerstand zit tussen de 5V draad en de signaaldraad krijg je de volgende situatie:
https://imgur.com/USmJDYP
In bovenstaand voorbeeld is er een voedingsspanning van 12V aanwezig. Gebruik je een andere spanning dan kan je uitrekenen wat de weerstand(R2) moet zijn:http://www.ohmslawcalculator.com/voltage-divider-calculator

- Bij detectie gaat het rode lampje wel branden maar krijgt de RPi geen signaal: Bij mij was het zo dat de spanning van 5V te laag was. Ik heb daarna geprobeerd om de sensor met een 9V batterij te voeden en dit gaf het signaal wel door.

Ik heb een stepup converter gekocht die de 5V van de wemos omzet naar bijvoorbeeld 7,5V als voeding voor de sensor. Dit werkte voor mij prima. Onderstaand mijn situatie. Mocht het nog steeds niet werken dan hoor ik het wel :)
https://imgur.com/a/sBEMJXK

Alle reacties


  • klump4u
  • Registratie: Februari 2008
  • Niet online

klump4u

14400Wp Zuid-Limburg

Weet je zeker dat de sensor het metalen plaatje van de watermeter detecteerde?
Deze sensor meet maar 4 mm diep, er zijn ook sensors die 8 mm diep meten.
Sensor moet meestal minimaal 6 volt hebben.
Gpio pinnen kunnen maar maximaal 3,3 volt aan ( al weet ik dit niet zeker bij de 3b

14400Wp🌞Live, Atlantic Explorer 270V3💧Live, Pana-mono WP5🔥Live.


  • Toppe
  • Registratie: Januari 2004
  • Laatst online: 23:21
klump4u schreef op vrijdag 16 november 2018 @ 17:31:
Weet je zeker dat de sensor het metalen plaatje van de watermeter detecteerde?
Deze sensor meet maar 4 mm diep, er zijn ook sensors die 8 mm diep meten.
Sensor moet meestal minimaal 6 volt hebben.
Gpio pinnen kunnen maar maximaal 3,3 volt aan ( al weet ik dit niet zeker bij de 3b
Wat betreft het detecteren: Ja, heb dit nu uitgebreid getest en de LED gaan branden op het moment dat ik hem bij een metalen object houd. Dat zou voor mij ook de bevestiging moeten zijn dat hij werkt.

Wat betreft de 6V: Dat klopt, al zijn er ondertussen genoeg mensen die hem werkend hebben op de 5v van de Raspberry Pi.

Als ik 'kort sluiting' maak tussen de GND & Data dan krijg ik ook resultaten te zien, als ik de werking van een NPN sensor begrijp dan zou hij dit al in de sensor zelf moeten doen?

Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!


  • klump4u
  • Registratie: Februari 2008
  • Niet online

klump4u

14400Wp Zuid-Limburg

Heb je hem ook getest op het metalen driehoekje van de watermeter?
Bij mij deed hij het ook met alle metalen die ik ervoor hield maar op de watermeter was de afstand van sensor tot metalen plaatje net te groot en dus geen detectie.

14400Wp🌞Live, Atlantic Explorer 270V3💧Live, Pana-mono WP5🔥Live.


  • Toppe
  • Registratie: Januari 2004
  • Laatst online: 23:21
klump4u schreef op vrijdag 16 november 2018 @ 17:39:
Heb je hem ook getest op het metalen driehoekje van de watermeter?
Bij mij deed hij het ook met alle metalen die ik ervoor hield maar op de watermeter was de afstand van sensor tot metalen plaatje net te groot en dus geen detectie.
Ja, ook daar brand de LED netjes. Heb hem al gemonteerd en op het moment dat het toilet reservoir gevuld wordt brand het ledje ook netjes.

Heb jij een water meter op je Pi? Welke code gebruik je daarvoor als ik vragen mag?

Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!


  • klump4u
  • Registratie: Februari 2008
  • Niet online

klump4u

14400Wp Zuid-Limburg

Ik heb hem op de pi maar ik heb de 8 mm uitvoering en draai Windows10 iot op de pi.
Ook heb ik een printje tussen om een goede hoog-laag te krijgen.

14400Wp🌞Live, Atlantic Explorer 270V3💧Live, Pana-mono WP5🔥Live.


  • Lennyz
  • Registratie: Januari 2010
  • Laatst online: 23-01 07:28
Volgens mij moet deze line:

GPIO.setup(40, GPIO.IN, pull_up_down = GPIO.PUD_UP)

Veranderd worden in dit:

GPIO.setup(21, GPIO.IN, pull_up_down = GPIO.PUD_UP)

Het is pin40 maar het is GPIO21.

  • Toppe
  • Registratie: Januari 2004
  • Laatst online: 23:21
Lennyz schreef op vrijdag 16 november 2018 @ 19:06:
Volgens mij moet deze line:

GPIO.setup(40, GPIO.IN, pull_up_down = GPIO.PUD_UP)

Veranderd worden in dit:

GPIO.setup(21, GPIO.IN, pull_up_down = GPIO.PUD_UP)

Het is pin40 maar het is GPIO21.
Ook niet. Wat ik zeg, als ik de GND en Data kort sluit krijg ik netjes een regel in beeld. De pinnen zijn dus goed.
Of ik heb de pinnen verkeerd aangesloten, of die sensor is toch kapot...?

Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!


Acties:
  • Beste antwoord
  • 0Henk 'm!

  • dennisdew16
  • Registratie: Augustus 2010
  • Niet online
Ik heb twee weken geleden exact hetzelfde gehad(met zelfde type sensor), alleen dan met het aansluiten op een wemos mini. Heb door dit fora en nog enkele anderen het werkend gekregen.
- Heb je bij het aansluiten op de RPi ook een weerstand gebruikt tussen het signaaldraad en GND? Dit omdat er zoals vermeld anders een te hoge spanning op je RPi komt te staan. Het liefst wil je rond de 3V uitkomen, wat je met een voltage divider realiseert. Aangezien er inwendig al een 10K ohm weerstand zit tussen de 5V draad en de signaaldraad krijg je de volgende situatie:
https://imgur.com/USmJDYP
In bovenstaand voorbeeld is er een voedingsspanning van 12V aanwezig. Gebruik je een andere spanning dan kan je uitrekenen wat de weerstand(R2) moet zijn:http://www.ohmslawcalculator.com/voltage-divider-calculator

- Bij detectie gaat het rode lampje wel branden maar krijgt de RPi geen signaal: Bij mij was het zo dat de spanning van 5V te laag was. Ik heb daarna geprobeerd om de sensor met een 9V batterij te voeden en dit gaf het signaal wel door.

Ik heb een stepup converter gekocht die de 5V van de wemos omzet naar bijvoorbeeld 7,5V als voeding voor de sensor. Dit werkte voor mij prima. Onderstaand mijn situatie. Mocht het nog steeds niet werken dan hoor ik het wel :)
https://imgur.com/a/sBEMJXK

  • Toppe
  • Registratie: Januari 2004
  • Laatst online: 23:21
dennisdew16 schreef op vrijdag 16 november 2018 @ 19:34:
Ik heb twee weken geleden exact hetzelfde gehad(met zelfde type sensor), alleen dan met het aansluiten op een wemos mini. Heb door dit fora en nog enkele anderen het werkend gekregen.
- Heb je bij het aansluiten op de RPi ook een weerstand gebruikt tussen het signaaldraad en GND? Dit omdat er zoals vermeld anders een te hoge spanning op je RPi komt te staan. Het liefst wil je rond de 3V uitkomen, wat je met een voltage divider realiseert. Aangezien er inwendig al een 10K ohm weerstand zit tussen de 5V draad en de signaaldraad krijg je de volgende situatie:
https://imgur.com/USmJDYP
In bovenstaand voorbeeld is er een voedingsspanning van 12V aanwezig. Gebruik je een andere spanning dan kan je uitrekenen wat de weerstand(R2) moet zijn:http://www.ohmslawcalculator.com/voltage-divider-calculator

- Bij detectie gaat het rode lampje wel branden maar krijgt de RPi geen signaal: Bij mij was het zo dat de spanning van 5V te laag was. Ik heb daarna geprobeerd om de sensor met een 9V batterij te voeden en dit gaf het signaal wel door.

Ik heb een stepup converter gekocht die de 5V van de wemos omzet naar bijvoorbeeld 7,5V als voeding voor de sensor. Dit werkte voor mij prima. Onderstaand mijn situatie. Mocht het nog steeds niet werken dan hoor ik het wel :)
https://imgur.com/a/sBEMJXK
Ik gok dat de voltage nog wel eens het probleem zou kunnen zijn. Nu heb ik nog een 12V adapter liggen, gewoon aansluiten op de + & - van die sensor? Dan loopt er alleen nog maar een data draad naar de Pi toe?

Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!


  • dennisdew16
  • Registratie: Augustus 2010
  • Niet online
Toppe schreef op vrijdag 16 november 2018 @ 19:43:
[...]


Ik gok dat de voltage nog wel eens het probleem zou kunnen zijn. Nu heb ik nog een 12V adapter liggen, gewoon aansluiten op de + & - van die sensor? Dan loopt er alleen nog maar een data draad naar de Pi toe?
Als je een multimeter hebt zou je kunnen testen of er 12V op de signaaldraad komt te staan als hij metaal detecteert. Je kan echter niet 12V erop zetten en dan de signaaldraad rechtstreeks op de RPi aansluiten, dan komt er namelijk ook 12V op de RPi te staan, daar kan ie niet tegen. Dan moet je zoals in mijn afbeelding staat een weerstand van 6,8k plaatsen tussen de ground en de signaal draad (blauw en zwart).

  • Toppe
  • Registratie: Januari 2004
  • Laatst online: 23:21
dennisdew16 schreef op vrijdag 16 november 2018 @ 19:48:
[...]


Als je een multimeter hebt zou je kunnen testen of er 12V op de signaaldraad komt te staan als hij metaal detecteert. Je kan echter niet 12V erop zetten en dan de signaaldraad rechtstreeks op de RPi aansluiten, dan komt er namelijk ook 12V op de RPi te staan, daar kan ie niet tegen. Dan moet je zoals in mijn afbeelding staat een weerstand van 6,8k plaatsen tussen de ground en de signaal draad (blauw en zwart).
Oké heb even gemeten, we lijken nu ergens te komen. Als ik er 12V op zet (+ & -) dan staat er constant nu 12v op, maa ik sluiting dan wordt dit in 1x 0,64v

Nu alleen de vraag hoeveel Ohm weerstand er tussen moet, volgens die tool die je gaf moet dat 3333.333 zijn... Die heb ik niet? :|


Edit: Ik heb nu een 6.8K weerstand aangesloten zoals je aangaf, nu blijft de data maar binnen stromen, of de sensor nou geactiveerd is of niet :?

[Voor 8% gewijzigd door Toppe op 16-11-2018 20:06]

Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!


  • klump4u
  • Registratie: Februari 2008
  • Niet online

klump4u

14400Wp Zuid-Limburg

Dit is mijn schema van de print ertussen.
Heb hem aan een 12 volt voeding hangen.
Ik heb 2 watermeters, een van waterbedrijf en een bij de warmtepompboiler, ze werken allebei volgens dit schema.

14400Wp🌞Live, Atlantic Explorer 270V3💧Live, Pana-mono WP5🔥Live.


  • Toppe
  • Registratie: Januari 2004
  • Laatst online: 23:21
Oke, we zijn iets verder.

Ik heb de sensor zover dat hij reageert op contact, had een ander script op internet gevonden dat het mogelijk moet maken om de waterstand bij de houden en te uploaden. Als hij upload doet hij dat prima.

Echter reageert hij vaker niet dan wel op het script:
code:
1
2
3
Verhoog 1
Klaar!
JSON call = http://192.168.2.1:8080/json.htm?type=command&param=udevice&idx=73&svalue=27


Waarom hij zo vaak 'mist' is mij even niet duidelijk, zodra ik de sensor 'contactloos' maak reageert het script direct...

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
#!/usr/bin/python
import RPi.GPIO as GPIO
import time
import urllib2
import os

#Watermeter stand (wordt alleen initeel gebruikt als er geen bestand meterstand_water.txt is)
global Counter
Counter = 0

#Domoticz URL
domoticz_url = "http://192.168.2.1:8080"
#Domoticz IDX van de water sensor (RFXMeter)
idx = 73

#Open meterstand.txt file en lees meterstand
#Als meterstand.txt niet aanwezig is maakt script bestand aan en vult de meterstand
fn = "/home/pi/domoticz/scripts/meterstand_water.txt"
if os.path.exists(fn):
    f = file(fn, "r+")
    f = open(fn)
    inhoud = f.readline()
    a,b,c = inhoud.split()
    Counter = int(c)
else:
    f = open(fn, "w")
    f.write( 'meterstand = ' + repr(Counter))
    f.close()

#Board is pin nr, BMC is GPIO nr
#Read output from water meter op pin 19
GPIO.setmode(GPIO.BOARD)
# Set GPIO 10 (Pin 19) als Input aditioneel als Pullup-Weerstand aktiveren
GPIO.setup(40, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)

#Functie  callback
#Dit is de functie die aangeroepen wordt in de interrupt
def Interrupt(channel):
    print('Callback function called!')
    time.sleep(0.05)         # need to filter out the false positive of some power fluctuation
    if GPIO.input(40) == 0:
       print('quitting event handler because this was probably a false positive')
       return
    #Teller elke interrupt uitlezen en met 0.5 liter verhogen (deler watermeter op 10 zetten)
    file(fn, "r+")
    f = open(fn)
    inhoud = f.readline()
    a,b,c = inhoud.split()
    Counter = int(c)
    Counter = Counter + 1
    f.close()

    print "Verhoog 1"

    #Schrijf meterstand naar bestand
    f = open( fn, 'w')
    f.write( 'meterstand = ' + repr(Counter))
    f.close()

    print "Klaar!"
    #Send counter to domoticz JSON
    url1 = domoticz_url+'/json.htm?type=command&param=udevice&idx='+str(idx)+'&svalue='+str(Counter)
    req1 = urllib2.Request(url1)
    response1 = urllib2.urlopen(req1)

    #Voor debug => print voorbeeld van de JSON aanroep en/of de counter
    print "JSON call = "+ str(url1)
    print "Watermeter Counter = " + str(Counter)
    
    #Interrupt-Event toevoegen, sensor geeft een 0 en en bij detectie een 1
#Bij detectie een 1 daarom check stijgende interrupt.
GPIO.add_event_detect(40, GPIO.RISING, callback = Interrupt, bouncetime = 200)

try:
    while True:
      time.sleep(0.2)        
except KeyboardInterrupt:
  GPIO.cleanup()
  print "\nBye"

Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!


  • dennisdew16
  • Registratie: Augustus 2010
  • Niet online
Toppe schreef op vrijdag 16 november 2018 @ 21:10:
Oke, we zijn iets verder.

Ik heb de sensor zover dat hij reageert op contact, had een ander script op internet gevonden dat het mogelijk moet maken om de waterstand bij de houden en te uploaden. Als hij upload doet hij dat prima.

Echter reageert hij vaker niet dan wel op het script:
code:
1
2
3
Verhoog 1
Klaar!
JSON call = http://192.168.2.1:8080/json.htm?type=command&param=udevice&idx=73&svalue=27


Waarom hij zo vaak 'mist' is mij even niet duidelijk, zodra ik de sensor 'contactloos' maak reageert het script direct...

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
#!/usr/bin/python
import RPi.GPIO as GPIO
import time
import urllib2
import os

#Watermeter stand (wordt alleen initeel gebruikt als er geen bestand meterstand_water.txt is)
global Counter
Counter = 0

#Domoticz URL
domoticz_url = "http://192.168.2.1:8080"
#Domoticz IDX van de water sensor (RFXMeter)
idx = 73

#Open meterstand.txt file en lees meterstand
#Als meterstand.txt niet aanwezig is maakt script bestand aan en vult de meterstand
fn = "/home/pi/domoticz/scripts/meterstand_water.txt"
if os.path.exists(fn):
    f = file(fn, "r+")
    f = open(fn)
    inhoud = f.readline()
    a,b,c = inhoud.split()
    Counter = int(c)
else:
    f = open(fn, "w")
    f.write( 'meterstand = ' + repr(Counter))
    f.close()

#Board is pin nr, BMC is GPIO nr
#Read output from water meter op pin 19
GPIO.setmode(GPIO.BOARD)
# Set GPIO 10 (Pin 19) als Input aditioneel als Pullup-Weerstand aktiveren
GPIO.setup(40, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)

#Functie  callback
#Dit is de functie die aangeroepen wordt in de interrupt
def Interrupt(channel):
    print('Callback function called!')
    time.sleep(0.05)         # need to filter out the false positive of some power fluctuation
    if GPIO.input(40) == 0:
       print('quitting event handler because this was probably a false positive')
       return
    #Teller elke interrupt uitlezen en met 0.5 liter verhogen (deler watermeter op 10 zetten)
    file(fn, "r+")
    f = open(fn)
    inhoud = f.readline()
    a,b,c = inhoud.split()
    Counter = int(c)
    Counter = Counter + 1
    f.close()

    print "Verhoog 1"

    #Schrijf meterstand naar bestand
    f = open( fn, 'w')
    f.write( 'meterstand = ' + repr(Counter))
    f.close()

    print "Klaar!"
    #Send counter to domoticz JSON
    url1 = domoticz_url+'/json.htm?type=command&param=udevice&idx='+str(idx)+'&svalue='+str(Counter)
    req1 = urllib2.Request(url1)
    response1 = urllib2.urlopen(req1)

    #Voor debug => print voorbeeld van de JSON aanroep en/of de counter
    print "JSON call = "+ str(url1)
    print "Watermeter Counter = " + str(Counter)
    
    #Interrupt-Event toevoegen, sensor geeft een 0 en en bij detectie een 1
#Bij detectie een 1 daarom check stijgende interrupt.
GPIO.add_event_detect(40, GPIO.RISING, callback = Interrupt, bouncetime = 200)

try:
    while True:
      time.sleep(0.2)        
except KeyboardInterrupt:
  GPIO.cleanup()
  print "\nBye"
Ik weet even niet wat je met contactloos maken bedoelt maar als het signaal naar 0,64V gaat als je er wat voor houd dan werkt ie. Dan zou het aan het script kunnen liggen, maar daar moet ik dan even goed naar kijken. Zou je trouwens een foto kunnen maken van je opstelling zoals het nu zit?

  • Toppe
  • Registratie: Januari 2004
  • Laatst online: 23:21



Zeker de aansluiting is niet helemaal naar wens maar daar ga ik morgen beter naar kijken!

Bekabeling als volgt:

Zwart - Data
Blauw - GND
Bruin - 12V

12V aangesloten op zwart (-) en bruin (+)

Tussen zwart en blauw zit een 6.8K weerstand

Blauw loopt naar pin 40 op de Raspberry, zwart loopt naar pin 6 (GND).

Uiteindelijk krijg je dan:
Set 1: GND van 12V, 1 pin van 6.8K weerstand, blauw draad sensor & 1 zwarte draad naar GND Raspberry

Set 2: 1 pin van 6.8K weerstand, 1 data draad naar pin 40 Raspberry en de zwarte draad van de sensor

Set 3: 12V + van 12V & bruine draad van sensor

@dennisdew16 mocht je tijd hebben :P :9 *O*

[Voor 75% gewijzigd door Toppe op 16-11-2018 23:03]

Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!


  • Toppe
  • Registratie: Januari 2004
  • Laatst online: 23:21
Zo, nieuwe dag nieuwe kansen.

Vanochtend eerst even een PCB'tje gesoldeerd zodat ik alles fatsoenlijk kan aansluiten.

Daarna toch weer in de software gaan snuffelen en ik kom tot de conclusie dat op het moment dat ik de sensor handmatig contact laat maken (metaal, watermeter) dan werkt hij prima.

Zet ik bijvoorbeeld de kraan open op verschillende standen dan wordt hij niet altijd netjes geüpdate. Hij slaat dat stuk gewoon over.

Ik wil gewoon een if_changed ipv add_event_detected

[Voor 90% gewijzigd door Toppe op 17-11-2018 11:58]

Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!


  • joostnl
  • Registratie: Januari 2010
  • Laatst online: 22:39
Interesse heb je de uitlezing al stabiel gekregen?

  • Copitano
  • Registratie: Februari 2018
  • Laatst online: 23:31

Copitano

Hoorn NH

@Toppe Deze werkt op 5V en gaat tot 8 mm diep.

Elga | Valliant eco TEC plus VHR 30-34/5-5L | Kamstrup 602 |Nodo OTGW | Raspberry Pi 3B+|RFXcom rfxtrx433xl | UniFi netwerk | PVoutput 8.625 kWp


  • Toppe
  • Registratie: Januari 2004
  • Laatst online: 23:21
joostnl schreef op donderdag 29 november 2018 @ 12:54:
Interesse heb je de uitlezing al stabiel gekregen?
Lol, zie je berichtje nu pas: ja hij is redelijk stabiel

Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!


  • Toppe
  • Registratie: Januari 2004
  • Laatst online: 23:21
Heb toevallig gister een nieuwe 5V sensor binnen gekregen, moet ‘m alleen nog even testen

Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!


  • klump4u
  • Registratie: Februari 2008
  • Niet online

klump4u

14400Wp Zuid-Limburg

Toppe schreef op donderdag 10 januari 2019 @ 20:34:
[...]


Lol, zie je berichtje nu pas: ja hij is redelijk stabiel
Even vragen, wat is redelijk stabiel?

14400Wp🌞Live, Atlantic Explorer 270V3💧Live, Pana-mono WP5🔥Live.


  • Toppe
  • Registratie: Januari 2004
  • Laatst online: 23:21
klump4u schreef op donderdag 10 januari 2019 @ 21:03:
[...]

Even vragen, wat is redelijk stabiel?
Zn 10 liter per week wat ik er naast zit!

Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!


  • Copitano
  • Registratie: Februari 2018
  • Laatst online: 23:31

Copitano

Hoorn NH

@Toppe
Heb toevallig gister een nieuwe 5V sensor binnen gekregen, moet ‘m alleen nog even testen
Heb net een 12 V binnen. Niet goed doorgezocht tot ik toevallig de 5 V ook tegen kwam. Als het zonder gedoe met weerstandjes etc. werkt bestel ik ook de 5 V versie. Hoop dat die sneller is dan de 12 V versie. Besteld half november, gister binnen gekomen. Ik lees graag hoe de 5 V het doet.

Elga | Valliant eco TEC plus VHR 30-34/5-5L | Kamstrup 602 |Nodo OTGW | Raspberry Pi 3B+|RFXcom rfxtrx433xl | UniFi netwerk | PVoutput 8.625 kWp


  • Toppe
  • Registratie: Januari 2004
  • Laatst online: 23:21
Copitano schreef op donderdag 10 januari 2019 @ 21:16:
@Toppe
[...]

Heb net een 12 V binnen. Niet goed doorgezocht tot ik toevallig de 5 V ook tegen kwam. Als het zonder gedoe met weerstandjes etc. werkt bestel ik ook de 5 V versie. Hoop dat die sneller is dan de 12 V versie. Besteld half november, gister binnen gekomen. Ik lees graag hoe de 5 V het doet.
Ik ga hem alleen testen: dit werkt voor mij prima en heb dus geen reden om daad werkelijk over te stappen ;)

Donstil: Je moet kopen wat je wilt hebben. Niet wat je nodig hebt!


  • Copitano
  • Registratie: Februari 2018
  • Laatst online: 23:31

Copitano

Hoorn NH

@Toppe Even een praktische vraag over de 12V sensor. Ik neem aan dat de zwarte draad de data draad is en bruin en blauw + en GND. Klopt dat?

Elga | Valliant eco TEC plus VHR 30-34/5-5L | Kamstrup 602 |Nodo OTGW | Raspberry Pi 3B+|RFXcom rfxtrx433xl | UniFi netwerk | PVoutput 8.625 kWp


  • Copitano
  • Registratie: Februari 2018
  • Laatst online: 23:31

Copitano

Hoorn NH

Thx! Knippert in ieder geval al ik hem op de meter zet.

[Voor 89% gewijzigd door Copitano op 10-01-2019 21:51]

Elga | Valliant eco TEC plus VHR 30-34/5-5L | Kamstrup 602 |Nodo OTGW | Raspberry Pi 3B+|RFXcom rfxtrx433xl | UniFi netwerk | PVoutput 8.625 kWp


  • Riechard
  • Registratie: Mei 2017
  • Laatst online: 23-01 16:34
klump4u schreef op vrijdag 16 november 2018 @ 21:10:
Dit is mijn schema van de print ertussen.
Heb hem aan een 12 volt voeding hangen.
Ik heb 2 watermeters, een van waterbedrijf en een bij de warmtepompboiler, ze werken allebei volgens dit schema.
[Afbeelding]
Hoeveel spanning komt er dan op de wemos te staan?

  • klump4u
  • Registratie: Februari 2008
  • Niet online

klump4u

14400Wp Zuid-Limburg

Riechard schreef op zaterdag 8 juni 2019 @ 15:00:
[...]

Hoeveel spanning komt er dan op de wemos te staan?
plus-minus 3.3v of bijna 0v bij puls detectie

14400Wp🌞Live, Atlantic Explorer 270V3💧Live, Pana-mono WP5🔥Live.


  • Riechard
  • Registratie: Mei 2017
  • Laatst online: 23-01 16:34
klump4u schreef op zaterdag 8 juni 2019 @ 15:13:
[...]

plus-minus 3.3v of bijna 0v bij puls detectie
Dank je, ik ga het proberen.
Ik probeer het schema te begrijpen. Wat is het doel van de diode? Beschermen tegen Omgekeerde polariteit?

[Voor 21% gewijzigd door Riechard op 08-06-2019 22:23]

Pagina: 1


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee