Odczyt danych z rfcomm oraz ich zapis do zmiennych i do bazy danych

0

Cześć mam problem odczytuje dane z rfcomm i wyświetlam w terminalu dane z czujników podłączonych do arduino :

import sys
import serial

ser= serial.Serial('/dev/frcomm0', 9600)
while True:
     result=ser.read()
     sys.stdout.write(result)

I wyświetla mi się w terminalu : (przykładowe dane)

24.56
1002.14
45
132.45
2

Jak każdą z tych linii przypisać do zmiennej, żebym później mógł zapisać to do bazy danych?
Nie miałem kontaktu z Pythonem i ciężko mi coś znaleźć na necie.

@Edit myślałem, żeby zapisać to do pliku a później odczytać z niego linia po linii, ale to się wydaje trochę toporne :/

Pozdrawiam.

0

Najprostsze rozwiązanie, to zapisywać od razu do bazy danych. Przykład z Redisem:

import serial
import redis

ser = serial.Serial('/dev/frcomm0', 9600)

db = redis.Redis(
    host='hostname',
    port=port, 
    password='password')

while True:
    result = ser.read()
    print(result, end='') # nie drukuj nowej linii
    db.lpush("mojalista", result)
0

Dziękuję za odpowiedź.
A jeśli chcę to wrzucić w odpowiednią tabele i odpowiednie kolumny. Czyli pierwszy wiersz do kolumny temperatura, drugi do kolumny ciśnienie itp :/ Bo tak to wrzucę wszystko ciurkiem chyba?
Później aplikacja internetowa, która odczytuje sobie to z bazy i robi wykresy, podaje aktualną temperaturę itp. - To już w C#. Wiec nie w temat, ale chce zobrazować o co mi chodzi, jaki chce końcowy efekt dlatego ważne jest żeby to nie było ciurkiem. Sorry, że nie wyjaśniłem od razu.

Pozdrawiam.

0

@up
Witam ponownie, dalej nie udało mi się tego rozwiązać. Chcę odebrać dane z bluetooth które wysyła moduł hc-06 i zapisać to do bazy danych w odpowiednie kolumny. Może ktoś ma jakiś pomysł :/
Pozdrawiam.

@Edit napisałem takie coś :/ Na początku zapisywało do bazy danych ale 30 rekordów aż. Później to zmodyfikowałem i usuwałem plik do którego dopisuje to wypełniało 30 rekordów bazy danych pustymi wartościami. Wróciłem do wersji bez usuwania pliku i przestało działać i dalej wypełnia pustymi wartościami po 30 rekordów bazy danych co jedno wyświetlenie w terminalu odczytów z czujników. (Wiem, że wypełniało ciągle tymi samymi danymi pierwszych odczytów, to jest tylko do sprawdzenia czy działa ale wymiękam... :/ )

import sys
import serial
import subprocess
import linecache
import sqlite3
import os
import time


db = sqlite3.connect('/home/pi/sensordata.db')

print("Usunieto niepotrzebny plik rfcomm0")
ser = serial.Serial('/dev/rfcomm0', 9600)
while True:
        result = ser.read()
        plik = open('/home/pi/readfile.txt', 'a+')
        plik.write(str(result))
        sys.stdout.write(result)
        temp = plik.readline()  # inaczej nie przypisywalo do zmiennych jak to dodalem zaczeło :/ ale dodaje 30 rekordow do bazy nie wiedziec czemy
        temp = linecache.getline('/home/pi/readfile.txt',1)
        wil = linecache.getline('/home/pi/readfile.txt',2)
        wys = linecache.getline('/home/pi/readfile.txt',3)
        cis = linecache.getline('/home/pi/readfile.txt',4)
        opa = linecache.getline('/home/pi/readfile.txt',5)
        cursor = db.cursor()
        temperature = temp
        wilgotnosc = wil
        wysokosc = wys
        cisnienie = cis
        opady = opa
         cursor.execute('''INSERT INTO OutdoorWeather(Temperatura, Wilgotnosc, Wysokosc, Cisnienie, Opady)
        VALUES(?,?,?,?,?)''', (temperature, wilgotnosc, wysokosc, cisnienie, opady))
        db.commit()

Do pliku zapisuje normalnie i wyglada to tak:
25.45
49
109.70
1000.14
3

@edit2
Udało mi się zapisać do bazy danych, ale tworzy mi się od razu 30 rekordów :/

1 użytkowników online, w tym zalogowanych: 0, gości: 1