Wordclock/tools/programESP.sh
2016-06-23 18:38:33 +02:00

72 lines
1.7 KiB
Bash
Executable File

#!/bin/bash
DEVICE=/dev/ttyUSB0
SLEEPTIME=0.2
TCPPORT=2323
function usage() {
echo "$0 usage:"
echo "$0 serial|ip fileOnHost.lua (fileOnESP.lua)"
echo ""
echo "The flash logic can be done via ethernet or serial"
echo "The first filename is mandatory!"
echo ""
echo "The second filename is the filename on the LUA devic."
echo ""
echo "Example:"
echo -e "$0 serial hello.txt\tSends the content of hello.txt to the ESP (directly as if you type it)"
echo -e "$0 serial init_example.lua init.lua\tUpdates the init.lua on the ESP"
echo " (The init.lua file is executed each time, the ESP starts)"
exit 1
}
case "$1" in
serial)
IP=""
if [ "$EUID" -ne 0 ]
then echo "Please run as root"
exit 1
fi
;;
*)
if [[ $1 =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]];then
IP=$1
else
usage
fi
esac
if [ ! -f $2 ]; then
usage
fi
if [ "$IP" != "" ]; then
echo "Using network: $IP "
echo "Checking connection ..."
ping -c 3 $IP >> /dev/null
if [ $? -ne 0 ]; then
echo "Cannot find ESP at $IP"
exit 1
fi
DEVICE=/dev/tcp/$IP/$TCPPORT
fi
# The flashing logic
if [ "$3" == "" ]; then
echo "Sending to shell..."
cat $2 | while read a; do echo -e "$a\r" >> $DEVICE; echo -e "$a"; sleep $SLEEPTIME; done
else
echo "Writing $3 on the ESP"
echo "========================="
echo "" >> $DEVICE; sleep $SLEEPTIME
echo "file.open(\"$3\",\"w\")" >> $DEVICE; sleep $SLEEPTIME
cat $2 | while read a; do echo "file.writeline([[${a}]])" >> $DEVICE; echo -e "\r" >> $DEVICE; echo "$a"; sleep $SLEEPTIME; done
# Close the init file
echo "file.close()" >> $DEVICE; sleep $SLEEPTIME
echo "========================="
echo "now login on ESP and call"
echo "node.restart()"
fi