Weather station CT1EIF-11 not appearing on aprs.fi

26 views
Skip to first unread message

Rui Ferreira (CT1EIF)

unread,
Aug 24, 2025, 6:25:51 AMAug 24
to aprs.fi
Hello all,

I am the operator CT1EIF and have configured my weather station (PWS IMOURA16) to send data via APRS-IS. From my side, the system is fully functional and the packets are accepted by the server, but the station does not appear on the aprs.fi map.

Example lines from my local log:

Starting continuous upload of weather data to aprs.fi... Packet generated: !3807.68N/0727.15W_/t034h25r000s007d108 Login response: # aprsc 2.1.19-g730c5c0 Packet accepted by APRS-IS: !3807.68N/0727.15W_/t034h25r000s007d108

Configuration details:

  • Callsign: CT1EIF-11

  • Location: 38.1281N / 7.4525W (Moura, Beja, Portugal)

  • Port: 14580 (APRS-IS)

  • Passcode: verified successfully

I would like to confirm if there are any limitations, delays, or additional requirements for my weather station to appear correctly with the WX icon on aprs.fi.

Thank you very much for your support.

Best regards,

Rui
CT1EIF

Heikki Hannikainen

unread,
Aug 24, 2025, 6:30:49 AMAug 24
to aprs.fi
On Sat, 23 Aug 2025, Rui Ferreira (CT1EIF) wrote:

> Hello all,
>
> I am the operator CT1EIF and have configured my weather station (PWS IMOURA16) to send data via APRS-IS. From my side, the system is fully functional
> and the packets are accepted by the server, but the station does not appear on the aprs.fi map.
>
> Example lines from my local log:
>
> Starting continuous upload of weather data to aprs.fi... Packet generated: !3807.68N/0727.15W_/t034h25r000s007d108 Login response: # aprsc
> 2.1.19-g730c5c0 Packet accepted by APRS-IS: !3807.68N/0727.15W_/t034h25r000s007d108

> I would like to confirm if there are any limitations, delays, or additional requirements for my weather station to appear correctly with the WX icon
> on aprs.fi.

Hi,

There are some problems with the packets you're sending, the errors will
be reported in the aprs.fi raw packets display:

https://aprs.fi/?c=raw&call=CT1EIF-11&limit=50&view=normal

- There are apparently two different stations sending position and weather
packets with different coordinates. Weather stations are not supposed to
be moving or jumping around. If you have two weather stations, they need
to use different SSIDs.

- Previously one station had coordinates incorrectly formatted, but that
seems to have been fixed.

- Hessu

Heikki Hannikainen

unread,
Aug 24, 2025, 6:55:30 AMAug 24
to aprs.fi
On Sun, 24 Aug 2025, Heikki Hannikainen wrote:

> There are some problems with the packets you're sending, the errors will be
> reported in the aprs.fi raw packets display:
>
> https://aprs.fi/?c=raw&call=CT1EIF-11&limit=50&view=normal
>
> - There are apparently two different stations sending position and weather
> packets with different coordinates. Weather stations are not supposed to be
> moving or jumping around. If you have two weather stations, they need to use
> different SSIDs.
>
> - Previously one station had coordinates incorrectly formatted, but that
> seems to have been fixed.

Additionally, if you look at the decoded packets, only one of the station
gets the weather encoded correctly. The other one is not sending a
correctly formatted weather packet and aprs.fi is not decoding it. It's
probably the capital 'G' instead of 'g' for wind gust.

https://aprs.fi/?c=raw&call=CT1EIF-11&limit=5&view=decoded

- Hessu

Rui Ferreira

unread,
Aug 24, 2025, 11:48:30 AMAug 24
to apr...@googlegroups.com

Rui Ferreira <ct1...@gmail.com> escreveu (domingo, 24/08/2025 à(s) 16:37):
I changed SSID to -13 to do new test

Rui Ferreira <ct1...@gmail.com> escreveu (domingo, 24/08/2025 à(s) 16:35):

Hello, Heikki Hannikainen

Thanks for your answer, but it is not easy for the station to send packages to APRS.fi, I am using a 7 -in -1 metereological station VEVOR  YT60234 connected to weather underground and an Raspberry Pi5 that collects the data and sends them (should send) to APRS. This is the script I'm using, I've made hundreds of changes but I haven't got it right yet, at the beginning still sent packages but the data were wrong, the current temperature in my city is 33ºC and APRS.fi appeared -2.2ºC

 Thanks 
Rui - CT1EIF


