本帖最后由 chinyaolin 于 2020-5-26 17:18 编辑
2020/05/26 樓主改用 ESPHome 了
2018/07/20 更新 ESPurna 1.13.1 調整一下程式碼架構, 改以 custom.h 放置自定義的內容, 方便以後更新版本
// custom.h
// 擴充 arduino.h 編譯時所要編的硬體
#define HASSMART_SINGLE
//#define HASSMART_DUAL
//#define HASSMART_TRIPLE
// 擴充 general.h
#define DEVICE_NAME MANUFACTURER "-" DEVICE
// 擴充 hardware.h 改裝模塊 GPIO 定義 包含單開雙開及三開
#if defined(HASSMART_SINGLE)
#define MANUFACTURER "HASSMART"
#define DEVICE "SINGLE"
// Buttons
#define BUTTON1_PIN 0 // Button 0 on header
#define BUTTON1_RELAY 1
#define BUTTON1_MODE BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH
// Relays
#define RELAY1_PIN 12
#define RELAY1_TYPE RELAY_TYPE_NORMAL
// LEDs
#define LED1_PIN 13
#define LED1_PIN_INVERSE 0
#elif defined(HASSMART_DUAL)
#define MANUFACTURER "HASSMART"
#define DEVICE "DUAL"
// Buttons
#define BUTTON1_PIN 0 // Button 0 on header
#define BUTTON2_PIN 14 // Button 1 on header
#define BUTTON1_RELAY 1
#define BUTTON2_RELAY 2
#define BUTTON1_MODE BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH
#define BUTTON2_MODE BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH
// Relays
#define RELAY1_PIN 12
#define RELAY2_PIN 5
#define RELAY1_TYPE RELAY_TYPE_NORMAL
#define RELAY2_TYPE RELAY_TYPE_NORMAL
// LEDs
#define LED1_PIN 13
#define LED1_PIN_INVERSE 0
#elif defined(HASSMART_TRIPLE)
#define MANUFACTURER "HASSMART"
#define DEVICE "TRIPLE"
// Buttons
#define BUTTON1_PIN 0
#define BUTTON2_PIN 14
#define BUTTON3_PIN 2
#define BUTTON1_MODE BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH
#define BUTTON2_MODE BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH
#define BUTTON3_MODE BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH
#define BUTTON1_RELAY 1
#define BUTTON2_RELAY 2
#define BUTTON3_RELAY 3
// Relays
#define RELAY1_PIN 12
#define RELAY2_PIN 5
#define RELAY3_PIN 4
#define RELAY1_TYPE RELAY_TYPE_NORMAL
#define RELAY2_TYPE RELAY_TYPE_NORMAL
#define RELAY3_TYPE RELAY_TYPE_NORMAL
// LEDs
#define LED1_PIN 13
#define LED1_PIN_INVERSE 0
#endif
首先感謝 Yonsm 的文章 - espurna - 支持Sonoff、Hassmart、NodeMCU的高性能、稳定固件
決定自己編譯論壇模塊專用的韌體/固件
這幾天以來不知道跌入多少坑中, 總算是有了一些結果, 貢獻給大家
官方網頁 : ESPurna Firmware
Y 大客製版 : tree/Yonsm ESPurna Firmware
我先使用 Ariduno IDE 1.8.5 搭配官方版本的程式碼, 不斷調校環境直到成功, 有興趣的人參考以下連結
https://github.com/xoseperez/espurna/wiki/ArduinoIDE
原作者詳細說明了如何將原始碼編譯出 ESPurna 韌體/固件
接著參考 Y 大的程式碼, 主要有兩個部份 arduino.h 與 hardware.h,
關於 hardware.h, 細節不多說, 主要在新增論壇模塊的 GPIO 定義, 節錄部份代碼如下
// hardware.h
// 修改內容整併至 custom.h 保持原始文件不做更動
另外一個是 arduino.h, 這個檔案選擇編譯的模塊以及額外要支援的功能
// arduino.h
// 修改內容整併至 custom.h 保持原始文件不做更動
我自己實際將雙開模塊刷上這個自製的韌體/固件後, 到目前使用上並無什麼問題
之後再找機會分享我的應用方式
PS.1 不好的話還是需要說在前頭, 我個人不對刷韌體/固件的風險負任何責任, 決定使用的朋友請自行承擔結果
PS.2 編譯時, 檔案 general.h 中的 #define USE_PASSWORD 設定為 0, 但還是建議要設上密碼確保安全
PS.3 編譯好的韌體(1.13.0) 回帖後可下載
|