[分享] NT$200,sonoff s31測電量插座刷機經驗分享(ESPHome)

前言: sonoff s31是我很喜歡的測電量電流插座,只要會淘寶,取得的成本不用台幣200塊,幾個步驟簡單刷機,不用花五百八百去買人家刷好的

工具: usb轉ttl模塊(參考購買地址)、小鱷魚夾(參考購買地址)、ESPHome-Flasher-1.4.0-Windows-x64.exe

yaml範例:

substitutions:
  device_name: sonoff_s31 #測電流(備用)

esphome:
  name: ${device_name}
  platform: ESP8266
  board: esp01_1m

api:

ota:
  password: !secret wifi_pw
  
web_server:
  port: 80

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_pw

  ap:
    ssid: "${device_name}_Fallback"
    password: !secret wifi_pw
    
captive_portal:    
    
logger:
  baud_rate: 0 # (UART logging interferes with cse7766)
  
time:
  - platform: homeassistant
    id: homeassistant_time  

uart:
  rx_pin: RX
  baud_rate: 4800

binary_sensor:
  - platform: gpio
    pin:
      number: GPIO0
      mode: INPUT_PULLUP
      inverted: True
    name: "${device_name} Button"
    on_press:
      - switch.toggle: relay
  - platform: status
    name: "${device_name} Status"

sensor:
  - platform: wifi_signal
    name: "${device_name} WiFi Signal"
    update_interval: 60s

  - platform: uptime
    name: "${device_name} Uptime"
    filters:
      - lambda: return x / 3600;
    unit_of_measurement: "hours"
    accuracy_decimals: 1
    
  - platform: cse7766
    update_interval: 1s
    current:
      name: "${device_name} Current"
      accuracy_decimals: 2
      unit_of_measurement: A
      filters:
        - sliding_window_moving_average:
            window_size: 3
            send_every: 2
    voltage:
      name: "${device_name} Voltage"
      unit_of_measurement: V
      accuracy_decimals: 1
    power:
      name: "${device_name} Wattage"
      unit_of_measurement: W
      accuracy_decimals: 1
      id: "wattage"

  - platform: total_daily_energy
    name: "${device_name} Total Daily Energy"
    power_id: "wattage"
    filters:
      # Multiplication factor from W to kW is 0.001
      - multiply: 0.001
    unit_of_measurement: kWh      
      
switch:
  - platform: gpio
    name: "${device_name} Relay"
    icon: mdi:power-socket-us
    pin: GPIO12
    id: relay
    restore_mode: always_on    
    
  - platform: restart
    name: "${device_name} Restart"

  
output:
  - platform: esp8266_pwm
    id: blueLED
    pin: GPIO13
    inverted: True

light:
  - platform: monochromatic
    name: "${device_name}_blueLED"
    output: blueLED
    id: ${device_name}_blueLED
    
interval:
  - interval: 60s
    then:
      if:
        condition:
          wifi.connected:
        then:
          - light.turn_on:
              id: ${device_name}_blueLED
        else:
          - light.turn_on:
              id: ${device_name}_blueLED
              flash_length : 1s      

影片: 由於手機錄影拍螢幕畫面很糊,所以最後看著燒錄程式跑過程的畫面就省略了。
https://www.youtube.com/watch?v=5ggUrlfPF64

就那麼簡單,另一個簡單到一直不好意思分享的東西,打完收工。

3個讚

版主您好:
請問可以提供燒錄的檔案嗎?
另外,我嘗試燒錄的時候,會出現:Timed out waiting for packet header
連接不到設備,請問版主有遇過嗎?

燒錄檔案您直接COPY我的yaml回去你的esphome管理介面,按install然後選Manual download就有了,我沒有藏私啦,我產生的檔案跟你自己產生的檔案是一樣的XD

time out 通常有幾種狀況(我自己遇過的):

  1. vin、gnd、tx、rx某一個接點沒接觸好(接點沒對齊)
  2. vin、gnd、tx、rx某兩個夾線短路了(所以用測試勾會更好,只是小鱷魚夾我用習慣了)
  3. s31的tx要接燒錄器的rx、s31的rx要接燒錄器的tx
  4. 按住按紐才插USB,聽到電腦"登登登"的聲音之後才放開
1個讚

感謝版大回覆:

yaml 檔我有試過copy去 esphome 的管理介面,但是有出現錯誤,晚點再貼上來,
請版大看一下。 XD

time out 的問題
第1和2點,這個我再仔細看看有沒有短路。
第3點,這個我知道要反接。
第4點,這個問題比較大,因為我的系統是 win11,所以不是登登登 XD,版大的
意思是不是,只要裝置管理員有抓到設備,然後有出現 COM4 (我的是COM4)即可
呢?

我猜, 你可能沒有在esphome目錄建立secrets.yaml並指定這兩個項目所以出錯:

wifi_ssid: "你的基地台SSID"
wifi_pw: "你的wifi密碼"

第四點,看到Win11先羨慕一下,然後我的電腦很舊了無法升級,沒用過Win11不敢說; 早期,很多usb2ttl燒錄軟件還要求只能在Win7以下才能正常運行,不確定是否跟Win11有關。

出錯的訊息如圖:
s31

燒錄軟件,我之前有在 WIN 10 底下燒過 TASMOTA 到 SONOFF 4CH PRO R3上,並沒有問題,
我想 WIN 11 應該也是可以運行的,晚點再拆另一顆 S31 試試,如果還是不行,我再找 WIN 10
的系統試試!

感謝版大播空回覆!

我的錯, 我沒發現這個平台的編輯器直接COPY會失去原本的縮排,我又重新編輯了一下,你再試試看

感謝版大,韌體已經成功編譯出來了,接下來只剩硬體連接的問題了!
等下班後再進行測試。

也謝謝你讓我發現此平台編輯器的問題,我分享的一堆esphome yaml的縮排應該也不對,再找時間一一修正。

3個讚