#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""
Automatic weather station data upload to APRS-IS for aprs.fi
Includes temperature, humidity, wind, gusts, rain, and pressure
WX packet uses separate SSID to avoid conflicts
"""

import requests
import socket
import time

# ===== CONFIGURATION =====
STATION_ID = "IMOURA16"
API_KEY_WU = "xxxxxxxxxxxxxxx" 
CALLSIGN = "CT1EIF-13"  # Different SSID for WX
PASSCODE = "18613 " 
SERVER = ("euro.aprs2.net", 14580)
LAT = "3807.92N"
LON = "00726.94W"
INTERVAL = 300  # seconds

# ===== FUNCTION TO GET WEATHER DATA =====
def get_weather_data():
    try:
        url = f"https://api.weather.com/v2/pws/observations/current?stationId={STATION_ID}&format=json&units=m&apiKey={API_KEY_WU}"
        r = requests.get(url, timeout=10)
        obs_json = r.json()
        obs = obs_json["observations"][0]
        metric = obs["metric"]

        temp = int(round(metric["temp"]))
        hum = int(round(obs["humidity"]))
        winddir = int(round(obs["winddir"]))

        # Wind in knots, minimum 2 kt
        windspd = max(2, int(round(metric.get("windSpeed", 0) * 1.94384)))
        windgust = max(windspd, int(round(metric.get("windGust", 0) * 1.94384)))

        # Rain
        rain_1h = int(round(metric.get("precipTotal", 0)))  # 1h
        rain_24h = int(round(metric.get("precipTotal", 0))) # adjust if available
        rain_midnight = 0  # since midnight

        # Pressure in hPa*10, rounded to plausible range 1000-1030 hPa
        pressure = int(round(metric.get("pressure", 1017.8) * 10))
        if pressure < 10000:
            pressure = 10000
        elif pressure > 10300:
            pressure = 10300

        print(f"DEBUG: temp={temp}°C, hum={hum}%, winddir={winddir}°, windspd={windspd} kt, windgust={windgust} kt, rain1h={rain_1h} mm, pressure={pressure}")
        return temp, hum, winddir, windspd, windgust, rain_1h, rain_24h, rain_midnight, pressure

    except Exception as e:
        print("Error fetching weather data:", e)
        # safe fallback
        return 33, 15, 275, 2, 2, 0, 18, 0, 10178

# ===== FUNCTION TO BUILD APRS PACKET =====
def build_aprs_packet(temp, hum, winddir, windspd, windgust, rain_1h, rain_24h, rain_midnight, pressure):
    payload = f"!{LAT}/{LON}_WX_"
    payload += f"{winddir:03d}/{windspd:03d}G{windgust:03d}"  # G uppercase
    payload += f"t{temp:03d}h{hum:02d}r{rain_1h:03d}p{rain_24h:03d}P{rain_midnight:03d}b{pressure:05d}"
    packet = f"{CALLSIGN}>APRS,TCPIP*:{payload}"
    return packet

# ===== MAIN FUNCTION =====
def send_aprs():
    while True:
        try:
            temp, hum, winddir, windspd, windgust, rain_1h, rain_24h, rain_midnight, pressure = get_weather_data()
            packet = build_aprs_packet(temp, hum, winddir, windspd, windgust, rain_1h, rain_24h, rain_midnight, pressure)
            print("Generated packet:", packet)

            s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            s.settimeout(20)
            s.connect(SERVER)

            # login
            login = f"user {CALLSIGN} pass {PASSCODE} vers WX-Station 1.0\n"
            s.sendall(login.encode())
            time.sleep(2)

            # send packet
            s.sendall((packet + "\n").encode())
            print("Packet sent successfully!")

            resp = s.recv(1024).decode(errors="ignore")
            print("Server response:", resp.strip())

            s.close()
            time.sleep(INTERVAL)

        except Exception as e:
            print("Connection/send error:", e)
            time.sleep(10)

# ===== EXECUTION =====
if __name__ == "__main__":
    print("Starting automatic weather data upload to APRS-IS...")
    send_aprs()

--
You received this message because you are subscribed to the Google Groups "aprs.fi" group.
To unsubscribe from this group and stop receiving emails from it, send an email to aprsfi+un...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/aprsfi/f1916dcd-b8f-5cad-a1df-c7e3664a383e%40hes.iki.fi.

Heikki Hannikainen

unread,
Aug 24, 2025, 11:51:05 AMAug 24
to apr...@googlegroups.com

Hello,

Apparently you have a problem with the python script you're trying to use
to upload data to APRS-IS.

This is off-topic for this group, as the problem is not for aprs.fi
itself, but rather an APRS-IS client. Please look for a forum supporting
the weather software, or the source of the script you're using.

aprs.fi reports decoding problems in the raw packets view quite well,
that feature can be used to diagnose encoding problems.

73!
> To view this discussion visit https://groups.google.com/d/msgid/aprsfi/CABTbDxR_5oNEtoW01hC0iJbhxihgznjnGfsRftr4W0%2B2Tp%2BvtQ%40mail.gmail.com.
>
>

- Hessu

Ricardo Guzman

unread,
Aug 24, 2025, 12:02:54 PMAug 24
to aprs.fi
Hi,

CT1EIF-13 is sending regular packets (as just reviewed them on aprs.fi raw packets


on your python script you are not uploading the Temperature as Fahrenheit  (Celsius should be transformed to upload it)


CA2RXU
Reply all
Reply to author
Forward
0 new messages