Losovací párty hra
Úvod
Proč hrát flašku s opravdovou lahví, když vám stačí chytrá krabička? Nastavte si Sadu Start tak, aby náhodně vybrala jednoho člena skupiny, ať už na párty, při losování výherce, nebo když se rozhoduje, kdo bude uklízet.
V tomto projektu se naučíte nastavit krabičku tak, aby náhodně vybrala jednoho člena vaší skupiny. 😱
Budete potřebovat krabičku s tlačítkem a USB dongle. Stačí vám tedy základní Sada Start od HARDWARIO.
Rozjeďte to v Node-RED
- Sestavte Sadu Start a spárujte ji. Do modulu Core Module nahrajte firmware twr-radio-move-detector-x-axis, díky kterému krabička reaguje na pohyb.
- V Playgroundu klikněte na záložku Functions, kde najdete programovací plochu.
- Jdeme na to. 🤞 Umístěte na plochu uzel mqtt in ze sekce network.
Dvojklikem uzel otevřete a nastavte klíčovou funkci, tedy reakci krabičky na pohyb.
Do pole Topic zkopírujte tento řádek:
node/x-axis-detector:0/accelerometer/-/event-count

Potvrďte tlačítkem Done.
Nastavte náhodný výběr
- Náhodný výběr naprogramujete jednoduchým JavaScriptem. Nebojte se, pomůžeme vám. Nejdřív umístěte vedle uzlu MQTT uzel function ze sekce function.

- Dvojklikem uzel otevřete. Do řádku Name zadejte jeho název (třeba Náhodná volba). Na záložku On Message zkopírujte tento kód. Kód vylosuje jednoho z účastníků, každého se stejnou šancí.
var rand = Math.floor(Math.random() * flow.get("numberOfContestants"));
msg.payload = flow.get("contestantArr")[rand];
return msg;

Potvrďte tlačítkem Done.
- Vedle uzlu Náhodná volba přidejte další uzel, delay (najdete ho také v sekci function). Odpověď se díky němu trochu zpozdí a napětí poroste. Baf! 😲

- Aby byl výběr ještě náhodnější, nastavte v uzlu náhodné zpoždění: klikněte na random delay a zvolte čas v rozmezí 2 až 4 sekundy. To je tak akorát, aby napětí nepolevilo.

Potvrďte tlačítkem Done.
- Nad všechny tyto uzly umístěte uzel, který nastaví zprávu zobrazenou během losování. Použijte k tomu uzel change ze stejné sekce.

- Otevřete uzel dvojklikem a napište svou zprávu, například: Probíhá výběr…

Nastavte účastníky
- Vaše loterie se neobejde bez tlačítka, které vynuluje tabulku, abyste mohli hrát dál. Pod uzel MQTT umístěte uzel button, tentokrát ze sekce dashboard.

- Dvojklikem uzel otevřete a do řádku Label napište Reset.

Potvrďte tlačítkem Done.
- Jedeme dál! Teď nastavte všechny kamarády, kteří budou hrát, zatím anonymně. Přidejte je na plochu jako uzly text input ze sekce dashboard, tolik uzlů, kolik vás je.

- V každém uzlu nastavte:
- Do pole Label napište Účastník 1, Účastník 2 a tak dál podle počtu hráčů.
- Do pole Delay zadejte hodnotu 0.
- Zrušte zaškrtnutí políčka hned pod ním, aby se pole po stisknutí tlačítka Reset opravdu vymazala.
Totéž nastavte u každého uzlu s účastníkem.

Potvrďte tlačítkem Done.
- Vedle účastníků umístěte další kód v JavaScriptu. Přiřadí jména účastníků na správná místa. Opět ho vložíte jako uzel function.
- Dvojklikem na uzel otevřete jeho nastavení. Do řádku Name napište název uzlu a na záložku On Message zkopírujte tento 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);
return msg;
Zkontrolujte, že má uzel opravdu jen jeden výstup (pole Outputs na záložce Setup). ❗

Potvrďte tlačítkem Done.
- Nebojte, už jsme skoro u konce. 🙌 Umístěte na plochu uzel change. Postará se o to, aby se při resetu vše vrátilo do původního stavu. 🖖

- V nastavení tohoto uzlu vyplňte dvě pravidla (Rules) podle obrázku. První bude Delete | flow | contestantArr. Další pravidlo přidáte malým tlačítkem + Add pod polem. V tomto druhém pravidle nastavte Delete | flow | numberOfContestants.

Potvrďte tlačítkem Done.
Vybrán může být jen jeden
- Umístěte na plochu poslední uzel. Oznámí, kdo byl vybrán. 🙏 Najdete ho jednoduše jako uzel text v sekci dashboard.

- V řádku Label uvnitř uzlu nastavte, jak bude vypadat zpráva o náhodně vybraném účastníkovi.

Potvrďte tlačítkem Done.
- Pak všechno pěkně propojte. V horní části spojte uzly, které se starají o losování, ve spodní části ty, které tvoří losovací tabulku.

- Nezapomeňte kliknout na tlačítko Deploy v pravém horním rohu! 🚨
Ať zábava začne!
- A teď hurá do akce! Na záložce Dashboard zadejte jména všech účastníků. Pokud jste v uzlech pro jednotlivé účastníky nenastavili automatické obnovení, nezapomeňte po každém jménu stisknout klávesu Enter. Pak krabičkou pohněte a losování začne. 👈
- Koho si osud vybral? A k čemu? To už je jen na vás. 😈
Můžete například:
- vylosovat, kdo komu dá pusu (juchů),
- vytáhnout nejkratší sirku pro toho, kdo vynese odpadky,
- určit výherce soutěže,
- rozdělit náhodně bláznivé úkoly,
- a cokoli dalšího, co vás napadne!