Wie kan mij helpen met het volgende probleem:
Ik heb twee jaar geleden het uitlezen van mij watermeter geïnstalleerd op een RPi 3B met debian er op. Ik heb daarvoor deze instructie gebruikt: https://ehoco.nl/watermet...n-domoticz-python-script/
Achtergrond info
Dat werkte perfect tot gisteravond. Rond middernacht was ineens de widget van de watermeter verdwenen. Voorafgaand hieraan had ik de avond ervoor twee extra RFX meter devices aangemaakt om de dagproductie van mijn Warmtepomp door te sturen naar Influx en Grafana. Om middernacht werd de waarde op die devices ververst, en het lijkt er op dat op hetzelfde moment het watermeterdevice verdwenen is.
Ik heb onderstaand het script enkele keren handmatig laten runnen vanuit Thonny maar krijg steeds een foutmelding.
Wat ik al geprobeerd heb
Ik heb al een nieuw device aangemaakt met een ander idx nummer en het idx nummer in het script aangepast. Zelfde fout (regel 61). De foutmelding zegt mij echter niets. (niet thuis in python). Wie weet het wel?
Dit is de volledige code
Ik heb twee jaar geleden het uitlezen van mij watermeter geïnstalleerd op een RPi 3B met debian er op. Ik heb daarvoor deze instructie gebruikt: https://ehoco.nl/watermet...n-domoticz-python-script/
Achtergrond info
Dat werkte perfect tot gisteravond. Rond middernacht was ineens de widget van de watermeter verdwenen. Voorafgaand hieraan had ik de avond ervoor twee extra RFX meter devices aangemaakt om de dagproductie van mijn Warmtepomp door te sturen naar Influx en Grafana. Om middernacht werd de waarde op die devices ververst, en het lijkt er op dat op hetzelfde moment het watermeterdevice verdwenen is.
Ik heb onderstaand het script enkele keren handmatig laten runnen vanuit Thonny maar krijg steeds een foutmelding.
Wat ik al geprobeerd heb
Ik heb al een nieuw device aangemaakt met een ander idx nummer en het idx nummer in het script aangepast. Zelfde fout (regel 61). De foutmelding zegt mij echter niets. (niet thuis in python). Wie weet het wel?
code:
1
2
3
4
5
6
7
8
| Python 3.5.3 (/usr/bin/python3) >>> %Run watermeter.py Traceback (most recent call last): File "/home/pi/domoticz/scripts/watermeter.py", line 61 print "JSON call = "+ str(url1) ^ SyntaxError: invalid syntax >>> |
Dit is de volledige code
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
| #!/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 = 881280 #Domoticz URL domoticz_url = "http://192.168.2.9:8080" #Domoticz IDX van de water sensor (RFXMeter) idx = 318 #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 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_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() #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¶m=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" |
Elga | Valliant eco TEC plus VHR 30-34/5-5L | Kamstrup 602 |Nodo OTGW | Raspberry Pi 3B+/4B+|RFXcom rfxtrx433xl | UniFi netwerk | PVoutput 8.625 kWp