เปเบกเบทเปเบญเบเปเบญเบ, เบฅเบฐเบเบปเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเปเบเปเบฎเบทเบญเบ, เบซเบผเบท "เปเบฎเบทเบญเบเบญเบฑเบเบชเบฐเบฅเบดเบเบฐ" เบเปเบญเบเบงเปเบฒเบเบงเบเปเบเบปเบฒเบเบทเบเปเบญเบตเปเบเปเบฅเบทเปเบญเบเป, เบกเบตเบฅเบฒเบเบฒเปเบเบเบซเบผเบฒเบเปเบฅเบฐเบกเบตเบเบฝเบเปเบเปเบเบปเบเบฎเบฑเปเบเบกเบตเปเบเบปเปเบฒเบเบฑเปเบเบเบตเปเบชเบฒเบกเบฒเบเบเปเบฒเบเปเบซเปเปเบเบปเบฒเปเบเบปเปเบฒ. เปเบเบกเบทเปเบเบตเปเบขเบนเปเปเบเบเบฐเบซเบผเบฒเบเบเปเบฒเบเบชเบฒเบกเบฒเบเบเบญเบเบซเบฒเบเบธเบเบฅเบฒเบเบฒเบเบทเบเบเบตเปเบกเบตเปเบเบฑเบเปเบเบต, เบเบธเปเบก / เบชเบฐเบซเบผเบฑเบเปเบฅเบฐเบเบปเบงเบเบฐเบเบธเปเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบงเบเบเบธเบกเปเบชเบเบชเบฐเบซเบงเปเบฒเบ, เปเบเบปเปเบฒเบชเบฝเบ, เบฅเบฐเบเบฒเบเบญเบฒเบเบฒเบ, เบเบฒเบเบชเบฐเบซเบเบญเบเบเปเปเบฒเปเบฅเบฐเบเบนเปเบเปเบฅเบดเปเบเบเบญเบทเปเบเป. เปเบฅเบฐเปเบกเปเปเบเปเบเบปเบ DIY เบเบตเปเบกเบตเบเบงเบฒเบกเปเบเบเปเบเปเบเบเบตเปเบชเบธเบเบเปเปเบชเบฒเบกเบฒเบเบกเบตเบชเปเบงเบเบฎเปเบงเบกเปเบเบเบงเบฒเบกเบเบฒเบกเปเบฅเบฐเบเบฐเบเบญเบเบญเบธเบเบฐเบเบญเบเบชเปเบฒเบฅเบฑเบเปเบฎเบทเบญเบ smart เปเบเบฅเบฒเบเบฒเบเบตเปเบเปเปเปเบเบ.
เปเบเบเบเบปเบเบเบฐเบเบด, เบญเบธเบเบฐเบเบญเบเบเบตเปเบชเบฐเปเบซเบเบตเปเบกเปเบเปเบเบฑเบเปเบเบตเบซเบผเบทเบเบปเบงเบเบฐเบเบธเปเบ. เบเบงเบเปเบเบปเบฒเปเบฎเบฑเบเปเบซเปเบกเบฑเบเบเปเบฒเบเบเปเปเบเบฒเบเบเบฐเบเบดเบเบฑเบเบชเบฐเบเบฒเบเบฐเบเบฒเบเปเบเบฑเปเบ: "เปเบกเบทเปเบญเปเบเบฑเบเปเบเบตเบเบฒเบเปเบเบทเปเบญเบเปเบซเบงเบเบทเบเบเบฐเบเบธเปเบ, เปเบเบตเบเปเบ" เบซเบผเบท "เบเบธเปเบกเบเบตเปเบขเบนเปเปเบเปเบเบฑเบเบเบฒเบเบญเบญเบเบเบฐเบเบดเบเปเบเปเบเบญเบฒเบเบฒเบเปเบกเบฑเบเบเบฑเบเบซเบกเบปเบ." เปเบเปเบขเปเบฒเบเปเบเบเปเปเบเบฒเบกเบชเบดเปเบเบเบตเปเบเปเปเปเบเปเบเบปเบเบเบฑเบ telemetry. เบเบตเบเบตเปเบชเบธเบ, เบกเบฑเบเปเบเบฑเบเปเบชเบฑเปเบเบชเบฐเปเบเบเบเบญเบเบญเบธเบเบซเบฐเบเบนเบกเปเบฅเบฐเบเบงเบฒเบกเบเบธเปเบกเบเบทเปเบ, เบซเบผเบทเบเบฐเบฅเบฑเบเบเบฒเบเบเบฑเบเบเบตเบขเบนเปเบเบตเปเปเบเบปเปเบฒเบชเบฝเบเบชเบฐเปเบเบฒเบฐ.
เบเปเบญเบเบเปเปเบเบปเบเบกเบฒเบเบตเปเปเบเปเบเบดเบเบเบฑเปเบเปเบเบทเปเบญเบเบงเบฑเบเปเบเบเบเปเปเบฒเบเบตเปเบกเบตเบเบปเบเบญเบญเบเบเบญเบเบเปเบฒเบกเบฐเบเบญเบ. เบชเปเบฒเบฅเบฑเบเบเบธเบเปเบฅเบดเบเบเบตเปเบเปเบฒเบเปเบเบทเปเบญเบเบงเบฑเบเปเบเบ, เบชเบฐเบซเบงเบดเบ reed เบเบทเบเปเบเบตเบเปเบเปเปเบฅเบฐเบเบดเบเบเบฒเบเบเบดเบเบเปเป. เบชเบดเปเบเบเบฝเบงเบเบตเปเปเบซเบฅเบทเบญเบเบตเปเบเบฐเปเบฎเบฑเบเปเบกเปเบเบเบฒเบเบเบถเบเบเบดเบเบเบฑเบเบชเบฒเบเปเบเปเบฅเบฐเบเบฐเบเบฒเบเบฒเบกเปเบเปเบฎเบฑเบเบเบปเบเบเบฐเปเบซเบเบเบเบฒเบเบกเบฑเบ. เบชเปเบฒเบฅเบฑเบเบเบปเบงเบขเปเบฒเบ, เบงเบดเปเบเบฒเบฐเบเบฒเบเบเปเบฅเบดเปเบเบเบเปเปเบฒเปเบเบเบเบปเปเบงเปเบกเบเปเบฅเบฐเบกเบทเปเบเบญเบเบญเบฒเบเบดเบ. เบเบต, เบเปเบฒเบกเบตเบเบนเปเปเบเบตเปเบกเบเปเปเบฒเบซเบผเบฒเบเบขเบนเปเปเบเบญเบฒเบเบฒเบเปเบกเบฑเบ, เบกเบฑเบเบชเบฐเบเบงเบเบเบงเปเบฒเบเบตเปเบเบฐเปเบซเบฑเบเบเบปเบงเบเบตเปเบงเบฑเบเปเบเบเบฐเบเบธเบเบฑเบเบเบฑเบเบซเบกเบปเบเปเบเบซเบเปเบฒเบเปเบเบฝเบงเบเปเบงเบฒเบเบฒเบเบเบตเบเปเบเบปเปเบฒเปเบเปเบ niches เบเบตเปเบเบฒเบเบเบตเปเบเบฐเปเบเบปเปเบฒเปเบเบดเบเบเปเบงเบเปเบเบชเบฒเบ.
เบเปเบฒเบเบฅเบธเปเบกเบเบตเปเบเบฒเบเบเบฑเบเปเบกเปเบเบญเบธเบเบฐเบเบญเบเบฅเบธเปเบเบเบญเบเบเปเบญเบเปเบเบเบญเบตเบเปเบชเป ESP8266, เปเบเบดเปเบเบเบฑเบ pulses เบเบฒเบเปเบเบทเปเบญเบเบงเบฑเบเปเบเบเบเปเปเบฒเปเบฅเบฐเบชเบปเปเบเบเบฒเบเบญเปเบฒเบเบเปเบฒเบ MQTT เปเบเบซเบฒเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเปเบฎเบทเบญเบ smart. เบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเบฒเปเบเบตเบเปเบเบเบเบฒเบเปเบ micropython เปเบเบเปเบเปเบซเปเบญเบเบชเบฐเบซเบกเบธเบ uasyncio. เปเบกเบทเปเบญเบชเปเบฒเบเปเบเบตเบกเปเบง, เบเปเบญเบเบเบปเบเบเบงเบฒเบกเบซเบเบธเปเบเบเบฒเบเบเบตเปเบซเบเปเบฒเบชเบปเบเปเบเบซเบผเบฒเบ, เปเบเบดเปเบเบเปเบญเบเบเบฐเบชเบปเบเบเบฐเบเบฒเปเบเบเบปเบเบเบงเบฒเบกเบเบตเป. เปเบ!
เปเบเบเบเบฒเบ
เบซเบปเบงเปเบเบเบญเบเบงเบปเบเบเบญเบเบเบฑเบเบซเบกเบปเบเปเบกเปเบเปเบกเบเบนเบเบขเบนเปเปเบ microcontroller ESP8266. ESP-12 เปเบเปเบเบทเบเบงเบฒเบเปเบเบเปเบงเปเปเบเบเบญเบเบเบปเปเบ, เปเบเปเบฅเบฐเปเบเบตเบเบเบฑเบเบเบดเบเบเบฐเบเบปเบเบงเปเบฒเบกเบตเบเปเปเบเบปเบเบเปเบญเบ. เบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบกเบตเบเบงเบฒเบกเบเปเปเบเบเบฑเบเปเบกเบเบนเบ ESP-07, เปเบเบดเปเบเบชเบฒเบกเบฒเบเปเบเปเปเบเป. เปเบเบเบเบต, เบเบงเบเบกเบฑเบเบเบทเบเบฑเบเบเบฑเบเบชเบญเบเบเปเบฒเบเบเบญเบ pins เปเบฅเบฐเบเบฒเบเปเบฎเบฑเบเบงเบฝเบ, เบเบงเบฒเบกเปเบเบเบเปเบฒเบเบเบฝเบเปเบเปเบขเบนเปเปเบเปเบชเบปเบฒเบญเบฒเบเบฒเบ - ESP-12 เบกเบตเบเบปเบงเปเบเบทเปเบญเบกเบเปเป, เปเบเบเบฐเบเบฐเบเบตเป ESP-07 เบกเบตเบเบฒเบเบเบญเบ. เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เปเบเบดเบเปเบกเปเบเบงเปเบฒเบเปเปเบกเบตเปเบชเบปเบฒเบญเบฒเบเบฒเบ WiFi, เบชเบฑเบเบเบฒเบเปเบเบซเปเบญเบเบเปเปเบฒเบเบญเบเบเปเบญเบเปเบเปเบฎเบฑเบเบเบฒเบกเบเบปเบเบเบฐเบเบด.
เบชเบฒเบเปเบเปเบกเบเบนเบเบกเบฒเบเบเบฐเบเบฒเบ:
- เบเบธเปเบกเบฃเบตเปเบเบฑเบเบเปเบงเบเบเบฒเบเบเบถเบเบเบถเปเบเปเบฅเบฐเบเบปเบงเปเบเบฑเบเบเบฐเบเบธ (เปเบเบดเบเปเบกเปเบเบงเปเบฒเบเบฑเบเบชเบญเบเปเบกเปเบเบขเบนเปเปเบเปเบกเบเบนเบเปเบฅเปเบง)
- เบชเบฑเบเบเบฒเบเปเบเบตเบเปเบเปเบเบฒเบ (CH_PD) เบเบทเบเบเบถเบเบเบถเปเบเปเบเบทเปเบญเปเบเบตเบเปเบ
- GPIO15 เบเบทเบเบเบถเบเบเบฑเบเบเบทเปเบเบเบดเบ. เบเบตเปเปเบกเปเบเบเปเบญเบเบเบฒเบเบเบฝเบเปเบเปเปเบเบเบญเบเปเบฅเบตเปเบกเบเบปเปเบ, เปเบเปเบเปเบญเบเบเปเปเบกเบตเบซเบเบฑเบเบเบตเปเบเบฐเบเบดเบเบเบฑเบเบเบฒเบเบตเป; เบเปเบญเบเบเปเปเบเปเบญเบเบเบฒเบเบกเบฑเบเบญเบตเบเบเปเปเปเบ
เปเบเบทเปเบญเปเบฎเบฑเบเปเบซเปเปเบกเบเบนเบเปเบเบปเปเบฒเปเบเปเบเปเบซเบกเบเปเบเบตเบกเปเบง, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเปเบงเบปเบเบเบญเบเบชเบฑเปเบ GPIO2 เบเบฑเบเบเบดเบ, เปเบฅเบฐเปเบเบทเปเบญเปเบฎเบฑเบเปเบซเปเบกเบฑเบเบชเบฐเบเบงเบเบเบงเปเบฒ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเปเบซเปเบเบธเปเบก Boot. เปเบเบชเบฐเบเบฒเบเบเบปเบเบเบฐเบเบด, pin เบเบตเปเบเบทเบเบเบถเบเบเบฑเบเบเบฐเบฅเบฑเบเบเบฒเบ.
เบชเบฐเบเบฒเบเบฐเบเบญเบเบชเบฒเบ GPIO2 เปเบเปเบเบทเบเบเบงเบเบเบฒเบเบฝเบเปเบเปเปเบเบเบญเบเปเบฅเบตเปเบกเบเบปเปเบเบเบญเบเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบ - เปเบกเบทเปเบญเบเบฐเบฅเบฑเบเบเบฒเบเบเบทเบเบเปเบฒเปเบเปเบซเบผเบทเบเบฑเบเบเบตเบซเบผเบฑเบเบเบฒเบเบเบฒเบเบเบฑเปเบเปเบซเบกเป. เบเบฑเปเบเบเบฑเปเบเปเบกเบเบนเบเบเบฐเปเบเบตเบเปเบเบทเปเบญเบเบเบปเบเบเบฐเบเบดเบซเบผเบทเปเบเบปเปเบฒเปเบเปเบเปเบซเบกเบเปเบเบตเบกเปเบง. เปเบกเบทเปเบญเปเบซเบฅเบเปเบฅเปเบง, PIN เบเบตเปเบชเบฒเบกเบฒเบเบเบทเบเบเปเบฒเปเบเปเปเบเบฑเบ GPIO เบเบปเบเบเบฐเบเบด. เบเบต, เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบกเบตเบเบธเปเบกเบขเบนเปเปเบฅเปเบง, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบดเบเบเบฒเบเบซเบเปเบฒเบเบตเปเบเบตเปเปเบเบฑเบเบเบฐเปเบซเบเบเบเบฑเบเบกเบฑเบ.
เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฝเบเปเบเบฅเปเบเบฅเบกเปเบฅเบฐเบเบฒเบเบเบตเบเบฑเบ, เบเปเบญเบเบเบฐเปเบเป UART, เปเบเบดเปเบเปเบกเปเบเบเบปเบเบเบฐเบฅเบดเบเปเบเบซเบฒ comb. เปเบกเบทเปเบญเบกเบตเบเบงเบฒเบกเบเปเบฒเปเบเบฑเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฝเบเปเบเปเปเบเบทเปเบญเบกเบเปเปเบญเบฐเปเบเบเปเบเบต USB-UART เบขเบนเปเบเบตเปเบเบฑเปเบ. เบเปเบฒเบเบเบฝเบเปเบเปเบเปเบญเบเบเบฒเบเบเบตเปเบเบฐเบเบทเปเบเปเบฒเบงเปเบฒเปเบกเบเบนเบเปเบกเปเบเบเบฑเบเปเบเบทเปเบญเบเปเบเบ 3.3V. เบเปเบฒเบเปเบฒเบเบฅเบทเบกเบชเบฐเบซเบผเบฑเบเบญเบฐเปเบเบเปเบเบตเบเบฑเบเปเบฎเบเบเบฑเบเบเบตเปเปเบฅเบฐเบชเบฐเบซเบเบญเบ 5V, เปเบกเบเบนเบเบเบฐเปเบเบปเบฒเปเบซเบกเปเบซเบผเบฒเบเบเบตเปเบชเบธเบ.
เบเปเบญเบเบเปเปเบกเบตเบเบฑเบเบซเบฒเบเบฑเบเปเบเบเปเบฒเปเบเบซเปเบญเบเบเปเปเบฒ - เบเปเบฝเบเปเบกเปเบเบเบฑเปเบเบขเบนเปเบเบฐเบกเบฒเบเบซเบเบถเปเบเปเบกเบฑเบเบเบฒเบเปเบกเบฑเบ, เบเบฑเปเบเบเบฑเปเบเบเปเบญเบเบเบฐเปเบเปเบเบฐเบฅเบฑเบเบเบฒเบ 220V. เปเบเบเบฒเบเบฐเปเบเบฑเบเปเบซเบผเปเบเบเบฐเบฅเบฑเบเบเบฒเบเบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฐเบกเบตเบเบฐเบซเบเบฒเบเบเปเบญเบ
เปเบเบทเปเบญเบชเบฑเบเบเบฒเบเบฎเบนเบเปเบเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเปเบซเป LED เบเบตเปเปเบเบทเปเบญเบกเบเปเปเบเบฑเบ GPIO2. เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเปเปเปเบเปเบเบปเบเปเบฅเบตเบเบกเบฑเบ, เปเบเบฒเบฐเบงเปเบฒ ... เปเบกเบเบนเบ ESP-07 เบกเบตเปเบ LED เปเบฅเปเบง, เปเบฅเบฐเบกเบฑเบเบเบฑเบเปเบเบทเปเบญเบกเบเปเปเบเบฑเบ GPIO2. เปเบเปเปเบซเปเบกเบฑเบเบขเบนเปเปเบเบเบฐเบเบฒเบ, เปเบเบเปเบฅเบฐเบเบตเบเบตเปเบเปเบญเบเบเปเบญเบเบเบฒเบเบญเบญเบ LED เบเบตเปเปเบซเปเบเบฑเบเบเปเบฅเบฐเบเบต.
เบเปเปเบซเปเบเปเบฒเบงเปเบเบชเบนเปเบชเปเบงเบเบเบตเปเบซเบเปเบฒเบชเบปเบเปเบเบเบตเปเบชเบธเบ. เปเบเบทเปเบญเบเบงเบฑเบเบเปเปเบฒเบเปเปเบกเบตเปเบซเบเบเบปเบ; เบเปเบฒเบเบเปเปเบชเบฒเบกเบฒเบเบเปเปเบซเปเบเบงเบเปเบเบปเบฒเบญเปเบฒเบเบเบฐเบเบธเบเบฑเบ. เบชเบดเปเบเบเบฝเบงเบเบตเปเบกเบตเบขเบนเปเบเบฑเบเบเบงเบเปเบฎเบปเบฒเปเบกเปเบ impulses - เบเบดเบเบเบฒเบเบเบดเบเบเปเปเบเบญเบ reed switch เบเบธเบเบฅเบดเบ. เบเบปเบเบเบฐเบฅเบดเบเบชเบฐเบงเบดเบ Reed เบเบญเบเบเปเบญเบเปเบกเปเบเปเบเบทเปเบญเบกเบเปเปเบเบฑเบ GPIO12/GPIO13. เบเปเบญเบเบเบฐเปเบเบตเบเปเบเปเบเบปเบงเบเปเบฒเบเบเบฒเบเปเบเบเบเบถเบเบเบถเปเบเบเปเบงเบเปเบเบฃเปเบเบฃเบกเบเบฒเบเปเบเปเบกเบเบนเบ.
เปเบเปเบเบทเปเบญเบเบเบปเปเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบฅเบทเบกเบชเบฐเบซเบเบญเบเบเบปเบงเบเปเบฒเบเบเบฒเบ R8 เปเบฅเบฐ R9 เปเบฅเบฐเบเบฐเบเบฒเบเบชเบฐเบเบฑเบเบเบญเบเบเปเบญเบเบเปเปเบกเบตเบเบงเบเบกเบฑเบ. เปเบเปเบเปเบญเบเบงเปเบฒเบเปเบญเบเปเบเปเบเบฝเบเปเบเบเบงเบฒเบเปเบซเปเบเบธเบเบเบปเบเปเบเบดเปเบเปเบฅเปเบง, เบกเบฑเบเบชเบปเบกเบเบงเบเบเบตเปเบเบฐเปเบเปเปเบเบเบฒเบเบเบงเบเบเบฒเบเบตเป. Resistors เปเบกเปเบเบเปเบฒเปเบเบฑเบเปเบเบทเปเบญเบเปเปเปเบซเปเปเบเปเบซเบกเปเบเบญเบเบเปเบฒเปเบเบตเบกเปเบงเบเบดเบเบเบปเบเบเบฐเบเบดเปเบฅเบฐเบเบฑเปเบ pin เปเบเบฑเบเบซเบเบถเปเบ, เปเบฅเบฐ reed เบเปเบฝเบเบชเบฒเบเบเบตเปเบเบฑเบเบเบดเบ (เบเบฑเบ resistor เบชเบนเบเบชเบธเบเบเบญเบ 3.3V / 1000Ohm = 3.3mA เบเบฐเปเบซเบผ).
เบกเบฑเบเปเบเบดเบเปเบงเบฅเบฒเบเบตเปเบเบฐเบเบดเบเบเปเบฝเบงเบเบฑเบเบชเบดเปเบเบเบตเปเบเปเบญเบเปเบฎเบฑเบเบเปเบฒเปเบเบเปเบฒเบซเบกเบปเบ. เบเบฒเบเปเบฅเบทเบญเบเบเปเบฒเบญเบดเบเปเบกเปเบเบเบฒเบเบฎเปเบญเบเบเปเบกเบนเบเบเปเบฒ counter เปเบเบทเปเบญเบเบเบปเปเบเบเบฒเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเปเบเบเบญเบเปเบฅเบตเปเบกเบเบปเปเบ. เปเบเปเบเบตเปเบเบฐเบฎเบฝเบเบฎเปเบญเบเปเบซเปเบกเบตเบเบงเบฒเบกเบชเบฑเบเบชเบปเบเบเบตเปเบชเปเบฒเบเบฑเบเบเบญเบเบญเบฐเบเบธเบชเบฑเบเบเบฒเบเบฒเบเปเบฅเบเบเปเบฝเบ. เบเบดเปเบเปเบเบเบงเปเบฒเบเบฑเปเบ, เบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบญเบเบญเบธเบเบฐเบเบญเบเปเบเบเปเบฅเบฐเบเบตเบเบตเปเปเบกเปเบเบเบถเปเบเบเบฑเบเบชเบฐเบเบฒเบเบฐเบเบญเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ. เบเปเบฒเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเปเปเปเบฅเบตเปเบกเบเบปเปเบเบซเบผเบฑเบเบเบฒเบเบเบดเบเปเบ (เบซเบผเบทเปเบฅเบตเปเบกเบเบปเปเบเปเบเบเบฒเบเบซเบผเบฑเบ), เปเบเบทเปเบญเบเบงเบฑเบเปเบเบเบเปเปเบฒเบเบฐเบเปเปเบชเบฒเบกเบฒเบเบฎเปเบญเบเบเปเบเปเบฒเปเบเบทเปเบญเบเบเบปเปเบเปเบฅเบฐเบเบฐเปเบฎเบฑเบเบงเบฝเบเบเปเปเบเบทเบเบเปเบญเบ.
เบเบฑเปเบเบเบฑเปเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบเบฑเบเบชเบดเบเปเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบฐเบซเบเบฑเบเบเปเบฒ counter เปเบเบเบดเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒเบเบตเปเปเบเบทเปเบญเบกเบเปเปเบเปเบฒเบ I2C. เบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเบเปเปโเบกเบตโเบเบงเบฒเบกโเบเปเบญเบโเบเบฒเบโเบเบดโเปเบชเบโเบชเปเบฒโเบฅเบฑเบโเบเบฐโเบซเบเบฒเบโเบเบญเบโเบซเบเปเบงเบโเบเบงเบฒเบกโเบเปเบฒ flash - เบเปเบฒเบโเบเบฝเบโเปเบเปโเบเปเบญเบโเบเบฒเบโเบเบตเปโเบเบฐโเบเบฐโเบขเบฑเบ 2 เบเบปเบงโเปเบฅเบ (เบเปเบฒโเบเบงเบโเบเบญเบโเบฅเบดเบโเบเบฒเบกโเปเบเบทเปเบญเบโเบงเบฑเบโเบโเปโเปโเบฒโเบฎเปเบญเบโเปเบฅเบฐโเปเบขเบฑเบโ)โ. เปเบเบดเบเปเบกเปเบเบงเปเบฒเปเบกเบเบนเบเบเบฐเบซเบเบฒเบเบเปเบญเบเบเบตเปเบชเบธเบเบเบฐเปเบฎเบฑเบ. เปเบเปเบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบญเบปเบฒเปเบเปเบชเปเบเบฑเบเบเปเบฒเบเบงเบเบเบญเบเบฎเบญเบเบงเบฝเบเบเบฒเบเบเบฑเบเบเบถเบ. เบชเปเบฒเบฅเบฑเบเปเบกเบเบนเบเบชเปเบงเบเปเบซเบเปเบเบตเปเปเบกเปเบ 100 เบเบฑเบเบฎเบญเบ, เบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเบดเบเบฅเปเบฒเบ.
เบกเบฑเบเปเบเบดเปเบเบเบทเบงเปเบฒเปเบเบฑเบเบฅเปเบฒเบเปเบกเปเบเบซเบผเบฒเบ. เปเบเปโเปเบโเปเบฅเบเบฐ 4 เบเบตโเบเบตเปโเบขเบนเปโเปเบโเบญเบฒโเบเบฒเบโเปเบกเบฑเบโเบเบญเบโเบเปเบฒโเบเบฐโเปเบเบปเปเบฒ, เบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเปเบเปโเปเบเปโเบเปเบณโเบซเบผเบฒเบโเบเบงเปเบฒ 500 เปเบกเบฑเบโเบเปเบญเบ, เบเบฑเปเบโเปเบกเปเบ 500 เบเบฑเบโเบฅเบดเบ! เปเบฅเบฐ 500 เบเบฑเบเบเบฑเบเบเบถเบเปเบ flash. เปเบฅเบฐเบเบฑเปเบเปเบกเปเบเบเบฝเบเปเบเปเบเปเปเบฒเปเบขเบฑเบ. เปเบเปเบเบญเบ, เปเบเบปเปเบฒเบชเบฒเบกเบฒเบเบเบฒเบเบเบดเบเปเบเปเบเบธเบเปเบชเบญเบเบชเบฒเบกเบเบต, เปเบเปเบกเบฑเบเบเบฒเบเบปเบเบงเปเบฒเบกเบตเบเบดเบ FRAM. เบเบฒเบเบกเบธเบกเปเบเบดเปเบเบเบฒเบเบเบฝเบเปเบเบฅเปเบเบฅเบก, เบเบตเปเปเบกเปเบ I2C EEPROM เบเบฝเบงเบเบฑเบ, เบเบฝเบเปเบเปเบกเบตเบเปเบฒเบเบงเบเบฎเบญเบเบเบฒเบเบเบฝเบเบเบทเบเปเบซเบกเปเบซเบผเบฒเบ (เบซเบผเบฒเบเบฎเปเบญเบเบฅเปเบฒเบ). เบกเบฑเบเปเบเบฑเบเบเบฝเบเปเบเปเบงเปเบฒเบเปเบญเบเบเบฑเบเบเปเปเบชเบฒเบกเบฒเบเปเบเบฎเปเบฒเบเปเบเปเบเปเบงเบ microcircuits เบเบฑเปเบเบเปเบฒเบง, เบเบฑเปเบเบเบฑเปเบเปเบเบเบฑเบเบเบธเบเบฑเบ 24LC512 เบเบปเบเบเบฐเบเบดเบเบฐเบขเบทเบเบขเบนเป.
เปเบเปเบเบงเบปเบเบเบญเบเบเบดเบก
เปเบเปเบเบทเปเบญเบเบเบปเปเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบงเบฒเบเปเบเบเบเบตเปเบเบฐเปเบฎเบฑเบเปเบซเปเบเบฐเบเบฒเบเบขเบนเปเปเบฎเบทเบญเบ. เบเบฑเปเบเบเบฑเปเบ, เบเบฐเบเบฒเบเปเบเปเบเบทเบเบญเบญเบเปเบเบเปเบเบฑเบเบเปเบฒเบเบเบฝเบง. เปเบเปเบซเบผเบฑเบเบเบฒเบเปเบเปเปเบงเบฅเบฒเบซเบเบถเปเบเบเบปเปเบงเปเบกเบเบเบฑเบเปเบซเบฅเปเบเปเบฅเปเบเบตเปเบฅเบฐเบซเบเปเบฒเบเบฒเบ solder (เบกเบฑเบเบเปเปเปเบเบฑเบเบซเบเบฑเบเบกเบฑเบเบเปเปเบกเบตเบกเบฑเบ), เบเปเบญเบเบเบฑเบเบเบฑเบเบชเบดเบเปเบเบชเบฑเปเบเบเบฐเบเบฒเบเบเบฒเบเบเบตเบ.
เปเบเบทเบญเบเบเปเบญเบเบเบตเปเบเบฐเบชเบฑเปเบเบเบฐเบเบฒเบ, เบเปเบญเบเบฎเบนเปเบงเปเบฒเบเบญเบเปเบซเบเบทเบญเบเบฒเบเบเบดเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒ flash, เบเปเบญเบเบชเบฒเบกเบฒเบเปเบเบทเปเบญเบกเบเปเปเบชเบดเปเบเบญเบทเปเบเบเบตเปเปเบเบฑเบเบเบฐเปเบซเบเบเบเบฑเบเบฅเบปเบเปเบก I2C, เปเบเบฑเปเบ: เบเปเบชเบฐเปเบเบเบเบปเบ. เบชเบดเปเบเบเบตเปเปเบเปเบเบญเบเบเบตเปเบเบฐเบญเบญเบเปเบเบซเบฒเบกเบฑเบเบเบฑเบเปเบเบฑเบเบเปเบฒเบเบฒเบก, เปเบเปเบกเบฑเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเบทเบเบเปเบฒเปเบเบขเบนเปเปเบเบเบฐเบเบฒเบ. เปเบฅเปเบง, เบเบฑเบเบเบฑเปเบเปเบเปเบเปเบญเบเบเบฐเบชเบฑเปเบเบเบฐเบเบฒเบเบเบฒเบเปเบฎเบเบเบฒเบ, เบกเบฑเบเบเปเปเบกเบตเบเบธเบเปเบเบเบตเปเบเบฐเบเปเบฒเบเบฑเบเบเบปเบงเปเบญเบเบเบฑเบเบเบฐเบเบฒเบเบเปเบฒเบเบเบฝเบง, เบเบฑเปเบเบเบฑเปเบเบชเบฒเบ I2C เบกเบตเบเบฝเบเปเบเปเบขเบนเปเบเปเบฒเบเบซเบฅเบฑเบเบเบญเบเบเบฐเบเบฒเบ.
เบเบฑเบเบกเบตเบเบฑเบเบซเบฒเปเบซเบเปเบญเบฑเบเปเบถเปเบเบเบฑเบเบชเบฒเบเปเบเบเบฒเบเบเบฝเบง. เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒ เบเบฐเบเบฒเบเปเบเปเบเบทเบเปเบเปเบกเปเบเบฑเบเบเปเบฒเบเบซเบเบถเปเบ, เบเบฑเปเบเบเบฑเปเบเบเบฒเบเบเบดเบเบเบฒเบกเปเบฅเบฐเบญเบปเบเบเบฐเบเบญเบ SMD เปเบเปเบเบทเบเบงเบฒเบเปเบเบเบเบตเปเบเบฐเบงเบฒเบเปเบงเปเบเปเบฒเบเบซเบเบถเปเบ, เปเบฅเบฐเบญเบปเบเบเบฐเบเบญเบเบเบปเบเบเบฐเบฅเบดเบ, เบเบปเบงเปเบเบทเปเบญเบกเบเปเปเปเบฅเบฐเบเบฒเบเบชเบฐเบซเบเบญเบเบเบฐเบฅเบฑเบเบเบฒเบเบขเบนเปเปเบเบญเบตเบเบเปเบฒเบเบซเบเบถเปเบ. เปเบกเบทเปเบญเบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบฎเบฑเบเบเบฐเบเบฒเบเบซเบเบถเปเบเปเบเบทเบญเบเบเปเปเบกเบฒ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบฅเบทเบกเบเปเบฝเบงเบเบฑเบเปเบเบเบเบฒเบเบเบปเปเบเบชเบฐเบเบฑเบเปเบฅเบฐ soldered เบญเบปเบเบเบฐเบเบญเบเบเบฑเบเบซเบกเบปเบเบขเบนเปเบเปเบฒเบเบซเบเปเบฒ. เปเบฅเบฐเบเบฝเบเปเบเปเปเบเปเบงเบฅเบฒเบเบตเปเบกเบฑเบเบกเบฒเบเบฑเบ soldering เบเบฒเบเบชเบฐเบซเบเบญเบเบเบฐเบฅเบฑเบเบเบฒเบ, เบกเบฑเบเปเบเปเบซเบฑเบเบญเบญเบเบงเปเบฒเบเบงเบเปเบฅเบฐเบฅเบปเบเปเบเปเบเบทเบเบชเบฒเบเปเบเบเบฒเบเบเบฑเบเบเบฑเบ. เบเปเบฒ เบเบฐ เปเบเบปเปเบฒ เปเบเป เบเบฐ เบชเบด เบเปเบฒ เบเบฑเบ jumpers. เปเบเบฎเบนเบเบเปเบฒเบเปเบเบดเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบเปเบฝเบเบชเบฒเบเปเบเปเบฅเปเบง, เปเบเปเบเบดเบเปเบเปเบเบทเบเปเบญเบเบเบฒเบเบเบฒเบเบชเปเบงเบเบซเบเบถเปเบเบเบญเบเบเบฐเบเบฒเบเปเบเบซเบฒเบญเบตเบเบเปเบฒเบเบซเบเบถเปเบเปเบเบเบเปเบฒเบ pins เบเบญเบเบเบธเปเบก Boot (เปเบเบดเบเปเบกเปเบเบงเปเบฒเบกเบฑเบเบเบฐเปเบเบฑเบเปเบเปเบเปเบเบตเปเบเบฐเปเบเปเบกเปเบชเบฑเปเบเบเบฒเบเปเบเบเบฑเปเบเบเบตเบชเบญเบ).
เบกเบฑเบเปเบเปเบซเบฑเบเบญเบญเบเปเบเบฑเปเบเบเบตเป
เบเบตเปเบขเบนเปเบญเบฒเปเบช
เบเบฑเปเบเบเบญเบเบเปเปเปเบเปเบกเปเบเบฎเปเบฒเบเบเบฒเบ. เบเปเบฒเบเปเบฒเบเบกเบตเปเบเบทเปเบญเบเบเบดเบก 3D, เบเบตเปเบเปเปเปเบกเปเบเบเบฑเบเบซเบฒ. เบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเบเปเปโเปเบเปโเปเบเบทเปเบญโเบซเบผเบฒเบโเปเบเบตเบโเปเบ - เบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเบเบฝเบโเปเบเปโเปเบเปเบกโเบเปเบญเบโเบเบฐโเบซเบเบฒเบโเบเบตเปโเปเบซเบกเบฒเบฐโเบชเบปเบกโเปเบฅเบฐโเปเบฎเบฑเบโเปเบซเปโเบเบฒเบโเบเบฑเบโเบญเบญเบโเปเบโเบเปเบญเบโเบเบตเปโเปเบซเบกเบฒเบฐโเบชเบปเบกโ. เบเบฒเบเบเบปเบเบซเบธเปเบกเบเบญเบเปเบกเปเบเบเบดเบเบเบฑเบเบฎเปเบฒเบเบเบฒเบเบเปเบงเบ screws เปเบเบฐเบเบปเบเปเบญเบเบเบฐเบซเบเบฒเบเบเปเบญเบ.
เบเปเบญเบเปเบเปเบเปเบฒเบงเบกเบฒเปเบฅเปเบงเบงเปเบฒเบเบธเปเบก Boot เบชเบฒเบกเบฒเบเบเบทเบเบเปเบฒเปเบเปเปเบเบฑเบเบเบธเปเบกเบเบตเปเบกเบตเบเบธเบเบเบฐเบชเบปเบเบเบปเปเบงเปเบ - เบเบฑเปเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเบเบฐเบชเบฐเปเบเบเบกเบฑเบเบขเบนเปเปเบเปเบเบเบเปเบฒเบเบซเบเปเบฒ. เปเบเบทเปเบญเปเบฎเบฑเบเบชเบดเปเบเบเบตเป, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเปเบเปเบก "เบเบต" เบเบดเปเบชเบเบเบตเปเบเบธเปเบกเบขเบนเป.
เบเบฒเบเปเบเบเปเบฅเบฐเบเบตเบเบฑเบเบกเบต studs เบเบตเปเบเบฐเบเบฒเบเปเบเปเบเบทเบเบเบดเบเบเบฑเปเบเปเบฅเบฐเบฎเบฑเบเบเบฐเบเบฑเบเบเปเบงเบ screw M3 เบเบฝเบง (เบเปเปเบกเบตเบเบทเปเบเบเบตเปเปเบเบตเปเบกเปเบเบตเบกเปเบเบเบฐเบเบฒเบ)
เบเปเบญเบเปเบฅเบทเบญเบเบเปเบชเบฐเปเบเบเบเบปเบเปเบฅเปเบงเปเบกเบทเปเบญเบเปเบญเบเบเบดเบกเบเบปเบงเบขเปเบฒเบเบเปเบฒเบญเบดเบเบเบญเบเบเปเบฅเบฐเบเบต. เปเบเบทเปเบญเบเบญเปเบฒเบเบชเบญเบเปเบเบงเบกเบฒเบเบเบฐเบเบฒเบเบเปเปเปเบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบเบเปเบฅเบฐเบเบตเบเบตเป, เปเบเปเบขเบนเปเบเปเบฒเบเบฅเบธเปเบกเบกเบตเบเปเบชเบฐเปเบเบเบเบปเบ OLED SSD1306 128 ร 32. เบกเบฑเบเบเปเบญเบ, เปเบเปเบเปเบญเบเบเปเปเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเบดเปเบเบกเบฑเบเบเบธเบเปเบกเบทเป - เบกเบฑเบเบซเบผเบฒเบเปเบเบตเบเปเบเบชเปเบฒเบฅเบฑเบเบเปเบญเบ.
เบเบฒเบเบเบดเบเบญเบญเบเบเบฒเบเบเบตเปเปเบฅเบฐเบงเปเบฒเบชเบฒเบเปเบเบเบฐเบเบทเบเบชเบปเปเบเบเบฒเบเบกเบฑเบเปเบเบงเปเบ, เบเปเบญเบเปเบเปเบเบฑเบเบชเบดเบเปเบเบเบดเบเบเปเบชเบฐเปเบเบเบเบปเบเบขเบนเปเปเบเบดเปเบเบเบฒเบเบเบญเบเบเปเบฅเบฐเบเบต. Ergonomics, เปเบเปเบเบญเบ, เปเบกเปเบเบขเบนเปเบเปเบฒเบเบฅเบธเปเบก - เบเบธเปเบกเบขเบนเปเปเบเบดเบ, เบเปเบชเบฐเปเบเบเบเบปเบเปเบกเปเบเบขเบนเปเบเปเบฒเบเบฅเบธเปเบก. เปเบเปเบเปเบญเบเปเบงเบปเปเบฒเปเบฅเปเบงเบงเปเบฒเบเบงเบฒเบกเบเบดเบเบเบตเปเบเบฐเบเบดเบเบเปเบชเบฐเปเบเบเบเบปเบเบกเบฒเบเปเบฒเปเบเบตเบเปเบเปเบฅเบฐเบเปเบญเบเบเปเปเบเบตเปเบเบฝเบเปเบเบตเบเปเบเบเบตเปเบเบฐ rewire เบเบฐเบเบฒเบเปเบเบทเปเบญเบเปเบฒเบเบเบธเปเบก.
เบญเบธเบเบฐเบเบญเบเปเบเปเบเบทเบเบเบฐเบเบญเบ. เปเบกเบเบนเบเบเปเบชเบฐเปเบเบเบเบปเบเปเบกเปเบเบเบดเบเบเบฑเบ snot เบเปเบงเบเบเบฒเบงเบฎเปเบญเบ
เบเบปเบเปเบเปเบฎเบฑเบเบชเบธเบเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบซเบฑเบเปเบเปเปเบ KDPV
Firmware
เปเบซเปเบเปเบฒเบเปเบเบซเบฒเบเบฒเบเบชเปเบงเบเบเบญเบเปเบง. เบชเปเบฒเบฅเบฑเบเปเบเบทเปเบญเบเบซเบฑเบเบเบฐเบเปเบฒเบเบฐเบซเบเบฒเบเบเปเบญเบเปเบเบฑเปเบเบเบตเป, เบเปเบญเบเบกเบฑเบเปเบเป Python (
เบกเบฑเบเปเบเบดเปเบเบเบทเบงเปเบฒเบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเปเบกเปเบเบเปเบฒเบเบเบฒเบ, เปเบเปเบเปเปเปเบกเปเบเบเปเบฒเบเบเบฒเบเบซเบผเบฒเบ - เบญเบธเบเบฐเบเบญเบเบกเบตเบซเบเปเบฒเบเบตเปเปเบญเบเบฐเบฅเบฒเบเบซเบผเบฒเบ:
- เบเบนเปเปเบเปเบเบปเบเบเบธเปเบกเปเบฅเบฐเปเบเบดเปเบเบเปเบชเบฐเปเบเบเบเบปเบ
- เบฅเบดเบเบซเบกเบฒเบเบเบดเบเปเบฅเบฐเบเบฑเบเบเบธเบเบเปเบฒเปเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒ flash
- เปเบกเบเบนเบเบเบฐเบเบดเบเบเบฒเบกเบชเบฑเบเบเบฒเบ WiFi เปเบฅเบฐเปเบเบทเปเบญเบกเบเปเปเบเบทเบเปเปเปเบเปเบฒเบเปเบฒเปเบเบฑเบ
- เปเบฅเปเบง, เบเปเบฒเบเปเปเบกเบตเบซเบฅเบญเบเปเบเบเบฐเบเบดเบ, เบกเบฑเบเปเบเบฑเบเปเบเบเปเปเปเบเป
เบเปเบฒเบโเบเปเปโเบชเบฒโเบกเบฒเบโเบชเบปเบกโเบกเบธเบโเบงเปเบฒโเบซเบเบถเปเบโเบซเบเปเบฒโเบเบตเปโเบเปเปโเปเบเปโเปเบฎเบฑเบโเบงเบฝเบโเบเปเบฒโเบซเบฒเบโเบงเปเบฒโเบญเบตเบโเบซเบเบถเปเบโเปเบกเปเบ stuck เบชเปเบฒโเบฅเบฑเบโเปเบซเบโเบเบปเบโเบเบฒเบโเบขเปเบฒเบโ. เบเปเบญเบเปเบเบตเบเบกเบต cacti เบเบญเบเบเปเบญเบเบขเบนเปเปเบเปเบเบเบเบฒเบเบญเบทเปเบเปเปเบฅเปเบงเปเบฅเบฐเบเบญเบเบเบตเปเบเปเบญเบเบเบฑเบเปเบซเบฑเบเบเบงเบฒเบกเบเบปเบเบเปเบญเบเปเบเปเบเบเบเบญเบ "เบเบฒเบเปเบเบญเบตเบเบฅเบดเบเบซเบเบถเปเบเปเบเบฒเบฐเบงเปเบฒเบเปเบชเบฐเปเบเบเบเบปเบเบเปเบฒเบฅเบฑเบเบเบฑเบเบเบธเบเปเบเบเบฐเบเบฐเบเบฑเปเบ" เบซเบผเบท "เบเบนเปเปเบเปเบเปเปเบชเบฒเบกเบฒเบเปเบฎเบฑเบเบซเบเบฑเบเปเบเปเปเบเบเบฐเบเบฐเบเบตเปเปเบกเบเบนเบเบเปเบฒเบฅเบฑเบเปเบเบทเปเบญเบกเบเปเปเบเบฑเบ. WiFi.โ เปเบเปเบเบญเบ, เบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเปเปเบเบเบเปเบฒเบเบเบฒเบเบเบฑเบเบเบงเบฒเบ, เปเบเปเบเปเบฒเบเบญเบฒเบเบเบฐเปเบเบปเปเบฒเปเบเปเบเบเปเปเบเปเบฒเบเบฑเบเบเปเบฝเบงเบเบฑเบเปเบฅเบเบฐเปเบงเบฅเบฒ, เบฎเบฑเบเบเบญเบเบเบฒเบเปเบ, เบซเบผเบทเบเบฒเบเบเปเบฝเบเปเบเบเบเบตเปเบเปเปเปเบกเปเบเบเบฐเบฅเปเบฒเบกเบฐเบเบนเบเบฑเบเบเบปเบงเปเบ. เบเบต, เบฅเบฐเบซเบฑเบเบเบตเปเปเบฎเบฑเบเบเบธเบเบขเปเบฒเบเบขเปเบฒเบเปเบงเบงเบฒเบเปเบฝเบเปเบเบฑเบ mush.
ะ
เบเปเบญเบเบเปเปเบเบฐ เบเบณ เปเบซเปเบชเบถเบเบชเบฒเบเบงเบฒเบกเปเบเบเบเปเบฒเบเบฅเบฐเบซเบงเปเบฒเบเบงเบฝเบเบเบตเปเปเบฎเบฑเบเบฅเปเบงเบเปเปเบฒ เปเบฅเบฐ เบเบฒเบเปเบเปเบเบเบฑเบเบซเบผเบฒเบเปเปเบฒเปเบเบฑเบเบงเบดเบเบฒเบเบฒเบเปเบฅเบทเบญเบ. เบเบฝเบงเบเบตเป, เบชเบธเบเบเปเบฒเบเปเบซเปเบเปเบฒเบงเปเบเบชเบนเปเบฅเบฐเบซเบฑเบ.
#####################################
# Counter class - implements a single water counter on specified pin
#####################################
class Counter():
debounce_ms = const(25)
def __init__(self, pin_num, value_storage):
self._value_storage = value_storage
self._value = self._value_storage.read()
self._value_changed = False
self._pin = Pin(pin_num, Pin.IN, Pin.PULL_UP)
loop = asyncio.get_event_loop()
loop.create_task(self._switchcheck()) # Thread runs forever
เปเบเปเบฅเบฐ counter เปเบกเปเบเบเบฑเบเบเบฒเบเปเบเบเบเบปเบงเบขเปเบฒเบเบเบญเบ Counter class. เบเปเบญเบเบญเบทเปเบ เปเบปเบ, เบกเบนเบเบเปเบฒ counter เปเบเบทเปเบญเบเบเบปเปเบเปเบกเปเบเบซเบฑเบเบญเบญเบเบเบฒเบ EEPROM (value_storage) - เบเบตเปเปเบกเปเบเบงเบดเบเบตเบเบฒเบเบเบทเปเบเบเบนเบซเบผเบฑเบเบเบฒเบเบเบงเบฒเบกเบฅเบปเปเบกเปเบซเบผเบงเบเบญเบเบเบฐเบฅเบฑเบเบเบฒเบเบเบทเบเบเบฐเบเบดเบเบฑเบ.
pin เปเบเปเบเบทเบเปเบฅเบตเปเบกเบเบปเปเบเบเปเบงเบเบเบปเบงเบเบถเบเบเบถเปเบเปเบเบทเปเบญเบชเบฐเบซเบเบญเบเบเบฐเบฅเบฑเบเบเบฒเบ: เบเปเบฒเบเบดเบ reed, เบชเบฒเบเปเบกเปเบเบชเบนเบ, เบเปเบฒเบชเบฒเบเปเบกเปเบเปเบเบตเบ, เบกเบฑเบเบเบทเบเบเบถเบเบเบถเปเบเปเบเบซเบฒเบเบฒเบเบชเบฐเบซเบเบญเบเบเบฐเบฅเบฑเบเบเบฒเบเปเบฅเบฐเบเบปเบงเบเบงเบเบเบธเบกเบญเปเบฒเบเบซเบเบถเปเบ.
เบงเบฝเบเบเบฒเบเปเบเบเบเปเบฒเบเบซเบฒเบเบเบฑเบเบเบทเบเปเบเบตเบเบเบปเบงเบขเบนเปเบเบตเปเบเบตเป, เปเบเบดเปเบเบเบฐเบชเปเบฒเบซเบผเบงเบ pin. เปเบเปเบฅเบฐ counter เบเบฐเบเปเบฒเปเบเบตเบเบงเบฝเบเบเบฒเบเบเบญเบเบเบปเบเปเบญเบ. เบเบตเปเปเบกเปเบเบฅเบฐเบซเบฑเบเบเบญเบเบเบฒเบ
""" Poll pin and advance value when another litre passed """
async def _switchcheck(self):
last_checked_pin_state = self._pin.value() # Get initial state
# Poll for a pin change
while True:
state = self._pin.value()
if state != last_checked_pin_state:
# State has changed: act on it now.
last_checked_pin_state = state
if state == 0:
self._another_litre_passed()
# Ignore further state changes until switch has settled
await asyncio.sleep_ms(Counter.debounce_ms)
เบเบงเบฒเบกเบฅเปเบฒเบเปเบฒเบเบญเบ 25ms เปเบกเปเบเบเปเบฒเปเบเบฑเบเปเบเบทเปเบญเบเบฒเบเบเบฑเปเบเบเบญเบเบเบฒเบเบเบดเบเบเปเป bounce, เปเบฅเบฐเปเบเปเบงเบฅเบฒเบเบฝเบงเบเบฑเบเบกเบฑเบเบเบงเบเบเบธเบกเบงเปเบฒเบงเบฝเบเบเบฒเบเบเบตเปเบเบทเปเบเบเบญเบเปเบฅเบทเปเบญเบเป (เปเบเบเบฐเบเบฐเบเบตเปเบงเบฝเบเบเบฒเบเบเบตเปเบเปเบฒเบฅเบฑเบเบเบญเบ, เบงเบฝเบเบญเบทเปเบเปเบเปเบฒเบฅเบฑเบเปเบฎเบฑเบเบงเบฝเบเบขเบนเป). เบเบธเบเป 25ms เบเบฑเบเบเบฑเบเบเบทเปเบเบเบถเปเบ, เบเบงเบเปเบเบดเปเบ pin เปเบฅเบฐเบเปเบฒ reed switch contacts เบเบดเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบญเบตเบเบฅเบดเบเปเบเปเบเปเบฒเบเปเบกเบฑเบเปเบฅเบฐเบเบตเปเบเปเบญเบเปเบเปเบฎเบฑเบเบเบฒเบเบเบธเบเปเบเปเบ.
def _another_litre_passed(self):
self._value += 1
self._value_changed = True
self._value_storage.write(self._value)
เบเบฒเบเบเบธเบเปเบเปเบเบฅเบดเบเบเปเปเปเบเปเบกเปเบเปเบเบฑเบเปเบฅเบทเปเบญเบเปเบฅเบฑเบเปเบเปเบญเบเป - เบเบปเบงเบเปเบฒเบเบเบฒเบเบเบฝเบเปเบเปเปเบเบตเปเบกเบเบถเปเบ. เบเบต, เบกเบฑเบเบเบฐเปเบเบฑเบเบเบฒเบเบเบตเบเบตเปเบเบฐเบเบฝเบเบเปเบฒเปเบซเบกเปเปเบชเป flash drive.
เปเบเบทเปเบญเบเบงเบฒเบกเบชเบฐเบเบงเบเปเบเบเบฒเบเบเปเบฒเปเบเป, "เบญเบธเบเบฐเบเบญเบเปเบชเบตเบก" เปเบกเปเบเบชเบฐเบซเบเบญเบเปเบซเป
def value(self):
self._value_changed = False
return self._value
def set_value(self, value):
self._value = value
self._value_changed = False
เปเบฅเปเบง, เบเบญเบเบเบตเปเปเบซเปเบเบงเบเปเบฎเบปเบฒเปเบเปเบเบฐเปเบซเบเบเบเบฒเบเบเบงเบฒเบกเบเบตเปเบเบเบญเบ Python เปเบฅเบฐเบซเปเบญเบเบชเบฐเบซเบกเบธเบ uasync เปเบฅเบฐเบชเปเบฒเบเบงเบฑเบเบเบธเบเบตเปเบฅเปเบเปเบฒเปเบเป (เบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเปเบเบฑเบเบเบฒเบชเบฒเบฅเบฑเบเปเบเบเปเบเปเปเบเบงเปเบ? เบชเบดเปเบเบเบตเปเบเปเบฒเบเบเบฒเบเบซเบงเบฑเบ?)
def __await__(self):
while not self._value_changed:
yield from asyncio.sleep(0)
return self.value()
__iter__ = __await__
เบเบตเปเปเบกเปเบเบซเบเปเบฒเบเบตเปเบชเบฐเบเบงเบเบเบตเปเบฅเปเบเปเบฒเบเบปเบเบเปเบงเบฒเบเบฒเบเบเบฑเบเบเปเบฒเบเบทเบเบเบฑเบเบเบธเบ - เบเบฑเบเบเบฑเบเบเบทเปเบเบเบถเปเบเปเบเบฑเบเบเบฒเบเบเบฑเปเบเบเบฒเบงเปเบฅเบฐเบเบงเบเปเบเบดเปเบเบเบธเบ _value_changed. เบชเบดเปเบเบเบตเปเปเบขเบฑเบเบเปเบฝเบงเบเบฑเบเบเบฑเบเบเบฑเบเบเบตเปเปเบกเปเบเบงเปเบฒเบฅเบฐเบซเบฑเบเบเบฒเบเปเบเบชเบฒเบกเบฒเบเบเบญเบเบซเบฅเบฑเบเปเบเบเบฐเบเบฐเบเบตเปเปเบเบซเบฒเบเบฑเบเบเบฑเบเบเบตเปเปเบฅเบฐเบเบญเบเบเบปเบเบเปเบงเบฒเปเบเปเบฎเบฑเบเบเปเบฒเปเบซเบกเป.
เปเบกเปเบเบซเบเบฑเบเบเปเบฝเบงเบเบฑเบเบเบฒเบเบเบฑเบเบเบงเบฒเบ?เปเบกเปเบเปเบฅเปเบง, เปเบเบเบธเบเบเบตเป, เบเปเบฒเบเบชเบฒเบกเบฒเบ troll เบเปเบญเบ, เปเบเบเปเบงเบปเปเบฒเบงเปเบฒเบเบปเบงเปเบเบปเปเบฒเปเบญเบเปเบงเบปเปเบฒเบเปเบฝเบงเบเบฑเบเบเบฒเบเบเบฑเบเบเบงเบฒเบ, เปเบเปเปเบเบเบงเบฒเบกเปเบเบฑเบเบเบดเบเปเบฅเปเบงเปเบเบปเปเบฒเปเบเปเปเบฎเบฑเบเปเบเบเบชเปเบฒเบซเบผเบงเบ pin stupid. เบเบปเบงเบเบดเบเปเบฅเปเบงเบเบฒเบเบเบฑเบเบเบงเบฒเบเปเบกเปเบเบชเบดเปเบเบเปเบฒเบญเบดเบเบเบตเปเบเปเบญเบเบเบฐเบเบฒเบเบฒเบก. เปเบ ESP8266, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฑเบเบงเบฒเบ edge interrupt, เปเบฅเบฐเปเบกเปเบเบฐเบเบฑเปเบเบเบฝเบเบเบปเบงเบเบฑเบเบเบฒเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฑเบเบเบงเบฒเบเบเบตเปเปเบ Python. เปเบเบเบฒเบเบเบฑเบเบเบงเบฒเบเบเบตเป, เบกเบนเบเบเปเบฒเบเบญเบเบเบปเบงเปเบเบชเบฒเบกเบฒเบเบเบฑเบเบเบธเบเปเบเป. เบญเบฒเบเบเบฐเปเบเบฑเบ, เบเบตเปเบเบฐเปเบเบฑเบเบเบฒเบเบเบฝเบเบเปเบเปเบฒเบซเบฒเบเบงเปเบฒ counter เปเบเบฑเบเบญเบธเบเบฐเบเบญเบเบชเปเบฒเบฅเบญเบ - เบซเบเบถเปเบเบเบตเปเบฅเปเบเปเบฒเบเบปเบเบเปเบงเบฒเบกเบฑเบเปเบเปเบเบทเบเบฎเปเบญเบเบเปเปเบซเปเบกเบตเบเปเบฒเบเบตเป.
เปเบเปเบซเบเปเบฒเปเบชเบเบเบฒเบ (เบซเบผเบทเปเบเบเบเบต?) เบญเบธเบเบฐเบเบญเบเบเบญเบเบเปเบญเบเปเบฎเบฑเบเบงเบฝเบเบขเบนเป, เบกเบฑเบเบเปเบญเบเบชเบปเปเบเบเปเปเบเบงเบฒเบกเบเปเบฒเบเปเบเปเบเบเบญเบ MQTT เปเบฅเบฐเบเบฝเบเบเปเปเบกเบนเบเปเบเบซเบฒ EEPROM. เปเบฅเบฐเปเบเบเบตเปเบเบตเปเบเปเปเบเปเบฒเบเบฑเบเปเบเบปเปเบฒเบกเบฒ - เบเปเบฒเบเบเปเปเบชเบฒเบกเบฒเบเบเบฑเบเบชเบฑเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒเปเบเบเบฒเบเบเบฑเบเบเบงเบฒเบเปเบฅเบฐเปเบเป stack เปเบซเบเป, เบเบถเปเบเบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒเบเปเบฒเบเบชเบฒเบกเบฒเบเบฅเบทเบกเบเปเบฝเบงเบเบฑเบเบเบฒเบเบชเบปเปเบเบเปเปเบเบงเบฒเบกเบเปเบฒเบเปเบเบทเบญเบเปเบฒเบ. เบกเบต buns เปเบเบฑเปเบ micropython.schedule() เบเบตเปเบญเบฐเบเบธเบเบฒเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเบฒเบเบซเบเปเบฒเบเบตเป "เปเบงเปเบเบปเปเบฒเบเบตเปเปเบเบฑเบเปเบเปเบเป," เปเบเปเบเปเบฒเบเบฒเบกเบเบตเปเปเบเบตเบเบเบทเปเบ, "เปเบกเปเบเบซเบเบฑเบเบเบทเบเบธเบ?" เบเบฐเปเบเบฑเบเปเบเบงเปเบเบเปเบฒเบซเบฒเบเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเบเปเบฒเบฅเบฑเบเบชเบปเปเบเบเปเปเบเบงเบฒเบกเบเบฒเบเบเบฐเปเบเบเปเบเบเบฑเบเบเบธเบเบฑเบ, เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบฒเบเบเบฑเบเบเบงเบฒเบเปเบเบปเปเบฒเบกเบฒเปเบฅเบฐ spoils เบกเบนเบเบเปเบฒเบเบญเบเบเบปเบงเปเบ. เบซเบผเบทเบเบปเบงเบขเปเบฒเบ, เบเปเบฒ counter เปเปเปเบกเบฒเบฎเบญเบเบเบฒเบเปเบเบตเบเปเบงเบตเปเบเบเบฐเบเบฐเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฑเบเบเปเปเปเบเปเบเบฝเบเบฅเบปเบเบญเบฑเบเปเบเบปเปเบฒ. เปเบเบเบเบปเปเบงเปเบ, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเบดเบเบเบฒเบ synchronization เบซเบผเบทเบญเบญเบเบเบฒเบเบกเบฑเบเบเบฒเบเบขเปเบฒเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ.
เปเบฅเบฐเบเบฒเบเบเบฑเปเบ RuntimeError: เบเปเบฒเบเบปเบเปเบงเบฅเบฒ stack crash เปเบเบฑเบกเปเบฅเบฐเปเบเบฎเบนเปเบงเปเบฒเปเบเบฑเบเบซเบเบฑเบ?
เบเปเบงเบเบเบฒเบเบฅเบปเบเบเบฐเปเบเบเบชเบฝเบเบเบตเปเบเบฑเบเปเบเบเปเบฅเบฐ uasync, เปเบเบเปเบฅเบฐเบเบตเบเบฑเปเบเบเปเบฒเบงเบเบตเป somehow turns out เบเบฒเบกเปเบฅเบฐเปเบเบทเปเบญเบเบทเปเบเป
เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบเปเบฒเปเบญเบปเบฒเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบ EEPROM เปเบเบซเบฒเบซเปเบญเบเบฎเบฝเบเบเบฐเบซเบเบฒเบเบเปเบญเบ
class EEPROM():
i2c_addr = const(80)
def __init__(self, i2c):
self.i2c = i2c
self.i2c_buf = bytearray(4) # Avoid creation/destruction of the buffer on each call
def read(self, eeprom_addr):
self.i2c.readfrom_mem_into(self.i2c_addr, eeprom_addr, self.i2c_buf, addrsize=16)
return ustruct.unpack_from("<I", self.i2c_buf)[0]
def write(self, eeprom_addr, value):
ustruct.pack_into("<I", self.i2c_buf, 0, value)
self.i2c.writeto_mem(self.i2c_addr, eeprom_addr, self.i2c_buf, addrsize=16)
เปเบ Python, เบกเบฑเบเปเบเบฑเบเบเบฒเบเบเบฒเบเบเบตเปเบเบฐเปเบฎเบฑเบเบงเบฝเบเปเบเบเบเบปเบเบเบฑเบ bytes, เปเบเปเบงเปเบฒเบกเบฑเบเปเบกเปเบ bytes เบเบตเปเบเบทเบเบเบฝเบเปเบงเปเปเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒ. เบเปเบญเบเบเปเบญเบเบฎเบปเปเบงเบเบฒเบเปเบเบเบฅเบฐเบซเบงเปเบฒเบเบเปเบฒเบเบงเบเปเบเบฑเบกเปเบฅเบฐ bytes เปเบเบเปเบเปเบซเปเบญเบเบชเบฐเบซเบกเบธเบ ustruct.
เปเบเบทเปเบญเบเปเปเปเบซเปเปเบญเบเบงเบฑเบเบเบธ I2C เปเบฅเบฐเบเบตเปเบขเบนเปเบเบญเบเปเบเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒเบเบธเบเบเบฑเปเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบซเปเปเบกเบฑเบเบเบฑเบเบซเบกเบปเบเปเบเปเบเบเบเบฅเบฒเบชเบชเบดเบเบเบฐเบซเบเบฒเบเบเปเบญเบเปเบฅเบฐเบชเบฐเบเบงเบ.
class EEPROMValue():
def __init__(self, i2c, eeprom_addr):
self._eeprom = EEPROM(i2c)
self._eeprom_addr = eeprom_addr
def read(self):
return self._eeprom.read(self._eeprom_addr)
def write(self, value):
self._eeprom.write(self._eeprom_addr, value)
เบงเบฑเบเบเบธ I2C เบเบปเบงเบเบญเบเบกเบฑเบเปเบญเบเบเบทเบเบชเปเบฒเบเบเบทเปเบเบเปเบงเบเบเบปเบงเบเปเบฒเบเบปเบเบเบฒเบเปเบซเบผเบปเปเบฒเบเบตเป
i2c = I2C(freq=400000, scl=Pin(5), sda=Pin(4))
เบเบงเบเปเบฎเบปเบฒเบกเบฒเบฎเบญเบเบชเปเบงเบเบเบตเปเบซเบเปเบฒเบชเบปเบเปเบเบเบตเปเบชเบธเบ - เบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเบชเบทเปเบชเบฒเบเบเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเปเบฒเบ MQTT. เบเบต, เบเปเปเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเบฐเบเบดเบเบฑเบเปเบเปเบเบเบญเบเบเบปเบงเบกเบฑเบเปเบญเบ - เบเปเบญเบเบเบปเบเบกเบฑเบเบขเบนเปเปเบเบญเบดเบเปเบเบตเปเบเบฑเบ
เบชเบดเปเบเบเบตเปเบซเบเปเบฒเบชเบปเบเปเบเบซเบผเบฒเบเบเบตเปเบชเบธเบเปเบกเปเบเบฅเบงเบเบฅเบงเบกเบขเบนเปเปเบเบซเปเบญเบเบฎเบฝเบ CounterMQTTClient, เปเบเบดเปเบเบญเบตเบเปเบชเปเบซเปเบญเบเบชเบฐเบซเบกเบธเบ MQTTClient. เปเบซเปเปเบฅเบตเปเบกเบเบปเปเบเบเบฒเบ periphery เปเบเป
#####################################
# Class handles both counters and sends their status to MQTT
#####################################
class CounterMQTTClient(MQTTClient):
blue_led = Pin(2, Pin.OUT, value = 1)
button = Pin(0, Pin.IN)
hot_counter = Counter(12, EEPROMValue(i2c, EEPROM_ADDR_HOT_VALUE))
cold_counter = Counter(13, EEPROMValue(i2c, EEPROM_ADDR_COLD_VALUE))
เบเบตเปเบเบตเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบชเปเบฒเบเปเบฅเบฐเบเปเบฒเบซเบเบปเบเบเปเบฒ pins bulb เปเบชเบเบชเบฐเบซเบงเปเบฒเบเปเบฅเบฐเบเบธเปเบก, เปเบเบฑเปเบเบเบฝเบงเบเบฑเบเบเบฑเบเบงเบฑเบเบเบธเปเบเบทเปเบญเบเบงเบฑเบเบเปเปเบฒเปเบขเบฑเบเปเบฅเบฐเบฎเปเบญเบ.
เบเปเบงเบเบเบฒเบเปเบฅเบตเปเบกเบเบปเปเบ, เบเปเปเปเบกเปเบเบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเปเบกเปเบเปเบเบฑเบเปเบฅเบทเปเบญเบเปเบฅเบฑเบเบเปเบญเบ
def __init__(self):
self.internet_outage = True
self.internet_outages = 0
self.internet_outage_start = ticks_ms()
with open("config.txt") as config_file:
config['ssid'] = config_file.readline().rstrip()
config['wifi_pw'] = config_file.readline().rstrip()
config['server'] = config_file.readline().rstrip()
config['client_id'] = config_file.readline().rstrip()
self._mqtt_cold_water_theme = config_file.readline().rstrip()
self._mqtt_hot_water_theme = config_file.readline().rstrip()
self._mqtt_debug_water_theme = config_file.readline().rstrip()
config['subs_cb'] = self.mqtt_msg_handler
config['wifi_coro'] = self.wifi_connection_handler
config['connect_coro'] = self.mqtt_connection_handler
config['clean'] = False
config['clean_init'] = False
super().__init__(config)
loop = asyncio.get_event_loop()
loop.create_task(self._heartbeat())
loop.create_task(self._counter_coro(self.cold_counter, self._mqtt_cold_water_theme))
loop.create_task(self._counter_coro(self.hot_counter, self._mqtt_hot_water_theme))
loop.create_task(self._display_coro())
เปเบเบทเปเบญเบเปเบฒเบเบปเบเบเบฒเบฅเบฒเบกเบดเปเบเบตเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเบญเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบ mqtt_as, เบงเบฑเบเบเบฐเบเบฒเบเบธเบเบปเบกเบเบฐเบซเบเบฒเบเปเบซเบเปเบเบญเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเบเบทเบเบเปเบฒเปเบเป - config . เบชเปเบงเบเปเบซเบเปเบเบญเบเบเบฒเบเบเบฑเปเบเบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบเปเบกเปเบเบเบตเบชเปเบฒเบฅเบฑเบเบเบงเบเปเบฎเบปเบฒ, เปเบเปเบเบฒเบเบเบฑเปเบเบเปเบฒเบเปเบฒเบเบงเบเบซเบผเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเปเบเปเบฒเบเบปเบเบขเปเบฒเบเบเบฐเปเบเปเบ. เปเบเบทเปเบญเบเปเปเปเบซเปเบเบฝเบเบเบฒเบเบเบฑเปเบเบเปเบฒเปเบเบเบเบปเบเปเบเบฅเบฐเบซเบฑเบ, เบเปเบญเบเปเบเบฑเบเปเบงเปเปเบเปเบเบฅเปเบเปเปเบเบงเบฒเบก config.txt. เบเบตเปเบญเบฐเบเบธเบเบฒเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฝเบเบฅเบฐเบซเบฑเบเปเบเบเบเปเปเบชเบปเบเปเบฅเบทเปเบญเบเบเบญเบเบเบฒเบเบเบฑเปเบเบเปเบฒ, เปเบเบฑเปเบเบเบฝเบงเบเบฑเบเบเบฑเบ rivet เบซเบผเบฒเบเบญเบธเบเบฐเบเบญเบเบเบตเปเบเปเบฒเบเบเบทเบเบฑเบเบเบฑเบเบเบปเบงเบเปเบฒเบเบปเบเบเบฒเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ.
เบเบฅเบฑเบญเบเบชเบธเบเบเปเบฒเบเบเบญเบเบฅเบฐเบซเบฑเบเปเบฅเบตเปเบกเบเบปเปเบ coroutines เบซเบผเบฒเบเปเบเบทเปเบญเบฎเบฑเบเปเบเปเบซเบเปเบฒเบเบตเปเบเปเบฒเบเปเบเบญเบเบฅเบฐเบเบปเบ. เบเบปเบงเบขเปเบฒเบ, เบเบตเปเปเบกเปเบ coroutine เบเบตเปเบเปเบฅเบดเบเบฒเบ counters
async def _counter_coro(self, counter, topic):
# Publish initial value
value = counter.value()
await self.publish(topic, str(value))
# Publish each new value
while True:
value = await counter
await self.publish_msg(topic, str(value))
coroutine เบฅเปเบเปเบฒเบขเบนเปเปเบ loop เบชเปเบฒเบฅเบฑเบเบกเบนเบเบเปเบฒ counter เปเบซเบกเปเปเบฅเบฐ, เบเบฑเบเบเบตเบเบตเปเบกเบฑเบเบเบฒเบเบปเบ, เบชเบปเปเบเบเปเปเบเบงเบฒเบกเบเปเบฒเบ MQTT protocol. เบเบดเปเบเบชเปเบงเบเบเปเบฒเบญเบดเบเบเบญเบเบฅเบฐเบซเบฑเบเบชเบปเปเบเบกเบนเบเบเปเบฒเปเบเบทเปเบญเบเบเบปเปเบเปเบเบดเบเปเบกเปเบเบงเปเบฒเบเปเปเบกเบตเบเปเปเบฒเปเบซเบผเบเปเบฒเบเปเบเบปเบฒเปเบเบต.
เบซเปเบญเบเบฎเบฝเบเบเบทเปเบเบเบฒเบ MQTTClient เปเบซเปเบเปเบฅเบดเบเบฒเบเบเบปเบงเบกเบฑเบเปเบญเบ, เปเบฅเบตเปเบกเบเบฒเบเปเบเบทเปเบญเบกเบเปเป WiFi เปเบฅเบฐเปเบเบทเปเบญเบกเบเปเปเบเบทเบเปเบซเบกเปเปเบกเบทเปเบญเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบซเบฒเบเปเบ. เปเบกเบทเปเบญเบกเบตเบเบฒเบเบเปเบฝเบเปเบเบเบชเบฐเบเบฒเบเบฐเบเบญเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเป WiFi, เบซเปเบญเบเบชเบฐเปเบธเบเบเบฐเปเบเปเบเปเบซเปเบเบงเบเปเบฎเบปเบฒเบฎเบนเปเปเบเบเบเบฒเบเปเบเบซเบฒ wifi_connection_handler.
async def wifi_connection_handler(self, state):
self.internet_outage = not state
if state:
self.dprint('WiFi is up.')
duration = ticks_diff(ticks_ms(), self.internet_outage_start) // 1000
await self.publish_debug_msg('ReconnectedAfter', duration)
else:
self.internet_outages += 1
self.internet_outage_start = ticks_ms()
self.dprint('WiFi is down.')
await asyncio.sleep(0)
เบเบฑเบเบเบฑเบเบเบทเบเบเบฑเบเบฅเบญเบเบขเปเบฒเบเบเบทเปเบชเบฑเบเบเบฒเบเบเบปเบงเบขเปเบฒเบ. เปเบเบเปเบฅเบฐเบเบตเบเบตเป, เบกเบฑเบเบเบฑเบเบเปเบฒเบเบงเบเบเบฒเบเบขเบธเบ (internet_outages) เปเบฅเบฐเปเบฅเบเบฐเปเบงเบฅเบฒเบเบญเบเบเบงเบเปเบเบปเบฒ. เปเบกเบทเปเบญเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบทเบเบเบทเปเบเบเบน, เปเบงเบฅเบฒเบซเบงเปเบฒเบเบเบทเบเบชเบปเปเบเปเบเบซเบฒเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ.
เปเบเบเบงเบดเบเบตเบเบฒเบเบเบฒเบ, เบเบฒเบเบเบญเบเบชเบธเบเบเปเบฒเบเปเบกเปเบเบเปเบฒเปเบเบฑเบเบเบฝเบเปเบเปเปเบเบทเปเบญเปเบฎเบฑเบเปเบซเปเบเบฑเบเบเบฑเบเบเปเปเบเบปเบเบเบฑเบ - เปเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบกเบฑเบเบเบทเบเปเบญเบตเปเบเบเปเบฒเบเบเบฒเบเบฅเปเบเปเบฒ, เปเบฅเบฐเบเบฝเบเปเบเปเบซเบเปเบฒเบเบตเปเบเบญเบเบฎเปเบฒเบเบเบฒเบเบกเบตเบเบปเบงเบฅเปเบเปเบฒเบญเบทเปเบเบชเบฒเบกเบฒเบเปเบญเบตเปเบเปเบเป.
เบเบญเบเปเบซเบเบทเบญเบเบฒเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเป WiFi, เบเปเบฒเบเบเบฑเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบชเปเบฒเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฑเบเบเบฒเบเบซเบเปเบฒ MQTT (เปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ). เบซเปเบญเบเบชเบฐเบซเบกเบธเบเปเบฎเบฑเบเปเบเบฑเปเบเบเบฝเบงเบเบฑเบ, เปเบฅเบฐเบเบงเบเปเบฎเบปเบฒเปเบเปเบฎเบฑเบเปเบญเบเบฒเบเบเบตเปเบเบฐเปเบฎเบฑเบเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเบเบตเปเปเบเบฑเบเบเบฐเปเบซเบเบเปเบเปเบงเบฅเบฒเบเบตเปเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเปเบเปเบเบทเบเบชเปเบฒเบเบเบฑเปเบเบเบถเปเบ
async def mqtt_connection_handler(self, client):
await client.subscribe(self._mqtt_cold_water_theme)
await client.subscribe(self._mqtt_hot_water_theme)
เปเบเบเบตเปเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบญเบเบเปเปเบเบงเบฒเบกเบเปเบฒเบเบงเบเบซเบเบถเปเบ - เปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเปเบเบเบฑเบเบเบธเบเบฑเบเบกเบตเบเบงเบฒเบกเบชเบฒเบกเบฒเบเบเบตเปเบเบฐเบเปเบฒเบเบปเบเบเปเบฒเบเปเบฒเบเบเบฒเบเปเบเบเบฐเบเบธเบเบฑเบเปเบเบเบเบฒเบเบชเบปเปเบเบเปเปเบเบงเบฒเบกเบเบตเปเบชเบญเบเบเปเบญเบเบเบฑเบ.
def mqtt_msg_handler(self, topic, msg):
topicstr = str(topic, 'utf8')
self.dprint("Received MQTT message topic={}, msg={}".format(topicstr, msg))
if topicstr == self._mqtt_cold_water_theme:
self.cold_counter.set_value(int(msg))
if topicstr == self._mqtt_hot_water_theme:
self.hot_counter.set_value(int(msg))
เบเบฑเบเบเบฑเบเบเบตเปเบเบฐเบกเบงเบเบเบปเบเบเปเปเบเบงเบฒเบกเบเบตเปเปเบเบปเปเบฒเบกเบฒ, เปเบฅเบฐเบเบถเปเบเบเบฑเบเบซเบปเบงเบเปเป (เบซเบปเบงเบเปเปเบเปเปเบเบงเบฒเบก), เบเปเบฒเบเบญเบเบซเบเบถเปเบเปเบเบเบปเบงเบเบฑเบเบเบฐเบเบทเบเบเบฑเบเบเบธเบ.
เบชเบญเบเบชเบฒเบกเบซเบเปเบฒเบเบตเปเบเบนเปเบเปเบงเบ
# Publish a message if WiFi and broker is up, else discard
async def publish_msg(self, topic, msg):
self.dprint("Publishing message on topic {}: {}".format(topic, msg))
if not self.internet_outage:
await self.publish(topic, msg)
else:
self.dprint("Message was not published - no internet connection")
เบเบฑเบเบเบฑเบเบเบตเปเบชเบปเปเบเบเปเปเบเบงเบฒเบกเบเปเบฒเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบทเบเบชเปเบฒเบเบเบฑเปเบเบเบถเปเบ. เบเปเบฒเบเปเปเบกเบตเบเบฒเบเปเบเบทเปเบญเบกเบเปเป, เบเปเปเบเบงเบฒเบกเบเบฐเบเบทเบเบฅเบฐเปเบฅเบตเบ.
เปเบฅเบฐเบเบตเปเปเบกเปเบเบเบฝเบเปเบเปเบซเบเปเบฒเบเบตเปเบชเบฐเบเบงเบเบเบตเปเบชเปเบฒเบเปเบฅเบฐเบชเบปเปเบเบเปเปเบเบงเบฒเบก debugging.
async def publish_debug_msg(self, subtopic, msg):
await self.publish_msg("{}/{}".format(self._mqtt_debug_water_theme, subtopic), str(msg))
เบเปเปเบเบงเบฒเบกเบซเบผเบฒเบ, เปเบฅเบฐเบเบงเบเปเบฎเบปเบฒเบเบฑเบเบเปเปเปเบเปเบเบฐเบเบดเบ LED เปเบเบทเปเบญ. เบเบตเปเบเบตเป
# Blink flash LED if WiFi down
async def _heartbeat(self):
while True:
if self.internet_outage:
self.blue_led(not self.blue_led()) # Fast blinking if no connection
await asyncio.sleep_ms(200)
else:
self.blue_led(0) # Rare blinking when connected
await asyncio.sleep_ms(50)
self.blue_led(1)
await asyncio.sleep_ms(5000)
เบเปเบญเบเปเบเปเปเบซเป 2 เปเปเบเบเบฐเบเบดเบ. เบเปเบฒเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบทเบเบชเบนเบเปเบชเบ (เบซเบผเบทเบกเบฑเบเบเบฝเบเปเบเปเบเบทเบเบชเปเบฒเบเบเบฑเปเบเบเบถเปเบ), เบญเบธเบเบฐเบเบญเบเบเบฐเบเบฐเบเบดเบเบขเปเบฒเบเปเบงเบงเบฒ. เบเปเบฒเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบทเบเบชเปเบฒเบเบเบฑเปเบเบเบถเปเบ, เบญเบธเบเบฐเบเบญเบเบเบฐเบเบฐเบเบดเบเบเบธเบเป 5 เบงเบดเบเบฒเบเบต. เบเปเบฒเบเปเบฒเปเบเบฑเบ, เบฎเบนเบเปเบเบเบเบฐเบเบดเบเบญเบทเปเบเปเบชเบฒเบกเบฒเบเบเบทเบเบเบฐเบเบดเบเบฑเบเบขเบนเปเบเบตเปเบเบตเป.
เปเบเป LED เปเบกเปเบเบเบฝเบเปเบเป pampering. เบเบงเบเปเบฎเบปเบฒเบเบฑเบเปเบเปเบชเปเบเบฒเบเบชเบฐเปเบเบ.
async def _display_coro(self):
display = SSD1306_I2C(128,32, i2c)
while True:
display.poweron()
display.fill(0)
display.text("COLD: {:.3f}".format(self.cold_counter.value() / 1000), 16, 4)
display.text("HOT: {:.3f}".format(self.hot_counter.value() / 1000), 16, 20)
display.show()
await asyncio.sleep(3)
display.poweroff()
while self.button():
await asyncio.sleep_ms(20)
เบเบตเปเปเบกเปเบเบชเบดเปเบเบเบตเปเบเปเบญเบเปเบงเบปเปเบฒเบเปเบฝเบงเบเบฑเบ - เบงเบดเบเบตเบเบตเปเบเปเบฒเบเบเบฒเบเปเบฅเบฐเบชเบฐเบเบงเบเบชเบฐเบเบฒเบเบเบฑเบ coroutines. เบเบฑเบเบเบฑเบเบเปเบญเบเปเบเบตเปเบญเบฐเบเบดเบเบฒเบเบเบฐเบชเบปเบเบเบฒเบเบเบญเบเบเบนเปเปเบเปเบเบฑเบเปเบปเบ. coroutine เบเบฝเบโเปเบเปโเบฅเปโเบเปเบฒโเปเบซเปโเบเบธเปเบกโเบเบตเปโเบเบฐโเปเบเปโเบฎเบฑเบโเบเบฒเบโเบเบปเบโเบเบฑเบโเปเบฅเบฐโเปเบเบตเบโเบซเบเปเบฒโเบเปโเบชเปเบฒโเบฅเบฑเบ 3 เบงเบดโเบเบฒโเบเบตโ. เบเปเบชเบฐเปเบเบเบเบปเบเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบเบฒเบเบญเปเบฒเบเปเบกเบฑเบเปเบเบเบฐเบเบธเบเบฑเบ.
เบเบฑเบโเบกเบตโเบเบฒเบโเบชเบดเปเบโเปเบฅเบฑเบโเบเปเบญเบโเบเบฑเบโเปเบซเบผเบทเบญโ. เบเบตเปเปเบกเปเบเบซเบเปเบฒเบเบตเป (re) เปเบฅเบตเปเบกเบเบปเปเบเบงเบดเบชเบฒเบซเบฐเบเบดเบเบเบฑเบเบซเบกเบปเบเบเบตเป. loop เบเบปเปเบเบเปเบเบฝเบเปเบเปเบชเบปเปเบเบเปเปเบกเบนเบ debugging เบเปเบฒเบเปเบซเบเบถเปเบเบเบฑเปเบเบเปเปเบเบฒเบเบต. เปเบเบเบเบปเปเบงเปเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบญเปเบฒเบเบงเปเบฒเบกเบฑเบเปเบเบฑเบ - เบเปเบญเบเบเปเปเบเบดเบเบงเปเบฒเบกเบตเบเบงเบฒเบกเบเปเบฒเปเบเบฑเบเบเบตเปเบเบฐเบชเบฐเปเบเบเบเบงเบฒเบกเบเบดเบเปเบซเบฑเบเบซเบผเบฒเบเปเบเบตเบเปเบ
async def main(self):
while True:
try:
await self._connect_to_WiFi()
await self._run_main_loop()
except Exception as e:
self.dprint('Global communication failure: ', e)
await asyncio.sleep(20)
async def _connect_to_WiFi(self):
self.dprint('Connecting to WiFi and MQTT')
sta_if = network.WLAN(network.STA_IF)
sta_if.connect(config['ssid'], config['wifi_pw'])
conn = False
while not conn:
await self.connect()
conn = True
self.dprint('Connected!')
self.internet_outage = False
async def _run_main_loop(self):
# Loop forever
mins = 0
while True:
gc.collect() # For RAM stats.
mem_free = gc.mem_free()
mem_alloc = gc.mem_alloc()
try:
await self.publish_debug_msg("Uptime", mins)
await self.publish_debug_msg("Repubs", self.REPUB_COUNT)
await self.publish_debug_msg("Outages", self.internet_outages)
await self.publish_debug_msg("MemFree", mem_free)
await self.publish_debug_msg("MemAlloc", mem_alloc)
except Exception as e:
self.dprint("Exception occurred: ", e)
mins += 1
await asyncio.sleep(60)
เบเบต, เบชเบญเบเบชเบฒเบกเบเบฒเบเบเบฑเปเบเบเปเบฒเปเบฅเบฐเบเปเบฒเบเบปเบเบเบตเปเปเบเบตเปเบกเปเบเบตเบกเปเบเบทเปเบญเปเบฎเบฑเบเบชเปเบฒเปเบฅเบฑเบเบเปเบฒเบญเบฐเบเบดเบเบฒเบ
#####################################
# Constants and configuration
#####################################
config['keepalive'] = 60
config['clean'] = False
config['will'] = ('/ESP/Wemos/Water/LastWill', 'Goodbye cruel world!', False, 0)
MQTTClient.DEBUG = True
EEPROM_ADDR_HOT_VALUE = const(0)
EEPROM_ADDR_COLD_VALUE = const(4)
เบกเบฑเบเบเบฑเบเบซเบกเบปเบเปเบฅเบตเปเบกเบเบปเปเบเปเบเบเบเบตเป
client = CounterMQTTClient()
loop = asyncio.get_event_loop()
loop.run_until_complete(client.main())
เบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเปเบเบตเบเบเบถเปเบเบเบฑเบเบเบงเบฒเบกเบเบปเบเบเปเบฒเบเบญเบเบเปเบญเบ
เบเบฑเปเบเบเบฑเปเบ, เบฅเบฐเบซเบฑเบเบเบฑเบเบซเบกเบปเบเบขเบนเปเบเบตเปเบเบฑเปเบ. เบเปเบญเบเบญเบฑเบเปเบซเบฅเบเปเบเบฅเปเปเบเบเปเบเป ampy utility - เบกเบฑเบเบเปเบงเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบญเบฑเบเปเบซเบฅเบเบเบงเบเบกเบฑเบเปเบชเปเบเบฒเบเปเบ (เบซเบเบถเปเบเปเบ ESP-07 เบเบปเบงเบเบญเบเบกเบฑเบเปเบญเบ) flash drive เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเปเบเบปเปเบฒเปเบเบดเบเบกเบฑเบเบเบฒเบเปเบเบเบเบฒเบเปเบเบฑเบเปเบเบฅเปเบเบปเบเบเบฐเบเบด. เบขเบนเปเบเบตเปเบเบฑเปเบเบเปเบญเบเบเบฑเบเปเบเปเบญเบฑเบเปเบซเบฅเบ mqtt_as, uasyncio, ssd1306 เปเบฅเบฐเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบเบฒเบเปเบเบฑเบเบเปเบฒเบเบตเปเบเปเบญเบเปเบเป (เปเบเปเบเบฒเบเปเบ mqtt_as).
เบเบงเบเปเบฎเบปเบฒเปเบเบตเบเบเบปเบงเปเบฅเบฐ ... เบเบงเบเปเบฎเบปเบฒเปเบเปเบฎเบฑเบ MemoryError. เบเบดเปเบเปเบเบเบงเปเบฒเบเบฑเปเบ, เบซเบผเบฒเบเบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฐเบเบฒเบเบฒเบกเปเบเบปเปเบฒเปเบเบเปเบญเบเบเบตเปเบเบงเบฒเบกเบเบปเบเบเปเบฒเปเบเปเบฎเบปเปเบงเปเบซเบฅ, เบเบฒเบเบเบดเบก debug เบซเบผเบฒเบเบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบงเบฒเบเปเบงเป, เบเบงเบฒเบกเบเบดเบเบเบฒเบเบเบตเปเบเบฒเบเบปเบเบเบถเปเบเบเปเบญเบเบซเบเปเบฒเบเบตเป. เบเบฒเบเบเบปเปเบเบซเบฒ Google เบชเบฑเปเบเปเปเบฎเบฑเบเปเบซเปเบเปเบญเบเปเบเบปเปเบฒเปเบเบงเปเบฒ microcontroller เบกเบต, เปเบเบซเบผเบฑเบเบเบฒเบ, เบเบฝเบเปเบเป 30 kB เบเบญเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒ, เปเบเบดเปเบ 65 kB เบเบญเบเบฅเบฐเบซเบฑเบ (เบฅเบงเบกเบเบฑเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบ) เบเบฝเบเปเบเปเบเปเปเบชเบฒเบกเบฒเบเปเบซเบกเบฒเบฐ.
เปเบเปเบกเบตเบเบฒเบเบญเบญเบ. เบกเบฑเบเบเบฐเบเบปเบเบงเปเบฒ micropython เบเปเปเบเบฐเบเบดเบเบฑเบเบฅเบฐเบซเบฑเบเปเบเบเบเบปเบเบเบฒเบเปเบเบฅเป .py - เปเบเบฅเปเบเบตเปเบเบทเบเบฅเบงเบเบฅเบงเบกเบเปเบญเบ. เบเบดเปเบเปเบเบเบงเปเบฒเบเบฑเปเบ, เบกเบฑเบเบเบทเบเบฅเบงเบเบฅเบงเบกเปเบเบเบเบปเบเปเบ microcontroller, เบเบฒเบเปเบเบฑเบ bytecode, เปเบเบดเปเบเบเบทเบเปเบเบฑเบเปเบงเปเปเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒ. เบเบต, เปเบเบทเปเบญเปเบซเป compiler เปเบฎเบฑเบเบงเบฝเบ, เบเปเบฒเบเบเปเปเบเปเบญเบเบเบฒเบ RAM เบเปเบฒเบเบงเบเบเบตเปเปเบเปเบเบญเบ.
เปเบเบฑเบเบฅเบฑเบเปเบกเปเบเปเบเบทเปเบญเบเปเบงเบเบเบฐเบขเบฑเบ microcontroller เบเบฒเบเบเบฒเบเบฅเบงเบเบฅเบงเบกเบเบฑเบเบเบฐเบเบฒเบเบญเบเบซเบผเบฒเบ. เบเปเบฒเบเบชเบฒเบกเบฒเบเบฅเบงเบเบฅเบงเบกเปเบเบฅเปเปเบเบเบญเบกเบเบดเบงเปเบเบตเบเบฐเบซเบเบฒเบเปเบซเบเปเปเบฅเบฐเบญเบฑเบเปเบซเบฅเบ bytecode เบเปเบญเบกเบเบตเปเบเบฐเปเบฎเบฑเบเปเบฅเปเบงเปเบเบปเปเบฒเปเบเปเบ microcontroller. เปเบเบทเปเบญเปเบฎเบฑเบเบชเบดเปเบเบเบตเป, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเปเบเบฒเบงเปเบซเบฅเบ firmware micropython เปเบฅเบฐเบชเปเบฒเบ
เบเปเบญเบเบเปเปเปเบเปเบเบฝเบ Makefile, เปเบเปเบเบปเบเปเบญเบเปเบเปเบเปเบฒเบเปเบฅเบฐเบฅเบงเบเบฅเบงเบกเปเบเบฅเปเบเบตเปเบเปเบฒเปเบเบฑเบเบเบฑเบเบซเบกเบปเบ (เบฅเบงเบกเบเบฑเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบ) เบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเปเบเบฑเปเบเบเบตเป.
mpy-cross water_counter.py
เบชเบดเปเบเบเบตเปเบเบฑเบเปเบซเบผเบทเบญเปเบกเปเบเบเบฒเบเบญเบฑเบเปเบซเบฅเบเปเบเบฅเปเบเบตเปเบกเบตเบเบฒเบกเบชเบฐเบเบธเบ .mpy, เบขเปเบฒเบฅเบทเบกเบฅเบถเบ .py เบเบตเปเบชเบญเบเบเปเบญเบเบเบฑเบเบญเบญเบเบเบฒเบเบฅเบฐเบเบปเบเปเบเบฅเปเบเบญเบเบญเบธเบเบฐเบเบญเบเบเปเบญเบ.
เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบเบฑเบเบเบฐเบเบฒเบเบฑเบเบซเบกเบปเบเปเบเปเบเบเบเบฒเบ (IDE?) ESPlorer. เบกเบฑเบเบญเบฐเบเบธเบเบฒเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบญเบฑเบเปเบซเบฅเบ scripts เบเบฑเบ microcontroller เปเบฅเบฐเบเปเบฒเปเบเบตเบเบเบฒเบเปเบซเปเปเบเบปเบฒเปเบเบปเปเบฒเบเบฑเบเบเบต. เปเบเบเปเบฅเบฐเบเบตเบเบญเบเบเปเบญเบ, เปเบซเบเบเบปเบเบเบฑเบเบซเบกเบปเบเปเบฅเบฐเบเบฒเบเบชเปเบฒเบเบงเบฑเบเบเบธเบเบฑเบเบซเบกเบปเบเปเบกเปเบเบขเบนเปเปเบเปเบเบฅเป water_counter.py (.mpy). เปเบเปเปเบเบทเปเบญเปเบซเปเบเบฑเบเปเบปเบเบเบตเปเปเบฅเบตเปเบกเบญเบฑเบเบเบฐเปเบเบกเบฑเบ, เบเปเบญเบเบกเบตเปเบเบฅเปเบเบตเปเปเบญเบตเปเบเบงเปเบฒ main.py เปเบเบเบญเบเปเบฅเบตเปเบกเบเบปเปเบ. เบเบดเปเบเปเบเบเบงเปเบฒเบเบฑเปเบ, เบกเบฑเบเบเบงเบเบเบฐเปเบเบฑเบ .py เบขเปเบฒเบเปเบเปเบเบดเบ, เปเบฅเบฐเบเปเปเปเบกเปเบเบเบฒเบเบฅเบงเบเบฅเบงเบกเบเปเบญเบ .mpy. เบเบตเปเปเบกเปเบเปเบเบทเปเบญเปเบเปเบฅเบฑเบเบเปเบญเบเบเบญเบเบกเบฑเบ
import water_counter
เบเบงเบเปเบฎเบปเบฒเปเบเบตเบเบเบปเบงเบกเบฑเบ - เบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเปเบฎเบฑเบเบงเบฝเบ. เปเบเปเบเบงเบฒเบกเบเบปเบเบเปเบฒเบเบตเปเบเปเปเปเบชเบเบเปเบฒเปเบกเปเบเบกเบตเบเบฐเบซเบเบฒเบเบเปเบญเบเบเบตเปเบซเบเปเบฒเบเบปเบเปเบ - เบเบฐเบกเบฒเบ 1kb. เบเปเบญเบเบเบฑเบเบกเบตเปเบเบเบเบตเปเบเบฐเบเบฐเบซเบเบฒเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบญเบเบญเบธเบเบฐเบเบญเบ, เปเบฅเบฐเบเบดเปเบฅเปเบเบเบตเปเบขเปเบฒเบเบเบฑเบเปเบเบเบเปเปเบเบฝเบเบเปเบชเปเบฒเบฅเบฑเบเบเปเบญเบ. เปเบเปเบกเบฑเบเปเบเปเบซเบฑเบเบญเบญเบเบงเปเบฒเบกเบตเบเบฒเบเบญเบญเบเบชเปเบฒเบฅเบฑเบเบเปเบฅเบฐเบเบตเบเบตเปเบเบทเบเบฑเบ.
เบเบตเปเปเบกเปเบเบชเบดเปเบเบเบตเป. เปเบเบดเบเปเบกเปเบเบงเปเบฒเปเบเบฅเปเบเบทเบเบฅเบงเบเบฅเบงเบกเปเบเบปเปเบฒเปเบเปเบ bytecode เปเบฅเบฐเบญเบฒเปเบชเบขเบนเปเปเบเบฅเบฐเบเบปเบเปเบเบฅเปเบเบฒเบเปเบ, เปเบเบเบงเบฒเบกเปเบเบฑเบเบเบดเบเบเบงเบเบกเบฑเบเบเบฑเบเบเบทเบเปเบซเบฅเบเปเบเบปเปเบฒเปเบเปเบ RAM เปเบฅเบฐเบเบทเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเปเบญเบเบเบฑเปเบ. เปเบเปเบกเบฑเบเบเบฒเบเบปเบเบงเปเบฒ micropython เบชเบฒเบกเบฒเบเบเบฐเบเบดเบเบฑเบ bytecode เปเบเบเบเบปเบเบเบฒเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒ flash, เปเบเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบตเป, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบชเปเบฒเบเบกเบฑเบเปเบเบเบเบปเบเปเบ firmware. เบกเบฑเบเบเปเปเบเบฒเบ, เปเบเบดเบเปเบกเปเบเบงเปเบฒเบกเบฑเบเปเบเปเปเบงเบฅเบฒเบเปเบญเบเบเปเบฒเบเบขเบนเปเปเบ netbook เบเบญเบเบเปเบญเบ (เบเบฝเบเปเบเปเบเปเบญเบเบกเบต Linux).
เบชเบนเบเบเบฒเบเบเบดเบเปเบฅเปเบกเบตเบเบฑเปเบเบเบตเป:
- เบเบฒเบงเปเบซเบฅเบเปเบฅเบฐเบเบดเบเบเบฑเปเบ
ESP เปเบเบตเบ SDK . เบชเบดเปเบเบเบตเปเบเบฐเบเบญเบ compiler เปเบฅเบฐเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบชเปเบฒเบฅเบฑเบเปเบเบเบเบฒเบเบชเปเบฒเบฅเบฑเบ ESP8266. เบเบฐโเบเบญเบโเบเบฒเบกโเบเปเบฒโเปเบเบฐโเบเปเบฒโเปเบโเบซเบเปเบฒโเบเบปเปเบโเบเปโเบเบญเบโเปเบเบโเบเบฒเบ (เบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเปเบฅเบทเบญเบโเปเบญเบปเบฒโเบเบฒเบโเบเบฑเปเบโเบเปเบฒ STANDALONE = เปเบกเปเบโเปเบฅเปเบงโ) - เบเบฒเบงเปเบซเบฅเบ
micropython เบเบฐเปเบเบ - เบงเบฒเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบเบตเปเบเปเบญเบเบเบฒเบเบขเบนเปเปเบเบเบญเบ / esp8266 / เปเบกเบเบนเบเบเบฒเบเปเบเบเบปเปเบเปเบกเป micropython
- เบเบงเบเปเบฎเบปเบฒเบเบฐเบเบญเบเปเบเบตเบกเปเบงเบเบฒเบกเบเปเบฒเปเบเบฐเบเปเบฒเปเบเปเบเบฅเป
ports/esp8266/README.md - เบเบงเบเปเบฎเบปเบฒเบญเบฑเบเปเบซเบฅเบเปเบเบตเบกเปเบงเปเบชเป microcontroller (เบเปเบญเบเปเบฎเบฑเบเบชเบดเปเบเบเบตเปเปเบ Windows เปเบเบเปเบเปเปเบเบฃเปเบเบฃเบก ESP8266Flasher เบซเบผเบท Python esptool)
เบเบฑเปเบเปเบกเปเบ, เบเบญเบเบเบตเป 'เบเปเบฒเปเบเบปเปเบฒ ssd1306' เบเบฐเบเบปเบเบฅเบฐเบซเบฑเบเปเบเบเบเบปเบเบเบฒเบเปเบเบตเบกเปเบงเปเบฅเบฐ RAM เบเบฐเบเปเปเบเบทเบเบเปเบฅเบดเปเบเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบตเป. เบเปเบงเบ trick เบเบตเป, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบญเบฑเบเปเบซเบฅเบเบเบฝเบเปเบเปเบฅเบฐเบซเบฑเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบเปเบเบปเปเบฒเปเบเปเบ firmware, เปเบเบเบฐเบเบฐเบเบตเปเบฅเบฐเบซเบฑเบเปเบเบเบเบฒเบเบเบปเปเบเบเปเบเบทเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเบฅเบฐเบเบปเบเปเบเบฅเป. เบเบตเปเบญเบฐเบเบธเบเบฒเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฑเบเปเบเบเปเบเบเบเบฒเบเปเบเปเบขเปเบฒเบเบเปเบฒเบเบเบฒเบเปเบเบเบเปเปเบกเบตเบเบฒเบ recompiling firmware. เปเบเบเบฑเบเบเบธเบเบฑเบเบเปเบฒเบเบฐเปเบเบปเปเบฒเบกเบตเบเบฐเบกเบฒเบ 8.5kb เบเบญเบ RAM เบเบฃเบต. เบเบตเปเบเบฐเบเปเบงเบเปเบซเปเบเบงเบเปเบฎเบปเบฒเบเบฐเบเบดเบเบฑเบเบซเบเปเบฒเบเบตเปเบเบตเปเปเบเบฑเบเบเบฐเปเบซเบเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเบซเบผเบฒเบเปเบเบญเบฐเบเบฒเบเบปเบ. เบเบต, เบเปเบฒเบเปเปเบกเบตเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒเบเบฝเบเบเป, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบชเบฒเบกเบฒเบเบเบนเปเปเบเบเบเบฒเบเบเบปเปเบเบเปเปเบเบปเปเบฒเปเบเปเบ firmware.
เบเบฑเปเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเบเบงเบเปเบฎเบฑเบเปเบเบงเปเบเบเปเบฝเบงเบเบฑเบเบกเบฑเบเปเบเบเบฑเบเบเบธเบเบฑเบ?
เบเบปเบเบฅเบปเบ, เบฎเบฒเบเปเบงเบเบทเบ soldered, เปเบเบตเบกเปเบงเบเบทเบเบเบฝเบ, เบเปเบญเบเบเบทเบเบเบดเบกเบญเบญเบ, เบญเบธเบเบฐเบเบญเบเบเบทเบเบเบดเบเบขเบนเปเปเบเบดเบเบเบฒเปเบฅเบฐเบเบฐเบเบดเบเบเบญเบเปเบเบขเปเบฒเบเบกเบตเบเบงเบฒเบกเบชเบธเบ. เปเบเปเบชเปเบฒเบฅเบฑเบเปเบเบเบฑเบเบเบธเบเบฑเบเบกเบฑเบเปเบเบฑเบเบเปเบญเบเบชเบตเบเปเบฒเบเบฑเบเบซเบกเบปเบ (เบเบปเบงเบซเบเบฑเบเบชเบทเปเบฅเบฐเบเบปเบงเปเบฅเบ) เปเบฅเบฐเบกเบฑเบเบเบฑเบเปเบเปเบซเบเปเบญเบ. เบกเบฑเบเปเบเบฑเบเปเบงเบฅเบฒเบเบตเปเบเบฐเปเบฎเบฑเบเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเบเบฑเบเบเปเปเบเบงเบฒเบก MQTT เบเบตเปเบเบทเบเบชเบปเปเบเปเบเบซเบฒเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ.
"เปเบฎเบทเบญเบเบญเบฑเบเบชเบฐเบฅเบดเบเบฐ" เบเบญเบเบเปเบญเบเบเบณเบฅเบฑเบเปเบนเบเบงเบฝเบเบขเบนเป
เบซเบผเบฑเบเบเบฒเบเบญเบธเบเบฐเบเบญเบเบชเบปเปเบเบเปเปเบเบงเบฒเบกเบขเปเบฒเบเบซเบเปเบญเบเบซเบเบถเปเบเบเบฑเปเบ, เบกเบนเบเบเปเบฒเบเบฐเบเบฒเบเบปเบเปเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบฑเบเบเบต.
เปเบเบเบฑเบเบเบธเบเบฑเบเบกเบนเบเบเปเบฒเปเบซเบผเบปเปเบฒเบเบตเปเบชเบฒเบกเบฒเบเปเบเบทเปเบญเบกเปเบเบเบเบฑเบเบงเบฑเบเบเบธเบเบญเบเบฅเบฐเบเบปเบ, เบเบงเบเปเบเบปเบฒเบชเบฒเบกเบฒเบเบเบทเบเบเปเบฒเปเบเปเปเบ scripts เบญเบฑเบเบเบฐเปเบเบกเบฑเบเปเบฅเบฐเบเบถเปเบเบเบฑเบเบเบฒเบเบงเบดเปเบเบฒเบฐเบเปเบฒเบเป - เบเบฑเบเบซเบกเบปเบเปเบกเปเบเปเบเบตเบเบเบญเบเปเบเบเบเบญเบเบเบปเบเบเบงเบฒเบกเบเบตเป. เบเปเบญเบเบชเบฒเบกเบฒเบเปเบเบฐเบเปเบฒเบฅเบฐเบเบปเบ majordomo เปเบซเปเบเบธเบเบเบปเบเบเบตเปเบชเบปเบเปเบ
เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฝเบเปเบเปเบเบฐเบชเบฐเปเบเบเปเบซเปเบเปเบฒเบเปเบซเบฑเบเบชเบญเบเบชเบฒเบกเปเบชเบฑเปเบ. เบเบตเปเปเบกเปเบเปเบชเบฑเปเบเบชเบฐเปเบเบเบเบตเปเบเปเบฒเบเบเบฒเบเบเบญเบเบกเบนเบเบเปเบฒเบเบฐเบเปเบฒเบงเบฑเบ
เบชเบฒเบกเบฒเบเปเบซเบฑเบเปเบเปเบงเปเบฒเปเบเบทเบญเบเบเปเปเบกเบตเปเบเปเบเปเบเปเปเบฒเปเบเบเบญเบเบเบฒเบเบเบทเบ. เบชเบญเบเบชเบฒเบกเปเบเบทเปเบญเบกเบตเบเบปเบเปเบเบซเปเบญเบเบเปเปเบฒ, เปเบฅเบฐเปเบเบดเปเบเบเบทเบงเปเบฒเบเบฒเบเบเบฑเปเบเบเบญเบ osmosis เบเปเบฒเบเบซเบฅเบฑเบเบเบนเบเบชเบญเบเบชเบฒเบกเบฅเบดเบเบเปเปเบเบทเบ. เปเบเบเบญเบเปเบเบปเปเบฒ, เบเบฒเบเบเปเบฅเบดเปเบเบเปเบเบตเปเบกเบเบถเปเบเบขเปเบฒเบเบซเบผเบงเบเบซเบผเบฒเบ. เบเบปเบเบเบฐเบเบดเปเบฅเปเบงเบเปเบญเบเปเบเปเบเปเปเบฒเบเบฒเบเบซเบกเปเปเบซเบธเบเบเบปเปเบก, เปเบเปเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบญเบเบขเบฒเบเบญเบฒเบเบเปเปเบฒเปเบฅเบฐเบเปเบฝเบเปเบเบฑเบเบเปเปเบฒเบฎเปเบญเบเปเบเปเบกเบทเบญเบเบเบปเปเบงเบเบฒเบง - เบเบตเปเปเบกเปเบเปเบซเบฑเบเปเบเปเบเบฑเบเปเบเบเบขเบนเปเปเบเปเบชเบฑเปเบเบชเบฐเปเบเบเบเปเบฒเบเบฅเบธเปเบก.
เบเบฒเบเบเบฒเบเบฐเบฅเบฒเบเบเบตเปเบเปเบญเบเปเบเปเบฎเบฝเบเบฎเบนเปเบงเปเบฒเบเบฒเบเปเบเบซเปเบญเบเบเปเปเบฒเบเปเบญเบเบเบฒเบเบเปเปเบฒ 6-7 เบฅเบดเบ, เบเบฒเบเบญเบฒเบเบเปเปเบฒเบเปเบญเบเบเบฒเบ 20-30 เบฅเบดเบ, เบเบฒเบเบฅเปเบฒเบเบเปเบงเบเบเปเบญเบเบเบฒเบเบเบฐเบกเบฒเบ 20 เบฅเบดเบ, เบเบฒเบเบญเบฒเบเบเปเปเบฒเบเปเบญเบเบเบฒเบ 160 เบฅเบดเบ. เบเบญเบเบเบปเบงเบเบญเบเบเปเบญเบเบเปเบฅเบดเปเบเบเบเบฐเบกเบฒเบ 500-600 เบฅเบดเบเบเปเปเบกเบทเป.
เบชเปเบฒเบฅเบฑเบเบเบนเปเบเบตเปเบขเบฒเบเบฎเบนเปเบขเบฒเบเปเบซเบฑเบเปเบเบเบชเบฐเปเบเบฒเบฐ, เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบดเปเบเบเบฑเบเบเบถเบเบชเปเบฒเบฅเบฑเบเบกเบนเบเบเปเบฒเปเบเปเบฅเบฐเบเบปเบ
เบเบฒเบเบเบตเปเบเบตเปเบเปเบญเบเปเบเปเบฎเบฝเบเบฎเบนเปเบงเปเบฒเปเบกเบทเปเบญเบเปเปเปเบเบตเบ, เบเปเปเบฒเบเบฐเปเบซเบผเบเปเบงเบเบเบงเบฒเบกเปเบงเบเบฐเบกเบฒเบ 1 เบฅเบดเบเบเปเป 5 เบงเบดเบเบฒเบเบต.
เปเบเปเปเบเบฎเบนเบเปเบเบเบเบตเป, เบชเบฐเบเบดเบเบดเบญเบฒเบเบเบฐเบเปเปเบชเบฐเบเบงเบเบซเบผเบฒเบเบเบตเปเบเบฐเปเบเบดเปเบ. Majordomo เบเบฑเบเบกเบตเบเบงเบฒเบกเบชเบฒเบกเบฒเบเปเบเบเบฒเบเปเบเบดเปเบเบเบฒเบเบฐเบฅเบฒเบเบเบฒเบเบเปเบฅเบดเปเบเบเปเบเบกเบทเป, เบญเบฒเบเบดเบเปเบฅเบฐเปเบเบทเบญเบ. เบเบตเปเบเบตเป, เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบปเบเบเบปเบงเบขเปเบฒเบ, เปเบกเปเบเปเบชเบฑเปเบเบชเบฐเปเบเบเบเบฒเบเบเปเบฅเบดเปเบเบเปเบเปเบเบ
เบกเบฒเบฎเบญเบเบเบฐเบเบธเบเบฑเบเบเปเบฒเบเบฐเปเบเบปเปเบฒเบกเบตเบเปเปเบกเบนเบเบเบฝเบเปเบเปเบซเบเบถเปเบเบญเบฒเบเบดเบเปเบเบปเปเบฒเบเบฑเปเบ. เปเบเปเบเบทเบญเบเบซเบเบถเปเบ, เปเบชเบฑเปเบเบชเบฐเปเบเบเบเบตเปเบเบฐเปเบเบฑเบเบเบปเบงเบเบตเปเบเบญเบเบซเบผเบฒเบ - เปเบเปเบเปเบฅเบฐเบกเบทเปเบเบฐเบกเบตเบเบฑเบเปเบเบเบเปเบฒเบเบซเบฒเบ. เบฎเบนเบเบเบฒเบเปเบกเปเบ spoiled เปเบฅเบฑเบเบเปเบญเบเปเบเบเบเบฒเบเบเบฑเบเบเบปเบงเบเบฑเบเบเปเบฒเบเบตเปเบเปเบญเบเปเบชเปเบเปเบงเบเบเบปเบเปเบญเบ (เบเบฑเบเบเบตเปเปเบซเบเปเบเบตเปเบชเบธเบ). เปเบฅเบฐเบกเบฑเบเบเบฑเบเบเปเปเบเบฑเบเปเบเบฑเบเบเบตเปเบเบฑเบเปเบเบเบงเปเบฒเบเปเบญเบเบเบฑเปเบเบเปเบฒเบเปเบฒเบญเบดเบเบเปเปเบเบทเบเบเปเบญเบ, เปเบเบทเบญเบ cube เบซเบเปเบญเบ, เบซเบผเบทเบงเปเบฒเบเบตเปเปเบกเปเบเบเปเปเบเบปเบเบเปเบญเบเปเบ firmware เปเบฅเบฐเบเปเปเปเบกเปเบเบเบฑเบเบซเบกเบปเบเบฅเบดเบเบเบทเบเบเบฑเบ. เบเปเบญเบเบเบฒเบเปเบงเบฅเบฒเปเบเบตเปเบกเปเบเบตเบก.
เปเบชเบฑเปเบเบชเบฐเปเบเบเบเบปเบงเปเบญเบเบเบฑเบเบเปเบญเบเบเบฒเบ magic, whitewashing, painting. เบเบฒเบเบเบตเบเปเบญเบเบเบฑเบเบเบฐเบชเปเบฒเบเปเบชเบฑเปเบเบชเบฐเปเบเบเบเบฒเบเบเปเบฅเบดเปเบเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒเบชเปเบฒเบฅเบฑเบเบเบธเบเบเบฐเบชเบปเบ debugging - เปเบเบเปเบฅเบฐเบเบตเบเบตเปเบกเบตเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเบฎเบปเปเบงเปเบซเบผ. เบเบฒเบเบเบตเบเปเบญเบเบเบฐเบชเบฐเปเบเบเบเบฒเบเบเปเบงเบเปเบงเบฅเบฒเบเบตเปเบเปเปเบกเบตเบญเบดเบเปเบเบตเปเบเบฑเบ. เบชเปเบฒเบฅเบฑเบเปเบเบเบฑเบเบเบธเบเบฑเบ, เบเบฑเบเบซเบกเบปเบเบเบตเปเปเบกเปเบเบขเบนเปเปเบเบฅเบฐเบเบฑเบเบเบญเบเปเบเบงเบเบงเบฒเบกเบเบดเบ.
เบชเบฐเบซเบฅเบธเบ
เบกเบทเปเบเบตเปเบญเบฒเบเบฒเบเปเบกเบฑเบเบเบญเบเบเปเบญเบเปเบเปเบเบฒเบเปเบเบฑเบเบเบตเปเบชเบฐเบซเบฅเบฒเบเบเบงเปเบฒเปเบฅเบฑเบเบเปเบญเบ. เบเปเบงเบเบญเบธเบเบฐเบเบญเบเบเบฐเบซเบเบฒเบเบเปเบญเบเบเบฑเปเบเบเปเบฒเบง, เบกเบฑเบเบเบฐเบชเบฐเบเบงเบเบเบงเปเบฒเบชเปเบฒเบฅเบฑเบเบเปเบญเบเปเบเบเบฒเบเบเบดเบเบเบฒเบกเบเบฒเบเบเปเบฅเบดเปเบเบเบเปเปเบฒเปเบเปเบฎเบทเบญเบ. เบเปเบฒเบเปเบญเบเบซเบเปเบฒเบเบฑเปเบเบเปเบญเบเปเบเบฎเปเบฒเบ "เบญเบตเบเปเบเบทเปเบญเบซเบเบถเปเบ, เบเบงเบเปเบฎเบปเบฒเบเปเบฅเบดเปเบเบเบเปเปเบฒเบซเบผเบฒเบเปเบเปเบเบทเบญเบ," เบเบญเบเบเบตเปเบเปเบญเบเบชเบฒเบกเบฒเบเบเบญเบเบซเบฒเปเบซเบผเปเบเบเบญเบเบเบฒเบเบเปเบฅเบดเปเบเบเบเบตเป.
เบเบฒเบโเบเบปเบโเบญเบฒเบโเบเบฐโเปเบซเบฑเบโเบงเปเบฒโเบกเบฑเบโเปเบเบโเบเบตเปโเบเบฐโเปเบเบดเปเบโเบเบฒเบโเบญเปเบฒเบโเปเบโเบซเบเปเบฒโเบเปโเบเปเบฒโเบซเบฒเบโเบงเปเบฒโเบกเบฑเบโเปเบเบฑเบโเปเบกเบฑเบโเบซเปเบฒเบโเบเบฒเบโเปเบกเบฑเบโเบเบปเบงโเบกเบฑเบโเปเบญเบ. เปเบเปเปเบเบญเบฐเบเบฒเบเบปเบเบเปเปเปเบเบซเบผเบฒเบ, เบเปเบญเบเบงเบฒเบเปเบเบเบเบตเปเบเบฐเบเปเบฒเบเปเบเบญเบฒเบเบฒเบเปเบกเบฑเบเบญเบทเปเบ, เบเปเบญเบเบเบตเปเบเบฐเบกเบตเบเปเปเบฒเบเปเบงเบกเบซเบผเบฒเบ, เปเบฅเบฐเปเบกเบฑเบเบเบญเบเบเบปเบงเปเบญเบเบชเปเบงเบเบซเบผเบฒเบเปเบกเปเบเบเบฑเปเบเบขเบนเปเปเบเบดเบเบซเบเปเบฒเบเบดเบ. เบเบฑเปเบเบเบฑเปเบเบญเบธเบเบฐเบเบญเบเบเบฒเบเบญเปเบฒเบเบซเปเบฒเบเปเบเบชเบญเบเบซเบผเบตเบเบเบฐเปเบเบฑเบเบเบฐเปเบซเบเบเบซเบผเบฒเบ.
เบเปเบญเบเบเบฑเบเบงเบฒเบเปเบเบเบเบตเปเบเบฐเบเบฐเบซเบเบฒเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบญเบเบญเบธเบเบฐเบเบญเบ. เบเปเบญเบเบเบณเบฅเบฑเบเปเบเบดเปเบเบเปเบฝเบเบกเปเปเบเบตเปเบฅเปเบง. เบเบฝเบงเบเบตเป, เปเบเบทเปเบญเบเปเบฝเบเบซเบกเปเปเบซเบธเบเบเบปเปเบกเปเบเบฑเบเบเปเปเบฒเปเบเปเบกเบทเบญเบ, เบเปเบญเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบซเบฑเบ 3 เบเปเปเบขเบนเปเปเบเบเปเบญเบเบเบตเปเบเบฒเบเบเบตเปเบเบฐเปเบเบปเปเบฒเปเบเบดเบ. เบกเบฑเบเบเบฐเบชเบฐเบเบงเบเบเบงเปเบฒเบเบตเปเบเบฐเปเบฎเบฑเบเบชเบดเปเบเบเบตเปเบเปเบงเบเบเบธเปเบกเบเบฝเบงเบเบตเปเบกเบตเบเบปเบงเบเบตเปเบเบญเบเบเบตเปเบชเบญเบเบเปเบญเบเบเบฑเบ. เบเบต, เปเบเปเบเบญเบ, เบกเบฑเบเบเบธเปเบกเบเปเบฒเบเบตเปเบเบฐเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเปเบญเบเบเบฑเบเบเบฒเบเบฎเบปเปเบงเปเบซเบผ.
เปเบเบเบปเบเบเบงเบฒเบกเบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบญเบฐเบเบดเบเบฒเบเบชเบฐเบเบฑเบเบเบญเบเบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบญเบเบญเบธเบเบฐเบเบญเบเปเบเบเบญเบตเบเปเบชเป ESP8266. เปเบเบเบงเบฒเบกเบเบดเบเปเบซเบฑเบเบเบญเบเบเปเบญเบ, เบเปเบญเบเปเบเปเบกเบฒเบเบฑเบเบชเบฐเบเบฑเบเบเบตเปเบซเบเปเบฒเบชเบปเบเปเบเบซเบผเบฒเบเบเบญเบ firmware micropython เปเบเบเปเบเป coroutines - เบเปเบฒเบเบเบฒเบเปเบฅเบฐเบเบฒเบก. เบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเบเบฐโเบเบฒโเบเบฒเบกโเบญเบฐโเบเบดโเบเบฒเบโเบซเบผเบฒเบ nuances เปเบฅเบฐโเบเปเปโเบเบปเบโเบเปเบญเบโเบเบตเปโเบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเปเบเปโเบเบปเบโเปเบโเบฅเบฐโเบซเบงเปเบฒเบโเบเบฒเบโเปเบโเบชเบฐโเบเบฒ. เบเบฒเบเบเบตเบเปเบญเบเปเบเปเบญเบฐเบเบดเบเบฒเบเบเบธเบเบขเปเบฒเบเปเบเบฅเบฒเบเบฅเบฐเบญเบฝเบเบซเบผเบฒเบเปเบเบตเบเปเบ; เปเบเบเบชเปเบงเบเบเบปเบงเปเบฅเปเบง, เปเบเบเบฒเบเบฐเบเบนเปเบญเปเบฒเบ, เบกเบฑเบเบเปเบฒเบเบเบงเปเบฒเบชเปเบฒเบฅเบฑเบเบเปเบญเบเบเบตเปเบเบฐเบเปเบฒเบกเบชเบดเปเบเบเบตเปเบเปเปเบเปเบฒเปเบเบฑเบเบเบงเปเบฒเบเบตเปเบเบฐเบเบดเบเบเปเบฝเบงเบเบฑเบเบชเบดเปเบเบเบตเปเบเบทเบเบเบฐเปเบงเปเปเบเบเบเปเปเปเบเปเปเบงเบปเปเบฒ.
เปเบเบเบฒเบเบฐเปเบเบฑเบเบชเบฐเปเบซเบกเบต, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเบตเบเปเบซเปเบเปเบฒเบงเบดเบเบฒเบเบเบตเปเบชเปเบฒเบเบชเบฑเบ.
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com