Probleem met schrijven naar logfile

Pagina: 1
Acties:
  • 502 views

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

Anoniem: 863317

Topicstarter
Wil waarde en tijd van de temperatuursensor MPC9808 wegschrijven naar een log file.
Weet dat de temperatuur waarde eerst wordt wegeschreven naar /sys/bus/w1/devices/28-0115a4f575ff/w1_slave.

w1_slave

6b 01 4b 46 7f ff 0c 10 fb : crc=fb YES
6b 01 4b 46 7f ff 0c 10 fb t=22687

Vanuit deze file wordt de temperatuur gelezen en weggeschreven naar de log file.
Output file is cpu_temp.csv

Python script.
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
import subprocess
import logging
import time
from time import sleep, gmtime, strftime
import smbus

#Constant things, that don't change during run.
t_reg = 0x05
address = 0x18
bus = smbus.SMBus(1) # change to 0 for older RPi revision

def get_temp():
    #The reading variable changes every time you run get_temp()
    reading = bus.read_i2c_block_data(address, t_reg)
    t = (reading[0] << 8) + reading[1]
    temp = t & 0x0FFF
    temp /=  16.0
    if (t & 0x1000):
      temp -= 256
    return(temp)

with open("cpu_temp.csv", "a") as log:
    while True:
        temp = get_temp()       
        log.write("{0},{1}\n".format(strftime("%Y-%m-%d %H:%M:%S"),str(temp)))
        time.sleep(10)


Weggeschreven waardes naar logfile cpu_temp.csv

2017-02-04 15:15:38,22.1875
2017-02-04 15:15:48,22.125
2017-02-04 15:15:58,22.125
2017-02-04 15:16:08,22.125
2017-02-04 15:16:18,22.125

Graag hulp voor dit probleem

[ Voor 0% gewijzigd door Creepy op 04-02-2017 23:16 ]

Alle reacties


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21:21

Creepy

Tactical Espionage Splatterer

Ik zie datums en temperaturen in je logfile. Dus ik snap niet waarom je denkt dat er iets mis gaat. Dat leg je overigens ook niet uit, laat staan dat je aangeeft wat je zelf al hebt geprobeerd om het probleem dat je denkt te hebben op te lossen.....

Edit: Ik heb ook gelijk maar even code tags toegevoegd. WIl je daar een volgende keer nu echt op letten?

[ Voor 17% gewijzigd door Creepy op 04-02-2017 23:16 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 23:48
En code-tags graag... Zeker Python is niet te volgen zo vanwege de belangrijke rol va inspringen.

Acties:
  • 0 Henk 'm!

  • supersnathan94
  • Registratie: Juli 2010
  • Laatst online: 02-05 16:05
Naast dat ik geen idee heb wat je vraag nu precies is heb ik wel een aantal opmerkingen op je code. Puur voor leesbaarheid en semantics.
#Constant things, that don't change during run.
Waarom geef je deze variabelen niet aan met hoofdletters? Dan is ook verderop in je code makkelijk zichtbaar dat je die niet moet veranderen in runtime:
T_REG = 0x05
ADDRESS = 0x18
SMBUS = smbus.SMBus(1) # change to 0 for older RPi revision
with open("cpu_temp.csv", "a") as log:
while True:
temp = get_temp()
log.write("{0},{1}\n".format(strftime("%Y-%m-%d %H:%M:%S"),str(temp)))
Waarom heb je van je logwrite geen functie gemaakt die tijd en temperatuur meekrijgt?
Waarom doe je time naar string formatting inline? Okee het werkt, maar overzichtelijk is het absoluut niet.
import logging
Unused import?

Acties:
  • 0 Henk 'm!

Anoniem: 863317

Topicstarter
Bij 1ste run script wordt de log file "cpu_temp.csv" aangemaakt maar wordt er niets naar toe geschreven.
Stop ik deze script via ^C en start de script opnieuw dan worden de waardes uitgelezen van de MPC9808 sensor en wel naar de log file geschreven.
Ik weet dat de temperatuurwaarde eerst wordt wegeschreven naar /sys/bus/w1/devices/28-0115a4f575ff/w1_slave.
om vervolgens uit deze file de temperatuur "t" uit te lezen en weg te schrijven naar de logfile "cpu_temp.csv"

Waarde in "w1_slave"

6b 01 4b 46 7f ff 0c 10 fb : crc=fb YES
6b 01 4b 46 7f ff 0c 10 fb t=22687

Python script.

import subprocess
import logging
import time
from time import sleep, gmtime, strftime
import smbus

#Constant things, that don't change during run.
T_REG = 0x05
ADDRESS = 0x18
BUS = smbus.SMBus(1) # change to 0 for older RPi revision

def get_temp():
#The reading variable changes every time you run get_temp()
reading = bus.read_i2c_block_data(address, t_reg)
t = (reading[0] << 8) + reading[1]
temp = t & 0x0FFF
temp /= 16.0
if (t & 0x1000):
temp -= 256
return(temp)

with open("cpu_temp.csv", "a") as log:
while True:
temp = get_temp()
log.write("{0},{1}\n".format(strftime("%Y-%m-%d %H:%M:%S"),str(temp)))
time.sleep(10)


Weggeschreven waardes naar logfile "cpu_temp.csv" als python script voor de 2e maal wort uitgevoerd.
Dan is alles normaal. Maar bij eerste run blijft het leeg.

2017-02-04 15:15:38,22.1875
2017-02-04 15:15:48,22.125
2017-02-04 15:15:58,22.125
2017-02-04 15:16:08,22.125
2017-02-04 15:16:18,22.125

Graag hulp voor dit probleem

ps. sorry. Er was blijkbaar iets misgelopen met copy paste.
Ben zelf geen programmeur.
Heb code gevonden op web.
Begrijp wel de logica en hoe de code in elkaar.
Wat zijn code tags?
Zou het ten zeerst appreciëren als je de script zou aanpassen
volgens de normen gebruikt in het programmeren.

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21:21

Creepy

Tactical Espionage Splatterer

Programmeren doen we hier zelf. Anderen het voor je laten doen is niet de bedoeling. Als het script niet werkt voor je, dan heb je twee opties: Het zelf proberen op te lossen of bij de originele maker, of de plek waar je het hebt gedownload support vragen. Hier is het geen support helpdesk voor gedownloade code dus ik kan dan ook niet anders dan dit topic sluiten.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1

Dit topic is gesloten.