HAM, APRS a další
Asus WL500 s Oleg FW a APRS
Modem APRS 51 TNC
Asus WL500 s Oleg FW a APRS
Doma už několik let měřím akumulační kotelnu na pevná paliva
pomocí routeru Asus WL500dx s alternativním FM Oleg, zatím 10-ti čidly Dallas DS18S20.
Jelikož 10 čidel značne zatěžuje pasivní převodník RS232/1wire
a po přidání 7. čidla se začaly na lince množit poruchy přenosu dat, zabudoval jsem do routeru na seriový port (lišta na plošném spoji)
aktivní převodník sběrnice s IO Dallas DS2480B (bylo nutno přispůsobit vstup +-12V Tx/Rx DS2480B 5V Tx/RX portu v routeru).
Nedávno jsem si začal hrát s APRS (licenci mám teprve od jara 2015) a tak jsem dumal, že bych WL500 měřící kotelnu využil i k APRS funkci.
Vyřešil jsem to celkem snadno, naistaloval jsem do routeru balíček python 2.6 a pomocí shell skriptu volám meřící rutinu,
parametr pak předám pythonovskému scriptu, který hodnoty odešle internetem do APRS přes ADSL konektivitu mého domácího QTH.
Jelikož mám pocit, že JO80QD a okolí není moc kvalitně APRS pokryto, ač mám za kopcem OK0X, který se chlubí že je iGate
a asi 10km daleko je další iGate SR6NKB s 9W a dosahem 105km (zřejmě směrováno na Polsko), zvažuji že bych zde něco malého pro
lokální pokrytí doplnil.
No snad na to přijdu jak to provést s pomocí WL500dx, ale pro jistotu
jsem 5.11. v Číně na aliexpressu objednal
APRS 51 TNC s BTmodulem (desku bez krabičky za 16USD,
modem v krabičce, se sítovým napájecím adaptérem CAT a USB kabely vyjde zhruba na 90 USD).
aktualizace 22.1.2016: Tak vše je jinak, blbě jsem inzerát vyhodnotil, neprodávali desku modemu, jak ukazovali na fotu, ale jen BT modul k modemu,
takže jsem štastným majitelem BT modulu za 16USD, a to se vyplatí. >:-( , holt si modem budu muset splácat z Arduina za 1,77USD
Arduino nano 3.0
Ale teď zpět k původnímu tématu:
Do adresáře /opt (kde je přimountovaná USB flashka se SW z IPKG repozitářů OLeg a s mým SW) jsem přidal
shellový script spouštěný cronem 28. a 58. minutu (v tu dobu je WL500 málo vytížen):
#!/opt/bin/bash
# změřím teplotu ve xx. st.F a pošlu jako WX stanici OK3JS-6
Toutempf=`/opt/bin/digitemp_DS9097U -q -r 800 -t 8 -c /opt/APRSconf.digi.cnf -s /dev/tts/1 -o "%.0F"`
python2.6 /opt/APRS_WX_2.py $Toutempf
# změřím telotu ve xx.x st.C a pošlu jako home QTH test OK3JS-15
Toutemp=`/opt/bin/digitemp_DS9097U -q -r 800 -t 8 -c /opt/APRSconf.digi.cnf -s /dev/tts/1 -o "%.1C"`
python2.6 /opt/APRS_WX.py $Toutemp
jeden z pythonových scriptů (inspiraci jsem převzal od OK5TVR):
# OK3JS merici server kotelna Zelezna + APRS WX
import serial
import time
import socket
import sys
from decimal import *
import datetime
# TCP/IP connect to APRS server
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('czech.aprs2.net',14587)
mes = ""
sock.sendall(mes)
mes = "user OK3JS-15 pass xxxxxx" + chr(10) #xxxxx - heslo do APRS *)
sock.sendall(mes) *)
Tout = sys.argv[1] *)
#VHF ant
mes = "OK3JS-15>APRS,TCPIP*:" + "!5007.72N/01721.82E-WX Vrbno.p.P.-Zelezna Tout= " + Tout + " st.C, Asus Wl500dx....QRV OK0X & 145.500 test routeru" + chr(10) *)
sock.sendall(mes) *)
*) varianta pythonovského scriptu pro WX objekt (SSID 6) odesílá data o teplotě v celých st.Fahrenheita, ty se až na APRS sreveru převedou na st. Celsia s desetinnou částí
pro zobrazení v mapět APRS. Jelikož jde o textový řetezec, kde teplota má tři znaky a digitemp_DS9097U vrací číslo, musí se naměřená
teplota upravit z 2 místného čísla na 3mistný text případně doplněný o znak mínus (-30C=-22F, 0C=32F, 37C=98, 40C=104F),
teploty přes 37 st.C nepředpokládám, proto není ošetřeno případné 3 místné číslo teploty ve Fahrenheitech. Při nesprávném formátu odesílaného řetězce
nedojde k aktualizaci dat na serveru APRS, proto jsou neměřené povinné údaje o rychlosti a směru větru odsílany jako náhradní hodnota "tečky"
a za znak t je vložen 3 místný řetezec s hodnotou teploty ve Fahrenheitech.
Jen pro zajímavost, při odesílání pozice se uvádí hodnota směru pohybu (azimutu) ve stupních/rychlost v knotech (uzlech) a nadmořský výška A= ve stopách.
# ----- Začátek varianty pro WX objekt
mes = "user OK3JS-6 pass xxxxxx" + chr(10) #xxxxx - heslo do APRS
sock.sendall(mes)
Toutf = sys.argv[1]
Toutf=int(Toutf)
# minus -10 a vetsi kosa
if Toutf < -9:
Toutf = abs(Toutf)
t_out = str(Toutf)
Toutf = "{0:>2}".format(t_out)
Toutf = "-" + Toutf
# minus 0 az -9
elif Toutf < 0:
Toutf = abs(Toutf)
t_out = str(Toutf)
Toutf = "{0:>1}".format(t_out)
Toutf = "-0" + Toutf
# mensi nez 10
elif Toutf < 10:
t_out = str(Toutf)
Toutf = "{0:>1}".format(t_out)
Toutf = "00" + Toutf
# 10 a vetsi
else:
t_out = str(Toutf)
Toutf = "{0:>2}".format(t_out)
Toutf = "0" + Toutf
mes = "OK3JS-6>APRS,TCPIP*:" + "!5007.73N/01721.84E_.../...g...t" + Toutf + "xARM router Asus " + chr(10)
sock.sendall(mes)
# ----- Konec varianty pro WX objekt
mes=" "
sock.sendall(mes)
time.sleep (1)
mes = "OK3JS-15>APRS,TCPIP*:" + chr(10)
sock.sendall(mes)
sock.close()
a výsledek vidíme zde:
OK3JS na APRS.FI
čerpáno z :
http://www.ok5tvr.cz/?p=894
APRS protokol od str.62
http://www.lumidan.eu/article/30-instalace-oleg-firmware-na-asus-wl500g-premium/
http://cooper.regionaliste.cz/category/firmware
http://koppel.cz/cdmawifi/
a z dnes již nefunkčního webu http://kratochvilovi.net
zpět na menu
Modem APRS 51 TNC
bude doplněno až po jeho otestování, zatím je modem na cestě z Číny
zpět na menu
zpět na menu