From d4b83e856e7f8e0ce11901d858764c20e570ebad Mon Sep 17 00:00:00 2001 From: Dmitri Popov Date: Mon, 11 Feb 2019 21:58:08 +0100 Subject: [PATCH] Add DLNA --- README.md | 2 ++ img/rc.png | Bin 18378 -> 23508 bytes scripts/index.php | 10 ++++++++++ scripts/minidlna.sh | 44 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 56 insertions(+) create mode 100755 scripts/minidlna.sh diff --git a/README.md b/README.md index 477e5c5..0e30a10 100644 --- a/README.md +++ b/README.md @@ -50,6 +50,8 @@ The exact steps depend on the backup mode. 1. Point the browser to *http://127.0.0.1:8000* (replace *127.0.0.1* with the actual IP address of the Raspberry Pi). 2. Start the desired action by pressing the appropriate button. +The access the contents of the storage device, plug it into the Raspberry Pi and press the **DLNA SERVER** button. You can then use a uPnP application on any device on the same network to browse and view the contents of the storage device. + ## Problems? diff --git a/img/rc.png b/img/rc.png index 75c90a967481068f7ba0ea7d8e4fba6496a51cc1..15b020234e8839b91edcccbe7f380982e2aa1e43 100644 GIT binary patch literal 23508 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 Yi7H#4vYDF-!Z%tT$2{H3-7ehu7bg<@Y5)KL literal 18378 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%0A_`^2)`7+SgDr z{}b1(4~#dU>2*O?eTqE8?Pf+sgQU2pMUvaZn}l`PkXZks9&sVl6qBJcUtr$hJnzh$ z=P*`2U9N`b|A+(t1NFSTd8CU1t|Rtl?{gASJ$TTg1C%&$ z{gQuK;?u|FzElZ3Xt_r_Mvu}J3vh{0KvaTu>9fZ_NvhhR+iJ&I?~tg6 zSoG4fgS1D02faJeQboYWqQ4`a#~CE5?Z>NCuiwRnR{2yqctffhMlX7+PXs$ItuzlL zYA`!?Q0CLnpkU}NTdC}Q71EioQJ@ba6C{LouEM56)e0S@l~T%xZE-ew@6#<^1o>)B zV%QLvO);^qXu#5=3H&>}dQthcp_ zHv1F^-nhUB+#Ri%!e)@vw@Qc)>{iQ6dyy!y!aH-*tbh>_NC9GSZZ~yA0nJWf-8H^1 z34?>C4qzTG8@jZn3>UutIs^&*;4@J0ZRhf#oHYK~8wzZQ@yz%y zQ)ooRxt#uAql>hTS=-cuPS49u1?o)SD9qA7mgpWZmtVg>ceJ$$v#xRHbibTCg=G`c z>od6nLxQ%}ko&l&mC{#}g$N)P5OmI-Wf7hr=h($l z$}u@J&HC*4gHx}bL2dY$T}yM#jJf5mEvz0XXNWSCMA=F*>~8&)u~t}4muy4zj+2fE zg8$59NLyU7WDt$>JWAacgP$Lt#$sXNF%jR@uKJ+SoONV*sBw1EOY-ArE`QiiJ+c4X z->VT4F^<`ortqb0@G84nSMA9+>2ti?LGE7a%eKam)aaD0SumPf1AI5^);)nM??YabfJ&36FC}_FoS9TNc%r4W@az z|Kg8c>{KvT_Qq^3%O2SJW(I6H;?`?n7VTFpyh-O6|Hn}p;L{si zlYDKi|E+Jx|FzNVe~-7+t1?LPk@-qefj$Qiu|1I2=Lea6)8XIrVY{tUOH=y+5Y8E- zd4FeW09_Z&!?EKYIB!x$xq&`NRa<AfD{GP z_dmtGc>lGa-B@dh)<(a6c+)b6yS)+GYV>b;h0%RjnkswcfC4%wS~U?<{%Ei^bR$o| zVfXPq5W<6JdE6$0igrUr1lHW{BxMa_lR?Vs6H&wREeKGZq_Lxl!>;X#C5A_5|NTzT zF4uL3SG?vTqvVF%_m`wRpmw_YT^4G)gHpr+QKEvJG7NN`T=7atD}_XQDx)L_A!(5K z>u!|r)<7t$+k}KRGdBS5sACW0l=J9xK$g9Xe{0*|BQ01P-nfwHl0|WPOf*yuQ zMQt{-MPq9tZLcYQ=wk~9S#CRNgh@?_0!o;c*4uwCsjS&U%GQ0cr1$8#hN_K|(c&G9 zDx=8ixdOH|&AD0h5LZHkAdoHF13k?mrH0p= z2%uz)1PuzM=YY9j<_Gkja|dxc8g@47`D^JrJ}}VL)pTr8?C#blP5r4hM;I7WiEE7v zC~N{*!I!yXZfcjXD9mY^)pAXnFKI!fl%Gx)9QiWCm_eh=%8!inC7>V!eMSH}M4>4G zu>n#eAltcuM7(1c5Ph*WPSD8>(qMl;V!HUW@PbRi?#Qye@&1M220k5G9hxb5#>%5F zU~!caO%`;n|E(ta8syt~@aR1*fIFCJf$o4KAa(C-P*2LcQ5LBTPB^YYD*!;R1qjMP z$62?Hze%FPo!+f41r&Y@ccDzPCHp&4L?FY9vRuHe|1qKV!LUI85=hVY%4-$|UfR-4 z+}pS*pcwKqK~xCvy}WW=mpb;_xbPWhc?e_-mc=eom{e|C!e%%GE9Rx- z*3Z=3wi;YR>Ab!mO8^r@yR)kDm|TCY>hdmSVAoF-il$N~B^N}HAkvtgo9o=9J$+eO~7(#)^bc$&kdIXBgoxSFiF*4Eu z#0^FhN!({nH^n9MsI$;XK>Pa$l&e9O{DO>cpLN!JVE{>SjP+I|@81Iu2T@K6=pwFr z(0v=U7y|k0_x1mXtWZP$L?Twj?&ahup+LJMRHd0)hXwRk+vg>2+j}u}&ao(Y8%zrf zkmR4e3#t=q2*K@=7ymvJ=c4C$BsO&VALHe&aJGF^2c4qZ-xafY^cdW z(4`0b4q=siJ9Eq@AJ|7dRt%}3npP2jKzB)Gq{bTZK

