Skip to content

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.

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.

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:

ArgumentVýznam
macMAC adresa odesílatele jako string
datapayload jako Berry bytes
rssisíla přijatého signálu
channelWi-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
sizeočekávaná délka payloadu; u GL-RC-001WL je to 13 bajtů
magicallow-list prvního bajtu payloadu; 129 je 0x81, 145 je 0x91
macvolitelný zámek na jeden fyzický ovladač

Pro mapování tlačítek jsou důležité tři části payloadu:

PoziceVýznam
byte 0program/magic, typicky 0x81 nebo 0x91
bytes 1..4sekvence stisku tlačítka
byte 6kó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ódTlačítkoDoporučený význam
1ONzapnout
2OFFvypnout
9brightness +zvýšit brigh
8brightness -snížit brigh
3nightscéna pro noční režim
16preset 1volitelný toggle
17preset 2volitelný toggle
18preset 3teplejší tempe
19preset 4studenější tempe

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íčDefaultVýznam
id1Spectoda ID, které ovladač řídí
mac""volitelná MAC adresa ovladače
macFiltermac != ""jestli odmítat pakety z jiných MAC adres
debugfalselogovat přijaté pakety a ignorovaná tlačítka
brigh50počáteční lokální cache jasu
brighStep10krok jasu na jeden stisk

Chování:

  • ON nastaví toggl na 100%.
  • OFF nastaví toggl na 0%.
  • Brightness +/- upraví brigh a drží toggl podle výsledného jasu. Když brigh dojede na 0%, nastaví se i toggl na 0%.
  • Preset 1 a preset 2 přepínají stejné ID zapnuto/vypnuto.
  • Night, warmer a colder single-ID varianta ignoruje, pokud není zapnutý debug.

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) a EVS("toggl", indirect)
  • EVS("brigh", direct) a EVS("brigh", indirect)
  • EVS("tempe", direct) a EVS("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íčDefaultVýznam
direct1Spectoda ID pro přímou část svítidla
indirect2Spectoda ID pro nepřímou část svítidla
mac""volitelná MAC adresa ovladače
macFiltermac != ""jestli odmítat pakety z jiných MAC adres
debugfalselogovat přijaté pakety a neznámá tlačítka
brigh50počáteční sdílená cache jasu
brighStep10krok jasu na jeden stisk
tempeStep10krok teploty na jeden stisk

Chování:

  • ON/OFF ovládá toggl pro obě ID.
  • Brightness +/- upraví brigh pro obě ID a drží oba toggl stavy podle výsledného jasu. Když sdílený brigh dojede na 0%, oba toggl stavy se nastaví na 0%.
  • Night vypne direct, zapne indirect a nastaví obě tempe hodnoty na teplo.
  • Preset 1 přepíná indirect.
  • Preset 2 přepíná direct.
  • Preset 3/4 posouvá tempe pro obě ID tepleji/studeněji.

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č.

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:

  1. Nechte běžnou ESP-NOW komunikaci zapnutou. espnow.enable není potřeba nastavovat na true; výchozí stav firmware ji má zapnutou.
  2. Nahrajte plugin a jeho volání do kontroleru.
  3. Pro první test nastavte "debug": true.
  4. Stiskněte ON, OFF, brightness + a brightness -.
  5. Ověřte v logu nebo ve Spectoda App, že se mění toggl a brigh na očekávaném Spectoda ID.

U direct/indirect varianty navíc otestujte preset 1, preset 2 a preset 3/4.

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:

  • transmit je jeden non-flooded packet bez ack.
  • deliver je jeden non-flooded unicast packet s ack.
  • raw espnow.tx nemá broadcast ani transfer mód; flooded broadcast a větší přenosy patří do vyšší Spectoda Mesh vrstvy přes spectoda.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.