Skip to content

Commit d3f8afe

Browse files
committed
Fix GPS_VELOCITY (#18035)
1 parent 9499211 commit d3f8afe

File tree

1 file changed

+31
-46
lines changed

1 file changed

+31
-46
lines changed

tasmota/tasmota_xsns_sensor/xsns_60_GPS.ino

Lines changed: 31 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -856,83 +856,68 @@ void UBXLoop(void)
856856
#endif //USE_FLOG
857857
const char HTTP_SNS_NTPSERVER[] PROGMEM = "{s} NTP server {m}active{e}";
858858

859-
const char HTTP_SNS_GPS[] PROGMEM = "{s} GPS latitude {m}%s{e}"
860-
"{s} GPS longitude {m}%s{e}"
861-
"{s} GPS altitude {m}%s m{e}"
862-
"{s} GPS hor. Accuracy {m}%s m{e}"
863-
"{s} GPS vert. Accuracy {m}%s m{e}"
864-
"{s} GPS sat-fix status {m}%s{e}"
859+
const char HTTP_SNS_GPS[] PROGMEM = "{s}GPS " D_LATITUDE "{m}%s{e}"
860+
"{s}GPS " D_LONGITUDE "{m}%s{e}"
861+
"{s}GPS " D_ALTITUDE "{m}%3_f " D_UNIT_METER "{e}"
862+
"{s}GPS " D_HORIZONTAL_ACCURACY "{m}%3_f " D_UNIT_METER "{e}"
863+
"{s}GPS " D_VERTICAL_ACCURACY "{m}%3_f " D_UNIT_METER "{e}"
864+
"{s}GPS " D_SAT_FIX "{m}%s{e}";
865865
#ifdef USE_GPS_VELOCITY
866-
"{s} GPS Speed {m}%s{e}"
867-
"{s} GPS Heading {m}%s{e}"
868-
"{s} GPS Heading Acc {m}%s{e}"
869-
"{s} GPS Speed Acc {m}%s{e}"
866+
const char HTTP_SNS_GPS2[] PROGMEM = "{s}GPS " D_SPEED "{m}%1_f{e}"
867+
"{s}GPS " D_HEADING "{m}%1_f{e}"
868+
"{s}GPS " D_HEADING_ACCURACY "{m}%2_f{e}"
869+
"{s}GPS " D_SPEED_ACCURACY "{m}%2_f{e}";
870870
#endif
871-
;
872871

873-
const char kGPSFix0[] PROGMEM = "no fix";
874-
const char kGPSFix1[] PROGMEM = "dead reckoning only";
875-
const char kGPSFix2[] PROGMEM = "2D-fix";
876-
const char kGPSFix3[] PROGMEM = "3D-fix";
877-
const char kGPSFix4[] PROGMEM = "GPS + dead reckoning combined";
878-
const char kGPSFix5[] PROGMEM = "Time only fix";
879-
const char * kGPSFix[] PROGMEM ={kGPSFix0, kGPSFix1, kGPSFix2, kGPSFix3, kGPSFix4, kGPSFix5};
872+
const char kGPSFix[] PROGMEM = D_SAT_FIX_NO_FIX "|" D_SAT_FIX_DEAD_RECK "|" D_SAT_FIX_2D "|" D_SAT_FIX_3D "|" D_SAT_FIX_GPS_DEAD "|" D_SAT_FIX_TIME;
880873

881874
// const char UBX_GOOGLE_MAPS[] ="<iframe width='100%%' src='https://maps.google.com/maps?width=&amp;height=&amp;hl=en&amp;q=%s %s+(Tasmota)&amp;ie=UTF8&amp;t=&amp;z=10&amp;iwloc=B&amp;output=embed' frameborder='0' scrolling='no' marginheight='0' marginwidth='0'></iframe>";
882875

883-
884876
#endif // USE_WEBSERVER
885877

886878
/********************************************************************************************/
887879

888880
void UBXShow(bool json)
889881
{
890882
char lat[12];
891-
char lon[12];
892-
char alt[12];
893-
char hAcc[12];
894-
char vAcc[12];
895-
#ifdef USE_GPS_VELOCITY
896-
char spd[12];
897-
char hdng[12];
898-
char cAcc[12];
899-
char sAcc[12];
900-
#endif
901883
dtostrfd((double)UBX.rec_buffer.values.lat/10000000.0f,7,lat);
884+
char lon[12];
902885
dtostrfd((double)UBX.rec_buffer.values.lon/10000000.0f,7,lon);
903-
dtostrfd((double)UBX.state.last_alt/1000.0f,3,alt);
904-
dtostrfd((double)UBX.state.last_vAcc/1000.0f,3,hAcc);
905-
dtostrfd((double)UBX.state.last_hAcc/1000.0f,3,vAcc);
906-
#ifdef USE_GPS_VELOCITY
907-
dtostrfd((double)UBX.Message.navVel.gSpeed/27.778f,1,spd);
908-
dtostrfd((double)UBX.Message.navVel.heading/100000.0f,1,hdng);
909-
dtostrfd((double)UBX.Message.navVel.cAcc/100000.0f,2,cAcc);
910-
dtostrfd((double)UBX.Message.navVel.sAcc/100000.0f,2,sAcc);
911-
#endif
886+
float alt = (float)UBX.state.last_alt / 1000.0f;
887+
float hAcc = (float)UBX.state.last_vAcc / 1000.0f;
888+
float vAcc = (float)UBX.state.last_hAcc / 1000.0f;
889+
char fix[32];
890+
GetTextIndexed(fix, sizeof(fix), UBX.state.gpsFix, kGPSFix);
891+
#ifdef USE_GPS_VELOCITY
892+
float spd = (float)UBX.Message.navVel.gSpeed / 27.778f;
893+
float hdng = (float)UBX.Message.navVel.heading / 100000.0f;
894+
float cAcc = (float)UBX.Message.navVel.cAcc / 100000.0f;
895+
float sAcc = (float)UBX.Message.navVel.sAcc / 100000.0f;
896+
#endif
912897

913898
if (json) {
914899
ResponseAppend_P(PSTR(",\"GPS\":{"));
915900
if (UBX.mode.send_UI_only) {
916901
uint32_t i = UBX.state.log_interval / 10;
917-
ResponseAppend_P(PSTR("\"fil\":%u,\"int\":%u}"), UBX.mode.filter_noise, i);
902+
ResponseAppend_P(PSTR("\"Fil\":%u,\"Int\":%u}"), UBX.mode.filter_noise, i);
918903
} else {
919-
ResponseAppend_P(PSTR("\"lat\":%s,\"lon\":%s,\"alt\":%s,\"hAcc\":%s,\"vAcc\":%s,\"fix\":\"%s\""), lat, lon, alt, hAcc, vAcc, kGPSFix[UBX.state.gpsFix]);
904+
ResponseAppend_P(PSTR("\"Lat\":%s,\"Lon\":%s,\"Alt\":%3_f,\"hAcc\":%3_f,\"vAcc\":%3_f,\"Fix\":\"%s\""),
905+
lat, lon, &alt, &hAcc, &vAcc, fix);
920906
#ifdef USE_GPS_VELOCITY
921-
ResponseAppend_P(PSTR(,\"spd\":%s,\"hdng\":%s,\"cAcc\":%s,\"sAcc\":%s"), spd, hdng, cAcc, sAcc);
907+
ResponseAppend_P(PSTR(",\"Spd\":%1_f,\"Hdng\":%1_f,\"cAcc\":%2_f,\"sAcc\":%2_f"),
908+
&spd, &hdng, &cAcc, &sAcc);
922909
#endif
923910
ResponseAppend_P(PSTR("}"));
924911
}
925912
#ifdef USE_FLOG
926-
ResponseAppend_P(PSTR(",\"FLOG\":{\"rec\":%u,\"mode\":%u,\"sec\":%u}"), Flog->recording, Flog->mode, Flog->sectors_left);
913+
ResponseAppend_P(PSTR(",\"FLOG\":{\"Rec\":%u,\"Mode\":%u,\"Sec\":%u}"), Flog->recording, Flog->mode, Flog->sectors_left);
927914
#endif //USE_FLOG
928915
UBX.mode.send_UI_only = false;
929916
#ifdef USE_WEBSERVER
930917
} else {
918+
WSContentSend_PD(HTTP_SNS_GPS, lat, lon, &alt, &hAcc, &vAcc, fix);
931919
#ifdef USE_GPS_VELOCITY
932-
WSContentSend_PD(HTTP_SNS_GPS, lat, lon, alt, hAcc, vAcc, kGPSFix[UBX.state.gpsFix], spd, hdng, cAcc, sAcc);
933-
#endif
934-
#ifndef USE_GPS_VELOCITY
935-
WSContentSend_PD(HTTP_SNS_GPS, lat, lon, alt, hAcc, vAcc, kGPSFix[UBX.state.gpsFix]);
920+
WSContentSend_PD(HTTP_SNS_GPS2, &spd, &hdng, &cAcc, &sAcc);
936921
#endif
937922
//WSContentSend_P(UBX_GOOGLE_MAPS, lat, lon);
938923
#ifdef DEBUG_TASMOTA_SENSOR

0 commit comments

Comments
 (0)