Dataa syntyy ja se menee säilöön.
Raspberry lukee dataa ja tallentaa ne sql-tietokantaan.
Nettisivulla näytetään ne tiedot.
Testataan Raspberryllä, minicom-ohjelmalla
sudo minicom -b 11520 -D /dev/ttyACM0
Toimii, tulee V:30
Sitten tein tietokannan Raspberryyn
sqlite3 asennettu.
tietokanta.db
taulu
-avain, valo kaikki NUMERIC
Lisäsin yhden tietueen.
SQL-tietokanta
Tietokannan käsittelyyn Pythonilla löytyy ohjeita: http://sebastianraschka.com/Articles/2014_sqlite_in_python_tutorial.html#connecting-to-an-sqlite-database
Kokeilin tietokannan lukua:
from serial import *
import time
import sqlite3
conn = sqlite3.connect('tietokanta.db')
print("tietokanta avattu")
c = conn.cursor()
c.execute("SELECT * FROM taulu")
conn.commit()
for row in c:
print ("Aika ",row[0])
conn.close()
print("loppu")
import time
import sqlite3
conn = sqlite3.connect('tietokanta.db')
print("tietokanta avattu")
c = conn.cursor()
c.execute("SELECT * FROM taulu")
conn.commit()
for row in c:
print ("Aika ",row[0])
conn.close()
print("loppu")
Toimii.
Sitten koodataan lisää.
Ohjelma lukee sarjaporttia ja kirjoittaa sql-tietokantaan tietueita.
#! /usr/bin/python3
# -*- coding: utf-8 -*-
"""
Copyright (c) 2018 Jani Mantynen & Ville Heikkiniemi
Sirpa Mazarakis
Sirpa Mazarakis
Sarjaportin luku Janin ja VIllen ohjelmasta
Permission is granted to copy, distribute and/or modify this document under
the terms of the GNU Free Documentation License, Version 1.3 or any later
version published by the Free Software Foundation; with no Invariant Sections,
no Front-Cover Texts, and no Back-Cover Texts. A copy of the license can be
found online at http://www.fsf.org/licensing/licenses/fdl.txt
Ohjelma lukee sarjaportista rivin ja tekee siitä tietueen tietokantaan
"""
from serial import *
import time
import sqlite3
def Tapahtuma(data):
#print("data ",data)
if len(data) > 2:
try:
conn = sqlite3.connect('tietokanta.db')
#print("tietokanta avattu")
except Exception:
print("tietokantaa ei avattu")
sys.exit()
c = conn.cursor()
aika = int(time.time())
#print(aika)
valo = int(data[2:len(data)])
#print(valo)
c.execute("INSERT INTO taulu VALUES (?, ?)", (aika, valo))
conn.commit()
conn.close()
def main():
# Yritetään luoda sarjaportti
try:
microbit = Serial(port='/dev/ttyACM0', baudrate=115200, timeout=2)
except Exception:
print("tarkista portti")
while True:
try:
Tapahtuma(microbit.readline().decode()) # luetaan rivi
except KeyboardInterrupt:
print("keskeytetään")
sys.exit()
if __name__ == "__main__":
main()
Paitsi että kun syöte jää puskuriin, niin sama aikaleima tulee useaan tapahtumaan. Microbitin pitäisi lähettää se aika..eiku muuttamaan.
Tai olkoot.
Sitten tätä dataa pitäisi saada nettisivulle näkyviin.
Ei kommentteja:
Lähetä kommentti