View Full Version : Raspberry pi 3B+ (sa ruleze un post de radio)
cipryDXfeed
07-02-25, 20:47
Va salut. Vreau sa rulez cu acesta placa un anume post de radio ex : http://89.238.227.6:8002 sa porneasca automat in caz de reboot si un script sa verifice daca ruleaza acest post de radio
Vreau ceva idei daca va rog. multumesc.
---------- Post added at 20:47 ---------- Previous post was at 20:45 ----------
Eu m-am gandit cu vlc sa ruleze , am incercat ceva script - uri dar nu am reusit sa ruleze in mod automat.
1️⃣ Instalarea VLC (dacă nu e deja instalat)Deschide un terminal pe Raspberry Pi și rulează:
sudo apt update && sudo apt install -y vlc
2️⃣ Crearea unui script pentru a porni automat postul de radioCreează un fișier nou, de exemplu radio.sh, și editează-l:
nano /home/pi/radio.sh
Adaugă următorul conținut:
#!/bin/bash
URL="http://89.238.227.6:8002"
# Verifică dacă VLC rulează deja
if ! pgrep -x "vlc" > /dev/null; then
cvlc --no-video "$URL" &
fi
Salvează cu CTRL+X, apoi Y și Enter.
Fă scriptul executabil:
chmod +x /home/pi/radio.sh
3️⃣ Configurarea pornirii automate la rebootAdaugă comanda în crontab pentru utilizatorul pi:
crontab -e
La sfârșitul fișierului, adaugă:
@reboot /home/pi/radio.sh
Salvează cu CTRL+X, apoi Y și Enter.
4️⃣ Script de verificare periodicăCreează un nou script pentru a verifica dacă VLC rulează și să-l repornească dacă s-a oprit.
nano /home/pi/check_radio.sh
Adaugă următorul conținut:
#!/bin/bash
URL="http://89.238.227.6:8002"
# Verifică dacă VLC rulează
if ! pgrep -x "vlc" > /dev/null; then
echo "$(date): VLC nu rulează. Se repornește..." >> /home/pi/radio.log
cvlc --no-video "$URL" &
else
echo "$(date): VLC rulează corect." >> /home/pi/radio.log
fi
Salvează și fă scriptul executabil:
chmod +x /home/pi/check_radio.sh
5️⃣ Programarea verificării automate la fiecare 5 minuteDeschide crontab:
crontab -e
Adaugă linia:
*/5 * * * * /home/pi/check_radio.sh
Aceasta va verifica și reporni VLC la fiecare 5 minute dacă s-a oprit.
Testare
Poți verifica dacă totul funcționează corect repornind Raspberry Pisudo reboot
Pentru a vedea logurile:cat /home/pi/radio.log
Acum, Raspberry Pi-ul tău va reda automat postul de radio la fiecare pornire și va verifica periodic dacă VLC este activ. ????
copy-paste din superficiala!... :))) :beer:
cipryDXfeed
07-02-25, 22:29
multumesc frumossss
check_radio.sh ruleaza manual
nu porneste in reboot sau la 5 min
---------- Post added at 22:08 ---------- Previous post was at 21:56 ----------
Fri 7 Feb 18:37:57 GMT 2025: VLC nu rulează. Se reporneste...
Fri 7 Feb 18:44:20 GMT 2025: VLC ruleaza corect.
Fri 7 Feb 18:51:13 GMT 2025: VLC nu rulează. Se reporneste...
Fri 7 Feb 18:53:13 GMT 2025: VLC ruleaza corect.
Fri 7 Feb 19:04:25 GMT 2025: VLC ruleaza corect.
ce am observat cand ramane fara net se blocheaza nu mai porneste script - ul nici manual numai dupa un reboot
auto start nu merge posibil sa fie din crontab ceva
---------- Post added at 22:29 ---------- Previous post was at 22:08 ----------
merge si crontab gresisem ceva :agresiv:
singura problema mai este : daca ramane fara net si revine netul numai merge numai dupa un reboot
Dacă VLC rămâne blocat când se pierde internetul, putem modifica scriptul check_radio.sh astfel încât să detecteze și problema conexiunii și să repornească VLC dacă nu mai primește stream-ul.
???? Soluție: Verificare conexiune + repornire VLCModificăm scriptul check_radio.sh pentru a:
Verifica dacă VLC rulează.
Verifica dacă fluxul de radio este activ.
Dacă fluxul nu funcționează, oprește VLC și îl repornește.
???? Modificare check_radio.shEditează fișierul:
nano /home/pi/check_radio.sh
Șterge conținutul existent și adaugă:
#!/bin/bash
URL="http://89.238.227.6:8002"
# Verifică dacă VLC rulează
if ! pgrep -x "vlc" > /dev/null; then
echo "$(date): VLC nu rulează. Se pornește..." >> /home/pi/radio.log
cvlc --no-video "$URL" &
exit 0
fi
# Verifică dacă fluxul de radio funcționează (timeout 10 secunde)
if ! curl --silent --head --fail --max-time 10 "$URL"; then
echo "$(date): Conexiunea la radio a căzut. Se repornește VLC..." >> /home/pi/radio.log
pkill -9 vlc # Oprește VLC forțat
sleep 2 # Așteaptă puțin înainte de restart
cvlc --no-video "$URL" & # Pornește VLC din nou
else
echo "$(date): Fluxul funcționează corect." >> /home/pi/radio.log
fi
Salvează modificările (CTRL+X, apoi Y și Enter).
???? Configurare în crontabPentru a rula verificarea la fiecare 2 minute, editează crontab:
crontab -e
Adaugă:
*/2 * * * * /home/pi/check_radio.sh
Acum, dacă internetul cade și revine, scriptul va detecta și va reporni automat VLC fără să fie nevoie de reboot.
???? Testare
Oprește internetul manual (scoate cablul sau dezactivează Wi-Fi-ul).
Așteaptă 2-3 minute și reconectează internetul.
Verifică logurile pentru confirmare:
cat /home/pi/radio.log
Dacă vrei să testezi forțat, poți opri VLC manual:
pkill -9 vlc
și vezi dacă scriptul îl repornește în 2 minute.
Acum, VLC va rula fără întreruperi, chiar dacă internetul cade și revine! ????
copy-paste!..
cipryDXfeed
07-02-25, 23:01
multumesc frumos.
mai este ceva cand pica netul trebuie oprit si vlc pkill -9 vlc ca sa reporneasca automat
#!/bin/bash
URL="http://89.238.227.6:8002"
# Verifică dacă VLC rulează
if ! pgrep -x "vlc" > /dev/null; then
echo "$(date): VLC nu rulează. Se pornește..." >> /home/pi/radio.log
cvlc --no-video "$URL" &
exit 0
fi
# Verifică dacă fluxul de radio funcționează (timeout 10 secunde)
if ! curl --silent --head --fail --max-time 10 "$URL"; then
echo "$(date): Conexiunea la radio a căzut. Oprire VLC..." >> /home/pi/radio.log
pkill -9 vlc # Oprește VLC forțat
sleep 5 # Așteaptă puțin
echo "$(date): Se repornește VLC..." >> /home/pi/radio.log
cvlc --no-video "$URL" & # Pornește VLC din nou
else
echo "$(date): Fluxul funcționează corect." >> /home/pi/radio.log
fi
echo "$(date): Conexiunea la radio a căzut. Oprire VLC..." >> /home/pi/radio.log
pkill -9 vlc # Oprește VLC forțat
e deja in cod
cipryDXfeed
08-02-25, 17:09
Cand opresc netul nu imi da in log Conexiunea la radio a cazut. Oprire VLC...
Nu se opreste vlc , nu reporneste numai daca ii dau manual pkill -9 vlc
cipryDXfeed
09-02-25, 20:53
Cand opresc netul in log imi zice Fluxul funcționează corect. defat nu functioneaza , cred ca nu stie ca a picat conexiunea la vlc (stream)
???? Soluție mai bună
În loc să verificăm doar conexiunea, vom testa și dacă VLC redă efectiv fluxul. Facem asta citind procesul VLC și output-ul acestuia.
???? Scriptul check_radio.sh Final
#!/bin/bash
URL="http://89.238.227.6:8002"
LOGFILE="/home/pi/radio.log"
# Verifică dacă VLC rulează
if pgrep -x "vlc" > /dev/null; then
# Verifică dacă fluxul este activ (dacă VLC redă audio)
if ! cvlc --intf rc --rc-host localhost:9999 & sleep 2 && echo "status" | nc localhost 9999 | grep -q "state playing"; then
echo "$(date): VLC rulează, dar fluxul este căzut! Se repornește VLC..." >> "$LOGFILE"
pkill -9 vlc
sleep 5
cvlc --no-video "$URL" &
else
echo "$(date): VLC și fluxul funcționează corect." >> "$LOGFILE"
fi
else
echo "$(date): VLC NU rulează! Se pornește VLC..." >> "$LOGFILE"
cvlc --no-video "$URL" &
fi
???? Cum funcționează acum?
✅ Verifică dacă VLC rulează → Dacă nu, îl pornește.
✅ Verifică dacă VLC chiar redă fluxul → Dacă este blocat, VLC este închis forțat (pkill -9 vlc) și repornit.
✅ Înregistrează în radio.log ce se întâmplă, pentru debugging.
???? Configurare în crontab
Acum îl rulăm la fiecare minut:
crontab -e
Adaugă la final:
* * * * * /home/pi/check_radio.sh
???? Testare Manuală
Rulează scriptul manual pentru a verifica dacă merge corect:
bash /home/pi/check_radio.sh
Apoi, verifică logul:
cat /home/pi/radio.log
???? Acum, dacă netul pică și revine, VLC se restartează corect și radioul pornește automat fără să mai fie nevoie de reboot! ????
cipryDXfeed
10-02-25, 21:18
Eroare
pi@raspberrypi:~ $ bash /home/pi/check_radio.sh
VLC media player 3.0.21 Vetinari (revision 3.0.21-0-gdd8bfdbabe8)
[00000055898ad140] main playlist: playlist is empty
[00000055898f5730] [cli] lua interface: Listening on host "localhost:9999".
[00000055898f5730] [cli] main interface error: socket bind error: Address already in use
[00000055898f5730] [cli] main interface error: socket bind error: Address already in use
[00000055898f5730] [cli] lua interface error: Error loading script /usr/lib/aarch64-linux-gnu/vlc/lua/intf/cli.luac: lua/intf/modules/host.lua:225: Cannot listen on localhost:9999
/home/pi/check_radio.sh: line 9: nc: command not found
pi@raspberrypi:~ $
???? SCRIPT NOU FĂRĂ SOCKET / PORTÎnlocuim verificarea pe port și folosim dbus-send pentru a verifica dacă VLC chiar redă fluxul.
???? check_radio.sh Final
#!/bin/bash
URL="http://89.238.227.6:8002"
LOGFILE="/home/pi/radio.log"
# Verifică dacă VLC rulează
if pgrep -x "vlc" > /dev/null; then
# Verifică dacă VLC redă audio folosind dbus
if ! dbus-send --print-reply --dest=org.mpris.MediaPlayer2.vlc \
/org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get \
string:"org.mpris.MediaPlayer2.Player" string:"PlaybackStatus" | grep -q "Playing"; then
echo "$(date): VLC rulează, dar fluxul e căzut! Se repornește VLC..." >> "$LOGFILE"
pkill -9 vlc
sleep 5
cvlc --no-video "$URL" &
else
echo "$(date): VLC și fluxul funcționează corect." >> "$LOGFILE"
fi
else
echo "$(date): VLC NU rulează! Se pornește VLC..." >> "$LOGFILE"
cvlc --no-video "$URL" &
fi
???? CRON pentru verificare automatăAdaugă în crontab -e:
* * * * * /home/pi/check_radio.sh
???? TESTARERulează manual și verifică logul:
bash /home/pi/check_radio.sh
cat /home/pi/radio.log
???? Acum scriptul funcționează fără probleme cu VLC, chiar dacă netul pică și revine! ????
cipryDXfeed
11-02-25, 20:28
se reporneste vlc la 1 min incontinuu
pi@raspberrypi:~ $ bash /home/pi/check_radio.sh
Error org.freedesktop.DBus.Error.ServiceUnknown: The name org.mpris.MediaPlayer2.vlc was not provided by any .service files
pi@raspberrypi:~ $ VLC media player 3.0.21 Vetinari (revision 3.0.21-0-gdd8bfdbabe8)
[000000559cb6f700] dummy interface: using the dummy interface module...
iar in log apare
Tue 11 Feb 19:28:01 EET 2025: VLC ruleaza, dar fluxul e cazut! Se reporneste VLC...
cipryDXfeed
14-02-25, 12:23
Mai sunt ceva sperante / idei? ????
cipryDXfeed
15-02-25, 19:34
ar mai fi varianta asta de monitorizare prin alsamixer dar nu stiu cum sa integrez in codul de sus
import os def check_alsa_audio(): status_file = "/proc/asound/card0/pcm0p/sub0/status" if not os.path.exists(status_file): print("Fișierul de status ALSA nu există. Verifică configurația audio.") return False with open(status_file, "r") as f: status = f.read() if "state: RUNNING" in status: print("Audio rulează pe ALSA!") return True else: print("Niciun sunet redat prin ALSA.") return False if __name__ == "__main__": check_alsa_audio()
---------- Post added at 19:34 ---------- Previous post was at 18:29 ----------
cam asta imi da cand ruleaza audio si cand nu ruleaza prin alsamiser
pi@raspberrypi:~ $ cat /proc/asound/card0/pcm0p/sub0/status
state: XRUN nu ruleaza audio
owner_pid : 817
trigger_time: 190.214803650
tstamp : 0.000000000
delay : 0
avail : 2982
avail_max : 2982
-----
hw_ptr : 7369255
appl_ptr : 7370683
pi@raspberrypi:~ $
----------------------------------------------------------------------
pi@raspberrypi:~ $ cat /proc/asound/card0/pcm0p/sub0/status
state: RUNNING ruleaza audio
owner_pid : 854
trigger_time: 23.790311864
tstamp : 0.000000000
delay : 3924
avail : 419
avail_max : 2422
-----
hw_ptr : 3502455
appl_ptr : 3506446
pi@raspberrypi:~ $
poate aveti experienta mai multa in linux
#!/bin/bash
URL="http://89.238.227.6:8002"
LOGFILE="/home/pi/radio.log"
ALSA_STATUS_FILE="/proc/asound/card0/pcm0p/sub0/status"
# Funcție pentru verificarea sunetului prin ALSA
check_alsa_audio() {
if [ -f "$ALSA_STATUS_FILE" ]; then
if grep -q "state: RUNNING" "$ALSA_STATUS_FILE"; then
echo "$(date): Audio rulează pe ALSA!" >> "$LOGFILE"
return 0
else
echo "$(date): Niciun sunet redat prin ALSA!" >> "$LOGFILE"
return 1
fi
else
echo "$(date): Fișierul de status ALSA nu există!" >> "$LOGFILE"
return 1
fi
}
# Verifică dacă VLC rulează
if pgrep -x "vlc" > /dev/null; then
# Verifică dacă VLC chiar redă audio
if ! check_alsa_audio; then
echo "$(date): VLC rulează, dar NU redă sunet! Se repornește..." >> "$LOGFILE"
pkill -9 vlc
sleep 5
cvlc --no-video "$URL" &
else
echo "$(date): VLC și sunetul funcționează corect." >> "$LOGFILE"
fi
else
echo "$(date): VLC NU rulează! Se pornește VLC..." >> "$LOGFILE"
cvlc --no-video "$URL" &
fi
poate aveti experienta mai multa in linux
eu nu...dar stiu pe cine sa intreb!...:))))
cipryDXfeed
16-02-25, 12:13
da este functional !!! multumesc mult mirel , iti raman dator :drinks:
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions Inc. All rights reserved.