Online TV stream

In: Nincs kategorizálva

11 máj 2010

Vettem nemrég potom 1300 Ft-ért egy TV tunert TeszVeszen. Szerintem bőven jó üzlet volt. Beüzemelni Linuxon nem tartott tovább kb 2 percnél, amíg beraktam a bttv modult a kernelbe és újrafordítottam azt. A modult paraméterezve kell betölteni, valahogy így:

lspci szerint ilyen TV tunert vettem:

01:09.0 Multimedia video controller: Brooktree Corporation Bt878 Video Capture (rev 11)
01:09.1 Multimedia controller: Brooktree Corporation Bt878 Audio Capture (rev 11)

Itt a bttv cardlist-je, innen kikereshető, hogy hányas szám kerül majd a card opcióhoz.

Én így paraméterezem tehát a modult:

modprobe bttv card=78 tuner=5 radio=1

Így létrejön 3 eszköz a /dev alatt:

/dev/radio0 /dev/vbi0 /dev/video0

Ha otthon akarok TV-t nézni, így csak elindítom a tvtime-ot, és jön a sok szenny máris az arcomba. A streameléssel azonban többet kínlódtam, mire minden olyan lett, ahogy én azt elképzelem.

A VLC-t választottam a feladatra, mert úgy gondoltam ez lesz egyrészt a legegyszerűbb, másrészt a legjobb megoldás. Nem hiszem, hogy nagyot tévedtem volna, de nem volt egyszerű… Mivel a tunerről beérkező videót transcodeolni kell, tehát kódolni valami kodek szerint, ezért kellett az ffmpeg mindenek előtt. A debian repositoryban lévő ffmpegben viszont nagyon sok fontos codec nincs benne, licence problémák miatt. Tehát az első feladat, az ffmpeg újrafordítása. Találtam egy nagyon jó leírást rá itt. Aztán jött az első buktató.. Mivel a vlc-hez a kinohoz és egy csomó repo-ból telepített programhoz kell az ffmpeg csomag, ezért nem tehettem meg, hogy uninstallom azt, és majd installom a saját magamnak fordított verziót. Maradt az a megoldás, hogy újrafordítom a debian csomagokat. Ez sem volt bonyolultabb feladat, sőt… A leírást hozzá majd előtúrom, mert nem az én gépemen csináltam, ezért nincs a historymban :) (szerk.: Meglett az URL)

Ez a csomag-újrafordítás megoldotta a codec problémáimat, a VLC már azokra legalább nem panaszkodott. Utána igazából még következett részemről pár óra bénázás, de végül éjjel 1 órára megindult a stream szépen, és azóta is megy, élvezhető minőségben! (10/2 Mbites netje van a streamelő gépnek!)

A VLC-t így indítom jelen pillanatban(lehet még átgondolom, de egyelőre megfelel):

vlc v4l2:///dev/video0 :v4l2-width=320 :v4l2-height=240 :v4l2-tuner-frequency=615250 :input-slave=alsa:// :audio=1 –sout ‘#transcode{vcodec=mp4v,acodec=mp3,samplerate=44100,vb=1300,ab=128,venc=ffmpeg{keyint=200,hurry-up,vt=800000}}:std{access=http,mux=ogg,dst=:8080}’ –ttl 1 -I dummy

Utána bárhonnan a streamhez kapcsolódva egy VLC-vel vagy akár egy mplayerrel teljesen élvezhető minőségű képet és hangot kapok. A VLC opcióit nem nagyon magyaráznám, csak arra hívnám fel a figyelmet, hogy mindegyik ilyen formátimban szerepeljen -> <space>:opció … Én ezért szívtam a hanggal, de amint bekerült a space, megjavult… mókás :)

Screenshotok:

Kicsiben ilyen:

Teljes képernyőn:

Minta videó:

SMS értesítő

In: Nincs kategorizálva

7 máj 2010

Szintén egy régebbi projectemről van szó. Egy fél éve foglalkoztam kb a dologgal, mikor kezembe akadt a régi Siemens C35i telefonom. Adott volt hozzá egy rs232-es adatkábel is, úgyhogy nehéz dolgom nem volt. Illetve nem a szoftveres résszel, ezért is kerül ez a post az elektronika kategóriába.

Mivel a telefon a router gépemen van, ezért nem bonyolult a képlet… Telefon+adatkábel+gammu, az SMSeket pedig egy ilyen script küldözgeti egyelőre, de ezt át fogom írni szerintem, amint lesz időm rá:

