ESP-NOW ovladač GLEDOPTO GL-RC-001WL
Jak ve firmware 0.12.11 použít Berry espnow.rx pro příjem raw ESP-NOW paketů z ovladače GLEDOPTO GL-RC-001WL.
This content is not available in your language yet.
Co ovladač řeší
Section titled “Co ovladač řeší”GLEDOPTO GL-RC-001WL posílá při stisku tlačítka krátké raw ESP-NOW pakety na
více Wi-Fi kanálech. Díky Berry espnow.rx(filter, callback) je může kontroler
přijímat jako vedlejší raw provoz, aniž by bylo potřeba vypnout běžnou
Spectoda Mesh ESP-NOW komunikaci mezi kontrolery.
To je hlavní rozdíl proti staršímu použití ESPNOWRADIO IO. ESPNOWRADIO
vlastní ESP-NOW receive callback a není vhodné pro instalace, kde se má stejný
kontroler zároveň účastnit Controller-to-Controller komunikace.
Doporučené API
Section titled “Doporučené API”Raw příjem přes ESP-NOW zapisujte jako:
import espnow
var off = espnow.rx({ "mac": "AA:BB:CC:DD:EE:FF", "size": 13, "magic": [129, 145]}, def(mac, data, rssi, channel) print(mac, data.tohex(), rssi, channel)end)
# Když je potřeba callback odregistrovat:off()Callback dostane:
| Argument | Význam |
|---|---|
mac | MAC adresa odesílatele jako string |
data | payload jako Berry bytes |
rssi | síla přijatého signálu |
channel | Wi-Fi kanál, na kterém paket dorazil |
Filtr běží nativně ve firmware před tím, než se packet předá do Berry. U GLEDOPTO ovladače stačí začít tímto tvarem:
{ "size": 13, "magic": [129, 145]}Význam hodnot:
| Klíč | Význam |
|---|---|
size | očekávaná délka payloadu; u GL-RC-001WL je to 13 bajtů |
magic | allow-list prvního bajtu payloadu; 129 je 0x81, 145 je 0x91 |
mac | volitelný zámek na jeden fyzický ovladač |
Tvar packetu
Section titled “Tvar packetu”Pro mapování tlačítek jsou důležité tři části payloadu:
| Pozice | Význam |
|---|---|
byte 0 | program/magic, typicky 0x81 nebo 0x91 |
bytes 1..4 | sekvence stisku tlačítka |
byte 6 | kód tlačítka |
Ovladač stejný stisk posílá opakovaně na více kanálech. Proto pluginy drží
poslední sekvenci z data.get(1, 4) a stejnou sekvenci podruhé ignorují.
Mapování tlačítek:
| Kód | Tlačítko | Doporučený význam |
|---|---|---|
1 | ON | zapnout |
2 | OFF | vypnout |
9 | brightness + | zvýšit brigh |
8 | brightness - | snížit brigh |
3 | night | scéna pro noční režim |
16 | preset 1 | volitelný toggle |
17 | preset 2 | volitelný toggle |
18 | preset 3 | teplejší tempe |
19 | preset 4 | studenější tempe |
Varianta pro jedno Spectoda ID
Section titled “Varianta pro jedno Spectoda ID”Pro jednoduché svítidlo použijte plugin GledoptoRemoteSingle(S).
GledoptoRemoteSingle není vestavěná Berry funkce. Nejdřív do Controller Berry
Scriptu vložte definici pluginu z public examples:
gledopto-single-id.be.
Teprve pod ni vložte volání s vaší S mapou.
Ten zapisuje jen:
EVS("toggl", id)EVS("brigh", id)
Příklad volání v Berry:
GledoptoRemoteSingle({ "id": 1, "mac": "AA:BB:CC:DD:EE:FF", "brigh": 50, "brighStep": 10})Stejné volání jako TNGL BERRY blok:
BERRY(`GledoptoRemoteSingle({ "id": ID1, "mac": "AA:BB:CC:DD:EE:FF", "brigh": 50, "brighStep": 10})`);S mapa pro single-ID variantu:
| Klíč | Default | Význam |
|---|---|---|
id | 1 | Spectoda ID, které ovladač řídí |
mac | "" | volitelná MAC adresa ovladače |
macFilter | mac != "" | jestli odmítat pakety z jiných MAC adres |
debug | false | logovat přijaté pakety a ignorovaná tlačítka |
brigh | 50 | počáteční lokální cache jasu |
brighStep | 10 | krok jasu na jeden stisk |
Chování:
- ON nastaví
togglna100%. - OFF nastaví
togglna0%. - Brightness +/- upraví
brigha držítogglpodle výsledného jasu. Kdyžbrighdojede na0%, nastaví se itogglna0%. - Preset 1 a preset 2 přepínají stejné ID zapnuto/vypnuto.
- Night, warmer a colder single-ID varianta ignoruje, pokud není zapnutý
debug.
Varianta direct/indirect
Section titled “Varianta direct/indirect”Pro svítidlo rozdělené na dvě logické zóny použijte
GledoptoRemote(S).
GledoptoRemote také není vestavěná Berry funkce. Nejdřív do Controller Berry
Scriptu vložte definici pluginu z public examples:
gledopto-direct-indirect.be.
Teprve pod ni vložte volání s vaší S mapou.
Ten zapisuje:
EVS("toggl", direct)aEVS("toggl", indirect)EVS("brigh", direct)aEVS("brigh", indirect)EVS("tempe", direct)aEVS("tempe", indirect)
Příklad volání:
GledoptoRemote({ "direct": 1, "indirect": 2, "mac": "AA:BB:CC:DD:EE:FF", "brigh": 50, "brighStep": 10, "tempeStep": 10})S mapa pro direct/indirect variantu:
| Klíč | Default | Význam |
|---|---|---|
direct | 1 | Spectoda ID pro přímou část svítidla |
indirect | 2 | Spectoda ID pro nepřímou část svítidla |
mac | "" | volitelná MAC adresa ovladače |
macFilter | mac != "" | jestli odmítat pakety z jiných MAC adres |
debug | false | logovat přijaté pakety a neznámá tlačítka |
brigh | 50 | počáteční sdílená cache jasu |
brighStep | 10 | krok jasu na jeden stisk |
tempeStep | 10 | krok teploty na jeden stisk |
Chování:
- ON/OFF ovládá
togglpro obě ID. - Brightness +/- upraví
brighpro obě ID a drží obatogglstavy podle výsledného jasu. Když sdílenýbrighdojede na0%, obatogglstavy se nastaví na0%. - Night vypne direct, zapne indirect a nastaví obě
tempehodnoty na teplo. - Preset 1 přepíná indirect.
- Preset 2 přepíná direct.
- Preset 3/4 posouvá
tempepro obě ID tepleji/studeněji.
Jak zjistit MAC ovladače
Section titled “Jak zjistit MAC ovladače”Při prvním oživení zapněte debug:
GledoptoRemoteSingle({ "id": 1, "debug": true})Potom stiskněte tlačítko na ovladači a sledujte serial log. Jakmile znáte MAC,
doplňte ji do S mapy:
GledoptoRemoteSingle({ "id": 1, "mac": "AA:BB:CC:DD:EE:FF"})Když je mac vyplněné a macFilter není explicitně false, plugin přijímá
jen tento jeden ovladač.
Upload a smoke test
Section titled “Upload a smoke test”Pro DEVKIT nebo instalaci nahrajte Berry přes TNGL BERRY(...) blok nebo přes
Studio Berry Script block. Není potřeba kvůli tomu uploadovat filesystem image.
Doporučený postup:
- Nechte běžnou ESP-NOW komunikaci zapnutou.
espnow.enablenení potřeba nastavovat natrue; výchozí stav firmware ji má zapnutou. - Nahrajte plugin a jeho volání do kontroleru.
- Pro první test nastavte
"debug": true. - Stiskněte ON, OFF, brightness + a brightness -.
- Ověřte v logu nebo ve Spectoda App, že se mění
togglabrighna očekávaném Spectoda ID.
U direct/indirect varianty navíc otestujte preset 1, preset 2 a preset 3/4.
Vztah k espnow.tx a spectoda.tx
Section titled “Vztah k espnow.tx a spectoda.tx”espnow.rx a espnow.tx jsou raw API konkrétního ESP-NOW transportu.
Používejte je ve chvíli, kdy řešíte MAC adresu, payload a transportní detaily.
Raw espnow.tx podporuje:
espnow.tx("AA:BB:CC:DD:EE:FF", data)espnow.tx("AA:BB:CC:DD:EE:FF", data, {"mode": "transmit"})espnow.tx("AA:BB:CC:DD:EE:FF", data, {"mode": "deliver"})Význam:
transmitje jeden non-flooded packet bez ack.deliverje jeden non-flooded unicast packet s ack.- raw
espnow.txnemábroadcastanitransfermód; flooded broadcast a větší přenosy patří do vyšší Spectoda Mesh vrstvy přesspectoda.tx.
Pro obecné Controller-to-Controller zprávy v Berry používejte spectoda.tx a
spectoda.rx. Pro přesnou práci s raw ESP-NOW pakety používejte espnow.tx a
espnow.rx.