9Rc4)w+x)lqB=9onpBSZZ zV}TxP1ZlAgvRX!r8jCh*)#;tKil>w76+;7kUo=-)m^MmIx_>vAEb{Y=(^%L%kZM@~ z#S!3~yoWBpfJj{>0m_=J|D6019=UzHT?jN7DT*cgm=J2y3`2n2s+48A9PW$j!SeO0 zOF)gk`9qs*`|-j+@Xg=|{JuVf!e;?%1ov7-+dHF1Ig7M-CJgcz6 zqx+%=v*KSwB&33X(ti6AD9#G>Mms^fF${2~x1-JX;JH-iK=tMax?HX>0zV0~6mA}m zZ9PMQx~)B-EXwi(PXTxbr+JL&(COe}RE3}eOMgY-Q%o#Lkzr)bewirR$Jvlge|W4#Egq2YUuKQqz4K2G#-$080%00^7aMsch!gI&`UVvfAzgdm#A;hpLRbVcZ zFyWKXIVk4p)jen)pu7L@cPOZsZx-2_^$*lZ+l+dyk%U+EcG4Ft!L)~(w%HqVKHfY<~S zE2)6SxV;6!=lyRTaKbyNUmgCY7W}|;DMF|hn2Ha|sXk|OcN1qb4K)S1C*@b>??UQL z`IP~|moyIy+F1y*JcHu{R7e_E8TFSb-yZU@j*J@O|G~&YM!RN zLXQrRzi|3vePM~c6vu89JKSii$ytz8PoaBRP45JL!2;JefJl>y9SYa?uU zs2~sUh3^@X<_*QwNO0l7`Nq-o)|{&i&@(a@>nQ(qSxNANe}yYMoq5YH@qAh>mU`B8mJWf`+0vhCrLQ*}h(Tfz!nP*>Oa zAuNkDX{O#8Ue$%V_H18QTQclxaDWLIXWJ9aDWgXw9DJ~U*(B`8bKadS4&O-Hy>%SM zNc8o_-6Rr(RcPXSUfGE7E>S{B&E`3L^d-zSzR7Y7X|8s1`d}@A2P_AsiVTM5_R=iH ztlAj{1~*w7gPRI|tmBg5U7sNl11^*z1orFJXu*_339;WJ5{;C}BBH?VtAcm4lU{4y zH?H(VE_UFL5KJ7$}?;x@UUq@LrEmuyxuhCw>G&sTCh$h5gGoT+6zC zTsWvpT+>V$r=&wm1nTqYTX znWp-=<5Rj1LtUPfl+WmSY-d`WI3Cz3 zW&Rgnl4_Vq78=*(>dWh#@ZfId1uu=^S>?DQ+pc1o12T^+(UZltSpFs4<({_WrkD5D z_E;BdugHL@g$n0>Wkq@{^~`~yxf8Hgu$|jHb9cZ?X4OVA=5IB$xG+qEt!%c!w;2XD zSM{L%*!R>F1qfkd=*}grAFpgL^yNk~Z~^S%2kJ{4Z)#~8Q>KW&?fA<7PLbv#{td#u zd^35}zLvTde<)@LE_SX^;u5KJ?yy7Puq@5B@? zmnLx@46}rx;zRBu4;wDd>dp&oFtJzj3w17Uf}c zXMM)KPh#U@^myeLc{OmDMKwk((aX2Dw;N@_(f#A$=MaXP3%4KMd;P!F_HyBCR{l%E V#_^O1{Ei+-QBFlR_o1QR{{TOA5jy|? diff --git a/scripts/index.php b/scripts/index.php index 1535757..39bd36e 100644 --- a/scripts/index.php +++ b/scripts/index.php @@ -33,6 +33,12 @@