TEL=”"
EGYENLEG=”*102#”

######################### Konstansok

#EV=$(date “+%Y”)
#HO=$(date “+%m”)
#NAP=$(date “+%d”)

EV=2010
HO=09
NAP=16

ORA=$(date “+%H”)
PERC=$(date “+%M”)
MP=$(date “+%s”)

####################################x
DF=$(df -h / | grep -i hda1 | awk ‘{print $5}’ | cut -f 1 -d %)
DF_ALARM=20

if [ ! -e /tmp/df_sms ]; then
echo 0 > /tmp/df_sms
fi

if [ $DF -ge $DF_ALARM ]; then

if [ $(cat /tmp/df_sms) -eq 0 ] ; then
echo “Keves a szabad lemezterulet a rootfs-en. ($DF_ALARM%)” | gammu sendsms TEXT $TEL > /dev/null 2>&1
echo 1 > /tmp/df_sms
fi

else
echo 0 > /tmp/df_sms
fi

######################eth check -> eth5
DMESG=$(dmesg | grep -i eth5 | tail -n 1)
DMESG_SEC=$(echo $DMESG | cut -d ] -f 1 | cut -f 2 -d [)
DMESG_SMS=$(echo $DMESG | cut -d ] -f 2)

if [ $(echo $DMESG_SEC | grep -i .) ]; then

if [ ! -e /tmp/ethchk ]; then
echo $DMESG_SEC > /tmp/ethchk
echo $DMESG_SMS | gammu sendsms TEXT $TEL > /dev/null 2>&1
else

if [ $(cat /tmp/ethchk) != $DMESG_SEC ]; then
echo $DMESG_SMS | gammu sendsms TEXT $TEL > /dev/null 2>&1
echo $DMESG_SEC > /tmp/ethchk
fi

fi
fi
#################eth check -> eth4

DMESG=$(dmesg | grep -i eth4 | grep -iv timeout | grep -v promiscuous | tail -n 1)
DMESG_SEC=$(echo $DMESG | cut -d ] -f 1 | cut -f 2 -d [)
DMESG_SMS=$(echo $DMESG | cut -d ] -f 2)

if [ $(echo $DMESG_SEC | grep -i .) ]; then

if [ ! -e /tmp/ethchk2 ]; then
echo $DMESG_SEC > /tmp/ethchk2
echo $DMESG_SMS | gammu sendsms TEXT $TEL > /dev/null 2>&1
else

if [ $(cat /tmp/ethchk2) != $DMESG_SEC ]; then
echo $DMESG_SMS | gammu sendsms TEXT $TEL > /dev/null 2>&1
echo $DMESG_SEC > /tmp/ethchk2
fi

fi

fi

Ahogy látszik, a script nem egy bonyolult dolog, egyelőre csak két hálókártyát figyel és a szabad helyet a rott fs-en. De bármi mással kiegészíthető… A futtatásér a crontab felelős, így minden 10. percben lefut, és ha szükséges kiküldi az adott SMS-t. Tervezem, hogy a közeljövőben átírom esetleg a scriptet egy C kódra, és kicsit okosítom, hogy ha két dolog miatt is küld SMS-t, akkor azt pl. elküldhetné egy üzenetben is, stbstb… Illetve, még gondolkozok abban, hogy valamiféle daemont írni, és hozzá modulokat. Még eldől mi lesz a sorsa, de egyelőre ez a felállás is megteszi :)

A project nehezebbik része azonban nem ez, hanem a telefon tápellátása. RS-232-es kábelen nem kap tápot a készülék mint az USB-s kábeleknél, ezért kellett valami megoldás. A telefon akksija is már annyira oda van(volt, amég szét nem szedtem:$), hogy alig lehetett bekapcsolni a telót, PIN beírása után szinte egyből lemerült, és annyi. Hobbielektronikán kaptam egy lm317-es ICre épülő tápegységhez kapcsolási rajzot, amit meg is építettem.(Kapcsolási rajz és instrukciók alul). Azonban a telefon ezzel a táppal is ugyan azt játszotta, mint a rossz akkuval… Ezért kapott még egy 4700 uF-os pufferkondit, amitől aztán meggyógyult, és azóta is tökéletesen működik. SIM kártyának egy T-mobilos Domino kártya van benne, így volt a legolcsóbb nekem. És egy 3000-es feltöltéssel kihúz nálam egy évet simán.. :)

Itt érhető el az említett kapcsolási rajz, amit egy hobbielektronikás fórumozótól(Horváth Zsolt) kaptam a következő instrukciókkal:

1, Az R2-t nem szabad beültetni!(Át kell kötni egy kábellel)
2, Cur_meas -t sem kell beültetni…

IPv6-in-IPv4 tunnel Linuxal

In: Nincs kategorizálva

21 ápr 2010

Ez még egy régebbi project, csak mostanában eszembejutott, hogy megérhet egy posztot, mivel annak idején én is mókáztam vele eleget… Szóval, az alap probléma: Adott egy /56-os IPv6 tartomány, és egy natolt IPv4-es hálózat. A router gépemen felhúztam pár IPv6-os IP-t amit használni szeretnék, de a benti gépeken ettől még ugye nekem nincs IPv6-om… Első kézenfekvő megoldásnak a radvd tűnt, amit aztán nem sikerült működésre bírnom… Ezért maradt a tunnelezős megoldás… A routeren van egy tunnel endpoint a másik meg a benti gépeken. A routeren így néz ki a tunnel scriptje:

echo 1 > /proc/sys/net/ipv6/conf/all/forwarding

/sbin/ip tunnel add sit1 mode sit ttl 64 remote 192.168.0.100 local 192.168.0.104
/sbin/ip link set dev sit1 up
/sbin/ip -6 addr add 2a01:270:dd00:2000:1::/80 dev sit1
/sbin/ip -6 route add 2a01:270:dd00:2000:1::/80 via 2a01:270:dd00:2000:1::1 dev sit1 metric 1

Itt ez esetben a 192.168.0.100-as IPv4 című benti gépre a 192.168.0.104 című routergépről átadom a 2a01:270:dd00:2000:1::/80-as tartományt. Íme a “kliens” oldal:

/sbin/iptunnel add net6 mode sit local 192.168.0.100 remote 192.168.0.104  ttl 64
/sbin/ifconfig net6 up
/sbin/ifconfig net6 add 2a01:270:dd00:2000:0001::1
/sbin/route -A inet6 add 2000::/3 dev net6

Ez a rész szerintem elég egyértelmű… Nekem jelenleg így működik otthon az IPv6, már sok éve, de lassan ideje lesz natív IPv6 hálót kiépítsek otthonra… ;]

Képkocka grabelés MJPEG streamből

In: Nincs kategorizálva

19 ápr 2010

Vettem egy webkamerát nemrég, és úton van hozzá az USB repeater kábelem is valószínűleg.:) A kamera fel lesz szerelve a széldeszkára, és majd kattintásra belátom az udvarunkat. Mire megtaláltam mindenből az ideális szoftvert, az beletelt egy kis időbe… Most a következő felállással elégedett vagyok úgy ahogy: linux kernelben uvc driver a kamerának, ebből adódóan néhány webcam streamer program nem látja… A streamelést a motion végzi, nagyon okos jószág, bár elsősorban a kameraképen történő mozgás érzékelésére van kihegyezve. Ez így már önmagában működő kombó, de én még írtam hozzá egy php scriptet, amivel minden órában egy-két képet kiszedek az mjpeg streamből és utána a nap végén a 24-48 képet összefűzöm a jpegtoavi-val egy avi videóba.. Így, egy szerintem látványos stop motion videót kapok.(Pl.: ez vagy ez) :) A webkamera képe elméletileg 1-2 héten belül elérhetővé válik a weblapomon.

A script:

<?

$camurl=”http://xxx.xxx.xxx.xxx:port/”;

$f = fopen($camurl,”r”);
$r=stream_get_contents($f,20480);
fclose($f);

$start = strpos($r,”\r\n\r\n”)+4;
$end= trim(substr($r,strpos($r,”Content-Length:”)+17,10));
$frame = substr($r,$start,$end);

$img=imagecreatefromstring($frame);
imagejpeg($img,”webcam”.date(“H”).”.jpg”,100);
imagedestroy($img);

?>

NYÁK készítés vasalóval

In: Nincs kategorizálva

12 ápr 2010

Ez a post inkább a kezdőknek szól: egy egyszerű (vagy csak annak tűnő?:) ) megoldást mutatok NYÁK készítésre.

Igazából ez a módszer valahol számomra is újdonság, de működő és egyszerű dologról van szó. A nehézsége az apró részletekben rejlik szerintem… Mindenesetre a tapasztalataim ezt mutatják :) Elkezdtem egy új projectet, amiről majd lesz szó a későbbiekben itt a blogon. Egy unix kompatibilis AVR és PIC égetőt szeretnék megépíteni. Ennek kapcsán került elő a NYÁK készítés, és mivel én éves szinten annyira kevés panelt gyártok, hogy nekem nem éri meg beruházni UV csövekbe meg fotolakk meg fotonyák meg társaiba, így maradt számomra a vasalás. Hogy is néz ez ki gyakorlatban? Találtam róla egy nagyon jó videót youtube-on. Íme:

