Hulp bij Raspberry py CronJob

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • skate master
  • Registratie: September 2004
  • Laatst online: 21:44

skate master

Autodesk Educator Expert

Topicstarter
Mensen,

ik ben sinds korte tijd aan het hobbyen met een Raspberry Pi 2B.
Hier heb ik 2 sensoren op aangesloten voor de temperatuur, luchtvochtigheid en luchtdruk.

Via een python script kan ik de sensoren uitlezen en worden de waarden netjes weergegeven.
De bedoeling is om deze waarden naar mijn webserver te sturen om hier grafiekjes en overzichten van te maken.

Wanneer ik het script start middels
code:
1
sudo python /home/pi/weerstation/python/weerstation.py

wordt alles netjes uitgelezen, weergegeven in de console en naar mijn webserver gestuurd.
Het python script werkt dus zoals verwacht.

Echter krijg ik de cronjob niet aan het draaien. Onderstaande mogelijkheden heb ik in zowel crontab -e als in sudo crontab -e geprobeerd echter zonder resultaat.
code:
1
*/15 * * * * /usr/bin/python /home/pi/weerstation/python/weerstation.py

code:
1
*/15 * * * * sudo python /home/pi/weerstation/python/weerstation.py


Wat wel werkt is de volgende cronjob, de de cron deamon werkt gewoon
code:
1
* * * * * date >> /tmp/date.log


Wat doe ik verkeerd, of wat zie ik over het hoofd?
Wie o wie kan mij op gang helpen met mijn eerste stapjes in de wereld van Raspberry / Cronjobs / Python?

Beste antwoord (via skate master op 13-04-2018 21:36)


  • True
  • Registratie: April 2011
  • Niet online

True

Dislecticus

VW ID.7 Tourer Pro S | 5670 Wp JA Solar - 14x405 33° op Zuid | Twente

Alle reacties


Acties:
  • 0 Henk 'm!

  • AW_Bos
  • Registratie: April 2002
  • Laatst online: 02:13

AW_Bos

Liefhebber van nostalgie... 🕰️

schrijf eerst eens alles naar een logfile met de >>
En check die!

[ Voor 12% gewijzigd door AW_Bos op 13-04-2018 20:53 ]

Telecommunicatie van vroeger
🚅Alles over spoor en treintjes


Acties:
  • 0 Henk 'm!

  • skate master
  • Registratie: September 2004
  • Laatst online: 21:44

skate master

Autodesk Educator Expert

Topicstarter
AW_Bos schreef op vrijdag 13 april 2018 @ 20:53:
schrijf eerst eens alles naar een logfile met de >>
En check die!
In de logfile komen de gegevens te staan wie ik ook zie wanneer ik het script handmatig run.
Handmatig worden de gegevens wel verzonden naar mijn webserver, via de cron niet.

Why? wat mis ik?

Hieronder mijn Python script, misschien helpt dit bij het vinden van de oorzaak.
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
# import voor barometer
from smbus import SMBus
import time
# import voor Temperatuur en Luchtvochtigheid
import Adafruit_DHT
# import voor verzending naar website
import requests

# script settings
RNurl = "##URL_HIER##"
# /script settings

# TEMPERATUUR EN VOCHTIGHEID
humidity, temperature = Adafruit_DHT.read_retry(Adafruit_DHT.DHT22, 4)

humidity = round(humidity, 2)
temperature = round(temperature, 2)

if humidity is not None and temperature is not None:
  print ('Temperatuur: {0:0.1f}*C'.format(temperature))
  print ('Luchtvochtigheid: {0:0.1f}%'.format(humidity))
  RNtemperature = '{0:0.1f}%'.format(temperature)
  RNhumidity = '{0:0.1f}%'.format(humidity)
else:
  print ('Geen data voor Temperatuur en Luchtvochtigheid')

# BAROMETER
# Special Chars
deg = u'\N{DEGREE SIGN}'

