
Úvod
Proč hrát flašku s flaškou, když ti na to stačí chytrá krabička? Nastav svůj Starter Kit tak, aby vylosoval náhodného člena vaší party. Ať už to bude na párty, při losování výherce nebo rozhodování o tom, kdo uklidí.
V tomhle projektu se naučíš, jak nastavit krabičku tak, aby vylosovala náhodného člena z vaší skupiny. 😱
Budeš potřebovat krabičku s tlačítkem a USB dongle. Vystačíš si tedy se základní HARDWARIO sadou, Starter Kitem.
Rozjeď to v Node-RED
- Starter Kit sestav a spáruj. Na Core Module potřebuješ firmware radio push button. Pokud nevíš, jak si firmware stáhnout nebo co to je, zjistíš to tady.
- V Playgroundu klikni na záložku Functions, kde je programovací plocha.
- Jdeme na to. 🤞 Na plochu postav node MQTT ze sekce Input. Na node dvakrát klikni a nastav v něm klíčovou funkci – klikání na tlačítko. Do pole Topic zkopíruj tenhle řádek:
node/x-axis-detector:0/accelerometer/-/event-count
Potvrď tlačítkem Done.
Hoď tam náhodu
- Náhodnou volbu naprogramuješ podle jednoduchého javascriptu. Ale neboj, pomůžeme ti. Nejdřív vedle MQTT postav node Function, který najdeš ve stejnojmenné sekci.

- Dvojklikem node otevři. Na řádku Name node pojmenuj (třeba Náhoda). Do řádku Function zkopíruj tenhle kód, přesně jak to vidíš na obrázku. Díky tomuhle kódu se vylosuje jeden z účastníků.
var rand = Math.round( Math.random() * (flow.get("numberOfContestants") - 1));
msg.payload = flow.get("contestantArr")[rand];
return msg;

Potvrď tlačítkem Done.
- Vedle Náhody přidej další node, Delay (ten taky najdeš v sekci Function). Díky tomuhle nodu se odezva trochu opozdí a vyvolá to pocit napětí. Fu! 😲

- Uvnitř nodu nastav ještě víc náhody, a to náhodné zpoždění. Překlikni na random delay a zvol dobu mezi 2 a 4 sekundami. To by mělo být pro napětí tak akorát.

Potvrď tlačítkem Done.
- Nad tohle všechno umísti node, se kterým nastavíš hlášku, která se ukáže, když bude krabička zrovna pilně vybírat. Použij na to node Change ze stejné sekce.

- Dvojklikem node otevři a napiš sem svoji hlášku. Třeba Vybírám…

Nastav účastníky
- Tvoje loterie se neobejde bez tlačítka na resetování tabulky. To abys pak mohl pokračovat dál ve hře. Pod MQTT tedy umísti node Button, tentokrát ze sekce Dashboard.

- Na node dvakrát klikni a v řádku Label ho pojmenuj jako Reset.

Potvrď tlačítkem Done.
- Jdeme dál. Teď nastav všechny kámoše, kteří se hry zúčastní. Zatím anonymně. Umísti je na plochu skrz node Text input v sekci Dashboard. Celkem tolik kousků, kolik vás je.

- Uvnitř jednotlivých nodů přepiš řádek Label na Účastník + číslo od jedné až do tolika, kolik vás je. Takže Účastník 1, Účastník 2… A dál to znáš. V okně Delay vyplň číslo 0. Zaškrtnuté okno hned pod tím odškrtni, aby se po resetu pole opravdu resetovala. Všechno tohle udělej u všech nodů s účastníky.

Potvrď tlačítkem Done.
- Vedle účastníků nastav další javascript. Tenhle javascript přiřazuje jména účastníků na odpovídající místo. I tentokrát ho vložíš jako node Function.

- Dvojklikem na node otevřeš jeho nastavení. Do řádku Label vyplň jméno nodu a do pole Function zkopíruj tenhle kód:
var contestants = flow.get("numberOfContestants") || 0;
var contestantArray = flow.get("contestantArr") || [msg.payload];
contestants++;
flow.set("numberOfContestants", contestants);
if(contestants != 1)
{
contestantArray.push(msg.payload);
}
flow.set("contestantArr", contestantArray);
Dej si pozor, aby Output byl fakt jen jeden. ❗

Potvrď tlačítkem Done.
- Neboj, už to skoro bude. 🙌 Postav na plochu Change node. Ten zajistí, aby se při resetu všechno obnovilo do původního stavu. 🖖

- V nastavení tohohle nodu vyplň dvě Rules, jak to vidíš na obrázku. První z nich je Delete | flow | ContestantArr. Další rule přidáš malým tlačítkem +Add dole pod polem. V tomhle Rule nastav Delete | flow | numberOfContestants.

Potvrď tlačítkem Done.
Vylosovaný je jen jeden
- Za tohle všechno polož na plochu poslední node, který všem sdělí, koho osud zvolil. 🙏 Najdeš ho jednoduše jako Text node v sekci Dashboard.

- Na řádku Label uvnitř nodu nastav, jak bude vypadat hláška při náhodném výběru jednoho účastníka.

Potvrď tlačítkem Done.
- A pak to všechno takhle krásně spoj. V horní části pospojuješ všechny nody, které zajišťují losování, ve spodní části pak nody, které vytvářejí losovací tabulku.

- Nezapomeň zmáčknout tlačítko Deploy v pravém horním rohu! 🚨
Nechť zábava započne!
- A teď už to rozjeďte! V záložce Dashboard vyplň všechny účastníky. Pokud sis v nodech pro jednotlivé účastníky nevolil dobu pro automatické obnovení, nezapomeň za každým jménem zmáčknout Enter. 👈

- Koho osud zvolí? A na co? To je teď jenom na tobě. 😈 Takhle můžeš třeba:
- losovat, kdo dá pusu komu (woohoo),
- tahat nejkratší sirku na vynášení koše,
- losovat výherce soutěže,
- zadávat bláznivé úkoly, které přiřadí náhoda,
- a cokoli dalšího tě napadne!