Тренувальний Міні-контест на УКХРегламент контестаСтатистика контеста
0 Користувачів і 5 Гостей дивляться цю тему.
можна в двох словах різницю між рефлектор, репітер, симплекс і нетлогік?
яким чином логічно організувати мережу з 3 і більше вузлів одного чи різних рівнів (всі репітери чи всі симплексні радіо, чи так і сяк.) ?
чому remotetrx виділений в окремий застосунок?
p.s. пакет дуже цікавий, але з хелпами туго. функцій більше ніж відповідей в інтернеті =(
Як сконфігурити SvxLink таким чином щоб можна було нажиматися на ptt навіть при відкритому шумодаві?
remoteAudio is written in Go.
apt-get install curl jq sox libsox-fmt-mp3
#!/bin/bash# $ ./weatherinfo.sh weatherinfo.conf# Gets the current conditions from the Forecast.io (DarkSky) API# Pulls the JSON apart using 'jq' and dumps the temperature and# humidity values out.# https://github.com/smeek/darksky# https://darksky.net/dev/register## Adapted SkyLine, June 2018.### Check dependencies#if ! command -v curl >/dev/null 2>&1; then echo "\\"cURL\\" is required but not installed; try \\"apt-get install curl\\" and try again. Abort." exit 1fiif ! command -v jq >/dev/null 2>&1; then echo "\\"jq\\" is required but not installed; try \\"apt-get install jq\\" and try again. Abort." exit 1fiif ! command -v sox >/dev/null 2>&1; then echo "\\"SoX\\" is required but not installed; try \\"apt-get install sox libsox-fmt-mp3\\" and try again. Abort." exit 1fi## Helper Functions#function strip_quotes { tmp=$1 tmp="${tmp%\\"}" tmp="${tmp#\\"}" echo $tmp}## Parse the config file# {# "latitude": , /* 44.8860 */# "longitude": , /* 36.0961 */# "apiKey": , /* 052cadd53fc0f5665554f0154444a003 */# "language": , /* uk */# "units": /* si */# }#CONFIG_FILE=$1#echo "Config. File: $CONFIG_FILE"if [ "$CONFIG_FILE" = "" ]; then echo "Configuration file not specified. Abort." exit 2fiCONFIG=$(cat $CONFIG_FILE)#echo "Config.: $CONFIG"LAT=$(echo $CONFIG | jq '.latitude')LONG=$(echo $CONFIG | jq '.longitude')#echo "Lat./Long.: $LAT,$LONG"API_KEY=$(echo $CONFIG | jq '.apiKey')API_KEY=$(strip_quotes $API_KEY)#echo "API Key: $API_KEY"LANG=$(echo $CONFIG | jq '.language')LANG=$(strip_quotes $LANG)#echo "Language: $LANG"UNITS=$(echo $CONFIG | jq '.units')UNITS=$(strip_quotes $UNITS)#echo "Units: $UNITS"## Query the API#API_URI=https://api.darksky.net/forecastRSP=`curl -sS "${API_URI}/${API_KEY}/${LAT},${LONG}?lang=${LANG}&units=${UNITS}&exclude=minutely,daily,alerts"`#echo "Response: $RSP"CURRENTLY=$(echo $RSP | jq '.currently')HOURLY=$(echo $RSP | jq '.hourly')#echo "Currently: $CURRENTLY"#echo "Hourly: $HOURLY"SUMMARY=$(echo $CURRENTLY | jq -r '.summary')TEMPERATURE0=$(echo $CURRENTLY | jq -r '.temperature' )TEMPERATURE=$(echo $TEMPERATURE0 | awk '{printf "%.0f\\n",$1}')HUMIDITY0=$(echo $CURRENTLY | jq -r '.humidity')HUMIDITY=$(echo $HUMIDITY0*100 | bc | awk '{printf "%.0f\\n",$1}')PRESSURE0=$(echo $CURRENTLY | jq -r '.pressure')#Тиск перетворений в "мм" та обчислений "Барометричною Формулою", при 95м. над рівнем моря#Потрібно зкоригувати під ваші умови...PRESSURE=$(echo $PRESSURE0*0.750064*'e((-0.029*9.81*95)/(8.31*('$TEMPERATURE0'+273)))' | bc -l | awk '{printf "%.0f\\n",$1}')WindBearing=$(echo $CURRENTLY | jq -r '.windBearing')WindSpeed=$(echo $CURRENTLY | jq -r '.windSpeed' | awk '{printf "%.0f\\n",$1}')WindGust=$(echo $CURRENTLY | jq -r '.windGust' | awk '{printf "%.0f\\n",$1}')CurrentTime=$(echo $CURRENTLY | jq -r '.time')SUMMARY3=$(echo "$HOURLY" | jq -r '.data[3].summary')TEMPERATURE3=$(echo "$HOURLY" | jq -r '.data[3].temperature' | awk '{printf "%.0f\\n",$1}')WindSpeed3=$(echo $HOURLY | jq -r '.data[3].windSpeed' | awk '{printf "%.0f\\n",$1}')RSPTIZ=$(echo "$RSP" | jq -r '.timezone')CurrentUnixTime=$(echo "$RSP" | jq -r '.currently.time')CurrentTime=$(TZ=$RSPTIZ date --date="@$CurrentUnixTime" '+%H %M')## Розрахунок напрямку вітра#if [[ "${WindBearing:0:1}" != [0-9] ]]; then : # ignore NA wind directionelif [[ "${WindBearing}" -ge 23 && "${WindBearing}" -le 67 ]]; then WindBearing=$(echo північно-східний)elif [[ "${WindBearing}" -ge 68 && "${WindBearing}" -le 112 ]]; then WindBearing=$(echo східний)elif [[ "${WindBearing}" -ge 113 && "${WindBearing}" -le 157 ]]; then WindBearing=$(echo південно-східний)elif [[ "${WindBearing}" -ge 158 && "${WindBearing}" -le 202 ]]; then WindBearing=$(echo південний)elif [[ "${WindBearing}" -ge 203 && "${WindBearing}" -le 247 ]]; then WindBearing=$(echo південно-західний)elif [[ "${WindBearing}" -ge 248 && "${WindBearing}" -le 292 ]]; then WindBearing=$(echo західний)elif [[ "${WindBearing}" -ge 293 && "${WindBearing}" -le 337 ]]; then WindBearing=$(echo північно-західний)else WindBearing=$(echo північний)fi#echo "CurrentUnixTime: $CurrentUnixTime"#echo "CurrentTime: $CurrentTime"#echo "Summary: $SUMMARY"#echo "Temperature: $TEMPERATURE°C"#echo "Pressure: $PRESSUREмм"#echo "Humidity: $HUMIDITY%"#echo "WindBearing: $WindBearing"#echo "WindSpeed: $WindSpeedм/с"#echo "WindGust: $WindGustм/с"#cho "Summary3: $SUMMARY3"#echo "Temperature3: $TEMPERATURE3°C"#echo "WindSpeed3: $WindSpeed3м/с"WeatherCurrent=$(echo Станом на $CurrentTime в місті Запоріжжя: $SUMMARY, температу́ра-$TEMPERATURE° при атмосферному тиску-$PRESSUREмм, і вологості-$HUMIDITY%, вітер $WindBearing $WindSpeedм/с.)Weather3=$(echo В найближчі 3 години: $SUMMARY3, температу́ра-$TEMPERATURE3°, вітер $WindSpeed3м/с.)AudioDir=/var/spool/svxlink/weatherinfo#echo "WeatherCurrent: $WeatherCurrent"#echo "Weather3: $Weather3"#echo "AudioDir: $AudioDir"sleep 2wget -q -U Mozilla -O $AudioDir/WeatherCurrent.mp3 "http://translate.google.com/translate_tts?ie=UTF-8&client=tw-ob&q=$WeatherCurrent&tl=uk"wget -q -U Mozilla -O $AudioDir/Weather3.mp3 "http://translate.google.com/translate_tts?ie=UTF-8&client=tw-ob&q=$Weather3&tl=uk"sox $AudioDir/WeatherCurrent.mp3 $AudioDir/Weather3.mp3 -r16000 -esigned-integer -b16 -c1 $AudioDir/weather.wav tempo 1.1#mpg123 $AudioDir/WeatherCurrent.mp3#mpg123 $AudioDir/Weather3.mp3
{ "latitude": **.******, "longitude": **.******, "apiKey": "Ваш_ID_DarkSky", "language": "uk", "units": "si"}
# m h dom mon dow user command25 * * * * root /etc/svxlink/weatherinfo.sh /etc/svxlink/weatherinfo.conf55 * * * * root /etc/svxlink/weatherinfo.sh /etc/svxlink/weatherinfo.conf
## Executed when a long identification (e.g. hourly) should be sent# hour - The hour on which this identification occur# minute - The hour on which this identification occur#proc send_long_ident {hour minute} { global mycall; global loaded_modules; global active_module; variable CFG_TYPE; spellWord $mycall; if {$CFG_TYPE == "Repeater"} { playMsg "Core" "repeater"; } playSilence 500; playMsg "Core" "the_time_is"; playSilence 100; playTime $hour $minute; playSilence 500; playFile "/var/spool/svxlink/weatherinfo/weather.wav"; playSilence 500;
зараз творчий застой - до техніки не підходжу...
Интересно, что:remoteAudio is written in Go.
apt-get install curl translate-shell sox libsox-fmt-mp3
#!/bin/bash## Україномовний метео-інформер# Прогноз погоди, взято з сайту Метеонова https://www.meteonova.ua/## SkyLine, January 2019## Код Вашого міста з адресного рядка сайту "Метеонова"CITY_ID="34601"# Тека для аудіо-файлівAudioDir=/var/spool/svxlink/weatherinfo# Завантаження даних прогнозуURI_INP=`curl -sS https://www.meteonova.ua/frc/${CITY_ID}.htm \\| iconv -f cp1251 -t utf8 | grep 'id="frc_text_0"' | sed -e 's||:|g'`# Обробка 1-го рядкаOut_1=$(echo $URI_INP | sed -e 's/[^:]*:\\([^:]*\\).*/\\1/' -e 's|<[^>]*>||g' \\| trans -b ru:uk | sed -e 's| °|°|g' -e 's|помірний|поміірний|g' -e 's|+ |+|g' -e 's|м / с|м/с|g' -e 's| null||g')# Обробка 2-го рядкаOut_2=$(echo $URI_INP | sed -e 's/[^:]*:[^:]*:\\([^:]*\\).*/\\1/' | sed -e 's|<[^>]*>||g' \\| trans -b ru:uk | sed -e 's| °|°|g' -e 's|помірний|поміірний|g' -e 's|+ |+|g' -e 's|м / с|м/с|g' -e 's| null||g')# Обробка 3-го рядкаOut_3=$(echo $URI_INP | sed -e 's/[^:]*:[^:]*:[^:]*:\\([^:]*\\).*/\\1/' | sed -e 's|<[^>]*>||g' \\| trans -b ru:uk | sed -e 's| °|°|g' -e 's|помірний|поміірний|g' -e 's|+ |+|g' -e 's|м / с|м/с|g' -e 's| null||g')# Відладка результатів обробки#echo "Input: $URI_INP"#echo#echo "Output_1: $Out_1"#echo "Output_2: $Out_2"#echo "Output_3: $Out_3"sleep 2# Створення та обробка аудіо-файлівwget -q -U Mozilla -O $AudioDir/Out_1.mp3 "http://translate.google.com/translate_tts?ie=UTF-8&client=tw-ob&q=$Out_1&tl=uk"wget -q -U Mozilla -O $AudioDir/Out_2.mp3 "http://translate.google.com/translate_tts?ie=UTF-8&client=tw-ob&q=$Out_2&tl=uk"wget -q -U Mozilla -O $AudioDir/Out_3.mp3 "http://translate.google.com/translate_tts?ie=UTF-8&client=tw-ob&q=$Out_3&tl=uk"#sox $AudioDir/Out_1.mp3 $AudioDir/Out_2.mp3 -r16000 -esigned-integer -b16 -c1 $AudioDir/weather.wav tempo 1.0sox $AudioDir/Out_1.mp3 $AudioDir/Out_2.mp3 $AudioDir/Out_3.mp3 -r16000 -esigned-integer -b16 -c1 $AudioDir/weather.wav tempo 1.0
мене ще цікавить можливість "читання" поточних метеоданих зі своєї домашньої метеостанції. імпортуючи дані через JSON чи щось таке.
п.с. в аудіозаписі вийшло "помірний атмосферний тиск" :-D короче в TTS туго з пунктуацією трохи. шкода україномовні движки практично ніхто не розвиває у нас =(
Ні. Звучало так: