Allereerst, ik ben ontzettend niet handig met linux en python maar wil toch graag mijn niet slimme energiemeter uitlezen. Om dit te doen heb ik een ldr voor de led gehangen en deze aangesloten op mijn raspberry pi. Bij elke pulse van de led krijg ik netjes een signaal op de gekozen pin. Dit is mijn code om elke puls per uur op te slaan in een mysql database:
het scriptje start ik automatisch / handmatig middels een init ding in init.d volgens deze website:
http://blog.scphillips.co...und-as-a-service-on-boot/
Dit werkt allemaal prima echter compleet willekeurig houdt het programma op met draaien en ik kan niet uitvinden waarom. Ik heb sys.stderr al naar een testbestand laten schrijven maar deze blijft leeg.
kan iemand met meer python kennis me in de goede richting schoppen? Waar / hoe zou ik eventueel kunnen achterhalen waarom mijn scriptje stopt met werken?
Python:
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
| #! /usr/bin/python #import some needed stuff import RPi.GPIO as GPIO import MySQLdb from time import sleep from datetime import datetime #setup gpio GPIO.setmode(GPIO.BCM) GPIO.setup(25, GPIO.IN, pull_up_down = GPIO.PUD_DOWN) #hourly updater #don't forget the ` on columns with only numbers def hourly_updater(pulses): hour = datetime.now().hour try: db = MySQLdb.connect('localhost', 'root', 'root', 'domotica') cursor = db.cursor() cursor.execute("INSERT INTO electricity_hourly_totals (date, `%s`) VALUES(CURDATE(), %s) ON DUPLICATE KEY UPDATE `%s`=`%s`+%s", (hour, pulses, hour, hour, pulses)) db.commit() #close up everything cursor.close() db.close() #logging.info('pulse logged') except MySQLdb.Error, e: #logging.critical('query failed: %s', cursor._last_executed) #logging.critical('MYSQL error: %d: %s', e.args[0], e.args[1]) if db: db.rollback() db.close() pass #main loop while True: GPIO.wait_for_edge(25, GPIO.RISING) hourly_updater(1) #sleep for a bit to avoid a false second trigger sleep(0.1) #GPIO.wait_for_edge(25, GPIO.FALLING) |
het scriptje start ik automatisch / handmatig middels een init ding in init.d volgens deze website:
http://blog.scphillips.co...und-as-a-service-on-boot/
Dit werkt allemaal prima echter compleet willekeurig houdt het programma op met draaien en ik kan niet uitvinden waarom. Ik heb sys.stderr al naar een testbestand laten schrijven maar deze blijft leeg.
kan iemand met meer python kennis me in de goede richting schoppen? Waar / hoe zou ik eventueel kunnen achterhalen waarom mijn scriptje stopt met werken?