Page 3 of 20

Re: Watermeter lezen met raspberry en Inductieve NPN sensor

Posted: Friday 25 August 2017 18:55
by Hobbybob
Aaaah, too bad...

Today my sensor came in (the one with the yellow cap on the end), and it worked really well when I held a screwdriver next to it, but it looks like the plastic cap on top of the half-moon disc is too thick. It doesn't respond to that in any way... I've tried it with 5V and GND from the Pi (signal-cable not attached of course), and also with a 12V-adapter connected to it.

Any ideas if I can do something about this, or do I have to find a completely other way to register the water-usage? I'd rather not start damaging the water-meter since that belongs to the water-company.

Re: Watermeter lezen met raspberry en Inductieve NPN sensor

Posted: Friday 25 August 2017 19:20
by pvangorp
The zener diode is for protection you have to combine them. It prevents that the GPIO pin get more then 3.3v. Which brand and type of meter do you have? You tested it with a screwdriver and the led did respond?

Re: Watermeter lezen met raspberry en Inductieve NPN sensor

Posted: Friday 25 August 2017 19:27
by Hobbybob
pvangorp wrote: Friday 25 August 2017 19:20 The zener diode is for protection you have to combine them. It prevents that the GPIO pin get more then 3.3v. Which brand and type of meter do you have? You tested it with a screwdriver and the led did respond?
Yeah, I understand the diode, but I have not even come that far yet.

I have tested with a scredriver, and the sensor responds: the led on the back lights up, and the voltage on the black wire drops to 0,5/0,6 volts.
I have a Sensus 620 watermeter (picture isn't mine, but mine is identical):

Image

Re: Watermeter lezen met raspberry en Inductieve NPN sensor

Posted: Friday 25 August 2017 19:38
by pvangorp
Should work, strange I use https://www.kiwi-electronics.nl/inducti ... anel-mount. Your meter is capabele http://www.homewizard.nl/shop/energie/p ... ensus.html. The higher the voltage the better the detection. Can you test 24v?

Re: Watermeter lezen met raspberry en Inductieve NPN sensor

Posted: Friday 25 August 2017 19:40
by Trigun






Oupu


Sent from my iPhone using Tapatalk

Re: Watermeter lezen met raspberry en Inductieve NPN sensor

Posted: Friday 25 August 2017 20:13
by heggink
There are many people who have done this successfully. I use the tcrt5000 with the gpio and have a spare one if you want.

Re: Watermeter lezen met raspberry en Inductieve NPN sensor

Posted: Friday 25 August 2017 20:27
by Hobbybob
pvangorp wrote: Friday 25 August 2017 19:38 Should work, strange I use https://www.kiwi-electronics.nl/inducti ... anel-mount. Your meter is capabele http://www.homewizard.nl/shop/energie/p ... ensus.html. The higher the voltage the better the detection. Can you test 24v?
Will search for an adapter. Thanks for the tip, and I will report back.

Re: Watermeter lezen met raspberry en Inductieve NPN sensor

Posted: Friday 25 August 2017 20:28
by Hobbybob
heggink wrote: Friday 25 August 2017 20:13 There are many people who have done this successfully. I use the tcrt5000 with the gpio and have a spare one if you want.
Do you have the same watermeter?

Re: Watermeter lezen met raspberry en Inductieve NPN sensor

Posted: Friday 25 August 2017 20:53
by heggink
yes.

Re: Watermeter lezen met raspberry en Inductieve NPN sensor

Posted: Friday 25 August 2017 21:17
by Hobbybob
heggink wrote: Friday 25 August 2017 20:53yes.
Then I sure am interested in that spare!

Re: Watermeter lezen met raspberry en Inductieve NPN sensor

Posted: Friday 25 August 2017 21:29
by heggink
sent you a pm.

Re: Watermeter lezen met raspberry en Inductieve NPN sensor

Posted: Saturday 26 August 2017 21:56
by pvangorp
I was testing my meter on demand and that worked fine. I modified the Python script for my meter and it runs fine on command line. But when I try to create a crontab job @reboot it won't work.

Code: Select all

sudo mkdir /var/log/watermeter
sudo crontab -e
@reboot /usr/bin/python /home/pi/domoticz/scripts/watermeter.py >/var/log/watermeter/cronlog 2>&1

Code: Select all

grep cron /var/log/syslog
shows the job, but

Code: Select all

sudo cat /var/log/watermeter/cronlog
is empty

I've modified the python script so it would print output on start and on stop. But it doesn't work

When I execute the code below the log file is filled correctly after I cancel the process

Code: Select all

sudo su
/usr/bin/python /home/pi/domoticz/scripts/watermeter.py >/var/log/watermeter/cronlog 2>&1
Since this didn't work I changed it to an init.d process

Code: Select all

#! /bin/bash
### BEGIN INIT INFO
# Provides:          Watermeter
# Required-Start:    $network $remote_fs $syslog
# Required-Stop:     $network $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Initialize the watermeter
# Description:       This daemon will start monitoring the watermeter
### END INIT INFO
sudo /usr/bin/python /home/pi/domoticz/scripts/watermeter.py

Code: Select all

sudo chmod a+x ~/watermeter_init.sh
sudo mv ~/watermeter_init.sh /etc/init.d/
sudo update-rc.d watermeter_init.sh defaults
That also doesn't work

But when I execute it from the command line

Code: Select all

sudo /etc/init.d/watermeter_init.sh
It works fine. What am I doing wrong? I have shutdown.sh script @reboot which works fine. When you push a button the system goes down (correct shutdown). This should work the same?!

Re: Watermeter lezen met raspberry en Inductieve NPN sensor

Posted: Monday 28 August 2017 10:14
by D'rMorris
In which cron did you place this? Cron for root? Or cron for user pi for example?
If in cron for pi, try to add the sudo command in the cron :-).

