#!/bin/bash if [ "$1" == "-h" ] || [ "$1" == "help" ] || [ "$1" == "h" ] ; then echo "Usage: m5latest.sh [y] [y/n]" echo " 第一引数の y : ビルド完了まで待ち、ダウンロード後に自動で書込みを行います。" echo " 第二引数の y/n : シリアルモニタを開く場合はyを指定してください。" echo "例: m5latest.sh y y # ビルド完了まで待ち、書込みを行い、シリアルモニタを開く。" exit fi # ダウンロードURL URL="https://lattr.istlab.info/ino_download_latest" URL_SHOW="https://lattr.istlab.info/ino_show_latest" ## あなたの情報 https://lattr.istlab.info/dashboard に書かれていますので設定してください。 # (例) # MYUID="1234" # LOGIN="23a5000" MYUID="0" LOGIN="23a0000" if [ ${MYUID} -eq 0 ] ; then echo "m5latest.sh をつかうには、20行目付近に、あなたの情報(MYUID と LOGIN)を書き込んでください。" echo "あなたの情報は https://lattr.istlab.info/dashboard に書かれています。" read -p "あなたの情報を確認するため、ブラウザを開きますか?(y/n): " yn if [ $yn = "y" ]; then url=https://lattr.istlab.info/dashboard unameOut="$(uname -s)" case "${unameOut}" in Darwin*) # macOS の場合 open "$url" ;; MINGW*|MSYS*|CYGWIN*) # Windows (Git Bash, MSYS, Cygwin) の場合 cmd.exe /C start "$url" ;; *) echo "このOSでは自動でブラウザを開けません。URL: $url" ;; esac fi echo "一旦終了します。vi m5latest.sh で、MYUID と LOGIN を書き込んでください。" exit fi # echo connecting to ${URL} info=`curl -s -X POST -d "uid=${MYUID}&login=${LOGIN}" ${URL_SHOW}` echo "------------------------------" echo ${info} # もし、infoにhash:p1 が含まれていたら、注意喚起する if [[ $info =~ hash:p1 ]]; then echo "注:Plus2(黄色)ではなく、Plus(オレンジ色)用のプログラムです。" board="plus" else board="plus2" fi echo "------------------------------" # POSTリクエストを送信し、レスポンスコードを取得 RESPONSE_CODE=$(curl -o latest.bin -s -w "%{http_code}" -X POST -d "uid=${MYUID}&login=${LOGIN}" ${URL}) if [ "$RESPONSE_CODE" -ne 200 ]; then echo "エラー: レスポンスコード $RESPONSE_CODE が返されました。" if [ "$RESPONSE_CODE" -eq 403 ]; then echo "ユーザIDとログインIDが間違っています。" exit fi fi # レスポンスコードが404でない場合、メッセージを表示 if [ "$RESPONSE_CODE" -eq 404 ]; then echo "まだビルド(コンパイル)が終わっていません。" if [ "$1" == "y" ]; then while true ; do sleep 5 RESPONSE_CODE=$(curl -o latest.bin -s -w "%{http_code}" -X POST -d "uid=${MYUID}&login=${LOGIN}" ${URL}) if [ "$RESPONSE_CODE" -eq 200 ]; then break fi echo -n "." done fi fi if [ "$RESPONSE_CODE" -eq 200 ]; then echo "ダウンロード成功: (レスポンスコード $RESPONSE_CODE)" curl -o latest.partitions.bin -s -X POST -d "uid=${MYUID}&login=${LOGIN}&type=partitions" ${URL} curl -o latest.bootloader.bin -s -X POST -d "uid=${MYUID}&login=${LOGIN}&type=bootloader" ${URL} # 書き込みを行う serials=`arduino-cli board list | grep USB | awk '{print $1}'` seriallist=($serials) if [ "$1" == "y" ]; then yn='y' else read -p "書き込みを行いますか?(y/n): " yn fi if [ $yn = "y" ]; then if [ -z "${serials}" ]; then echo "デバイスがみつかりませんでした。" sleep 2 echo "デバイスを接続しているのに認識しないときは、ドライバを入れてください。" sleep 2 echo "https://ftdichip.com/drivers/vcp-drivers/ → Click here to download の hereをおす。ZIP解凍して実行。" exit fi for ser in ${seriallist[@]} ; do echo ${ser} arduino-cli upload --fqbn esp32:esp32:m5stack_stickc_${board} -p ${ser} --input-file latest.bin done fi # 接続デバイスが1つのみの場合、シリアルモニタを開くか確認 if [[ "${#seriallist[@]}" -eq 1 ]]; then if [ -z "$2" ]; then read -p "シリアルモニタを開きますか?(y/n): " yn else yn=$2 fi if [ $yn = "y" ]; then echo "終了するときはCtrl+Cを押してください。" arduino-cli monitor -p ${seriallist[0]} --config 115200 fi fi fi