Построение дат с помощью MPAndroidChart - PullRequest
0 голосов
/ 09 мая 2020

Я пытаюсь построить данные с датчика температуры (подключенного к raspberry pi) с помощью MPAndroidChart. Я собрал данные в базу данных Firebase Realtime с кодом python.

Код python для загрузки данных:

import RPi.GPIO as GPIO
import dht11
import time
from time import sleep
import datetime
from firebase import firebase
import urllib2, urllib , httplib
import json
import os
from functools import partial

# initialize GPIO
GPIO.setwarnings(True)
GPIO.setmode(GPIO.BCM)

instance = dht11.DHT11(pin=17)
result = instance.read()
if result.is_valid():
        temperature = result.temperature
    humidity = result.humidity
firebase = firebase.FirebaseApplication('https://smartirrigation-7bd3a.firebase$

def update_firebase():
        instance = dht11.DHT11(pin=17)
        result = instance.read()
        temperature = result.temperature
        humidity = result.humidity
        if humidity is not None and temperature is not None and humidity != 0 a$

                sleep(5)
                str_temp = ' {0:0.2f} *C '.format(temperature)
                str_hum = ' {0:0.2f} % '.format(humidity)
                print('Temp = {0:0.1f}*C Humidity = {1:0.1f}%'.format(temperatu$
                data = {"temp":temperature, "humidity":humidity, "time":int(rou$
                firebase.post('/dht', data)
        else:
        print('Failed to get reading.Try again!')
                sleep(10)

while True:
            update_firebase()

sleep(5)

Код java для построения данных:

public class TemperaturaActivity extends AppCompatActivity {

    private LineChart Temp_linechart;
    ArrayList<Entry> yData;

    ValueEventListener valueEventListener;
    DatabaseReference mPostReference;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_temperatura);
        Temp_linechart = (LineChart) findViewById(R.id.linechart1);

        mPostReference = FirebaseDatabase.getInstance().getReference("dht");
        mPostReference.addValueEventListener(valueEventListener = new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                yData = new ArrayList<>();

                float i = 0;
                for (DataSnapshot ds : dataSnapshot.getChildren()) {
                    i = i + 1;
                    String SV = ds.child("temp").getValue().toString();
                    Float SensorValue = Float.parseFloat(SV);


                    yData.add(new Entry(i,SensorValue));
                }
                final LineDataSet lineDataSet = new LineDataSet(yData, "Temperature");
                lineDataSet.setColor(Color.RED);
                lineDataSet.setLineWidth(3f);
                lineDataSet.setValueTextSize(10f);
                lineDataSet.setDrawCircleHole(true);
                lineDataSet.setDrawCircles(true);
                lineDataSet.setCircleColor(Color.GRAY);
                lineDataSet.setCircleHoleColor(Color.GREEN);

                LineData lineData = new LineData(lineDataSet);
                Temp_linechart.setData(lineData);
                Temp_linechart.notifyDataSetChanged();
                Temp_linechart.invalidate();
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });
    }

Вот что он показывает: линейная диаграмма

Структура базы данных: структура базы данных

Как мне импортировать из базы данных время в формате UNIX и преобразовать его в UT C Время (чч: мм: сс) и нанести его на ось X?

...