cngsm commited on
Commit
67675b7
1 Parent(s): 778eb20

Upload 3 files

Browse files
Files changed (3) hide show
  1. app.py +71 -0
  2. client_simulator.py +19 -0
  3. requirements.txt +3 -0
app.py ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+
3
+ # Função para exibir o mapa com a última localização
4
+ def update_map():
5
+ # A API de Geolocalização captura as coordenadas do dispositivo (celular)
6
+ map_html = '''
7
+ <!DOCTYPE html>
8
+ <html lang="en">
9
+ <head>
10
+ <meta charset="UTF-8">
11
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
12
+ <title>Monitoramento em Tempo Real</title>
13
+ <link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" />
14
+ <script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script>
15
+ <style>
16
+ #map {
17
+ height: 400px;
18
+ width: 100%;
19
+ }
20
+ </style>
21
+ </head>
22
+ <body>
23
+ <h3>Localização Atual:</h3>
24
+ <div id="map"></div>
25
+ <script>
26
+ // Função que obtém as coordenadas do dispositivo (celular)
27
+ function getLocation() {
28
+ if (navigator.geolocation) {
29
+ navigator.geolocation.getCurrentPosition(function(position) {
30
+ const lat = position.coords.latitude;
31
+ const lng = position.coords.longitude;
32
+
33
+ // Atualiza o mapa com as coordenadas obtidas
34
+ const map = L.map('map').setView([lat, lng], 15);
35
+
36
+ // Adiciona o tile do OpenStreetMap
37
+ L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
38
+ attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
39
+ }).addTo(map);
40
+
41
+ // Adiciona o marcador
42
+ const marker = L.marker([lat, lng]).addTo(map);
43
+ marker.bindPopup("Localização Atual: " + lat + ", " + lng).openPopup();
44
+ }, function(error) {
45
+ alert("Erro ao obter a localização: " + error.message);
46
+ });
47
+ } else {
48
+ alert("Geolocalização não é suportada neste navegador.");
49
+ }
50
+ }
51
+
52
+ // Chama a função para obter a localização do celular
53
+ getLocation();
54
+ </script>
55
+ </body>
56
+ </html>
57
+ '''
58
+ return map_html
59
+
60
+ # Cria uma interface Gradio
61
+ iface = gr.Interface(
62
+ fn=update_map, # Função que irá gerar o mapa
63
+ inputs=[],
64
+ outputs=gr.HTML(), # Exibe o HTML do mapa
65
+ live=True, # Atualização ao vivo
66
+ title="Monitoramento em Tempo Real com OSM e Leaflet",
67
+ description="Veja a localização em tempo real com o OpenStreetMap",
68
+ )
69
+
70
+ # Inicia o servidor Gradio
71
+ iface.launch(share=True)
client_simulator.py ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import requests
2
+ import time
3
+
4
+ # URL do servidor
5
+ server_url = "http://127.0.0.1:5000/update_location"
6
+
7
+ # Simulação de coordenadas
8
+ def get_gps_data():
9
+ # Aqui você usaria uma biblioteca para capturar coordenadas reais, como `gpsd` ou `geopy`.
10
+ return {"lat": -23.55052, "lng": -46.633308} # Exemplo: São Paulo
11
+
12
+ while True:
13
+ gps_data = get_gps_data()
14
+ try:
15
+ response = requests.post(server_url, json=gps_data)
16
+ print(f"Localização enviada: {gps_data}, Status: {response.status_code}")
17
+ except Exception as e:
18
+ print(f"Erro ao enviar localização: {e}")
19
+ time.sleep(5) # Envia a cada 5 segundos
requirements.txt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ flask
2
+ gradio
3
+ requests