Skip to content

IoTtalk/FarmDashboard

Repository files navigation

FarmDashboard

Field 的名稱不可以包含特如符號如 . $ # & @ 等等,請使用全英文字母

簡易安裝說明

  1. 安裝 tmux

    ubuntu:

    sudo apt-get install tmux
  2. 安裝 python 相關需要套件:

    sudo pip3 install -r requirements.txt
  3. 安裝Database,使用 MySQL

    • 安裝 MySQL (version >= 5.7) (注意1)

      sudo apt-get install mysql-server
    • Login mysql(以root使用者登入)

      sudo mysql -u root -p     
      
    • Check characterset status

      status
      

      編碼應該要如下圖:四個都是utf8

      https://i.imgur.com/4P5Dobl.png

      若不是,則修改 my.cnf

      sudo vim /etc/mysql/my.cnf
      

      加入設定:複製下列程式碼,於my.cnf貼上

      [mysqld]
      init_connect = 'SET collation_connection = utf8_bin'
      init_connect = 'SET NAMES utf8'
      character-set-server = utf8
      collation-server = utf8_bin
      
    • 重啟mysql以更新設定

      sudo service mysql restart
      
    • 登進mysql新增 MySQL 內的 user,允許連線 IP,與資料庫( db_name ),以及權限 (注意2)

      CREATE USER '<user_name>'@'%' IDENTIFIED BY '<user_password>';
      GRANT ALL PRIVILEGES ON *.* TO '<user_name>'@'%';
      CREATE DATABASE <db_name>;
      
  4. 修改 config.py,根據內部註解依序填上資料,主要為設定 DB 路徑

    注意2 填入 DB_CONFIG, 修改大約在Line 13行附近

     DB_CONFIG = 'mysql+pymysql://<user_name>:<user_password>@localhost:3306/<db_name>?charset=utf8'
    

    大約在 Line 21 附近,修改 CSM_HOST

     CSM_HOST = 'IoTtalk Server IP'
    
  5. 修改 db/db_init.json,設定 admin 密碼

  6. 資料庫初始化:

    python3 -m db.db init
    • 注意:此步只能執行一次 (只會新加入,並不會抹除舊的資料,所以執行一次以上會錯誤)

    • 在MAC上面使用時可能會遇到加密錯誤的錯誤訊息,這時需要安裝套件 cryptography

  7. 啟動 Server:

    bash startup.sh

至此 Dashboard 已啟動完成,可用指令 tmux a 查看運行狀況 (按ctrl+b 1 查看 dashboard 主程式與 DA 運行狀況)。

注意

  • 注意1: 安裝mysql時,常會遇到安裝過程中,完全沒問密碼,這表示以前曾經裝過mysql,或是裝過相關套件,這時就比需要重設密碼,執行下列指令進行重設,

    sudo mysqladmin -u root password

    Reference: https://emn178.pixnet.net/blog/post/87659567

    或是查看系統預設的 帳號 與 密碼

    sudo vim /etc/mysql/debian.cnf
    

    Reference: https://andy6804tw.github.io/2019/01/31/ubuntu-mysql-password/

  • 注意2: DB_CONFIG=mysql+pymysql://:@localhost:3306/<db_name>?charset=utf8

    其中的 db_name,就是打算要建立的資料庫名稱,例如要給 Dashboard 用的,就取名為 dashboard,該主表名稱不是隨便亂輸入的, 通常是在db內建立 user 時,就順道建立一同名的 table,這樣最簡單 (例如,假設使用 phpmyadmin 建立使用者時,就勾選 "建立與使用者同名的資料庫並授予所有權限。"), 權限部分,如果不確定怎麼使用,就全開吧。所以 db_name 必須是已存在的資料庫, 而不是隨便亂輸入的。

    然後,在建立使用者時,很高的機率會發生錯誤 "Your password does not satisfy the current policy requirements", 這時要去調降密碼強度限制,解決方法為連上mysql應用,使用如下指令後, 就可以順利建立 user/table 了。

    執行 mysql -u root -p 打完密碼後進入 MySQL 命令列,然後執行下方指令::

    mysql> set global validate_password_policy=0;    
    mysql> exit

    如果是遠端連線,要注意兩點

    • 要設定該使用者允許連線的 IP,沒去設定的話,絕對是連不上的
    • 記得去掉設定檔內的 bind 127.0.0.1

多語系使用說明

文字準備

python

use gettext('') to the needing change words.

from flask_babel import gettext
msg = gettext('Babel is good.')

or if you want to use constant strings somewhere in your application and define them outside of a request, you can use a lazy strings lazy_gettext('').

from flask_babel import lazy_gettext
msg = lazy_gettext('Babel is good.')
Javascript

use {{ _('') }} to the needing change words.

<div class="title">{{ _('System Management') }}</div>

使用語言包

  • 首次使用

    1. 將所有 python 及 html 所用到的字串頡取出來:

      pybabel extract -F app/babel.cfg -o messages.pot .
    2. 建立字典檔 (儲放於 app/translations 下):

      pybabel init -i messages.pot -d app/translations/ -l <lang_code>
    3. 翻譯文字,修改前一步產生的 po 檔,翻譯對應語系的文字,檔案路徑為:

      app/translations/<lang_code>/LC_MESSAGES/messages.po
    4. 編譯字典 po 檔成 mo 檔,供 babel 使用:

      pybabel compile -f -d app/translations
  • 更新字典檔 (與首次使用相同,差別在於第二步的 update 用 update 取代 init)

    1. 將所有 python 及 html 所用到的字串頡取出來:

      pybabel extract -F app/babel.cfg -o messages.pot .
    2. 更新字典檔:

      pybabel update -i messages.pot -d app/translations/ -l <lang_code>
    3. 翻譯文字,修改前一步產生的 po 檔,翻譯對應語系的文字,檔案路徑為:

      app/translations/<lang_code>/LC_MESSAGES/messages.po
    4. 編譯字典 po 檔成 mo 檔,供 babel 使用:

      pybabel compile -f -d app/translations
  • 詳細安裝說明 (此文件已久未更新,僅供參考)

備註

Python 3.11.6 安裝方式:

wget https://www.python.org/ftp/python/3.11.6/Python-3.11.6.tgz
sudo apt update
sudo -H apt-get install libsqlite3-dev libffi-dev libssl-dev openssl zlib1g-dev build-essential -y
tar xzvf Python-3.11.6.tgz
cd Python-3.11.6
./configure --prefix=/usr/local
make -j
sudo make install
cd ..