洗衣機偶爾不更新

洗衣機型號是NA-V160HDH
WIFI是內建的
設計上關洗衣機會直接連WIFI都關掉
沒開洗衣機的時候實體不可用且會一直在日誌裡跳訊息

不過開機後都會正常運作所以都懶得理他
但最近某次更新後
他有時會直接裝死 開洗了實體還是不可用 打開原廠APP是有連上線的
圖片是今天在洗完前才發現他又裝死了 把整合重新載入後會正常運作

但偵錯日誌裡是這樣
2024-08-23 14:00:44.414 WARNING (MainThread) [custom_components.panasonic_smart_app.smartApp] 無法連線至"洗衣機-1"，將於下輪更新時重試
2024-08-23 14:04:12.401 WARNING (MainThread) [custom_components.panasonic_smart_app.smartApp] 無法連線至"洗衣機-1"，將於下輪更新時重試
2024-08-23 14:07:40.462 WARNING (MainThread) [custom_components.panasonic_smart_app.smartApp] 無法連線至"洗衣機-1"，將於下輪更新時重試
2024-08-23 15:39:30.028 WARNING (SyncWorker_41) [gtts.lang] 'zh-tw' has been deprecated, falling back to 'zh-TW'. This fallback will be removed in a future version.
2024-08-23 15:39:40.015 WARNING (MainThread) [homeassistant.components.humidifier] Setup of humidifier platform panasonic_smart_app is taking over 10 seconds.
2024-08-23 15:39:41.138 WARNING (MainThread) [homeassistant.helpers.frame] Detected code that calls async_forward_entry_setup for integration panasonic_smart_app with title: 電話號碼 and entry_id: 01J44GYFBHXAP639R6PY77P20M, during setup without awaiting async_forward_entry_setup, which can cause the setup lock to be released before the setup is done. This will stop working in Home Assistant 2025.1. Please report this issue.
Stack (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/src/homeassistant/homeassistant/__main__.py", line 223, in <module>
    sys.exit(main())
  File "/usr/src/homeassistant/homeassistant/__main__.py", line 209, in main
    exit_code = runner.run(runtime_conf)
  File "/usr/src/homeassistant/homeassistant/runner.py", line 190, in run
    return loop.run_until_complete(setup_and_run_hass(runtime_config))
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 674, in run_until_complete
    self.run_forever()
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 641, in run_forever
    self._run_once()
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 1990, in _run_once
    handle._run()
  File "/usr/local/lib/python3.12/asyncio/events.py", line 88, in _run
    self._context.run(self._callback, *self._args)
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 2122, in async_forward_entry_setup
    _report_non_awaited_platform_forwards(entry, "async_forward_entry_setup")
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 1175, in _report_non_awaited_platform_forwards
    report(
  File "/usr/src/homeassistant/homeassistant/helpers/frame.py", line 151, in report
    _LOGGER.warning(msg, stack_info=True)

補上版本

前面3行顯示連線不到洗衣機外，好像沒看到其他錯誤，可以要再花一點時間查錯。
後面出現的warning 已在 #117 修正。
2024-08-23 15:39:41.138 WARNING (MainThread) [homeassistant.helpers.frame] Detected code that calls async_forward_entry_setup for integration panasonic_smart_app with title: 電話號碼 and entry_id: 01J44GYFBHXAP639R6PY77P20M, during setup without awaiting async_forward_entry_setup, which can cause the setup lock to be released before the setup is done. This will stop working in Home Assistant 2025.1. Please report this issue.

今天開著除錯日誌洗衣
一樣發生實體不更新
日誌內容:
2024-08-25 15:14:33.447 WARNING (MainThread) [custom_components.panasonic_smart_app.smartApp] 無法連線至"洗衣機-1"，將於下輪更新時重試
2024-08-25 15:17:33.344 INFO (MainThread) [custom_components.panasonic_smart_app] Updating device info...
2024-08-25 15:17:33.345 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Making #1267 request to https://ems2.panasonic.com.tw/api/UserGetRegisteredGwList2 with headers {'cptoken': '4A79DD31-C4F9-4978-AD36-86B635D58079', 'user-agent': 'okhttp/4.9.1'} and data None, proxy:
2024-08-25 15:17:33.603 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Succeed to access #1267 API. Returned 200: {"State":"success","StateMsg":"","MVersion":"20240806111926","GroupList":[],"AreaList":[{"AreaID":"0","AreaName":"","AreaNo":"0","AreaIcon":"1"},{"AreaID":"1","AreaName":"2樓","AreaNo":"1","AreaIcon":"1"}],"GwList":[{"GWID":"2C9FFB2589A6","ModelID":"CZ-T006","AreaID":"0","SeqNo":"0","Auth":"2C9FFB2589A6DE72933DFCB57088EB3F0CC43337C2FF","NickName":"除濕機-1","(地點省略)","DeviceType":"4","ModelType":"GXW","Model":"F-Y32GX","Function":{"SetSchedule":"1"},"Attribute":{"Year":"0"},"Devices":[{"DeviceID":1,"Name":"","IsAvailable":1}]},{"GWID":"E8C7CF89AD0A","ModelID":"CZ-T006","AreaID":"0","SeqNo":"0","Auth":"E8C7CF89AD0ADE72933DFCB57088EB3F0CC43337C2FF","NickName":"除濕機-2","(地點省略)","DeviceType":"4","ModelType":"GXW","Model":"F-Y24GX","Function":{"SetSchedule":"1"},"Attribute":{"Year":"0"},"Devices":[{"DeviceID":1,"Name":"","IsAvailable":1}]},{"GWID":"7061BE2C73F1","ModelID":"CZ-T006","AreaID":"1","SeqNo":"1","Auth":"7061BE2C73F19E60E913DA5D78AAAB9E79706C1457B3","NickName":"洗衣機-1","(地點省略),"DeviceType":"3","ModelType":"HDH","Model":"NA-V160HDH","Function":{},"Attribute":{"Type":"滾筒"},"Devices":[{"DeviceID":1,"Name":"","IsAvailable":1}]}],"CommandList":[{"ModelType":"GXW","JSON":[{"DeviceType":4,"DeviceName":"除濕機","ModelType":"GXW","ProtocalType":"SAANET","ProtocalVersion":"4","Timestamp":"202108170824","list":[{"CommandType":"0x00","CommandName":"電源","ParameterType":"enum","ParameterUnit":"","Parameters":[["停止",0],["運轉",1]]},{"CommandType":"0x01","CommandName":"功能選擇","ParameterType":"enum","ParameterUnit":"","Parameters":[["連續除濕",0],["自動除濕",1],["防霉抑菌",2],["送風模式",3],["衣物乾燥",4],["保持乾燥",5],["濕度設定",6]]},{"CommandType":"0x04","CommandName":"濕度設定","ParameterType":"enum","ParameterUnit":"","Parameters":[["40%",0],["45%",1],["50%",2],["55%",3],["60%",4],["65%",5],["70%",6]]},{"CommandType":"0x0E","CommandName":"風量","ParameterType":"enum","ParameterUnit":"","Parameters":[["自動",0],["急速",1],["標準",2],["靜音",3]]},{"CommandType":"0x09","CommandName":"風向","ParameterType":"enum","ParameterUnit":"","Parameters":[["固定",0],["下方向",1],["上方向",2],["廣角",3],["下吹",4]]},{"CommandType":"0x18","CommandName":"操作提示音","ParameterType":"enum","ParameterUnit":"","Parameters":[["開啟",0],["關閉",1]]},{"CommandType":"0x02","CommandName":"時間到關","ParameterType":"range","ParameterUnit":"小時","Parameters":[["Min",0],["Max",12]]},{"CommandType":"0x55","CommandName":"時間到開","ParameterType":"range","ParameterUnit":"小時","Parameters":[["Min",0],["Max",12]]},{"CommandType":"0x0D","CommandName":"nanoeX(脫臭)","ParameterType":"enum","ParameterUnit":"","Parameters":[["關閉",0],["開啟",1]]}]}]},{"ModelType":"HDH","JSON":[{"DeviceType":3,"DeviceName":"洗衣機","ModelType":"HDH","ProtocalType":"SAANET","ProtocalVersion":"4","Timestamp":"201909050700","list":[{"CommandType":"0x55","CommandName":"行程別訊息","ParameterType":"enum","ParameterUnit":"","Parameters":[["標準行程",0],["加強行程",2],["高級衣行程",5],["浸泡行程",8],["快洗行程",10],["槽洗淨行程",11],["大件行程",13],["標準除垢行程",14],["除螨行程",15],["夜靜行程",16],["自選行程",17],["槽乾燥行程",18],["nanoe行程",19],["約40℃(除臭)行程",20],["約60℃(除菌)行程",21],["溫泡洗行程",22],["自動投入保養",1536]]},{"CommandType":"0x50","CommandName":"運轉情報","ParameterType":"enum","ParameterUnit":"","Parameters":[["待機中",1],["動作中",2],["預約中",3],["預約中",4],["終了",5]]},{"CommandType":"0x54","CommandName":"工程訊息","ParameterType":"enum","ParameterUnit":"","Parameters":[["預洗",1],["浸泡",2],["洗衣",3],["洗清",4],["脫水",5],["乾衣",6],["烘乾",7],["鬆布",8],["鬆柔冷卻",9],["nanoe",10],["延後晾衣",11],["槽除黴",12]]},{"CommandType":"0x13","CommandName":"洗衣殘時間","ParameterType":"range","ParameterUnit":"分","Parameters":[["Min",0],["Max",1440]]},{"CommandType":"0x01","CommandName":"開始洗衣","ParameterType":"range","ParameterUnit":"分","Parameters":[["Min",0],["Max",1]]},{"CommandType":"0x15","CommandName":"預約殘時間","ParameterType":"range","ParameterUnit":"分","Parameters":[["Min",0],["Max",1440]]},{"CommandType":"0x14","CommandName":"預約時間設定","ParameterType":"range","ParameterUnit":"時","Parameters":[["Min",0],["Max",8]]},{"CommandType":"0x19","CommandName":"異常代碼","ParameterType":"enum","ParameterUnit":"","Parameters":[]},{"CommandType":"0x60","CommandName":"時間調整","ParameterType":"range","ParameterUnit":"時","Parameters":[["Min",0],["Max",24]]},{"CommandType":"0x61","CommandName":"延後晾衣設定","ParameterType":"range","ParameterUnit":"時","Parameters":[["Min",1],["Max",8]]},{"CommandType":"0x64","CommandName":"行程設定","ParameterType":"enum","ParameterUnit":"","Parameters":[["標準行程",0],["自選行程",1],["浸泡行程",2],["快洗行程",3],["高級衣行程",4],["大件行程",5],["夜靜行程",7],["槽洗淨行程",8],["加強行程",9],["nanoe行程",10],["標準除垢行程",11],["個別行程",14],["除菌行程",15],["除臭行程",16],["槽乾燥行程",18],["溫泡洗行程",19]]},{"CommandType":"0x69","CommandName":"溫水設定","ParameterType":"enum","ParameterUnit":"","Parameters":[["",0],["溫水",1]]}]}]}]}
2024-08-25 15:17:35.346 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Making #1268 request to https://ems2.panasonic.com.tw/api/UserGetInfo with headers {'cptoken': '4A79DD31-C4F9-4978-AD36-86B635D58079', 'user-agent': 'okhttp/4.9.1'} and data {'name': 'Power', 'from': '2024/08/01', 'unit': 'day', 'max_num': 31}, proxy:
2024-08-25 15:17:35.698 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Succeed to access #1268 API. Returned 200: {"Summary":44.29,"kwh":[1.2,0.96,1.19,2.05,0.9,2.4,0.7,0.37,3.3,1.4,2.4,2.9,1.8,1.3,2.8,2.29,1.2,3.7,1.3,1.0,1.96,0.7,1.67,3.4,1.4,0.0,0.0,0.0,0.0,0.0,0.0],"AreaList":[{"AreaID":"0","AreaName":"","AreaNo":"0","AreaIcon":"1","Total_kwh":"42.20","percent":"95.28"},{"AreaID":"1","AreaName":"2樓","AreaNo":"1","AreaIcon":"1","Total_kwh":"2.09","percent":"4.72"}],"GwList":[{"GwID":"2C9FFB2589A6","DeviceType":"4","NickName":"除濕機-1","AreaID":"0","AreaName":"","AreaNo":"0","SeqNo":"0","Total_kwh":"19.90","kwh":[1.2,0.8,1.0,1.5,0.9,0.8,0.0,0.0,1.4,0.5,0.9,0.8,0.9,0.0,0.0,0.2,1.2,1.4,1.3,1.0,0.0,0.0,1.4,2.6,0.1,0.0,0.0,0.0,0.0,0.0,0.0],"percent":"44.93","Attribute":{"Year":"0"}},{"GwID":"E8C7CF89AD0A","DeviceType":"4","NickName":"除濕機-2","AreaID":"0","AreaName":"","AreaNo":"0","SeqNo":"0","Total_kwh":"22.30","kwh":[0.0,0.0,0.0,0.0,0.0,1.6,0.7,0.1,1.9,0.9,1.4,2.0,0.9,1.3,2.8,1.9,0.0,2.3,0.0,0.0,1.7,0.7,0.0,0.8,1.3,0.0,0.0,0.0,0.0,0.0,0.0],"percent":"50.35","Attribute":{"Year":"0"}},{"GwID":"7061BE2C73F1","DeviceType":"3","NickName":"洗衣機-1","AreaID":"1","AreaName":"2樓","AreaNo":"1","SeqNo":"1","Total_kwh":"2.09","kwh":[0.0,0.16,0.19,0.55,0.0,0.0,0.0,0.27,0.0,0.0,0.1,0.1,0.0,0.0,0.0,0.19,0.0,0.0,0.0,0.0,0.26,0.0,0.27,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"percent":"4.72","Attribute":{"Type":"滾筒"}}]}
2024-08-25 15:17:37.348 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Making #1269 request to https://ems2.panasonic.com.tw/api/DeviceGetInfo with headers {'cptoken': '4A79DD31-C4F9-4978-AD36-86B635D58079', 'auth': '2C9FFB2589A6DE72933DFCB57088EB3F0CC43337C2FF', 'gwid': '2C9FFB2589A6', 'user-agent': 'okhttp/4.9.1'} and data [{'CommandTypes': [{'CommandType': '0x00'}, {'CommandType': '0x01'}, {'CommandType': '0x02'}, {'CommandType': '0x07'}, {'CommandType': '0x09'}, {'CommandType': '0x0D'}, {'CommandType': '0x50'}, {'CommandType': '0x18'}, {'CommandType': '0x53'}, {'CommandType': '0x55'}, {'CommandType': '0x0A'}, {'CommandType': '0x04'}, {'CommandType': '0x0E'}], 'DeviceID': 1}], proxy:
2024-08-25 15:17:37.867 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Succeed to access #1269 API. Returned 200: {"status":"success","devices":[{"DeviceID":1,"Info":[{"CommandType":"0x18","status":"1"},{"CommandType":"0x50","status":"1"},{"CommandType":"0x53","status":"65535"},{"CommandType":"0x55","status":"0"},{"CommandType":"0x00","status":"1"},{"CommandType":"0x01","status":"1"},{"CommandType":"0x02","status":"0"},{"CommandType":"0x07","status":"73"},{"CommandType":"0x09","status":"0"},{"CommandType":"0x0D","status":"1"},{"CommandType":"0x0A","status":"1"},{"CommandType":"0x04","status":"0"},{"CommandType":"0x0E","status":"0"}]}],"updated_at":"20240825151653"}
2024-08-25 15:17:39.349 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Making #1270 request to https://ems2.panasonic.com.tw/api/DeviceGetInfo with headers {'cptoken': '4A79DD31-C4F9-4978-AD36-86B635D58079', 'auth': 'E8C7CF89AD0ADE72933DFCB57088EB3F0CC43337C2FF', 'gwid': 'E8C7CF89AD0A', 'user-agent': 'okhttp/4.9.1'} and data [{'CommandTypes': [{'CommandType': '0x00'}, {'CommandType': '0x01'}, {'CommandType': '0x02'}, {'CommandType': '0x07'}, {'CommandType': '0x09'}, {'CommandType': '0x0D'}, {'CommandType': '0x50'}, {'CommandType': '0x18'}, {'CommandType': '0x53'}, {'CommandType': '0x55'}, {'CommandType': '0x0A'}, {'CommandType': '0x04'}, {'CommandType': '0x0E'}], 'DeviceID': 1}], proxy:
2024-08-25 15:17:39.876 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Succeed to access #1270 API. Returned 200: {"status":"success","devices":[{"DeviceID":1,"Info":[{"CommandType":"0x18","status":"1"},{"CommandType":"0x50","status":"65535"},{"CommandType":"0x53","status":"65535"},{"CommandType":"0x55","status":"0"},{"CommandType":"0x00","status":"1"},{"CommandType":"0x01","status":"6"},{"CommandType":"0x02","status":"0"},{"CommandType":"0x07","status":"72"},{"CommandType":"0x09","status":"0"},{"CommandType":"0x0D","status":"0"},{"CommandType":"0x0A","status":"1"},{"CommandType":"0x04","status":"2"},{"CommandType":"0x0E","status":"0"}]}],"updated_at":"20240825151654"}
2024-08-25 15:17:41.351 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Making #1271 request to https://ems2.panasonic.com.tw/api/DeviceGetInfo with headers {'cptoken': '4A79DD31-C4F9-4978-AD36-86B635D58079', 'auth': '7061BE2C73F19E60E913DA5D78AAAB9E79706C1457B3', 'gwid': '7061BE2C73F1', 'user-agent': 'okhttp/4.9.1'} and data [{'CommandTypes': [{'CommandType': '0x13'}, {'CommandType': '0x14'}, {'CommandType': '0x15'}, {'CommandType': '0x41'}, {'CommandType': '0x50'}, {'CommandType': '0x54'}, {'CommandType': '0x55'}, {'CommandType': '0x61'}, {'CommandType': '0x64'}], 'DeviceID': 1}], proxy:
2024-08-25 15:17:42.698 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Succeed to access #1271 API.  Returned 200: {"State":"success","StateMsg":"","MVersion":"20240806111926","GroupList":[],"AreaList":[{"AreaID":"0","AreaName":"","AreaNo":"0","AreaIcon":"1"},{"AreaID":"1","AreaName":"2樓","AreaNo":"1","AreaIcon":"1"}],"GwList":[{"GWID":"2C9FFB2589A6","ModelID":"CZ-T006","AreaID":"0","SeqNo":"0","Auth":"2C9FFB2589A6DE72933DFCB57088EB3F0CC43337C2FF","NickName":"除濕機-1","(地點省略)","DeviceType":"4","ModelType":"GXW","Model":"F-Y32GX","Function":{"SetSchedule":"1"},"Attribute":{"Year":"0"},"Devices":[{"DeviceID":1,"Name":"","IsAvailable":1}]},{"GWID":"E8C7CF89AD0A","ModelID":"CZ-T006","AreaID":"0","SeqNo":"0","Auth":"E8C7CF89AD0ADE72933DFCB57088EB3F0CC43337C2FF","NickName":"除濕機-2","(地點省略)","DeviceType":"4","ModelType":"GXW","Model":"F-Y24GX","Function":{"SetSchedule":"1"},"Attribute":{"Year":"0"},"Devices":[{"DeviceID":1,"Name":"","IsAvailable":1}]},{"GWID":"7061BE2C73F1","ModelID":"CZ-T006","AreaID":"1","SeqNo":"1","Auth":"7061BE2C73F19E60E913DA5D78AAAB9E79706C1457B3","NickName":"洗衣機-1","(地點省略),"DeviceType":"3","ModelType":"HDH","Model":"NA-V160HDH","Function":{},"Attribute":{"Type":"滾筒"},"Devices":[{"DeviceID":1,"Name":"","IsAvailable":1}]}],"CommandList":[{"ModelType":"GXW","JSON":[{"DeviceType":4,"DeviceName":"除濕機","ModelType":"GXW","ProtocalType":"SAANET","ProtocalVersion":"4","Timestamp":"202108170824","list":[{"CommandType":"0x00","CommandName":"電源","ParameterType":"enum","ParameterUnit":"","Parameters":[["停止",0],["運轉",1]]},{"CommandType":"0x01","CommandName":"功能選擇","ParameterType":"enum","ParameterUnit":"","Parameters":[["連續除濕",0],["自動除濕",1],["防霉抑菌",2],["送風模式",3],["衣物乾燥",4],["保持乾燥",5],["濕度設定",6]]},{"CommandType":"0x04","CommandName":"濕度設定","ParameterType":"enum","ParameterUnit":"","Parameters":[["40%",0],["45%",1],["50%",2],["55%",3],["60%",4],["65%",5],["70%",6]]},{"CommandType":"0x0E","CommandName":"風量","ParameterType":"enum","ParameterUnit":"","Parameters":[["自動",0],["急速",1],["標準",2],["靜音",3]]},{"CommandType":"0x09","CommandName":"風向","ParameterType":"enum","ParameterUnit":"","Parameters":[["固定",0],["下方向",1],["上方向",2],["廣角",3],["下吹",4]]},{"CommandType":"0x18","CommandName":"操作提示音","ParameterType":"enum","ParameterUnit":"","Parameters":[["開啟",0],["關閉",1]]},{"CommandType":"0x02","CommandName":"時間到關","ParameterType":"range","ParameterUnit":"小時","Parameters":[["Min",0],["Max",12]]},{"CommandType":"0x55","CommandName":"時間到開","ParameterType":"range","ParameterUnit":"小時","Parameters":[["Min",0],["Max",12]]},{"CommandType":"0x0D","CommandName":"nanoeX(脫臭)","ParameterType":"enum","ParameterUnit":"","Parameters":[["關閉",0],["開啟",1]]}]}]},{"ModelType":"HDH","JSON":[{"DeviceType":3,"DeviceName":"洗衣機","ModelType":"HDH","ProtocalType":"SAANET","ProtocalVersion":"4","Timestamp":"201909050700","list":[{"CommandType":"0x55","CommandName":"行程別訊息","ParameterType":"enum","ParameterUnit":"","Parameters":[["標準行程",0],["加強行程",2],["高級衣行程",5],["浸泡行程",8],["快洗行程",10],["槽洗淨行程",11],["大件行程",13],["標準除垢行程",14],["除螨行程",15],["夜靜行程",16],["自選行程",17],["槽乾燥行程",18],["nanoe行程",19],["約40℃(除臭)行程",20],["約60℃(除菌)行程",21],["溫泡洗行程",22],["自動投入保養",1536]]},{"CommandType":"0x50","CommandName":"運轉情報","ParameterType":"enum","ParameterUnit":"","Parameters":[["待機中",1],["動作中",2],["預約中",3],["預約中",4],["終了",5]]},{"CommandType":"0x54","CommandName":"工程訊息","ParameterType":"enum","ParameterUnit":"","Parameters":[["預洗",1],["浸泡",2],["洗衣",3],["洗清",4],["脫水",5],["乾衣",6],["烘乾",7],["鬆布",8],["鬆柔冷卻",9],["nanoe",10],["延後晾衣",11],["槽除黴",12]]},{"CommandType":"0x13","CommandName":"洗衣殘時間","ParameterType":"range","ParameterUnit":"分","Parameters":[["Min",0],["Max",1440]]},{"CommandType":"0x01","CommandName":"開始洗衣","ParameterType":"range","ParameterUnit":"分","Parameters":[["Min",0],["Max",1]]},{"CommandType":"0x15","CommandName":"預約殘時間","ParameterType":"range","ParameterUnit":"分","Parameters":[["Min",0],["Max",1440]]},{"CommandType":"0x14","CommandName":"預約時間設定","ParameterType":"range","ParameterUnit":"時","Parameters":[["Min",0],["Max",8]]},{"CommandType":"0x19","CommandName":"異常代碼","ParameterType":"enum","ParameterUnit":"","Parameters":[]},{"CommandType":"0x60","CommandName":"時間調整","ParameterType":"range","ParameterUnit":"時","Parameters":[["Min",0],["Max",24]]},{"CommandType":"0x61","CommandName":"延後晾衣設定","ParameterType":"range","ParameterUnit":"時","Parameters":[["Min",1],["Max",8]]},{"CommandType":"0x64","CommandName":"行程設定","ParameterType":"enum","ParameterUnit":"","Parameters":[["標準行程",0],["自選行程",1],["浸泡行程",2],["快洗行程",3],["高級衣行程",4],["大件行程",5],["夜靜行程",7],["槽洗淨行程",8],["加強行程",9],["nanoe行程",10],["標準除垢行程",11],["個別行程",14],["除菌行程",15],["除臭行程",16],["槽乾燥行程",18],["溫泡洗行程",19]]},{"CommandType":"0x69","CommandName":"溫水設定","ParameterType":"enum","ParameterUnit":"","Parameters":[["",0],["溫水",1]]}]}]}]}
2024-08-25 15:20:45.345 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Making #1273 request to https://ems2.panasonic.com.tw/api/UserGetInfo with headers {'cptoken': '4A79DD31-C4F9-4978-AD36-86B635D58079', 'user-agent': 'okhttp/4.9.1'} and data {'name': 'Power', 'from': '2024/08/01', 'unit': 'day', 'max_num': 31}, proxy:
2024-08-25 15:20:45.449 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Succeed to access #1273 API. Returned 200: {"Summary":44.29,"kwh":[1.2,0.96,1.19,2.05,0.9,2.4,0.7,0.37,3.3,1.4,2.4,2.9,1.8,1.3,2.8,2.29,1.2,3.7,1.3,1.0,1.96,0.7,1.67,3.4,1.4,0.0,0.0,0.0,0.0,0.0,0.0],"AreaList":[{"AreaID":"0","AreaName":"","AreaNo":"0","AreaIcon":"1","Total_kwh":"42.20","percent":"95.28"},{"AreaID":"1","AreaName":"2樓","AreaNo":"1","AreaIcon":"1","Total_kwh":"2.09","percent":"4.72"}],"GwList":[{"GwID":"2C9FFB2589A6","DeviceType":"4","NickName":"除濕機-1","AreaID":"0","AreaName":"","AreaNo":"0","SeqNo":"0","Total_kwh":"19.90","kwh":[1.2,0.8,1.0,1.5,0.9,0.8,0.0,0.0,1.4,0.5,0.9,0.8,0.9,0.0,0.0,0.2,1.2,1.4,1.3,1.0,0.0,0.0,1.4,2.6,0.1,0.0,0.0,0.0,0.0,0.0,0.0],"percent":"44.93","Attribute":{"Year":"0"}},{"GwID":"E8C7CF89AD0A","DeviceType":"4","NickName":"除濕機-2","AreaID":"0","AreaName":"","AreaNo":"0","SeqNo":"0","Total_kwh":"22.30","kwh":[0.0,0.0,0.0,0.0,0.0,1.6,0.7,0.1,1.9,0.9,1.4,2.0,0.9,1.3,2.8,1.9,0.0,2.3,0.0,0.0,1.7,0.7,0.0,0.8,1.3,0.0,0.0,0.0,0.0,0.0,0.0],"percent":"50.35","Attribute":{"Year":"0"}},{"GwID":"7061BE2C73F1","DeviceType":"3","NickName":"洗衣機-1","AreaID":"1","AreaName":"2樓","AreaNo":"1","SeqNo":"1","Total_kwh":"2.09","kwh":[0.0,0.16,0.19,0.55,0.0,0.0,0.0,0.27,0.0,0.0,0.1,0.1,0.0,0.0,0.0,0.19,0.0,0.0,0.0,0.0,0.26,0.0,0.27,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"percent":"4.72","Attribute":{"Type":"滾筒"}}]}
2024-08-25 15:20:47.347 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Making #1274 request to https://ems2.panasonic.com.tw/api/DeviceGetInfo with headers {'cptoken': '4A79DD31-C4F9-4978-AD36-86B635D58079', 'auth': '2C9FFB2589A6DE72933DFCB57088EB3F0CC43337C2FF', 'gwid': '2C9FFB2589A6', 'user-agent': 'okhttp/4.9.1'} and data [{'CommandTypes': [{'CommandType': '0x00'}, {'CommandType': '0x01'}, {'CommandType': '0x02'}, {'CommandType': '0x07'}, {'CommandType': '0x09'}, {'CommandType': '0x0D'}, {'CommandType': '0x50'}, {'CommandType': '0x18'}, {'CommandType': '0x53'}, {'CommandType': '0x55'}, {'CommandType': '0x0A'}, {'CommandType': '0x04'}, {'CommandType': '0x0E'}], 'DeviceID': 1}], proxy:
2024-08-25 15:20:47.814 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Succeed to access #1274 API. Returned 200: {"status":"success","devices":[{"DeviceID":1,"Info":[{"CommandType":"0x18","status":"1"},{"CommandType":"0x50","status":"1"},{"CommandType":"0x53","status":"65535"},{"CommandType":"0x55","status":"0"},{"CommandType":"0x00","status":"1"},{"CommandType":"0x01","status":"1"},{"CommandType":"0x02","status":"0"},{"CommandType":"0x07","status":"73"},{"CommandType":"0x09","status":"0"},{"CommandType":"0x0D","status":"1"},{"CommandType":"0x0A","status":"1"},{"CommandType":"0x04","status":"0"},{"CommandType":"0x0E","status":"0"}]}],"updated_at":"20240825152003"}
2024-08-25 15:20:49.349 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Making #1275 request to https://ems2.panasonic.com.tw/api/DeviceGetInfo with headers {'cptoken': '4A79DD31-C4F9-4978-AD36-86B635D58079', 'auth': 'E8C7CF89AD0ADE72933DFCB57088EB3F0CC43337C2FF', 'gwid': 'E8C7CF89AD0A', 'user-agent': 'okhttp/4.9.1'} and data [{'CommandTypes': [{'CommandType': '0x00'}, {'CommandType': '0x01'}, {'CommandType': '0x02'}, {'CommandType': '0x07'}, {'CommandType': '0x09'}, {'CommandType': '0x0D'}, {'CommandType': '0x50'}, {'CommandType': '0x18'}, {'CommandType': '0x53'}, {'CommandType': '0x55'}, {'CommandType': '0x0A'}, {'CommandType': '0x04'}, {'CommandType': '0x0E'}], 'DeviceID': 1}], proxy:
2024-08-25 15:20:49.827 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Succeed to access #1275 API. Returned 200: {"status":"success","devices":[{"DeviceID":1,"Info":[{"CommandType":"0x18","status":"1"},{"CommandType":"0x50","status":"65535"},{"CommandType":"0x53","status":"65535"},{"CommandType":"0x55","status":"0"},{"CommandType":"0x00","status":"1"},{"CommandType":"0x01","status":"6"},{"CommandType":"0x02","status":"0"},{"CommandType":"0x07","status":"71"},{"CommandType":"0x09","status":"0"},{"CommandType":"0x0D","status":"0"},{"CommandType":"0x0A","status":"1"},{"CommandType":"0x04","status":"2"},{"CommandType":"0x0E","status":"0"}]}],"updated_at":"20240825152004"}
2024-08-25 15:20:51.350 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Making #1276 request to https://ems2.panasonic.com.tw/api/DeviceGetInfo with headers {'cptoken': '4A79DD31-C4F9-4978-AD36-86B635D58079', 'auth': '7061BE2C73F19E60E913DA5D78AAAB9E79706C1457B3', 'gwid': '7061BE2C73F1', 'user-agent': 'okhttp/4.9.1'} and data [{'CommandTypes': [{'CommandType': '0x13'}, {'CommandType': '0x14'}, {'CommandType': '0x15'}, {'CommandType': '0x41'}, {'CommandType': '0x50'}, {'CommandType': '0x54'}, {'CommandType': '0x55'}, {'CommandType': '0x61'}, {'CommandType': '0x64'}], 'DeviceID': 1}], proxy:
2024-08-25 15:20:54.870 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Succeed to access #1276 API.  Returned 200: {"State":"success","StateMsg":"","MVersion":"20240806111926","GroupList":[],"AreaList":[{"AreaID":"0","AreaName":"","AreaNo":"0","AreaIcon":"1"},{"AreaID":"1","AreaName":"2樓","AreaNo":"1","AreaIcon":"1"}],"GwList":[{"GWID":"2C9FFB2589A6","ModelID":"CZ-T006","AreaID":"0","SeqNo":"0","Auth":"2C9FFB2589A6DE72933DFCB57088EB3F0CC43337C2FF","NickName":"除濕機-1","(地點省略)","DeviceType":"4","ModelType":"GXW","Model":"F-Y32GX","Function":{"SetSchedule":"1"},"Attribute":{"Year":"0"},"Devices":[{"DeviceID":1,"Name":"","IsAvailable":1}]},{"GWID":"E8C7CF89AD0A","ModelID":"CZ-T006","AreaID":"0","SeqNo":"0","Auth":"E8C7CF89AD0ADE72933DFCB57088EB3F0CC43337C2FF","NickName":"除濕機-2","(地點省略)","DeviceType":"4","ModelType":"GXW","Model":"F-Y24GX","Function":{"SetSchedule":"1"},"Attribute":{"Year":"0"},"Devices":[{"DeviceID":1,"Name":"","IsAvailable":1}]},{"GWID":"7061BE2C73F1","ModelID":"CZ-T006","AreaID":"1","SeqNo":"1","Auth":"7061BE2C73F19E60E913DA5D78AAAB9E79706C1457B3","NickName":"洗衣機-1","(地點省略),"DeviceType":"3","ModelType":"HDH","Model":"NA-V160HDH","Function":{},"Attribute":{"Type":"滾筒"},"Devices":[{"DeviceID":1,"Name":"","IsAvailable":1}]}],"CommandList":[{"ModelType":"GXW","JSON":[{"DeviceType":4,"DeviceName":"除濕機","ModelType":"GXW","ProtocalType":"SAANET","ProtocalVersion":"4","Timestamp":"202108170824","list":[{"CommandType":"0x00","CommandName":"電源","ParameterType":"enum","ParameterUnit":"","Parameters":[["停止",0],["運轉",1]]},{"CommandType":"0x01","CommandName":"功能選擇","ParameterType":"enum","ParameterUnit":"","Parameters":[["連續除濕",0],["自動除濕",1],["防霉抑菌",2],["送風模式",3],["衣物乾燥",4],["保持乾燥",5],["濕度設定",6]]},{"CommandType":"0x04","CommandName":"濕度設定","ParameterType":"enum","ParameterUnit":"","Parameters":[["40%",0],["45%",1],["50%",2],["55%",3],["60%",4],["65%",5],["70%",6]]},{"CommandType":"0x0E","CommandName":"風量","ParameterType":"enum","ParameterUnit":"","Parameters":[["自動",0],["急速",1],["標準",2],["靜音",3]]},{"CommandType":"0x09","CommandName":"風向","ParameterType":"enum","ParameterUnit":"","Parameters":[["固定",0],["下方向",1],["上方向",2],["廣角",3],["下吹",4]]},{"CommandType":"0x18","CommandName":"操作提示音","ParameterType":"enum","ParameterUnit":"","Parameters":[["開啟",0],["關閉",1]]},{"CommandType":"0x02","CommandName":"時間到關","ParameterType":"range","ParameterUnit":"小時","Parameters":[["Min",0],["Max",12]]},{"CommandType":"0x55","CommandName":"時間到開","ParameterType":"range","ParameterUnit":"小時","Parameters":[["Min",0],["Max",12]]},{"CommandType":"0x0D","CommandName":"nanoeX(脫臭)","ParameterType":"enum","ParameterUnit":"","Parameters":[["關閉",0],["開啟",1]]}]}]},{"ModelType":"HDH","JSON":[{"DeviceType":3,"DeviceName":"洗衣機","ModelType":"HDH","ProtocalType":"SAANET","ProtocalVersion":"4","Timestamp":"201909050700","list":[{"CommandType":"0x55","CommandName":"行程別訊息","ParameterType":"enum","ParameterUnit":"","Parameters":[["標準行程",0],["加強行程",2],["高級衣行程",5],["浸泡行程",8],["快洗行程",10],["槽洗淨行程",11],["大件行程",13],["標準除垢行程",14],["除螨行程",15],["夜靜行程",16],["自選行程",17],["槽乾燥行程",18],["nanoe行程",19],["約40℃(除臭)行程",20],["約60℃(除菌)行程",21],["溫泡洗行程",22],["自動投入保養",1536]]},{"CommandType":"0x50","CommandName":"運轉情報","ParameterType":"enum","ParameterUnit":"","Parameters":[["待機中",1],["動作中",2],["預約中",3],["預約中",4],["終了",5]]},{"CommandType":"0x54","CommandName":"工程訊息","ParameterType":"enum","ParameterUnit":"","Parameters":[["預洗",1],["浸泡",2],["洗衣",3],["洗清",4],["脫水",5],["乾衣",6],["烘乾",7],["鬆布",8],["鬆柔冷卻",9],["nanoe",10],["延後晾衣",11],["槽除黴",12]]},{"CommandType":"0x13","CommandName":"洗衣殘時間","ParameterType":"range","ParameterUnit":"分","Parameters":[["Min",0],["Max",1440]]},{"CommandType":"0x01","CommandName":"開始洗衣","ParameterType":"range","ParameterUnit":"分","Parameters":[["Min",0],["Max",1]]},{"CommandType":"0x15","CommandName":"預約殘時間","ParameterType":"range","ParameterUnit":"分","Parameters":[["Min",0],["Max",1440]]},{"CommandType":"0x14","CommandName":"預約時間設定","ParameterType":"range","ParameterUnit":"時","Parameters":[["Min",0],["Max",8]]},{"CommandType":"0x19","CommandName":"異常代碼","ParameterType":"enum","ParameterUnit":"","Parameters":[]},{"CommandType":"0x60","CommandName":"時間調整","ParameterType":"range","ParameterUnit":"時","Parameters":[["Min",0],["Max",24]]},{"CommandType":"0x61","CommandName":"延後晾衣設定","ParameterType":"range","ParameterUnit":"時","Parameters":[["Min",1],["Max",8]]},{"CommandType":"0x64","CommandName":"行程設定","ParameterType":"enum","ParameterUnit":"","Parameters":[["標準行程",0],["自選行程",1],["浸泡行程",2],["快洗行程",3],["高級衣行程",4],["大件行程",5],["夜靜行程",7],["槽洗淨行程",8],["加強行程",9],["nanoe行程",10],["標準除垢行程",11],["個別行程",14],["除菌行程",15],["除臭行程",16],["槽乾燥行程",18],["溫泡洗行程",19]]},{"CommandType":"0x69","CommandName":"溫水設定","ParameterType":"enum","ParameterUnit":"","Parameters":[["",0],["溫水",1]]}]}]}]}
2024-08-25 15:52:28.345 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Making #1323 request to https://ems2.panasonic.com.tw/api/UserGetInfo with headers {'cptoken': '4A79DD31-C4F9-4978-AD36-86B635D58079', 'user-agent': 'okhttp/4.9.1'} and data {'name': 'Power', 'from': '2024/08/01', 'unit': 'day', 'max_num': 31}, proxy:
2024-08-25 15:52:28.614 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Succeed to access #1323 API. Returned 200: {"Summary":44.29,"kwh":[1.2,0.96,1.19,2.05,0.9,2.4,0.7,0.37,3.3,1.4,2.4,2.9,1.8,1.3,2.8,2.29,1.2,3.7,1.3,1.0,1.96,0.7,1.67,3.4,1.4,0.0,0.0,0.0,0.0,0.0,0.0],"AreaList":[{"AreaID":"0","AreaName":"","AreaNo":"0","AreaIcon":"1","Total_kwh":"42.20","percent":"95.28"},{"AreaID":"1","AreaName":"2樓","AreaNo":"1","AreaIcon":"1","Total_kwh":"2.09","percent":"4.72"}],"GwList":[{"GwID":"2C9FFB2589A6","DeviceType":"4","NickName":"除濕機-1","AreaID":"0","AreaName":"","AreaNo":"0","SeqNo":"0","Total_kwh":"19.90","kwh":[1.2,0.8,1.0,1.5,0.9,0.8,0.0,0.0,1.4,0.5,0.9,0.8,0.9,0.0,0.0,0.2,1.2,1.4,1.3,1.0,0.0,0.0,1.4,2.6,0.1,0.0,0.0,0.0,0.0,0.0,0.0],"percent":"44.93","Attribute":{"Year":"0"}},{"GwID":"E8C7CF89AD0A","DeviceType":"4","NickName":"除濕機-2","AreaID":"0","AreaName":"","AreaNo":"0","SeqNo":"0","Total_kwh":"22.30","kwh":[0.0,0.0,0.0,0.0,0.0,1.6,0.7,0.1,1.9,0.9,1.4,2.0,0.9,1.3,2.8,1.9,0.0,2.3,0.0,0.0,1.7,0.7,0.0,0.8,1.3,0.0,0.0,0.0,0.0,0.0,0.0],"percent":"50.35","Attribute":{"Year":"0"}},{"GwID":"7061BE2C73F1","DeviceType":"3","NickName":"洗衣機-1","AreaID":"1","AreaName":"2樓","AreaNo":"1","SeqNo":"1","Total_kwh":"2.09","kwh":[0.0,0.16,0.19,0.55,0.0,0.0,0.0,0.27,0.0,0.0,0.1,0.1,0.0,0.0,0.0,0.19,0.0,0.0,0.0,0.0,0.26,0.0,0.27,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"percent":"4.72","Attribute":{"Type":"滾筒"}}]}
2024-08-25 15:52:30.347 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Making #1324 request to https://ems2.panasonic.com.tw/api/DeviceGetInfo with headers {'cptoken': '4A79DD31-C4F9-4978-AD36-86B635D58079', 'auth': '2C9FFB2589A6DE72933DFCB57088EB3F0CC43337C2FF', 'gwid': '2C9FFB2589A6', 'user-agent': 'okhttp/4.9.1'} and data [{'CommandTypes': [{'CommandType': '0x00'}, {'CommandType': '0x01'}, {'CommandType': '0x02'}, {'CommandType': '0x07'}, {'CommandType': '0x09'}, {'CommandType': '0x0D'}, {'CommandType': '0x50'}, {'CommandType': '0x18'}, {'CommandType': '0x53'}, {'CommandType': '0x55'}, {'CommandType': '0x0A'}, {'CommandType': '0x04'}, {'CommandType': '0x0E'}], 'DeviceID': 1}], proxy:
2024-08-25 15:52:30.891 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Succeed to access #1324 API. Returned 200: {"status":"success","devices":[{"DeviceID":1,"Info":[{"CommandType":"0x18","status":"1"},{"CommandType":"0x50","status":"1"},{"CommandType":"0x53","status":"65535"},{"CommandType":"0x55","status":"0"},{"CommandType":"0x00","status":"1"},{"CommandType":"0x01","status":"1"},{"CommandType":"0x02","status":"0"},{"CommandType":"0x07","status":"72"},{"CommandType":"0x09","status":"0"},{"CommandType":"0x0D","status":"1"},{"CommandType":"0x0A","status":"1"},{"CommandType":"0x04","status":"0"},{"CommandType":"0x0E","status":"0"}]}],"updated_at":"20240825155146"}
2024-08-25 15:52:32.349 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Making #1325 request to https://ems2.panasonic.com.tw/api/DeviceGetInfo with headers {'cptoken': '4A79DD31-C4F9-4978-AD36-86B635D58079', 'auth': 'E8C7CF89AD0ADE72933DFCB57088EB3F0CC43337C2FF', 'gwid': 'E8C7CF89AD0A', 'user-agent': 'okhttp/4.9.1'} and data [{'CommandTypes': [{'CommandType': '0x00'}, {'CommandType': '0x01'}, {'CommandType': '0x02'}, {'CommandType': '0x07'}, {'CommandType': '0x09'}, {'CommandType': '0x0D'}, {'CommandType': '0x50'}, {'CommandType': '0x18'}, {'CommandType': '0x53'}, {'CommandType': '0x55'}, {'CommandType': '0x0A'}, {'CommandType': '0x04'}, {'CommandType': '0x0E'}], 'DeviceID': 1}], proxy:
2024-08-25 15:52:32.868 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Succeed to access #1325 API. Returned 200: {"status":"success","devices":[{"DeviceID":1,"Info":[{"CommandType":"0x18","status":"1"},{"CommandType":"0x50","status":"65535"},{"CommandType":"0x53","status":"65535"},{"CommandType":"0x55","status":"0"},{"CommandType":"0x00","status":"1"},{"CommandType":"0x01","status":"6"},{"CommandType":"0x02","status":"0"},{"CommandType":"0x07","status":"71"},{"CommandType":"0x09","status":"0"},{"CommandType":"0x0D","status":"0"},{"CommandType":"0x0A","status":"1"},{"CommandType":"0x04","status":"2"},{"CommandType":"0x0E","status":"0"}]}],"updated_at":"20240825155147"}
2024-08-25 15:52:34.350 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Making #1326 request to https://ems2.panasonic.com.tw/api/DeviceGetInfo with headers {'cptoken': '4A79DD31-C4F9-4978-AD36-86B635D58079', 'auth': '7061BE2C73F19E60E913DA5D78AAAB9E79706C1457B3', 'gwid': '7061BE2C73F1', 'user-agent': 'okhttp/4.9.1'} and data [{'CommandTypes': [{'CommandType': '0x13'}, {'CommandType': '0x14'}, {'CommandType': '0x15'}, {'CommandType': '0x41'}, {'CommandType': '0x50'}, {'CommandType': '0x54'}, {'CommandType': '0x55'}, {'CommandType': '0x61'}, {'CommandType': '0x64'}], 'DeviceID': 1}], proxy:
2024-08-25 15:52:36.362 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Succeed to access #1326 API.  This may takes few minutes to complete.

2024-08-25 15:55:15.152 INFO (MainThread) [custom_components.panasonic_smart_app.smartApp] Attemping to login...
2024-08-25 15:55:15.152 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Making #1 request to https://ems2.panasonic.com.tw/api/userlogin1 with headers {'user-agent': 'okhttp/4.9.1'} and data {'MemId': '(帳號省略)', 'PW': '7re4SttqtwuDTQ', 'AppToken': 'D8CBFF4C-2824-4342-B22D-189166FEF503'}, proxy:
2024-08-25 15:55:15.499 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Succeed to access #1 API. Returned 200: {"CPToken":"3081BCF0-EE39-4DEE-9FE2-3A156DB63D4E","ExpireTime":"20241123155515","TokenTimeOut":"20240825165515","RefreshToken":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI3MGEyMDBmOC0zZTYxLTQ5YzQtYjdmNi1jNWM1ZjI3N2VmZWQiLCJuYmYiOjE3MjQ1NzI1MTUsImV4cCI6MTczMjM0ODUxNSwiaWF0IjoxNzI0NTcyNTE1fQ.2oW2MGYcChKS1geCQWKlkQM5XrVCHNILT_d7D87oevY","RefreshTokenTimeOut":"20241123155515","MVersion":"20240806111926"}
2024-08-25 15:55:17.153 INFO (MainThread) [custom_components.panasonic_smart_app] Updating device info...
2024-08-25 15:55:17.153 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Making #2 request to https://ems2.panasonic.com.tw/api/UserGetRegisteredGwList2 with headers {'cptoken': '3081BCF0-EE39-4DEE-9FE2-3A156DB63D4E', 'user-agent': 'okhttp/4.9.1'} and data None, proxy:
2024-08-25 15:55:17.248 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Succeed to access #2 API. Returned 200: {"State":"success","StateMsg":"","MVersion":"20240806111926","GroupList":[],"AreaList":[{"AreaID":"0","AreaName":"","AreaNo":"0","AreaIcon":"1"},{"AreaID":"1","AreaName":"2樓","AreaNo":"1","AreaIcon":"1"}],"GwList":[{"GWID":"2C9FFB2589A6","ModelID":"CZ-T006","AreaID":"0","SeqNo":"0","Auth":"2C9FFB2589A6DE72933DFCB57088EB3F0CC43337C2FF","NickName":"除濕機-1","(地點省略)","DeviceType":"4","ModelType":"GXW","Model":"F-Y32GX","Function":{"SetSchedule":"1"},"Attribute":{"Year":"0"},"Devices":[{"DeviceID":1,"Name":"","IsAvailable":1}]},{"GWID":"E8C7CF89AD0A","ModelID":"CZ-T006","AreaID":"0","SeqNo":"0","Auth":"E8C7CF89AD0ADE72933DFCB57088EB3F0CC43337C2FF","NickName":"除濕機-2","(地點省略)","DeviceType":"4","ModelType":"GXW","Model":"F-Y24GX","Function":{"SetSchedule":"1"},"Attribute":{"Year":"0"},"Devices":[{"DeviceID":1,"Name":"","IsAvailable":1}]},{"GWID":"7061BE2C73F1","ModelID":"CZ-T006","AreaID":"1","SeqNo":"1","Auth":"7061BE2C73F19E60E913DA5D78AAAB9E79706C1457B3","NickName":"洗衣機-1","(地點省略),"DeviceType":"3","ModelType":"HDH","Model":"NA-V160HDH","Function":{},"Attribute":{"Type":"滾筒"},"Devices":[{"DeviceID":1,"Name":"","IsAvailable":1}]}],"CommandList":[{"ModelType":"GXW","JSON":[{"DeviceType":4,"DeviceName":"除濕機","ModelType":"GXW","ProtocalType":"SAANET","ProtocalVersion":"4","Timestamp":"202108170824","list":[{"CommandType":"0x00","CommandName":"電源","ParameterType":"enum","ParameterUnit":"","Parameters":[["停止",0],["運轉",1]]},{"CommandType":"0x01","CommandName":"功能選擇","ParameterType":"enum","ParameterUnit":"","Parameters":[["連續除濕",0],["自動除濕",1],["防霉抑菌",2],["送風模式",3],["衣物乾燥",4],["保持乾燥",5],["濕度設定",6]]},{"CommandType":"0x04","CommandName":"濕度設定","ParameterType":"enum","ParameterUnit":"","Parameters":[["40%",0],["45%",1],["50%",2],["55%",3],["60%",4],["65%",5],["70%",6]]},{"CommandType":"0x0E","CommandName":"風量","ParameterType":"enum","ParameterUnit":"","Parameters":[["自動",0],["急速",1],["標準",2],["靜音",3]]},{"CommandType":"0x09","CommandName":"風向","ParameterType":"enum","ParameterUnit":"","Parameters":[["固定",0],["下方向",1],["上方向",2],["廣角",3],["下吹",4]]},{"CommandType":"0x18","CommandName":"操作提示音","ParameterType":"enum","ParameterUnit":"","Parameters":[["開啟",0],["關閉",1]]},{"CommandType":"0x02","CommandName":"時間到關","ParameterType":"range","ParameterUnit":"小時","Parameters":[["Min",0],["Max",12]]},{"CommandType":"0x55","CommandName":"時間到開","ParameterType":"range","ParameterUnit":"小時","Parameters":[["Min",0],["Max",12]]},{"CommandType":"0x0D","CommandName":"nanoeX(脫臭)","ParameterType":"enum","ParameterUnit":"","Parameters":[["關閉",0],["開啟",1]]}]}]},{"ModelType":"HDH","JSON":[{"DeviceType":3,"DeviceName":"洗衣機","ModelType":"HDH","ProtocalType":"SAANET","ProtocalVersion":"4","Timestamp":"201909050700","list":[{"CommandType":"0x55","CommandName":"行程別訊息","ParameterType":"enum","ParameterUnit":"","Parameters":[["標準行程",0],["加強行程",2],["高級衣行程",5],["浸泡行程",8],["快洗行程",10],["槽洗淨行程",11],["大件行程",13],["標準除垢行程",14],["除螨行程",15],["夜靜行程",16],["自選行程",17],["槽乾燥行程",18],["nanoe行程",19],["約40℃(除臭)行程",20],["約60℃(除菌)行程",21],["溫泡洗行程",22],["自動投入保養",1536]]},{"CommandType":"0x50","CommandName":"運轉情報","ParameterType":"enum","ParameterUnit":"","Parameters":[["待機中",1],["動作中",2],["預約中",3],["預約中",4],["終了",5]]},{"CommandType":"0x54","CommandName":"工程訊息","ParameterType":"enum","ParameterUnit":"","Parameters":[["預洗",1],["浸泡",2],["洗衣",3],["洗清",4],["脫水",5],["乾衣",6],["烘乾",7],["鬆布",8],["鬆柔冷卻",9],["nanoe",10],["延後晾衣",11],["槽除黴",12]]},{"CommandType":"0x13","CommandName":"洗衣殘時間","ParameterType":"range","ParameterUnit":"分","Parameters":[["Min",0],["Max",1440]]},{"CommandType":"0x01","CommandName":"開始洗衣","ParameterType":"range","ParameterUnit":"分","Parameters":[["Min",0],["Max",1]]},{"CommandType":"0x15","CommandName":"預約殘時間","ParameterType":"range","ParameterUnit":"分","Parameters":[["Min",0],["Max",1440]]},{"CommandType":"0x14","CommandName":"預約時間設定","ParameterType":"range","ParameterUnit":"時","Parameters":[["Min",0],["Max",8]]},{"CommandType":"0x19","CommandName":"異常代碼","ParameterType":"enum","ParameterUnit":"","Parameters":[]},{"CommandType":"0x60","CommandName":"時間調整","ParameterType":"range","ParameterUnit":"時","Parameters":[["Min",0],["Max",24]]},{"CommandType":"0x61","CommandName":"延後晾衣設定","ParameterType":"range","ParameterUnit":"時","Parameters":[["Min",1],["Max",8]]},{"CommandType":"0x64","CommandName":"行程設定","ParameterType":"enum","ParameterUnit":"","Parameters":[["標準行程",0],["自選行程",1],["浸泡行程",2],["快洗行程",3],["高級衣行程",4],["大件行程",5],["夜靜行程",7],["槽洗淨行程",8],["加強行程",9],["nanoe行程",10],["標準除垢行程",11],["個別行程",14],["除菌行程",15],["除臭行程",16],["槽乾燥行程",18],["溫泡洗行程",19]]},{"CommandType":"0x69","CommandName":"溫水設定","ParameterType":"enum","ParameterUnit":"","Parameters":[["",0],["溫水",1]]}]}]}]}
2024-08-25 15:55:19.155 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Making #3 request to https://ems2.panasonic.com.tw/api/UserGetInfo with headers {'cptoken': '3081BCF0-EE39-4DEE-9FE2-3A156DB63D4E', 'user-agent': 'okhttp/4.9.1'} and data {'name': 'Power', 'from': '2024/08/01', 'unit': 'day', 'max_num': 31}, proxy:
2024-08-25 15:55:19.440 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Succeed to access #3 API. Returned 200: {"Summary":44.29,"kwh":[1.2,0.96,1.19,2.05,0.9,2.4,0.7,0.37,3.3,1.4,2.4,2.9,1.8,1.3,2.8,2.29,1.2,3.7,1.3,1.0,1.96,0.7,1.67,3.4,1.4,0.0,0.0,0.0,0.0,0.0,0.0],"AreaList":[{"AreaID":"0","AreaName":"","AreaNo":"0","AreaIcon":"1","Total_kwh":"42.20","percent":"95.28"},{"AreaID":"1","AreaName":"2樓","AreaNo":"1","AreaIcon":"1","Total_kwh":"2.09","percent":"4.72"}],"GwList":[{"GwID":"2C9FFB2589A6","DeviceType":"4","NickName":"除濕機-1","AreaID":"0","AreaName":"","AreaNo":"0","SeqNo":"0","Total_kwh":"19.90","kwh":[1.2,0.8,1.0,1.5,0.9,0.8,0.0,0.0,1.4,0.5,0.9,0.8,0.9,0.0,0.0,0.2,1.2,1.4,1.3,1.0,0.0,0.0,1.4,2.6,0.1,0.0,0.0,0.0,0.0,0.0,0.0],"percent":"44.93","Attribute":{"Year":"0"}},{"GwID":"E8C7CF89AD0A","DeviceType":"4","NickName":"除濕機-2","AreaID":"0","AreaName":"","AreaNo":"0","SeqNo":"0","Total_kwh":"22.30","kwh":[0.0,0.0,0.0,0.0,0.0,1.6,0.7,0.1,1.9,0.9,1.4,2.0,0.9,1.3,2.8,1.9,0.0,2.3,0.0,0.0,1.7,0.7,0.0,0.8,1.3,0.0,0.0,0.0,0.0,0.0,0.0],"percent":"50.35","Attribute":{"Year":"0"}},{"GwID":"7061BE2C73F1","DeviceType":"3","NickName":"洗衣機-1","AreaID":"1","AreaName":"2樓","AreaNo":"1","SeqNo":"1","Total_kwh":"2.09","kwh":[0.0,0.16,0.19,0.55,0.0,0.0,0.0,0.27,0.0,0.0,0.1,0.1,0.0,0.0,0.0,0.19,0.0,0.0,0.0,0.0,0.26,0.0,0.27,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"percent":"4.72","Attribute":{"Type":"滾筒"}}]}
2024-08-25 15:55:21.157 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Making #4 request to https://ems2.panasonic.com.tw/api/DeviceGetInfo with headers {'cptoken': '3081BCF0-EE39-4DEE-9FE2-3A156DB63D4E', 'auth': '2C9FFB2589A6DE72933DFCB57088EB3F0CC43337C2FF', 'gwid': '2C9FFB2589A6', 'user-agent': 'okhttp/4.9.1'} and data [{'CommandTypes': [{'CommandType': '0x00'}, {'CommandType': '0x01'}, {'CommandType': '0x02'}, {'CommandType': '0x07'}, {'CommandType': '0x09'}, {'CommandType': '0x0D'}, {'CommandType': '0x50'}, {'CommandType': '0x18'}, {'CommandType': '0x53'}, {'CommandType': '0x55'}, {'CommandType': '0x0A'}, {'CommandType': '0x04'}, {'CommandType': '0x0E'}], 'DeviceID': 1}], proxy:
2024-08-25 15:55:21.783 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Succeed to access #4 API. Returned 200: {"status":"success","devices":[{"DeviceID":1,"Info":[{"CommandType":"0x18","status":"1"},{"CommandType":"0x50","status":"1"},{"CommandType":"0x53","status":"65535"},{"CommandType":"0x55","status":"0"},{"CommandType":"0x00","status":"1"},{"CommandType":"0x01","status":"1"},{"CommandType":"0x02","status":"0"},{"CommandType":"0x07","status":"73"},{"CommandType":"0x09","status":"0"},{"CommandType":"0x0D","status":"1"},{"CommandType":"0x0A","status":"1"},{"CommandType":"0x04","status":"0"},{"CommandType":"0x0E","status":"0"}]}],"updated_at":"20240825155436"}
2024-08-25 15:55:23.160 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Making #5 request to https://ems2.panasonic.com.tw/api/DeviceGetInfo with headers {'cptoken': '3081BCF0-EE39-4DEE-9FE2-3A156DB63D4E', 'auth': 'E8C7CF89AD0ADE72933DFCB57088EB3F0CC43337C2FF', 'gwid': 'E8C7CF89AD0A', 'user-agent': 'okhttp/4.9.1'} and data [{'CommandTypes': [{'CommandType': '0x00'}, {'CommandType': '0x01'}, {'CommandType': '0x02'}, {'CommandType': '0x07'}, {'CommandType': '0x09'}, {'CommandType': '0x0D'}, {'CommandType': '0x50'}, {'CommandType': '0x18'}, {'CommandType': '0x53'}, {'CommandType': '0x55'}, {'CommandType': '0x0A'}, {'CommandType': '0x04'}, {'CommandType': '0x0E'}], 'DeviceID': 1}], proxy:
2024-08-25 15:55:23.831 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Succeed to access #5 API. Returned 200: {"status":"success","devices":[{"DeviceID":1,"Info":[{"CommandType":"0x18","status":"1"},{"CommandType":"0x50","status":"65535"},{"CommandType":"0x53","status":"65535"},{"CommandType":"0x55","status":"0"},{"CommandType":"0x00","status":"1"},{"CommandType":"0x01","status":"6"},{"CommandType":"0x02","status":"0"},{"CommandType":"0x07","status":"71"},{"CommandType":"0x09","status":"0"},{"CommandType":"0x0D","status":"0"},{"CommandType":"0x0A","status":"1"},{"CommandType":"0x04","status":"2"},{"CommandType":"0x0E","status":"0"}]}],"updated_at":"20240825155438"}
2024-08-25 15:55:25.162 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Making #6 request to https://ems2.panasonic.com.tw/api/DeviceGetInfo with headers {'cptoken': '3081BCF0-EE39-4DEE-9FE2-3A156DB63D4E', 'auth': '7061BE2C73F19E60E913DA5D78AAAB9E79706C1457B3', 'gwid': '7061BE2C73F1', 'user-agent': 'okhttp/4.9.1'} and data [{'CommandTypes': [{'CommandType': '0x13'}, {'CommandType': '0x14'}, {'CommandType': '0x15'}, {'CommandType': '0x41'}, {'CommandType': '0x50'}, {'CommandType': '0x54'}, {'CommandType': '0x55'}, {'CommandType': '0x61'}, {'CommandType': '0x64'}], 'DeviceID': 1}], proxy:
2024-08-25 15:55:27.049 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Succeed to access #6 API. Returned 200: {"status":"success","devices":[{"DeviceID":1,"Info":[{"CommandType":"0x13","status":"15"},{"CommandType":"0x14","status":"0"},{"CommandType":"0x15","status":"0"},{"CommandType":"0x41","status":"65535"},{"CommandType":"0x50","status":"2"},{"CommandType":"0x54","status":"4"},{"CommandType":"0x55","status":"0"},{"CommandType":"0x61","status":"65535"},{"CommandType":"0x64","status":"112"}]}],"updated_at":"20240825155515"}
2024-08-25 15:55:27.164 DEBUG (MainThread) [custom_components.panasonic_smart_app] Finished fetching Panasonic Smart Application data in 10.011 seconds (success: True)
2024-08-25 15:55:27.166 INFO (MainThread) [custom_components.panasonic_smart_app] Updating device info...
2024-08-25 15:55:27.167 DEBUG (MainThread) [custom_components.panasonic_smart_app] [除濕機-2 ] is_on: True
2024-08-25 15:55:27.167 DEBUG (MainThread) [custom_components.panasonic_smart_app] [除濕機-2 ] target_humidity: 50
2024-08-25 15:55:27.167 DEBUG (MainThread) [custom_components.panasonic_smart_app] [除濕機-2 ] target_humidity: 50
2024-08-25 15:55:27.167 DEBUG (MainThread) [custom_components.panasonic_smart_app] [除濕機-2 ] _mode: 濕度設定
2024-08-25 15:55:27.168 DEBUG (MainThread) [custom_components.panasonic_smart_app] Device index #0 status: dict_keys(['0x18', '0x50', '0x53', '0x55', '0x00', '0x01', '0x02', '0x07', '0x09', '0x0D', '0x0A', '0x04', '0x0E'])
2024-08-25 15:55:27.168 DEBUG (MainThread) [custom_components.panasonic_smart_app] Device index #1 status: dict_keys(['0x18', '0x50', '0x53', '0x55', '0x00', '0x01', '0x02', '0x07', '0x09', '0x0D', '0x0A', '0x04', '0x0E'])
2024-08-25 15:55:27.168 DEBUG (MainThread) [custom_components.panasonic_smart_app] Device index #2 status: dict_keys(['0x13', '0x14', '0x15', '0x41', '0x50', '0x54', '0x55', '0x61', '0x64'])
2024-08-25 15:55:27.168 DEBUG (MainThread) [custom_components.panasonic_smart_app] [除濕機-1 本月耗電量] state: 19.9
2024-08-25 15:55:27.168 DEBUG (MainThread) [custom_components.panasonic_smart_app] [除濕機-1 環境溼度] state: 73
2024-08-25 15:55:27.169 WARNING (MainThread) [homeassistant.helpers.service] Referenced entities humidifier.chu_shi_ji_1 are missing or not currently available
2024-08-25 15:55:27.171 DEBUG (MainThread) [custom_components.panasonic_smart_app] [除濕機-1 PM2.5] state: 65535.0
2024-08-25 15:55:27.171 DEBUG (MainThread) [custom_components.panasonic_smart_app] [除濕機-2 本月耗電量] state: 22.3
2024-08-25 15:55:27.171 DEBUG (MainThread) [custom_components.panasonic_smart_app] [除濕機-2 環境溼度] state: 71
2024-08-25 15:55:27.171 DEBUG (MainThread) [custom_components.panasonic_smart_app] [除濕機-2 PM2.5] state: 65535.0
2024-08-25 15:55:27.171 DEBUG (MainThread) [custom_components.panasonic_smart_app] [洗衣機-1 本月耗電量] state: 2.09
2024-08-25 15:55:27.172 DEBUG (MainThread) [custom_components.panasonic_smart_app] [洗衣機-1 剩餘洗衣時間] state: 15
2024-08-25 15:55:27.172 DEBUG (MainThread) [custom_components.panasonic_smart_app] [洗衣機-1 運轉狀態] state: 動作中
2024-08-25 15:55:27.172 DEBUG (MainThread) [custom_components.panasonic_smart_app] [洗衣機-1 目前模式] state: 洗清
2024-08-25 15:55:27.172 DEBUG (MainThread) [custom_components.panasonic_smart_app] [洗衣機-1 目前行程] state: 標準行程
2024-08-25 15:55:27.174 DEBUG (MainThread) [custom_components.panasonic_smart_app] [除濕機-1 定時關機] value: 0
2024-08-25 15:55:27.174 DEBUG (MainThread) [custom_components.panasonic_smart_app] [除濕機-2 定時關機] value: 0
2024-08-25 15:55:27.176 DEBUG (MainThread) [custom_components.panasonic_smart_app] [除濕機-1 水箱滿水] is_on: True
2024-08-25 15:55:27.179 DEBUG (MainThread) [custom_components.panasonic_smart_app] [除濕機-2 水箱滿水] is_on: True
2024-08-25 15:55:27.181 DEBUG (MainThread) [custom_components.panasonic_smart_app] [除濕機-1 nanoeX] is_on: True
2024-08-25 15:55:27.181 DEBUG (MainThread) [custom_components.panasonic_smart_app] [除濕機-1 操作提示音] is_on: False
2024-08-25 15:55:27.182 DEBUG (MainThread) [custom_components.panasonic_smart_app] [除濕機-2 nanoeX] is_on: False
2024-08-25 15:55:27.182 DEBUG (MainThread) [custom_components.panasonic_smart_app] [除濕機-2 操作提示音] is_on: False
2024-08-25 15:55:27.183 DEBUG (MainThread) [custom_components.panasonic_smart_app] [除濕機-1 風量設定] current_option: 自動
2024-08-25 15:55:27.183 DEBUG (MainThread) [custom_components.panasonic_smart_app] [除濕機-1 風向設定] current_option: 固定
2024-08-25 15:55:27.183 DEBUG (MainThread) [custom_components.panasonic_smart_app] [除濕機-2 風量設定] current_option: 自動
2024-08-25 15:55:27.183 DEBUG (MainThread) [custom_components.panasonic_smart_app] [除濕機-2 風向設定] current_option: 固定
2024-08-25 15:55:27.185 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Making #7 request to https://ems2.panasonic.com.tw/api/UserGetRegisteredGwList2 with headers {'cptoken': '3081BCF0-EE39-4DEE-9FE2-3A156DB63D4E', 'user-agent': 'okhttp/4.9.1'} and data None, proxy:
2024-08-25 15:55:27.271 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Succeed to access #7 API. Returned 200: {"State":"success","StateMsg":"","MVersion":"20240806111926","GroupList":[],"AreaList":[{"AreaID":"0","AreaName":"","AreaNo":"0","AreaIcon":"1"},{"AreaID":"1","AreaName":"2樓","AreaNo":"1","AreaIcon":"1"}],"GwList":[{"GWID":"2C9FFB2589A6","ModelID":"CZ-T006","AreaID":"0","SeqNo":"0","Auth":"2C9FFB2589A6DE72933DFCB57088EB3F0CC43337C2FF","NickName":"除濕機-1","(地點省略)","DeviceType":"4","ModelType":"GXW","Model":"F-Y32GX","Function":{"SetSchedule":"1"},"Attribute":{"Year":"0"},"Devices":[{"DeviceID":1,"Name":"","IsAvailable":1}]},{"GWID":"E8C7CF89AD0A","ModelID":"CZ-T006","AreaID":"0","SeqNo":"0","Auth":"E8C7CF89AD0ADE72933DFCB57088EB3F0CC43337C2FF","NickName":"除濕機-2","(地點省略)","DeviceType":"4","ModelType":"GXW","Model":"F-Y24GX","Function":{"SetSchedule":"1"},"Attribute":{"Year":"0"},"Devices":[{"DeviceID":1,"Name":"","IsAvailable":1}]},{"GWID":"7061BE2C73F1","ModelID":"CZ-T006","AreaID":"1","SeqNo":"1","Auth":"7061BE2C73F19E60E913DA5D78AAAB9E79706C1457B3","NickName":"洗衣機-1","(地點省略),"DeviceType":"3","ModelType":"HDH","Model":"NA-V160HDH","Function":{},"Attribute":{"Type":"滾筒"},"Devices":[{"DeviceID":1,"Name":"","IsAvailable":1}]}],"CommandList":[{"ModelType":"GXW","JSON":[{"DeviceType":4,"DeviceName":"除濕機","ModelType":"GXW","ProtocalType":"SAANET","ProtocalVersion":"4","Timestamp":"202108170824","list":[{"CommandType":"0x00","CommandName":"電源","ParameterType":"enum","ParameterUnit":"","Parameters":[["停止",0],["運轉",1]]},{"CommandType":"0x01","CommandName":"功能選擇","ParameterType":"enum","ParameterUnit":"","Parameters":[["連續除濕",0],["自動除濕",1],["防霉抑菌",2],["送風模式",3],["衣物乾燥",4],["保持乾燥",5],["濕度設定",6]]},{"CommandType":"0x04","CommandName":"濕度設定","ParameterType":"enum","ParameterUnit":"","Parameters":[["40%",0],["45%",1],["50%",2],["55%",3],["60%",4],["65%",5],["70%",6]]},{"CommandType":"0x0E","CommandName":"風量","ParameterType":"enum","ParameterUnit":"","Parameters":[["自動",0],["急速",1],["標準",2],["靜音",3]]},{"CommandType":"0x09","CommandName":"風向","ParameterType":"enum","ParameterUnit":"","Parameters":[["固定",0],["下方向",1],["上方向",2],["廣角",3],["下吹",4]]},{"CommandType":"0x18","CommandName":"操作提示音","ParameterType":"enum","ParameterUnit":"","Parameters":[["開啟",0],["關閉",1]]},{"CommandType":"0x02","CommandName":"時間到關","ParameterType":"range","ParameterUnit":"小時","Parameters":[["Min",0],["Max",12]]},{"CommandType":"0x55","CommandName":"時間到開","ParameterType":"range","ParameterUnit":"小時","Parameters":[["Min",0],["Max",12]]},{"CommandType":"0x0D","CommandName":"nanoeX(脫臭)","ParameterType":"enum","ParameterUnit":"","Parameters":[["關閉",0],["開啟",1]]}]}]},{"ModelType":"HDH","JSON":[{"DeviceType":3,"DeviceName":"洗衣機","ModelType":"HDH","ProtocalType":"SAANET","ProtocalVersion":"4","Timestamp":"201909050700","list":[{"CommandType":"0x55","CommandName":"行程別訊息","ParameterType":"enum","ParameterUnit":"","Parameters":[["標準行程",0],["加強行程",2],["高級衣行程",5],["浸泡行程",8],["快洗行程",10],["槽洗淨行程",11],["大件行程",13],["標準除垢行程",14],["除螨行程",15],["夜靜行程",16],["自選行程",17],["槽乾燥行程",18],["nanoe行程",19],["約40℃(除臭)行程",20],["約60℃(除菌)行程",21],["溫泡洗行程",22],["自動投入保養",1536]]},{"CommandType":"0x50","CommandName":"運轉情報","ParameterType":"enum","ParameterUnit":"","Parameters":[["待機中",1],["動作中",2],["預約中",3],["預約中",4],["終了",5]]},{"CommandType":"0x54","CommandName":"工程訊息","ParameterType":"enum","ParameterUnit":"","Parameters":[["預洗",1],["浸泡",2],["洗衣",3],["洗清",4],["脫水",5],["乾衣",6],["烘乾",7],["鬆布",8],["鬆柔冷卻",9],["nanoe",10],["延後晾衣",11],["槽除黴",12]]},{"CommandType":"0x13","CommandName":"洗衣殘時間","ParameterType":"range","ParameterUnit":"分","Parameters":[["Min",0],["Max",1440]]},{"CommandType":"0x01","CommandName":"開始洗衣","ParameterType":"range","ParameterUnit":"分","Parameters":[["Min",0],["Max",1]]},{"CommandType":"0x15","CommandName":"預約殘時間","ParameterType":"range","ParameterUnit":"分","Parameters":[["Min",0],["Max",1440]]},{"CommandType":"0x14","CommandName":"預約時間設定","ParameterType":"range","ParameterUnit":"時","Parameters":[["Min",0],["Max",8]]},{"CommandType":"0x19","CommandName":"異常代碼","ParameterType":"enum","ParameterUnit":"","Parameters":[]},{"CommandType":"0x60","CommandName":"時間調整","ParameterType":"range","ParameterUnit":"時","Parameters":[["Min",0],["Max",24]]},{"CommandType":"0x61","CommandName":"延後晾衣設定","ParameterType":"range","ParameterUnit":"時","Parameters":[["Min",1],["Max",8]]},{"CommandType":"0x64","CommandName":"行程設定","ParameterType":"enum","ParameterUnit":"","Parameters":[["標準行程",0],["自選行程",1],["浸泡行程",2],["快洗行程",3],["高級衣行程",4],["大件行程",5],["夜靜行程",7],["槽洗淨行程",8],["加強行程",9],["nanoe行程",10],["標準除垢行程",11],["個別行程",14],["除菌行程",15],["除臭行程",16],["槽乾燥行程",18],["溫泡洗行程",19]]},{"CommandType":"0x69","CommandName":"溫水設定","ParameterType":"enum","ParameterUnit":"","Parameters":[["",0],["溫水",1]]}]}]}]}
2024-08-25 15:55:29.186 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Making #8 request to https://ems2.panasonic.com.tw/api/UserGetInfo with headers {'cptoken': '3081BCF0-EE39-4DEE-9FE2-3A156DB63D4E', 'user-agent': 'okhttp/4.9.1'} and data {'name': 'Power', 'from': '2024/08/01', 'unit': 'day', 'max_num': 31}, proxy:
2024-08-25 15:55:29.319 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Succeed to access #8 API. Returned 200: {"Summary":44.29,"kwh":[1.2,0.96,1.19,2.05,0.9,2.4,0.7,0.37,3.3,1.4,2.4,2.9,1.8,1.3,2.8,2.29,1.2,3.7,1.3,1.0,1.96,0.7,1.67,3.4,1.4,0.0,0.0,0.0,0.0,0.0,0.0],"AreaList":[{"AreaID":"0","AreaName":"","AreaNo":"0","AreaIcon":"1","Total_kwh":"42.20","percent":"95.28"},{"AreaID":"1","AreaName":"2樓","AreaNo":"1","AreaIcon":"1","Total_kwh":"2.09","percent":"4.72"}],"GwList":[{"GwID":"2C9FFB2589A6","DeviceType":"4","NickName":"除濕機-1","AreaID":"0","AreaName":"","AreaNo":"0","SeqNo":"0","Total_kwh":"19.90","kwh":[1.2,0.8,1.0,1.5,0.9,0.8,0.0,0.0,1.4,0.5,0.9,0.8,0.9,0.0,0.0,0.2,1.2,1.4,1.3,1.0,0.0,0.0,1.4,2.6,0.1,0.0,0.0,0.0,0.0,0.0,0.0],"percent":"44.93","Attribute":{"Year":"0"}},{"GwID":"E8C7CF89AD0A","DeviceType":"4","NickName":"除濕機-2","AreaID":"0","AreaName":"","AreaNo":"0","SeqNo":"0","Total_kwh":"22.30","kwh":[0.0,0.0,0.0,0.0,0.0,1.6,0.7,0.1,1.9,0.9,1.4,2.0,0.9,1.3,2.8,1.9,0.0,2.3,0.0,0.0,1.7,0.7,0.0,0.8,1.3,0.0,0.0,0.0,0.0,0.0,0.0],"percent":"50.35","Attribute":{"Year":"0"}},{"GwID":"7061BE2C73F1","DeviceType":"3","NickName":"洗衣機-1","AreaID":"1","AreaName":"2樓","AreaNo":"1","SeqNo":"1","Total_kwh":"2.09","kwh":[0.0,0.16,0.19,0.55,0.0,0.0,0.0,0.27,0.0,0.0,0.1,0.1,0.0,0.0,0.0,0.19,0.0,0.0,0.0,0.0,0.26,0.0,0.27,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"percent":"4.72","Attribute":{"Type":"滾筒"}}]}
2024-08-25 15:55:31.187 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Making #9 request to https://ems2.panasonic.com.tw/api/DeviceGetInfo with headers {'cptoken': '3081BCF0-EE39-4DEE-9FE2-3A156DB63D4E', 'auth': '2C9FFB2589A6DE72933DFCB57088EB3F0CC43337C2FF', 'gwid': '2C9FFB2589A6', 'user-agent': 'okhttp/4.9.1'} and data [{'CommandTypes': [{'CommandType': '0x00'}, {'CommandType': '0x01'}, {'CommandType': '0x02'}, {'CommandType': '0x07'}, {'CommandType': '0x09'}, {'CommandType': '0x0D'}, {'CommandType': '0x50'}, {'CommandType': '0x18'}, {'CommandType': '0x53'}, {'CommandType': '0x55'}, {'CommandType': '0x0A'}, {'CommandType': '0x04'}, {'CommandType': '0x0E'}], 'DeviceID': 1}], proxy:
2024-08-25 15:55:32.876 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Succeed to access #9 API. Returned 200: {"status":"success","devices":[{"DeviceID":1,"Info":[{"CommandType":"0x18","status":"1"},{"CommandType":"0x50","status":"1"},{"CommandType":"0x53","status":"65535"},{"CommandType":"0x55","status":"0"},{"CommandType":"0x00","status":"1"},{"CommandType":"0x01","status":"1"},{"CommandType":"0x02","status":"0"},{"CommandType":"0x07","status":"73"},{"CommandType":"0x09","status":"0"},{"CommandType":"0x0D","status":"1"},{"CommandType":"0x0A","status":"1"},{"CommandType":"0x04","status":"0"},{"CommandType":"0x0E","status":"0"}]}],"updated_at":"20240825155448"}
2024-08-25 15:55:33.190 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Making #10 request to https://ems2.panasonic.com.tw/api/DeviceGetInfo with headers {'cptoken': '3081BCF0-EE39-4DEE-9FE2-3A156DB63D4E', 'auth': 'E8C7CF89AD0ADE72933DFCB57088EB3F0CC43337C2FF', 'gwid': 'E8C7CF89AD0A', 'user-agent': 'okhttp/4.9.1'} and data [{'CommandTypes': [{'CommandType': '0x00'}, {'CommandType': '0x01'}, {'CommandType': '0x02'}, {'CommandType': '0x07'}, {'CommandType': '0x09'}, {'CommandType': '0x0D'}, {'CommandType': '0x50'}, {'CommandType': '0x18'}, {'CommandType': '0x53'}, {'CommandType': '0x55'}, {'CommandType': '0x0A'}, {'CommandType': '0x04'}, {'CommandType': '0x0E'}], 'DeviceID': 1}], proxy:
2024-08-25 15:55:34.878 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Succeed to access #10 API. Returned 200: {"status":"success","devices":[{"DeviceID":1,"Info":[{"CommandType":"0x18","status":"1"},{"CommandType":"0x50","status":"65535"},{"CommandType":"0x53","status":"65535"},{"CommandType":"0x55","status":"0"},{"CommandType":"0x00","status":"1"},{"CommandType":"0x01","status":"6"},{"CommandType":"0x02","status":"0"},{"CommandType":"0x07","status":"71"},{"CommandType":"0x09","status":"0"},{"CommandType":"0x0D","status":"0"},{"CommandType":"0x0A","status":"1"},{"CommandType":"0x04","status":"2"},{"CommandType":"0x0E","status":"0"}]}],"updated_at":"20240825155449"}
2024-08-25 15:55:35.192 DEBUG (MainThread) [custom_components.panasonic_smart_app.smartApp] Making #11 request to https://ems2.panasonic.com.tw/api/DeviceGetInfo with headers {'cptoken': '3081BCF0-EE39-4DEE-9FE2-3A156DB63D4E', 'auth': '7061BE2C73F19E60E913DA5D78AAAB9E79706C1457B3', 'gwid': '7061BE2C73F1', 'user-agent': 'okhttp/4.9.1'} and data [{'CommandTypes': [{'CommandType': '0x13'}, {'CommandType': '0x14'}, {'CommandType': '0x15'}, {'CommandType': '0x41'}, {'CommandType': '0x50'}, {'CommandType': '0x54'}, {'CommandType': '0x55'}, {'CommandType': '0x61'}, {'CommandType': '0x64'}], 'DeviceID': 1}], proxy:
2024-08-25 15:55:37.166 WARNING (MainThread) [homeassistant.components.humidifier] Setup of humidifier platform panasonic_smart_app is taking over 10 seconds.

@msg00235 請問您 Panasonic Smart App 內，洗衣機的名稱是否有更改過(目前是否為洗衣機-1) ?

沒更改過 目前仍然是洗衣機-1


Extending FloatingWatermarks

[x] DatePicker

[x] DateTimePicker

[x] TimePicker

[ ] Final Testing

Resolves  #2524
Resolves #2486

@punker76 Ok, for me this PR is finished.


Error trying to run grunt-lib-phantomjs on windows

Running PhantomJS...ERROR
>> CreateProcessW: %1 is not a valid Win32 application. 0 [ 'CreateProcessW: %1
is not a valid Win32 application.' ]
>> In order for this task to work properly, PhantomJS must be installed locally
>> via NPM. If you're seeing this message, generally that means the NPM install
>> has failed. Please submit an issue providing as much detail as possible at:
>> https://github.com/gruntjs/grunt-lib-phantomjs/issues
Warning: PhantomJS not found. Use --force to continue.

When in run jasmine using grunt i see the following message. But this generates specRunner html file.Im trying to get the test execution summary on command line. And it fails because of following message.
Running "jasmine:unit" (jasmine) task
Testing jasmine specs via PhantomJS
Warning: Cannot read property 'pid' of undefined Use --force to continue.
Aborted due to warnings.
Versions:
Phantomjsjs: 1.9.8
grunt-contrib-jasmine: ~0.9(what ever is the latest)
"grunt server --stack" logs:
TypeError: Cannot read property 'pid' of undefined
at kill (C:\nodejs\sample\node_modules\grunt-contrib-jasmine\node_modules\grun
t-lib-phantomjs\lib\phantomjs.js:59:28)
at cleanup (C:\nodejs\sample\node_modules\grunt-contrib-jasmine\node_modules\g
runt-lib-phantomjs\lib\phantomjs.js:65:31)
at C:\nodejs\sample\node_modules\grunt-contrib-jasmine\node_modules\grunt-lib-
phantomjs\lib\phantomjs.js:174:7
at callDone (C:\nodejs\sample\node_modules\grunt\node_modules\grunt-legacy-uti
l\index.js:159:5)
at Object.util.spawn (C:\nodejs\sample\node_modules\grunt\node_modules\grunt-l
egacy-util\index.js:178:7)
at EventEmitter.exports.spawn (C:\nodejs\sample\node_modules\grunt-contrib-jas
mine\node_modules\grunt-lib-phantomjs\lib\phantomjs.js:164:41)
at phantomRunner (C:\nodejs\sample\node_modules\grunt-contrib-jasmine\tasks\ja
smine.js:140:15)
at Object. (C:\nodejs\sample\node_modules\grunt-contrib-jasmine\tas
ks\jasmine.js:108:5)
at Object. (C:\nodejs\sample\node_modules\grunt\lib\grunt\task.js:2
64:15)
at Object.thisTask.fn (C:\nodejs\sample\node_modules\grunt\lib\grunt\task.js:8
2:16)
Aborted due to warnings.
Please help me. What am I doing wrong here?
Thanks!

From all the stack traces above, that there is a problem with the path of PhantomJS binary. The package phantomjs (aka phantomjs-prebuilt) is the one responsible for installing and providing us the path to PhantomJS binary.
So this issue has nothing to do with this package even if the error message says otherwise.
A fresh install of this package should fix the issue. If persist report it to https://github.com/Medium/phantomjs.
Closing this for now, feel free to ask if you have followup questions.


Multiple nodes not working

Multiple nodes not working
Description
It works fine with 1 node. But when I increase the nodes (tried every of  combination boot and validtor till 5) but it doesn't work. They don't seem to successfully commit or load blocks. Some read and every write txns don't  work.
Your environment

tried on MacOs and Linux both.
tried versions 0.6.2, 0.6.1, 0.6.0 and 0.5.1
Locally and with cloud both by hosting an aws ec2 instance with a load balancer and a dns both but in dev mode only.

Steps to reproduce

generate two validator keys by -  polygon-edge secrets init --data-dir test-chain-1 &&  polygon-edge secrets init --data-dir test-chain-2

generate geensis file by - polygon-edge genesis --consensus ibft --ibft-validators-prefix-path test-chain-  --bootnode /ip4/<IP_ADDRESS>/tcp/10001/p2p/{nodeI_id_1} --premine={any wallet we want some balance on}:100000000000000000000000

starts the nodes by:

polygon-edge server --data-dir ./test-chain-1 --chain genesis.json --grpc-address :10000 --libp2p :10001 --jsonrpc :10002 --seal --dev --log-level debug
polygon-edge server --data-dir ./test-chain-2 --chain genesis.json --grpc-address :20000 --libp2p :20001 --jsonrpc :20002 --seal --dev --log-level debug

my genesis file looks like
{
"name": "polygon-edge",
"genesis": {
"nonce": "0x0000000000000000",
"timestamp": "0x0",
"extraData": "0x0000000000000000000000000000000000000000000000000000000000000000f896f890f84694add6086442468c0f2845c6cea94ffc21479e69d7b0942c013804d4bcf3c09e6fa2a9bd2c842555f450f58b45add4cc7456ba0ec40ddb3abc524535250ab7cd98bbc5280ce6f84694e2e38241dafe159d2d9eb5b56d67c04b2a81b0b3b0916e7192c453d40d134ef345b5f6f199c4dfe63826e715944e8b0de717c3a6dd7d1623f5f5734a19631cbdedeac2930f80c28080",
"gasLimit": "0x500000",
"difficulty": "0x1",
"mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x0000000000000000000000000000000000000000",
"alloc": {
"0x73cb4Cf464Ba30bBB369Ce7AC58C0e1B1920EAF6": {
"balance": "0x152d02c7e14af6800000"
}
},
"number": "0x0",
"gasUsed": "0x70000",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
"params": {
"forks": {
"homestead": 0,
"byzantium": 0,
"constantinople": 0,
"petersburg": 0,
"istanbul": 0,
"EIP150": 0,
"EIP158": 0,
"EIP155": 0
},
"chainID": 100,
"engine": {
"ibft": {
"epochSize": 100000,
"type": "PoA",
"validator_type": "bls"
}
},
"blockGasTarget": 0
},
"bootnodes": [
"/ip4/<IP_ADDRESS>/tcp/10001/p2p/16Uiu2HAkwRhNRG62Gp88xzhDvqBoVMKsHBxCPfw2Uzfsw2RzDQvP"
]
}

Provide us with commands that you used to start your validators.

polygon-edge server --data-dir ./test-chain-1 --chain genesis.json --grpc-address :10000 --libp2p :10001 --jsonrpc :10002 --seal --dev --log-level debug
polygon-edge server --data-dir ./test-chain-2 --chain genesis.json --grpc-address :20000 --libp2p :20001 --jsonrpc :20002 --seal --dev --log-level debug

Provide us with the peer list of each of your validators by running the following command: polygon-edge peers list --grpc-address GRPC_ADDRESS.
[PEERS LIST]
No peers found

Blocks aren't being created while some queries are working fine like getting balance etc

Logs
2022-12-31T10:24:57.894Z [INFO]  polygon.server: Data dir: path=./test-chain-1
2022-12-31T10:24:57.894Z [DEBUG] polygon.server: DataDog profiler disabled, set DD_PROFILING_ENABLED env var to enable it.
2022-12-31T10:24:57.986Z [INFO]  polygon.blockchain: Current header: hash=0x11754320dffd5f003c7a97874ea4eb4efe62668dd2d9d2c4be225534880dfe54 number=0
2022-12-31T10:24:57.987Z [INFO]  polygon.blockchain: genesis: hash=0x11754320dffd5f003c7a97874ea4eb4efe62668dd2d9d2c4be225534880dfe54
2022-12-31T10:24:57.988Z [INFO]  polygon.server.ibft: validator key: addr=0xAdD6086442468c0f2845C6cea94ffC21479E69D7
2022-12-31T10:24:57.988Z [INFO]  polygon.server: GRPC server running: addr=<IP_ADDRESS>:10000
2022-12-31T10:24:57.989Z [INFO]  polygon.network: LibP2P server running: addr=/ip4/<IP_ADDRESS>/tcp/10001/p2p/16Uiu2HAkwRhNRG62Gp88xzhDvqBoVMKsHBxCPfw2Uzfsw2RzDQvP
2022-12-31T10:24:57.990Z [INFO]  polygon.server.jsonrpc: http server started: addr=<IP_ADDRESS>:10002
2022-12-31T10:24:58.028Z [INFO]  polygon.server.ibft.consensus: sequence started: height=1
2022-12-31T10:24:58.028Z [INFO]  polygon.server.ibft.consensus: round started: round=0
2022-12-31T10:24:58.029Z [INFO]  polygon.server.ibft.consensus: we are the proposer
2022-12-31T10:25:00.000Z [INFO]  polygon.server.ibft: executed txs: successful=0 failed=0 skipped=0 remaining=0
2022-12-31T10:25:00.001Z [INFO]  polygon.server.ibft: build block: number=1 txs=0
2022-12-31T10:25:00.003Z [DEBUG] polygon.server.ibft.consensus: block proposal accepted
2022-12-31T10:25:00.004Z [DEBUG] polygon.server.ibft.consensus: pre-prepare message multicasted
2022-12-31T10:25:00.004Z [DEBUG] polygon.server.ibft.consensus: enter: prepare state
2022-12-31T10:25:00.010Z [DEBUG] polygon.server.ibft: validator message received: type=PREPREPARE height=1 round=0 addr=0xAdD6086442468c0f2845C6cea94ffC21479E69D7
2022-12-31T10:25:10.030Z [DEBUG] polygon.server.ibft.consensus: exit: prepare state
2022-12-31T10:25:10.030Z [INFO]  polygon.server.ibft.consensus: round timeout expired: round=0
2022-12-31T10:25:10.031Z [INFO]  polygon.server.ibft.consensus: round started: round=1
2022-12-31T10:25:10.031Z [DEBUG] polygon.server.ibft.consensus: enter: new round state
2022-12-31T10:25:10.031Z [DEBUG] polygon.server.ibft: validator message received: type=ROUND_CHANGE height=1 round=1 addr=0xAdD6086442468c0f2845C6cea94ffC21479E69D7
2022-12-31T10:25:32.032Z [DEBUG] polygon.server.ibft.consensus: exit: new round state
2022-12-31T10:25:32.032Z [INFO]  polygon.server.ibft.consensus: round timeout expired: round=1
2022-12-31T10:25:32.033Z [INFO]  polygon.server.ibft.consensus: round started: round=2
2022-12-31T10:25:32.033Z [INFO]  polygon.server.ibft.consensus: we are the proposer
2022-12-31T10:25:32.034Z [DEBUG] polygon.server.ibft: validator message received: type=ROUND_CHANGE height=1 round=2 addr=0xAdD6086442468c0f2845C6cea94ffC21479E69D7
2022-12-31T10:26:14.035Z [ERROR] polygon.server.ibft.consensus: unable to build proposal
2022-12-31T10:26:14.035Z [INFO]  polygon.server.ibft.consensus: round timeout expired: round=2
2022-12-31T10:26:14.035Z [INFO]  polygon.server.ibft.consensus: round started: round=3
2022-12-31T10:26:14.035Z [DEBUG] polygon.server.ibft.consensus: enter: new round state
20
##Tried solutions

I tried with previous 3 releases
I tried by changing the default file descriptor limit ( maximum number of open files )
I tried it on different OS

@upendra-metasky
Can you try to start the chain without --premine flag in your genesis file, and let us know if the sync between the nodes will start to work?

@upendra-metasky
Can you try to start the chain without --premine flag in your genesis file, and let us know if the sync between the nodes will start to work?

No. It didn't work. Also curious why do you think it might have been the reason?

I've been having the same issue as well.

@upendra-metasky
Can you try to start the chain without --premine flag in your genesis file, and let us know if the sync between the nodes will start to work?

No. It didn't work. Also curious why do you think it might have been the reason?

@ivanbozic21  Waiting for your response. In my understanding this has to be an issue being faced by many people like me and @Exzo-Network

@upendra-metasky
Please make sure that both of your validators are running then try to get the peer list by running the following command:
polygon-edge peers list --grpc-address localhost:10000
I would advise you to setup a new chain and to premine the amount on one of your validator addresses because there seems to be an issue with generating of the first block.
From logs, I can see that you tried to premine on the following address, 0x73cb4Cf464Ba30bBB369Ce7AC58C0e1B1920EAF6. Per logs this doesn't seem to be address of any of your validators in the chain.
Awaiting your earliest response.

@Exzo-Network, we have over 100 users and clients who are able to run the Polygon Edge without a problem, and please raise a new issue including all necessary details in order to try to assist you further.
Thank you!

hey

@upendra-metasky
Please make sure that both of your validators are running then try to get the peer list by running the following command:
polygon-edge peers list --grpc-address localhost:10000
I would advise you to setup a new chain and to premine the amount on one of your validator addresses because there seems to be an issue with generating of the first block.
From logs, I can see that you tried to premine on the following address, 0x73cb4Cf464Ba30bBB369Ce7AC58C0e1B1920EAF6. Per logs this doesn't seem to be address of any of your validators in the chain.
Awaiting your earliest response.

Thanks @ivanbozic21 but i also tried without premine flag. I also tried a fresh setup on on of my colleague's system without premine. I first tried with 2 nodes which didn't work but then it worked with 1 node. I would be up for a call to recreate the issue on call.

@upendra-metasky we can provide you with assistance only via this GitHub issue board.
Please try once again to follow the instructions from the following page:
https://wiki.polygon.technology/docs/edge/get-started/set-up-ibft-locally
Try to use our example commands and setup at define at least two bootnodes, then start 4 validators/nodes in your chain and let us know your outcome.
Also, write down all commands that you ran to setup your local chain and include them in your next message if the issue will still persists.
Awaiting for your earliest response.

polygon-edge peers list --grpc-address localhost:10000

Yes sir. Polygon edge is actually AMAZING this was just the first issue we have had so hoping this solution here also works for us.

@Exzo-Network please raise a new Github issue, and fill up the support template with all necessary details in order to assist you further.


Introduce null consumer and Hidden option to set consumer

Implements a null consumer and a hidden option to set the consumer.

@philandstuff This can wait until consistent hashing lands and I'm happy to rebase it at that time. I don't want to cause too much more churn for you.
Let me know

If this is better than before
If you want to land this before or after consistent hashing. I'll help with the rebase in either case.


feat: Function name tokens

Manually fill in the library of "function name" tokens for training data generator
{ "increment" : ["increment", "next"]}

Closed by #19


100% CPU consumption

Hi there,
I have been using pm2-redis for several months in a server that we use for logging events. Two weeks ago the server started becoming unresponsive and saw that the CPU was almost always at 100%, so I thought we needed more power for the app that we run there and upgraded the VM to a bigger one.
Today I was checking Keymetrics and noticed that this machine's CPU was at 100% again, and clicking the top CPU consumers showed that this module was taking all the resources. Uninstalling it made the CPU to drop immediately to 20%.
I have no idea what the cause might be but it's currently unusable, at least in my case (NodeJS 4.4.4). I'm willing to help to debug or try things if you need.
Thanks

This setInterval could be reviewed: https://github.com/pm2-hive/pm2-redis/blob/master/lib/info.js#L89.
It should only reset the interval when the call to client.info("stats") has done counting.

This problem was caused in my environment too.
$ pm2 --version
1.1.3
$ node --version
v4.4.0
$ redis-server --version
Redis server v=3.0.7 sha=00000000:0 malloc=jemalloc-3.6.0 bits=64 build=5ece30e075eed8d2

The module has been re-wrote, please use the latest version ;)


8 create dot forest plot

Create dot-forest plot - added supporting functions and test.

@aemabe thanks for the review comments. I have added example for the top middle bottom plots.
The dot-forest plot functions are dependent on the structure and format of the effects_table.  Users should ensure the dataframe being passed to the dot-forest plot has similar variables as the effects table.


[v2.0.7] published on npm without pulling the changes from master

Hi, @d3viant0ne
this in npm v2.0.7
51:    webpackOptions.output.path = '/_karma_webpack_/' + indexPath;
52:    webpackOptions.output.publicPath = '/_karma_webpack_/' + publicPath;
53:    webpackOptions.output.filename = '[name]';

this in master
51:    webpackOptions.output.path = path.join(os.tmpdir(), '_karma_webpack_', indexPath)
52:    webpackOptions.output.publicPath = path.join(os.tmpdir(), '_karma_webpack_', publicPath)
53:    webpackOptions.output.filename = '[name]'

v2.0.7 has been deprecated on npm.
<EMAIL_ADDRESS>is out on npm with the expected changes.


Add documentation / instructions on how to use

Add a basic walk through of the package:

[ ] Why it's built
[ ] How the system works
[ ] How to use it
[ ] Full example

@FilledStacks would you want me to scaffold a dumi site for this? or vuepress

@mxttwoods I'd want the readme to have the basic tutorial in it. The idea behind the package, how to use it, etc. I'm going to post my written tutorial below that I wrote for the youtube collab on fireship. Some of that will be helpful to get the idea across. Things will have to be updated as well.

Adjusted version of complete written tutorial to remove firebase project setup. We can assume they have a project setup already.

Backend Overview
I'd like to start out by taking you through a high level overview of how the backend will be setup. This overview will go over the types of functions we use as well as the actual code structure.
Types of Functions
The backend is built around the strengths that firebase poses in their serverless cloud functions setup. Focussing on those strengths we can break the system into two types of functions (could also be called a micro-service if you choose to). Reactive and RESTul

Reactive: This is a function that will run in reaction to data or state updating on the backend. An example of this will be when a file is uploaded to cloud storage or the most common when a document / entry in the database has been updated.
RESTful: This is the function that will run when the user makes an http request to the uri the function is assigned to. Nothing special about these ones.

Code structure
We have an enforced code structure that will help with the organisation of the backend as well as the overall maintenance as it grows. There's 3 major things to go over.

Each function will be in its own dedicated file: This is to get rid of the "natural" tendency, when starting with firebase cloud functions, to keep adding functions into the same index file forcing it to grow bigger as your backend requirements grow. The file name will be the exact name of the endpoint to keep things easy to manage. This is not a requirement but I've found it to be quite helpful.
Functions will be placed in a folder titled either restful or reactive
The backend will be split into different resource groups to ensure a structured backend in production

Code Setup
Installation
We'll start off by installing the package dedicated to using this system firebase-backend. Install the package through npm
npm install firebase-backend

Configuration
Then you can open the index.ts file in your source folder and update it to
import { FunctionParser } from "firebase-backend";

exports = new FunctionParser(__dirname, exports).exports;

These are the two magical lines of code that allows us to dynamically add and export functions as the backend grows without ever changing the index file 🥳. And that's also all we need to set it up. Now we can start creating functions 😎
Creating an Http Endpoint
Lets start with something familiar. Creating a RESTful endpoint on our backend. We'll start by creating a folder (resource group) called users. In this folder we'll create another folder called restful. Then we'll create a new file called addPaymentMethod.endpoint.ts.  For any endpoint the file has to end in .endpoint.ts if it doesn't then it won't be loaded as an http endpoint.
Inside that file we'll import Request and Response from express as well as Endpoint and RequestType from firebase-backend. Then we'll construct and export a new endpoint with some made up logic.
import { Request, Response } from 'express';
import { Endpoint, RequestType } from 'firebase-backend';

export default new Endpoint(
  'addPaymentMethod',
  RequestType.POST,
  (request: Request, response: Response) => {
    // Read the values out of the body
    const cardNumber = request.body['card_number'];
    const cardHolder = request.body['card_holder']

    // Do your thing with the values
    var paymentToken = `${cardNumber}_${cardHolder}`;

    // Send your response. 201 to indicate the creation of a new resource
    return response.status(201).send({
      token: paymentToken,
    });
  }
);

As you can see there's not a lot of code required to setup an endpoint. We construct a new endpoint and start off by passing in the name of the endpoint. To make maintenance easier as the code base grows we'll always give this the same name as the file it's in. Then we tell the backend what type of request this will accept, and lastly we handle the actual request and send back our response.
Testing an Endpoint
To test this out we'll run the following command in the functions folder.
npm run serve

This will build the TypeScript code and then serve the functions locally through the emulator. If this is successful you should see the following in the console. You should see the functions API has deployed (locally) a function at the following url
http://localhost:5001/boxtout-fireship/us-central1/users-api

All the endpoints in the users resource group will be deployed under the /user-api function. This means that we can make a post request to the endpoint with the expected data and check if we get back a result. I'm going to use PostMan to test this out. So we'll put in the above url and add /addpaymentmethod at the end of it. Select post as the HTTP request type and then pass in a body.
{
 "card_number" : "5418754514815181",
 "card_holder" : "FilledStacks"
}

When we execute this we get back the token in the format we supplied
{
    "token": "5418754514815181_FilledStacks"
}

There we have it, your first endpoint created. Next up is reactive functions.
Creating a Reactive Function
To demonstrate this we'll add a function that will fire when a new user is created in the firestore db. Create a new folder in the users folder called reactive. Inside that folder create a new file called onUserCreated.function.ts . The part .function.ts is very important. That's how we know which file to load as a reactive function.
import * as functions from "firebase-functions";

exports.onUserCreated = functions.firestore
    .document("users/{userId}")
    .onCreate((userSnapshot, context) => {
      const data = userSnapshot.data();
      console.log(
          `User Created | send an email to ${data.email}`
      );
    });

Then we'll run npm run build in the functions folder. And after that we'll run firebase emulators:start. You should now see something like this printed out. You should now have a function deployed at users-onUserCreated as well as at users-api. All the api endpoints go under the one api function, but the reactive functions are added as their own functions. Lets test this out.
Testing out a Reactive Function
At the bottom of your logs you'll see a link to firestore http://localhost:4000/firestore . Open that in your browser. You'll see an empty page. Click on start collection, make the collection id users . Add a field called email and put the value<EMAIL_ADDRESS>and save the document. When this is saved you should see the logs printing out the following message
i  functions: Beginning execution of "users-onUserCreated"
>  User id created TybqxAwnC4X5DWLgtXOp
>  {"severity":"WARNING","message":"Function returned undefined, expected Promise or value"}
i  functions: Finished "users-onUserCreated" in ~1s
>  User Created | send an email to<EMAIL_ADDRESS>
And that's it! You've created a reactive function as well as a http endpoint. Going further when you want to expand you backend you simply create a new file in the dedicated folder depending on the function type and it'll be added automatically.
Environment improvement (This can also fit under Code Setup at the top)
The way that the default TypeScript project is setup is not sufficient for consistent deployments and debugging. Because of that we'll add some additional things into our project. We'll start by making sure that old function code don't lurk around when we're testing any new changes. To fix that we'll add a new package into the functions folder called rimraf
npm install -d rimraf

Then we'll add 2 new scripts into the package.json . Above the build script we'll add clean and prebuild.
"scripts": {
    "lint": "eslint --ext .js,.ts .",

		"clean": "rimraf lib/",
    "prebuild": "npm run clean",

    "build": "tsc",
    "serve": "npm run build && firebase emulators:start --only functions",
    "shell": "npm run build && firebase functions:shell",
    "start": "npm run shell",
    "deploy": "firebase deploy --only functions",
    "logs": "firebase functions:log"
  },

This will now clean out your generated code before building the new code.
Deploy
And finally we can deploy our backend. We first run npm run build when that's compelete we run npm run deploy and that will push all the latest function code to your firebase project.

@mxttwoods we might want to use the new way of defining the enpoints using the extended classes for Post, Update, Delete, Get and Patch

Looks good! Maybe open a PR and mention me and I'll submit a edit or two.

Updated readme for the latest version


Error on some USER

Hello Michele!!
Some User isn't working, can it be user (streamer) restriction ?

Are you sure you have the latest version?
https://github.com/Michele0303/TikTok-Live-Recorder/releases/tag/2.0

Yes, i'm using latest version.
can you test this user: @wahtie_woodturning

Try starting it from cmd and not from mingw


[Feature Request] in save method add parameter to run or not to run life cycle callbacks

In save method it should be possible to specify whether to run or not to run life cycle callbacks. Use case is preordered tree operations. When change on one record triggers changes on many of them.
Example code is in question I posted on SO http://stackoverflow.com/q/26427356/1695418

@particlebanana, @devinivy, @tjwebb, what do you guys think about being able to disable lifecycle callbacks on a save/update/destroy operation?

I would opt to go a different route here, such as providing the ability to pass meta information (in the form of an object) to the adapter and lifecycle callbacks.  Then the lifecycle callbacks could act on any any information that the user would like to provide them.  The object would be an optional parameter to Model#save and all the public Collection methods.

I see what you mean @devinivy, something similar (regarding the adapters) has been discussed in  #780: Queries language: passing adapter specific parameters. I think that could be a reasonable tradeoff.


[Task] Add the unit test of logging-elasticsearch-plugin

Description
This is the task of gsoc. I need to add the unit test of logging-elasticsearch-plugin.
Task List
1.Add the unit test of logging-elasticsearch-plugin

#3591


Dupe potion registry?

Minecraft version & Mod Version:
MC 1.12.2
Cyclic 1.17.2
Single player or Server: SP
Describe problem (what you were doing / what happened):
[18:51:05] [main/WARN] [FML]: * Registry PotionType: The object com.lothrazar.cyclicmagic.potion.PotionTypeCyclic@3609db54 has been registered twice for the same name cyclicmagic:saturation.
[18:51:05] [main/WARN] [FML]: *  at net.minecraftforge.registries.ForgeRegistry.add(ForgeRegistry.java:301)
[18:51:05] [main/WARN] [FML]: *  at net.minecraftforge.registries.ForgeRegistry.add(ForgeRegistry.java:282)
[18:51:05] [main/WARN] [FML]: *  at net.minecraftforge.registries.ForgeRegistry.register(ForgeRegistry.java:115)
[18:51:05] [main/WARN] [FML]: *  at com.lothrazar.cyclicmagic.potion.PotionTypeRegistry.onRegistryEvent(PotionTypeRegistry.java:55)
[18:51:05] [main/WARN] [FML]: *  at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_810_PotionTypeRegistry_onRegistryEvent_Register.invoke(.dynamic)
[18:51:05] [main/WARN] [FML]: *  at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:90)...
[18:51:05] [main/WARN] [FML]: ****************************************

Crash log (if any):
(If this is a suggestion and not a bug report, delete all this and just write your suggestion!)

Yeah i did see this once i finally upgraded to the newer versions of forge, never was printed before.
I must be adding the level 2 potion type wrong

1.17.3 https://minecraft.curseforge.com/projects/cyclic/files/2625191


BB indicators’ multiplier K to be variable

I am planning to edit BB upper/lower indicators for their multiplier (usually called K) to be variable. Currently K is hard-coded as Decimal.TWO. ref1 ref2
Two ways of implemantation:

Creating a new abstract class for BB upper/lower and implement properties onto it.
Implementing new prop on each of them independently.

Opt 1 is rather OOP and DRY approach but the name of new abstract is another question for me.
Opt 2 is viable for simple classes like them, though not DRY.
I would appreciate any suggestion from maitainer.

Hi and thank you for your offer!
I would choose the 2nd option; even if it's not DRY it avoids looking for a relevant name as in the first option. Don't forget to update the test classes. ;)


Create blockfinder website

This issue comes from Tor Trac ticket 6333 opened by ioerror 17 months ago (https://trac.torproject.org/projects/tor/ticket/6333):
"We need a website for blockfinder.net that includes daily database updates."
Moving it here, because I assume nobody would expect blockfinder issues in Tor's Trac.  (To be honest, I don't know what exactly this ticket is about.)

@ioerror is this done?


Making sure we return an Integer as error code

Fix for https://papertrailapp.com/groups/1997763/events?q="Error"+OR+"code%3A+500"+OR+"Error+Express"&q_id=7200403
Error Express :  { [Error: Your card was declined.]
  code: 'card_declined',
  type: 'StripeCardError',
  message: 'Your card was declined.' }
_http_server.js:192
    throw new RangeError(`Invalid status code: ${statusCode}`);
    ^

RangeError: Invalid status code: 0
    at ServerResponse.writeHead (_http_server.js:192:11)

This doesn't solve the reason why the card is declined but at least by fixing this we will be able to get a proper error email with the curl command to reproduce it.

Actually, let me merge and deploy this so that we can already get some data from production.


SyntaxError: "1" contains no units

Issue Name
Summary
While using the scicat-backend image,

I'm attempting to upload metadata of datasets to scicat, which is running in a docker-compose environment
The application was functioning as expected until the pasted error started to occur during every dataset-upload attempt via the web interface and via local execution of a python-script
The error message indicates a syntax issue with a numerical value containing units
No changes were made to the application configuration or codebase prior to the error occurring.

Error:
scicat_1           | SyntaxError: "1" contains no units
scicat_1           |     at Function.Unit.parse (/home/node/app/node_modules/mathjs/lib/cjs/type/unit/Unit.js:447:13)
scicat_1           |     at new Unit (/home/node/app/node_modules/mathjs/lib/cjs/type/unit/Unit.js:87:20)
scicat_1           |     at Function.numberBigNumberFractionComplexString (/home/node/app/node_modules/mathjs/lib/cjs/type/unit/function/unit.js:56:14)
scicat_1           |     at unit (/home/node/app/node_modules/typed-function/typed-function.js:1085:85)
scicat_1           |     at convertToSI (/home/node/app/dist/common/utils.js:11:44)
scicat_1           |     at /home/node/app/dist/common/utils.js:39:65
scicat_1           |     at Array.forEach (<anonymous>)
scicat_1           |     at appendSIUnitToPhysicalQuantity (/home/node/app/dist/common/utils.js:22:25)
scicat_1           |     at /home/node/app/dist/common/utils.js:44:129
scicat_1           |     at Array.forEach (<anonymous>)
scicat_1           |     at appendSIUnitToPhysicalQuantity (/home/node/app/dist/common/utils.js:22:25)
scicat_1           |     at FormatPhysicalQuantitiesInterceptor.intercept (/home/node/app/dist/common/interceptors/format-physical-quantities.interceptor.js:24:60)
scicat_1           |     at /home/node/app/node_modules/@nestjs/core/interceptors/interceptors-consumer.js:23:36
scicat_1           |     at Object.handle (/home/node/app/node_modules/@nestjs/core/interceptors/interceptors-consumer.js:21:61)
scicat_1           |     at UTCTimeInterceptor.intercept (/home/node/app/dist/common/interceptors/utc-time.interceptor.js:23:21)
scicat_1           |     at /home/node/app/node_modules/@nestjs/core/interceptors/interceptors-consumer.js:23:36
scicat_1           | SyntaxError: "1" contains no units
scicat_1           |     at Function.Unit.parse (/home/node/app/node_modules/mathjs/lib/cjs/type/unit/Unit.js:447:13)
scicat_1           |     at new Unit (/home/node/app/node_modules/mathjs/lib/cjs/type/unit/Unit.js:87:20)
scicat_1           |     at Function.numberBigNumberFractionComplexString (/home/node/app/node_modules/mathjs/lib/cjs/type/unit/function/unit.js:56:14)
scicat_1           |     at unit (/home/node/app/node_modules/typed-function/typed-function.js:1085:85)
scicat_1           |     at convertToSI (/home/node/app/dist/common/utils.js:11:44)
scicat_1           |     at /home/node/app/dist/common/utils.js:39:65
scicat_1           |     at Array.forEach (<anonymous>)
scicat_1           |     at appendSIUnitToPhysicalQuantity (/home/node/app/dist/common/utils.js:22:25)
scicat_1           |     at /home/node/app/dist/common/utils.js:44:129
scicat_1           |     at Array.forEach (<anonymous>)
scicat_1           |     at appendSIUnitToPhysicalQuantity (/home/node/app/dist/common/utils.js:22:25)
scicat_1           |     at FormatPhysicalQuantitiesInterceptor.intercept (/home/node/app/dist/common/interceptors/format-physical-quantities.interceptor.js:24:60)
scicat_1           |     at /home/node/app/node_modules/@nestjs/core/interceptors/interceptors-consumer.js:23:36
scicat_1           |     at Object.handle (/home/node/app/node_modules/@nestjs/core/interceptors/interceptors-consumer.js:21:61)
scicat_1           |     at UTCTimeInterceptor.intercept (/home/node/app/dist/common/interceptors/utc-time.interceptor.js:23:21)
scicat_1           |     at /home/node/app/node_modules/@nestjs/core/interceptors/interceptors-consumer.js:23:36

Current Behaviour

Output in terminal and mongo-express entries indicate that all works
But nothing is displayed on the webserver

Expected Behaviour

e.g. execute python-script to upload dataset and display it on the webserver.
Output in terminal and mongo-express show successful creation of dataset

Extra Details
It appears that the error is originating from the mathjs library, which is used to perform mathematical operations involving units of measurement. The error message indicates that the code is attempting to parse a unit of measurement from a string that has a value of 1, but it is unable to do so.
I have tried using different images to resolve the error, but the issue persists.
I suspect the error may be caused by changes to the scicat codebase or dependencies, but cannot determine the exact cause.
I am unsure whether this error is caused by a change in any JSON object or if it is being caused by an issue on the server-side. Can someone please help me identify the root cause of this error and provide a solution?

@San-WierPa will you be able to provide an example of the data that you are trying to ingest and triggers the error?
Which library are you using in python to ingest the data?
Thanks

Thank you for your reply. I'm using an openapi generated client and the same payload. Both did not change through the last month (and I did docker-compose down/up a few times since the last change of the payload). Just yesterday morning, I was still able to upload one dataset and then it just "stopped" (except that I can still see the whole JSON object, while accessing mongo-express). Anyway, here is the payload:
 {
            "owner_group": "University of Wuppertal",  #TODO
            "access_groups": "NO_THUMBNAIL", #TODO
            "creation_location": "wuppertal", #TODO
            "principal_investigator": "someone", #TODO
            "dataset_name": titlename
            + " "
            + datetime.now().strftime("%Y-%m-%d-%H_%M_%S"),
            "type": "raw", #TODO
            "is_published": False, #TODO
            "creation_time": str(datetime.now().isoformat()),
            "source_folder": "None",
            "owner": "None", #TODO
            "contact_email"<EMAIL_ADDRESS>#TODO
            "scientific_metadata": {
                "Abstract": "This is a very descriptive and long informative abstract to understand this dataset a bit better!", #TODO
                "Source": "LABORATORY", #TODO
                "Mode": "ABSORPTION", #TODO
                "RAW": {
                    "edge_step": {
                        "value": 0.0,
                        "unit": "1",
                        "documentation": "height of the detected edge step",
                    },
                    "k_max": {
                        "value": 0.0,
                        "unit": "1/angstrom",
                        "documentation": "considered angular wavenumber",
                    },
                    "noise": {
                        "value": 0.0,
                        "unit": "1",
                        "documentation": "noise of the measurement",
                    },
                    "energy_resolution": {
                        "value": 0.0,
                        "unit": "eV",
                        "documentation": "energy resolution of the measured spectrum in eV",
                    },
                },
                "PROCESSED": {
                    "amplitude_reduction_factor": {
                        "Z_ranges": {
                            "tentoforty": {
                                "value": 0.0,
                            },
                            "fortytoeighty": {
                                "value": 0.0,
                            },
                        },
                        "unit": "1",
                        "documentation": "amplitude factor from the processed spectrum",
                    }
                },
                "Figures": {
                    "data": None,
                    "k": None,
                    "R": None,
                },
            },
        }

@San-WierPa the issue might be that the unit is set to 1.
Is there a reason why you have the following?
"unit": "1"

What is the meaning of it?
As a test: can you try to ingest the same payload where you remove completely "unit" : "1"?


tortoise: load all stored ballots

closes: https://github.com/spacemeshos/go-spacemesh/issues/3719

bors merge