Esempio n. 1
0
    def get_context_data(self, **kwargs):
        odczyty = Odczyty.objects.all().order_by(
            '-id')[:settings.ILOSC_ODCZYTOW]
        odczyty = list(reversed(odczyty))

        odczyty_50 = Odczyty_50.objects.all().order_by('-id')[:50]
        odczyty_50 = list(reversed(odczyty_50))

        odczyty_10 = Odczyty_10.objects.all().order_by('-id')[:10]
        odczyty_10 = list(reversed(odczyty_10))

        lista_dat = []

        for i in odczyty:
            lista_dat.append(i.data_odczytu)

        for i in odczyty_10:
            if not i.data_odczytu in lista_dat:
                lista_dat.append(i.data_odczytu)

        for i in odczyty_50:
            if not i.data_odczytu in lista_dat:
                lista_dat.append(i.data_odczytu)

        data = []
        abs_50 = []
        abs_10 = []
        for i in lista_dat:
            odczyt_1 = None
            odczyt_2 = None
            odczyt_3 = None
            data2 = i.strftime('%H:%M')

            for o1 in odczyty:
                if i == o1.data_odczytu:
                    odczyt_1 = o1.temperatura
            for o2 in odczyty_10:
                if i == o2.data_odczytu:
                    odczyt_2 = o2.temperatura
            for o3 in odczyty_50:
                if i == o3.data_odczytu:
                    odczyt_3 = o3.temperatura

            data.append([data2, odczyt_1, odczyt_2, odczyt_3])
            if odczyt_1 != None and odczyt_2 != None:
                abs = math.fabs(odczyt_1 - odczyt_2)
                abs_10.append(abs)
            if odczyt_1 != None and odczyt_3 != None:
                abs = math.fabs(odczyt_1 - odczyt_3)
                abs_50.append(abs)

        data = data[settings.ILOSC_ODCZYTOW * -1:]
        data2 = [
            ['Data', 'Odczyty', 'Algorytm dla 10', 'Algorytm dla 50'],
        ]
        data = data2 + data
        # DataSource object
        data_source = SimpleDataSource(data=data)
        # Chart object

        chart = LineChart(data_source)
        chart.width = settings.SZEROKOSC
        chart.height = settings.WYSOKOSC
        chart.options['title'] = "Temperatura [°C]"
        chart.options['pointSize'] = settings.POINT_SIZE
        context = {'chart': chart}
        context['title'] = self.title
        # print(chart.as_html())

        context['MAE_10'] = MAE(abs_10)
        context['RMSE_10'] = RMSE(abs_10)
        context['MAE_50'] = MAE(abs_50)
        context['RMSE_50'] = RMSE(abs_50)

        if self.request.method == 'GET':
            context['ilosc'] = len(Odczyty.objects.all())
        else:
            context['ilosc'] = 0
        print(dir(django.db.backends.mysql))
        return context
Esempio n. 2
0
    def get_context_data(self, **kwargs):
        odczyty = Odczyty.objects.all().order_by(
            '-id')[:settings.ILOSC_ODCZYTOW]
        odczyty = list(reversed(odczyty))

        odczyty_50 = Odczyty_50.objects.all().order_by('-id')[:50]
        odczyty_50 = list(reversed(odczyty_50))

        odczyty_10 = Odczyty_10.objects.all().order_by('-id')[:10]
        odczyty_10 = list(reversed(odczyty_10))

        lista_dat = []

        for i in odczyty:
            lista_dat.append(i.data_odczytu)

        for i in odczyty_10:
            if not i.data_odczytu in lista_dat:
                lista_dat.append(i.data_odczytu)

        for i in odczyty_50:
            if not i.data_odczytu in lista_dat:
                lista_dat.append(i.data_odczytu)

        data = []
        abs_50 = []
        abs_10 = []
        for i in lista_dat:
            odczyt_1 = None
            odczyt_2 = None
            odczyt_3 = None
            data2 = i.strftime('%H:%M')

            for o1 in odczyty:
                if i == o1.data_odczytu:
                    odczyt_1 = o1.cisnienie
            for o2 in odczyty_10:
                if i == o2.data_odczytu:
                    odczyt_2 = o2.cisnienie
            for o3 in odczyty_50:
                if i == o3.data_odczytu:
                    odczyt_3 = o3.cisnienie

            data.append([data2, odczyt_1, odczyt_2, odczyt_3])
            if odczyt_1 != None and odczyt_2 != None:
                abs = math.fabs(odczyt_1 - odczyt_2)
                abs_10.append(abs)
            if odczyt_1 != None and odczyt_3 != None:
                abs = math.fabs(odczyt_1 - odczyt_3)
                abs_50.append(abs)

        print(len(data))
        data = data[settings.ILOSC_ODCZYTOW * -1:]
        data2 = [
            ['Data', 'Odczyty', 'Algorytm dla 10', 'Algorytm dla 50'],
        ]
        data = data2 + data
        # DataSource object
        data_source = SimpleDataSource(data=data)
        # Chart object
        chart = LineChart(data_source)
        chart.width = settings.SZEROKOSC
        chart.height = settings.WYSOKOSC
        chart.options['title'] = "Ciśnienie [hPa]"
        chart.options['pointSize'] = settings.POINT_SIZE

        context = {'chart': chart}
        context['title'] = self.title

        context['MAE_10'] = MAE(abs_10)
        context['RMSE_10'] = RMSE(abs_10)
        context['MAE_50'] = MAE(abs_50)
        context['RMSE_50'] = RMSE(abs_50)

        return context