Nem tűnik bonyolultnak az eljárás, és valóban nem is az. Csak az olyan apróságokra kell odafigyelni, hogy a műnyomópapíron ne follyon össze a tinta vagy mikor szeditek le vasalás után a papírt a panelról ne jöjjön vele a festék stbstb.. Ilyen szempontból elég pepecselős tud lenni, de ha egyszer kitapasztalja az ember akkor szerintem nagyon gyors és kényelmes módja az áramkör készítésnek.

Következő posztom remélem már a kész AVR és/vagy PIC égetőt mutatja be ;]

Update #1: Találtam még egy elég jó leírást, bár itt vasaló helyett sütővel, illetve lamináló géppel dolgozik a szerző, ami szerintem kicsit macerásabb.

RS-232 hőmérő Dallas IC-vel

In: Nincs kategorizálva

7 ápr 2010

Ez egy régebbi projectem, egész pontosan 2009 nyarán foglalkoztam vele. Egy nagyon egyszerű kapcsolásról van szó, aminek a lelke egy Dallas IC. Kalibrálást nem igényel, -55 °C és +125°C között képes mérni a hőmérsékletet 2 vagy akár 8 tizedes pontosságig is! Én a DS1621 IC-vel építettem meg a panelt, de a DS1624 is teljesen kompatibilis, csak pontosabb értékeket produkál. Az adatokat a hardware-ről RS-232-es porton lehet lekérdezni. A windowsos programot erről az oldalról tudjátok letölteni, az általam írt unixos szoftvert pedig itt éritek el.

A kapcsolási rajz:

Egy apróság, ami miatt szívtam… A feszültség stabilizátor IC lábkiosztására érdemes odafigyelni, mert nekem sikerült először fordítva beültetnem… ;]

Néhány kép az elkészült alkotásról:

Ez a kapcsolás 8 IC kezelésére képes, de én csak kettőt használok. Az egyik chip a nyákra van ültetve, ahogy a képen is látszik, a másik pedig egy 4 eres kábellel van kivezetve a széldeszka alá, egy sima 5 méteres telefonkábellel.

Sokat gondolkodtam azon is, hogy hogyan tudnám egyszerűen de átláthatóan megjeleníteni a mért értékeket, akár visszamenőleg is… Ezért az rrdtool mellett döntöttem. Ez lett belőle.

A kezdet…

In: Nincs kategorizálva

7 ápr 2010

Nos, sok évi tervezgetés után, elhatároztam, hogy nem várok tovább, hanem elindítom ezt a blogot. Sokszor felmerült már bennem, hogy a projectjeimet valahol közzé kellene tennem, de most végre tettem is valamit az ügy érdekében. Ezen a blogon az épp aktuális fejlesztéseimről olvashattok majd. Igyekszek minnél több érdekes posztot generálni, de ígérni nem akarok semmit. Ahogy lesz egy ötletem és eljut a megvalósítás stádiumába, fel fog ide kerülni, mindenféle magyarázattal és illusztrációval. Néhány régebbi, de szerintem érdekes munkámmal fogom kezdeni a publikálást.

Kellemes böngészést!;]

Néhány szó az oldalról

Szabadidőmben programokat, weblapokat írok, unix like rendszereket adminolok vagy áramköröket építek többnyire. Ezt a blogot azért hoztam létre, hogy a projectjeimet mindenki számára elérhetővé tegyem. Remélem sokaknak segítenek majd az itt megosztott tapasztalataim, tippeim. Kellemes böngészést! ;]

Photostream

  • Kronosz: kókemény Karoj :] [...]
  • karika200: Hát, a kamera képére én is kíváncsi leszek.. a szomszédokra meg kevésbé.. :D [...]
  • DoRcY: Tök jó, és majd nézhetjük, ahogy a szomszédok lapátolják a .... Na mindegy .. Vagy ahogy ül [...]
  • DoRcY: :$ Énis! :D Luwwcsi (L) [...]
  • ebertek: én is. ;) --- azt írta a cucc, hogy túl rövidre sikerült a kommentem, úgyhogy ezt a sort még [...]

Advertisement

Geocaching

Geocaching