Я пытаюсь построить данные с датчика температуры (подключенного к 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?