# I2C Constants
ADDR = 0x60
CTRL_REG1 = 0x26
PT_DATA_CFG = 0x13
bus = SMBus(1)

who_am_i = bus.read_byte_data(ADDR, 0x0C)
print (hex(who_am_i))
if who_am_i != 0xc4:
    print ("Barometer niet actief.")
    exit(1)

# Set oversample rate to 128
setting = bus.read_byte_data(ADDR, CTRL_REG1)
newSetting = setting | 0x38
bus.write_byte_data(ADDR, CTRL_REG1, newSetting)

# Enable event flags
bus.write_byte_data(ADDR, PT_DATA_CFG, 0x07)

# Toggel One Shot
setting = bus.read_byte_data(ADDR, CTRL_REG1)
if (setting & 0x02) == 0:
    bus.write_byte_data(ADDR, CTRL_REG1, (setting | 0x02))

# Read sensor data
print ("Wachten op data van barometer...")
status = bus.read_byte_data(ADDR,0x00)
while (status & 0x08) == 0:
    #print bin(status)
    status = bus.read_byte_data(ADDR,0x00)
    time.sleep(0.5)

print ("Uitlezen barometer sensor data...")
p_data = bus.read_i2c_block_data(ADDR,0x01,3)
t_data = bus.read_i2c_block_data(ADDR,0x04,2)
status = bus.read_byte_data(ADDR,0x00)
print ("barometer status: "+bin(status))

p_msb = p_data[0]
p_csb = p_data[1]
p_lsb = p_data[2]
t_msb = t_data[0]
t_lsb = t_data[1]

pressure = (p_msb << 10) | (p_csb << 2) | (p_lsb >> 6)
p_decimal = ((p_lsb & 0x30) >> 4)/4.0

celsius = t_msb + (t_lsb >> 4)/16.0
fahrenheit = (celsius * 9)/5 + 32

print ("Luchtdruk en Tempeartuur op: "+time.strftime('%m/%d/%Y %H:%M:%S%z'))
print (str(pressure+p_decimal)+" Pa")
print (str(celsius)+deg+"C")
print (str(fahrenheit)+deg+"F")

RNpressure = str(pressure)

# output naar website
RNaction = "temperature=" + RNtemperature + "&humidity=" + RNhumidity + "&pressure=" + RNpressure
r = requests.get(RNurl + RNaction)
# website response
print("Received " + str(r.status_code) + " " + str(r.text))

Acties:
  • 0 Henk 'm!

  • True
  • Registratie: April 2011
  • Niet online

True

Dislecticus

skate master schreef op vrijdag 13 april 2018 @ 21:03:
[...]

In de logfile komen de gegevens te staan wie ik ook zie wanneer ik het script handmatig run.
Handmatig worden de gegevens wel verzonden naar mijn webserver, via de cron niet.

Why? wat mis ik?
Dat komt dan omdat cron vanuit root gedaan wordt en jij het vanuit je eigen account uitvoert.
Elevate je rechten naar root en test je script dan, ongetwijfeld zelfde problemen als je krijgt met cron.

VW ID.7 Tourer Pro S | 5670 Wp JA Solar - 14x405 33° op Zuid | Twente


Acties:
  • 0 Henk 'm!

  • skate master
  • Registratie: September 2004
  • Laatst online: 21:44

skate master

Autodesk Educator Expert

Topicstarter
True schreef op vrijdag 13 april 2018 @ 21:18:
[...]
Dat komt dan omdat cron vanuit root gedaan wordt en jij het vanuit je eigen account uitvoert.
Elevate je rechten naar root en test je script dan, ongetwijfeld zelfde problemen als je krijgt met cron.
Ok, maar hoe kan ik er dan voor zorgen dat het script niet als root wordt uitgevoerd maar vanuit mijn eigen account zodat ik de problemen niet heb?

Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • True
  • Registratie: April 2011
  • Niet online

True

Dislecticus

VW ID.7 Tourer Pro S | 5670 Wp JA Solar - 14x405 33° op Zuid | Twente

Pagina: 1