#include <WiFi.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>
StaticJsonDocument<512> doc;
//Red
//const char* ssid= "BUAP_Estudiantes";
const char* ssid= "Wokwi-GUEST";
const char* pass= "";
void setup() {
Serial.begin(115200);
WiFi.begin(ssid,pass);
Serial.print("Conectando a WiFi");
while (WiFi.status() != WL_CONNECTED){
Serial.print(".");
delay(500);
}
Serial.println("Conectado a internet");
Serial.print("Dirección IP: ");
Serial.println(WiFi.localIP());
}
void loop() {
if((WiFi.status() == WL_CONNECTED)){
Serial.println("");
Serial.println("Buscando datos...");
HTTPClient client;
client.begin("https://api.n2yo.com/rest/v1/satellite/positions/25544/19.00213/-98.20237/0/1/&apiKey=F6EPF9-HP5CKD-DZ8AMY-4ZIX");
//client.begin("https://celestrak.org/NORAD/elements/gp.php?CATNR=25544&FORMAT=JSON");
int httpCode = client.GET();
if(httpCode>0){
String payload=client.getString();
Serial.println("Código de estatus: "+ String(httpCode)); //Indica si hay conexión
//Serial.println(payload);
//Código de datos de antena
DeserializationError error = deserializeJson(doc, payload);
if (error) {
Serial.print("deserializeJson() failed: "); //Error de deserialización de la página
Serial.println(error.c_str());
return;
}
JsonObject info = doc["info"]; //Información del satélite
const char* info_satname = info["satname"]; // Nombre del satélite
int info_satid = info["satid"]; // ID NORAD de la página
JsonObject positions_0 = doc["positions"][0]; //Posiciones
double positions_0_satlatitude = positions_0["satlatitude"]; // Latitud
double positions_0_satlongitude = positions_0["satlongitude"]; // Longitud
float positions_0_sataltitude = positions_0["sataltitude"]; // Altitud
float positions_0_azimuth = positions_0["azimuth"]; // Azimut
float positions_0_elevation = positions_0["elevation"]; // Elevación sin corrección
double positions_0_ra = positions_0["ra"]; // Ascención recta
double positions_0_dec = positions_0["dec"]; // Declinación
long positions_0_timestamp = positions_0["timestamp"]; // Tiempo de la obteción de los datos
bool positions_0_eclipsed = positions_0["eclipsed"]; // Eclipse
float position_fixed;
if(positions_0_elevation<0){
position_fixed=0;
}
else{
position_fixed=positions_0_elevation;
}
Serial.print("Nombre del satélite: ");
Serial.println(info_satname);
Serial.print("Azimut: ");
Serial.println(positions_0_azimuth);
Serial.print("Elevación: ");
Serial.println(positions_0_elevation);
Serial.print("Elevación arreglada: ");
Serial.println(position_fixed);
//Cualquier código de movimiento entra aquí, usar funciones de preferencia
movimiento(positions_0_azimuth,position_fixed);
}
else{
Serial.println("Conexión rechazada por el servidor");
}
}
else {
Serial.println("Conexión perdida");
}
delay(5000);
}
void movimiento(float a, float b){
//Variables de coordenadas de observador
float azimut=a;
float elevacion=b;
Serial.println("TEST");
Serial.print("Usando azimut: ");
Serial.println(azimut);
Serial.print("Usando elevación: ");
Serial.println(elevacion);
}