Dračí dech level 2
Úvod
Troufáš si? Sestav jeden projekt, ve kterém zprovozníš dva typy své oblíbené soutěže naráz a budeš mezi nimi libovolně přepínat! Při párty máte o zábavu postaráno. 🕺
S tímhle projektem se naučíš ukládat nejvyšší naměřenou hodnotu a nastavit několik typů soutěže v jednom projektu a přepínat mezi nimi.
Základní verzi tohohle projektu najdeš tady: IoT párty hra: máš v sobě dračí oheň, nebo mrazivý dech?
I tentokrát ti postačí základní HARDWARIO sada, tedy Start Set.
Připrav si Node-RED
- Start Set sestav a spáruj. Na Core Module potřebuješ zase ten starý známý firmware bcf-radio-push-button.
Změř nejžhavější dech
Sestav si tohle flow, se kterým odhalíš nejžhavějšího draka z vaší party. 🐉 Nejvyšší teplota se začne měřit krátkým stisknutím tlačítka.
Potřebuješ poradit, jak na to?
- MQTT node ze sekce Input v sobě skrývá Topic s krátkým zmáčknutím tlačítka:
node/push-button:0/push-button/-/event-count
- javascriptový kód z node Function vypadá takhle
var hottestTemp = flow.get("hottestTemp");
var pressed = flow.get("pressed") || false;
flow.set("holded", false);flow.set("pressed", !pressed);
if(!flow.get("pressed"))
{
if(flow.get("contestantTemp") > hottestTemp)
{
flow.set("hottestTemp", flow.get("contestantTemp"));
msg.payload = flow.get("hottestTemp");
return msg;
}
}
-
spodní node Text zaznamenává nejvyšší teplotu, nezapomeň do řádku Value format vyplnit hodnotu
{{msg.payload}}°C
-
Change node vypisuje nejžhavějšího účastníka, musíš v něm nastavit flow. contestantName
- flow uzavírá obyčejný Text node
Změř nejmrazivější dech
Pod předchozí flow umísti další. S tímhle změříš, kdo z vás dýchá tak studeně, že by mohl konkurovat Nočnímu králi. ❄ Nejchladnější teplota se začne měřit až při dlouhém stisknutí tlačítka.
Náš tip: Vyhni se tvoření podobného flow od nuly a nody jednoduše zkopíruj a přepiš. Kopírování funguje jednoduchým CRTL+C & CTRL+V, jde to udělat i s několika nody naráz. Sláva 🙌
Potřebuješ poradit, jak na to?
- Topic v MQTT node obsahuje dlouhé stisknutí tlačítka:
node/push-button:0/push-button/-/hold-count
- javascript ve Function node vypadá zase takhle:
var coldestTemp = flow.get("coldestTemp");
var holded = flow.get("holded") || false;
flow.set("pressed", false);
flow.set("holded", !holded);
if(!flow.get("holded"))
{
if(flow.get("contestantTemp") < coldestTemp)
{
flow.set("coldestTemp", flow.get("contestantTemp"));
msg.payload = flow.get("coldestTemp");
return msg;
}
}
-
oba Text nody jsou stejné jako v předchozím flow, jen je změň z nejžhavějšího na nejchladnější
-
Change node je stejný jako v předchozím flow
❗ Náš tip: Něco nefunguje, jak by mělo? Přidej na plochu Debug node, který ti pomůže odstranit případné brouky. 🐞
Nastav průběžná měření
Vytvoř nový flow, který umísti pod oba předchozí. S tímhle flow změříš každý pokus, a navíc si tabulka zapamatuje jména účastníků.
Potřebuješ poradit, jak na to?
- Topic v MQTT node obsahuje měření teploty:
node/push-button:0/thermometer/0:1/temperature
- javascript ve Function node vypadá takhle:
var temp = msg.payload;
if(flow.get("pressed"))
{
if(flow.get("contestantTemp") < temp)
{
flow.set("contestantTemp", temp);
return msg;
}
}
else if(flow.get("holded"))
{
if(flow.get("contestantTemp") > temp)
{
flow.set("contestantTemp", temp);
return msg;
}
}
-
tmavě modrý Text node s teplotou, kterou krabička naměří aktuálnímu soutěžícímu, obsahuje stupně Celsia:
{{msg.payload}}°C
-
Text input node (ten světle modrý) má v řádku Delay nulu (jméno soutěžícího pak musíš v tabulce potvrdit Enterem)
-
Change node má dvě pravidla. Jedno nechává prázdnou hodnotu, dokud nezaregistruje první teplotu. A druhé nastaví jako průměrnou teplotu 30 °C, to znamená, že teplejší výsledky budou nad 30 °C, chladnější zase pod.
- Function node s javascriptem pro ukládání jmen vypadá jednoduše takto
flow.set("contestantName", msg.payload);
return msg;
- a poslední Text node je prostě text node, který oznamuje aktuálního soutěžícího. Voilà!
Nastav si typ soutěže
Ízy špízy? Tak tam přihoď jeden timestamp flow, se kterým změníš typ hry! Krátké zmáčknutí tlačítka změří nejžhavější dech a dlouhé podržení tlačítka změří nejmrazivější dech. Krutý 👍
Potřebuješ poradit, jak na to?
- první node se jmenuje Inject a najdeš ho v sekci Input. Ten každou sekundu kontroluje, která soutěž probíhá. Podle dlouhého nebo krátkého zmáčknutí tlačítka zjistí, jestli se zrovna soutěží o nejchladnější nebo nejteplejší dech, a takovou soutěž pak vypíše.
Nastav do něj opakování po jedné sekundě.
- vrchní Switch node reaguje na krátké zmáčknutí tlačítka a obsahuje is true
- spodní Switch node reaguje na podržení tlačítka a taky obsahuje is true
- všechny tři Change nody obsahují zprávu: horní obsahuje zprávu, která oznamuje soutěž o nejžhavější dech
prostřední zprávu, že zrovna žádná soutěž neběží
a spodní oznamuje soutěž o nejmrazivější dech
- no a závěrečný Text node oznamuje typ soutěže
Nastav výchozí hodnoty
Drž si klobouk, frčíme do finále. Poslední flow nastaví výchozí hodnoty: 30 °C jako optimální teplotu, hoooodně chladnou nejnižší teplotu a hoooodně horkou nejvyšší teplotu. S těmito teplotami se pak skutečně naměřené teploty porovnávají.
Potřebuješ poradit, jak na to?
- Inject node obsahuje zaškrtnuté políčko, se kterým se nastaví výchozí hodnoty jen malou chvilku po stisknutí tlačítka Deploy.
- a node Function obsahuje javascript, který nastavuje výchozí hodnoty.
flow.set("contestantTemp", 30);
flow.set("hottestTemp", 0);
flow.set("coldestTemp", 100);
return msg;
Podívej se na tu nádheru
Takhle sexy teď vypadá tvoje plocha. Vychutnej si to, jako když jsi poprvé viděl moře… 🌊 Ještě chvilku… A ještě chvilku… A pak už jenom zmáčkni starýho dobrýho kamaráda Deploy vpravo nahoře.
Jdeme soutěžit!
- Jak už sis asi všiml, krabička reaguje na dva typy zmáčknutí: při obyčejném krátkém se spustí soutěž o nejteplejší dech, při dlouhém podržení tlačítka se spustí soutěž o nejmrazivější dech.
Jak soutěžit?
- Otevři záložku Dashboard v Playgroundu.
- Nejdřív napiš jméno soutěžícího,
- potvrď ho pomocí Enter,
- a potom dlouhým nebo krátkým stisknutím tlačítka zvol typ soutěže. 👇
- Až soutěžící zkusí, co umí, stejně dlouhým stisknutím tlačítka aktuální soutěž ukončíš a uložíš.
- U dalšího soutěžícího postupujte stejně, jedno po druhém.
- I u tohohle levelu obtížností platí, že jakákoli pomoc je povolena. Vyzkoušej, co ti nejvíc rozžhaví dech, a co ho naopak vymrazí. Držíme palce, draku! 💪