Re: Watermeter lezen met raspberry en Inductieve NPN sensor

Posted: Monday 28 August 2017 10:57
by pvangorp
I used

Code: Select all

sudo crontab -e
that is the root one?!
I got the init.d method working. Are there any downsites of using the init.d instead of cron?

Re: Watermeter lezen met raspberry en Inductieve NPN sensor

Posted: Monday 28 August 2017 13:24
by D'rMorris
Not necessarily. As far as I know: when you do crontab -e it creates a cron for the user that you are currently logged in with. So if you do that when logged in with user pi, it creates a crontab for user pi. I think that GPIO access needs root so that is why you would eiter sudo it or create a crontab for user root.

Re: Watermeter lezen met raspberry en Inductieve NPN sensor

Posted: Monday 28 August 2017 13:51
by Hobbybob
D'rMorris wrote: Monday 28 August 2017 13:24 Not necessarily. As far as I know: when you do crontab -e it creates a cron for the user that you are currently logged in with. So if you do that when logged in with user pi, it creates a crontab for user pi. I think that GPIO access needs root so that is why you would eiter sudo it or create a crontab for user root.
I think pvangorp is correct.
When you do "crontab -e" you get the cronjobs for the user that is logged in (usually pi), but if you do "sudo crontab -e" you get the cronjobs for root.

Re: Watermeter lezen met raspberry en Inductieve NPN sensor

Posted: Tuesday 29 August 2017 11:35
by D'rMorris
That's easy to check of course. Do a sudo crontab -e when logged in with user pi and then switch to user root and check the crontab there :-)

Re: Watermeter lezen met raspberry en Inductieve NPN sensor

Posted: Tuesday 29 August 2017 11:41
by pvangorp
It's not an user issue, it was in the correct user crontab. Another script works fine. I think it's a netwerk/domoticz issue. When you reboot both services are not started and the script is executed before those services are up. Init.d is started later and vervifies that netwerk is up before starting the script. Thats way that option does work

Re: Watermeter lezen met raspberry en Inductieve NPN sensor

Posted: Tuesday 29 August 2017 18:52
by Micha123
your script is not correct, so you have measuring faults.

i have the same NPN sensor, i have testet the sensor (measured it) it gives 5V on data pin (black wire) by contact,

so by detection gives the sensor a 1 not an 0, and by NPN OFF gives the sensor NOTHING (black data wire is not conneted to ground also not to VCC so it gives nothing)

your script set RPi PIN to 3.3V (Pullup) if your sensor gives NPN On, so it gives 5V to the RPis GPIO, so the pi see it, but thats not correct, the GPIO pin is still Pulled UP.


the next Thing is, the sensor gives soms an short "fault" Signal by shutting down NPN,


so i have edited your script

Code: Select all

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

as you see, im using GPIO 15 on my pi, and now the pin is PULLED DOWN by the pi, so it is 0 Volt on that pin.


then i edited that one:

Code: Select all

#Interrupt-Event toevoegen, bij een NPN off geeft sensor een 0 en en bij detectie een 1
#Bij detectie (LED on) een 1 daarom check dalende interrupt.
GPIO.add_event_detect(10, GPIO.RISING, callback = Interrupt, bouncetime = 800)
so GPIO is RISING to 5 Volts by NPN ON, and i set Bouncetime to 800 (now the short fault Signal from NPN sensor by shuting down NPN wil be ignored)

normaly the PIs GPIOs wil be acivated by 3,3 Volts, but 5V is also OK, it was a problem by the first Generation of the PI (the 700mhz one) the other PIs can also handle 5V on GPIO.

the script from you is working on most optical sensors, they gives GND on contact, so your script is good working with senosrs that shorts datapin with GND.

here is my complete script if someone will test with the NPN Sensor, i have no measuring faults, no liter to much or less.

Code: Select all

#!/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.102.57:8080"
#Domoticz IDX van de water sensor (RFXMeter)
idx = 11

#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 10
GPIO.setmode(GPIO.BOARD)
# Set GPIO 15 (Pin 10) als Input aditioneel als Pulldown-Weerstand aktiveren
GPIO.setup(10, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)

#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 0 en en bij detectie een 1
#Bij detectie (LED on) een 1 daarom check dalende interrupt.
GPIO.add_event_detect(10, GPIO.RISING, callback = Interrupt, bouncetime = 800)

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

Re: Watermeter lezen met raspberry en Inductieve NPN sensor

Posted: Tuesday 29 August 2017 19:04
by pvangorp
You also have the https://www.kiwi-electronics.nl/inducti ... anel-mount? It sends 5v when no contact and when contact drops it to 0v. I used a zener diode on the black wire to convert the 5v to 3.3v