Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 3

import csv

import datetime
import token

from django.http import HttpResponse, JsonResponse


from django.utils import timezone
from .models import Dht11
from django.shortcuts import render
from telegram import Bot
import asyncio

def test(request):
return HttpResponse('hello world')

def dht_tab(request):
tab = Dht11.objects.all()
s = {'tables': tab}
return render(request, 'tables.html',context=s)

# Create your views here.


def table(request):
derniere_ligne = Dht11.objects.last()
derniere_date = Dht11.objects.last().dt
delta_temps = timezone.now() - derniere_date
difference_minutes = delta_temps.seconds // 60
temps_ecoule = ' il y a ' + str(difference_minutes) + ' min'
if difference_minutes > 60:
temps_ecoule = ('il y ' + str(difference_minutes // 60) + 'h' +
str(difference_minutes % 60) + 'min')
valeurs = {'date': temps_ecoule, 'id': derniere_ligne.id, 'temp':
derniere_ligne.temp, 'hum': derniere_ligne.hum}
return render(request, 'value.html', {'valeurs': valeurs})

def download_csv(request):
model_values = Dht11.objects.all()
response = HttpResponse(content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename="dht.csv"'
writer = csv.writer(response)
writer.writerow(['id', 'temp', 'hum', 'dt'])
liste = model_values.values_list('id', 'temp', 'hum', 'dt')
for row in liste:
writer.writerow(row)
return response

def graphique():
return None

# pour afficher navbar de template


def index_view(request):
return render(request, "index.html")

# pour afficher les graphes


def graphique(request):
return render(request, 'Chart.html')
# récupérer toutes les valeur de température et humidity sous forme un
# fichier json
def chart_data(request):
dht = Dht11.objects.all()
data = {
'temps': [Dt.dt for Dt in dht],
'temperature': [Temp.temp for Temp in dht],
'humidity': [Hum.hum for Hum in dht]
}
return JsonResponse(data)

def chart_data_jour(request):
dht = Dht11.objects.all()
now = timezone.now()
last_24_hours = now - timezone.timedelta(hours=24)
dht = Dht11.objects.filter(dt__range=(last_24_hours, now))
data = {
'temps': [Dt.dt for Dt in dht],
'temperature': [Temp.temp for Temp in dht],
'humidity': [Hum.hum for Hum in dht]
}
return JsonResponse(data)

# pour récupérer les valeurs de température et humidité de la dernière


semaine
# et les envoyer sous forme JSON
def chart_data_semaine(request):
dht = Dht11.objects.all()
# calcul de la date de début de la semaine dernière
date_debut_semaine = timezone.now().date() - datetime.timedelta(days=7)
print(datetime.timedelta(days=7))
print(date_debut_semaine)
dht = Dht11.objects.filter(dt__gte=date_debut_semaine)
data = {
'temps': [Dt.dt for Dt in dht],
'temperature': [Temp.temp for Temp in dht],
'humidity': [Hum.hum for Hum in dht]
}
return JsonResponse(data)

# pour récupérer les valeurs de température et humidité du dernier mois


# et les envoyer sous forme JSON
def chart_data_mois(request):
dht = Dht11.objects.all()
date_debut_mois = timezone.now().date() - datetime.timedelta(days=30)
print(datetime.timedelta(days=30))
print(date_debut_mois)

dht = Dht11.objects.filter(dt__gte=date_debut_mois)
data = {
'temps': [Dt.dt for Dt in dht],
'temperature': [Temp.temp for Temp in dht],
'humidity': [Hum.hum for Hum in dht]
}
return JsonResponse(data)
def telegram_alert (request, message):
async def send_telegram_message (token, chat_id, message_text):
bot = Bot (token=token)
await bot.send_message (chat_id=chat_id, text=message_text)
# Replace 'YOUR_BOT_TOKEN', 'YOUR_CHAT_ID', and "YOUR_MESSAGE' with
your actual
bot_token = '6907613091:AAGKCNxgrGT1tRMFhIpJbqsoIWvZm4an5oA'
chat_id = '6920063447'
message_text = message
# Run the asynchronous code within an event loop
asyncio.run (send_telegram_message (bot_token, chat_id, message_text))

from django.urls import path


from . import views,api
urlpatterns=[

path("api",api.dhtser,name='json'),
path('data/',views.dht_tab,name = 'Data'),
path('download_csv/', views.download_csv, name='download_csv'),
path('index/',views.table,name='table'),
path('myChart/',views.graphique,name='myChart'),
path ('chart-data/',views.chart_data, name='chart-data'),
path('chart-data-jour/',views.chart_data_jour,name='chart-data-
jour'),
path('chart-data-
semaine/',views.chart_data_semaine,name='chart-data-semaine'),
path('chart-data-mois/',views.chart_data_mois,name='chart-data-
mois'),

You might also like