Convert APRS meteo temperature from Fahrenheit to Celsius

This commit is contained in:
ua1zbe
2026-08-18 07:58:17 +03:00
parent 7564c8d092
commit 985cd9eb1a

View File

@@ -120,11 +120,15 @@ class AprsMeteo(
val body = line.substring(idx + 1)
if (body.isEmpty() || body[0] !in "!@=") return null
val temp = parseTemp(body) ?: return null
val t = if (temp == temp.toInt().toDouble()) temp.toInt().toString() else temp.toString()
// В APRS метео-часть температура в градусах Фаренгейта
val c = (temp - 32.0) * 5.0 / 9.0
val t = if (c == c.toInt().toDouble()) c.toInt().toString()
else (Math.round(c * 10.0) / 10.0).toString()
return line.substringBefore('>') + " Температура " + t + "C"
}
/** Температура из метео-части после символа '_': t062=6.2, t06=6, t-08=-0.8, T083=8.3. */
/** Температура из метео-части после символа '_': t062=62°F, t06=6°F, t-08=-8°F, T083=83°F.
* В APRS метео-формате температура кодируется в градусах Фаренгейта. */
private fun parseTemp(body: String): Double? {
val u = body.indexOf('_')
if (u < 0) return null