+

Activate the DLNA server

+

+

+ +
+

Shut down the Little Backup Box

@@ -53,6 +59,10 @@ if (isset($_POST['camerabackup'])) { shell_exec('sudo ./camera-backup.sh 2>&1 & echo $!'); } +if (isset($_POST['minidlna'])) +{ + shell_exec('sudo ./minidlna.sh 2>&1 & echo $!'); +} if (isset($_POST['shutdown'])) { shell_exec('sudo shutdown -h now 2>&1 & echo $!'); diff --git a/scripts/minidlna.sh b/scripts/minidlna.sh new file mode 100755 index 0000000..8dae5d7 --- /dev/null +++ b/scripts/minidlna.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env bash + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# IMPORTANT: +# Run the install-little-backup-box.sh script first +# to install the required packages and configure the system. + +# Specify devices and their their mount points +# as well as other settings +STORAGE_DEV="sda1" # Name of the storage device +STORAGE_MOUNT_POINT="/media/storage" # Mount point of the storage device + +# Wait for a USB storage device (e.g., a USB flash drive) +STORAGE=$(ls /dev/* | grep "$STORAGE_DEV" | cut -d"/" -f3) +#STORAGE=$(lsblk -x SIZE | grep sd[a-z]1 | awk '{print $1}' | sort | head -n 1) +while [ -z "${STORAGE}" ] + do + sleep 1 + STORAGE=$(ls /dev/* | grep "$STORAGE_DEV" | cut -d"/" -f3) +done + +# When the USB storage device is detected, mount it +mount /dev/"$STORAGE_DEV" "$STORAGE_MOUNT_POINT" + +# Set the ACT LED to blink at 1000ms to indicate that the storage device has been mounted +sudo sh -c "echo timer > /sys/class/leds/led0/trigger" +sudo sh -c "echo 1000 > /sys/class/leds/led0/delay_on" + +# Reload minidlna + +sudo minidlnad -R +sudo service minidlna restart