開發此函式庫之主要目的在於隨著用電量之增加,採用何種計價模式將會大幅影響最終所需支付之費用,因此預估各種不同計價模式下費用之需求應運而生。過往有許多法人單位或公司行號都會自行開發相關程式,除了自行使用外,亦會藉由對外收取費用之方式提供相關預估服務。然而一般民眾基本上都沒有機會或因為取得服務之成本太高而無法使用,多數都使用著不是最好的計價模式,付出遠高於企業用戶之用電成本,因此決定撰寫並開放給所有人都可以使用的函式庫,並於其上開發符合自身所需之評估方式。
選擇使用 C 進行撰寫之原因在於 C 目前可以透過 swig (Simplified Wrapper and Interface Generator) 產生對應之界面讓其他程式語言使用,如此就不需要花費額外時間開發多個不同程式語言之版本。
此函式庫僅依照台灣電力公司公開於官方網站上之電價表進行撰寫,相關測試案例皆為網路上可查詢到之公開案例,然而公開之案例較少,特別是關於超約罰款部份更是幾乎沒有,因此非常有可能與台灣電力公司之實際計算結果有所不同,故目前仍屬於 alpha 階段,非常歡迎提供案例使函式庫更接近台灣電力公司之實際計算結果。請特別注意目前之 API 尚不穩定,命名主要依台灣電力公司所公開之英文版電價表,例如兩段式採用 option 1,三段式則是 option 2等等非中文直譯之方式,但都有依照中文版之名稱提供註釋。 而不將電價費率等直接寫死於程式內,改由 API 傳入之主要目的在於可方便使用者在台灣電力公司沒有調整計算公式時,可以快速評估電價費率調整後之費用。
此函式庫目前實作之台灣電力公司電價計算函式:
- 表燈(住商)非時間電價
- 表燈(住商)簡易時間兩段式電價
- 表燈(住商)簡易時間三段式電價
- 表燈(住商)標準時間兩段式電價
- 表燈(住商)標準時間三段式電價
- 低壓兩段式時間電價
- 低壓三段式時間電價
- 高壓兩段式時間電價
- 高壓三段式時間電價
- 特高壓兩段式時間電價
- 特高壓三段式時間電價
目前僅提供於 Unix-like 作業系統上編譯之 Makefile,但此函式庫並沒有依賴特定作業系統特有之函式庫,基本上可接受 C99 語法之編譯器皆可以進行編譯。採用 Makefile 執行 make clean all 指令若單元測試正確後會產生 libtaipower.so 及 libtaipower.a 兩個檔案,可依需求選擇動態函式庫或靜態函式庫接續開發。
另外提供之範例程式可透過資料夾內之 compile.sh 於 Unix-like 作業系統上進行編譯,其會透過 curl 指令下載解析 JSON 所需之單一標頭檔(cisson.h),若有疑慮,可自行依照 compile.sh 中之網址前往下載,或搜尋 cisson 套件自行下載信任之檔案。
提供 cmake 之跨平台編譯方式可參考 github action 中之方式使用:
於專案中執行以下指令:
Unix-like
cmake --build build --target all --config ReleaseWindows
cmake --build build --target ALL_BUILD --config Release簡易之使用方式可以參考兩個資料夾:
- test: 各函式之基本單元測試
- demo: 使用此函式庫之指令列範例程式
(demo.c)及Web API範例程式(apiserver.c),範例程式編譯完成後可以使用example資料夾內的檔案作為測試輸入。若僅想進行電價計算,可使用此範例程式即可。Web API範例程式須透過Dockerfile製作容器後使用,容器製作之方式為在taipower專案目錄下,執行docker build -f demo/Dockerfile -t taipower:apiserver .,容器製作完成後可用指令docker run -d -p [主機埠號]:[容器內api server 聆聽埠號] [容器ID] [api server 聆聽埠號]啟動容器。