Vylepšené tlačítko pro rodiče
Úvod
Máte už hotovou základní verzi tlačítka, kterým vás máma zavolá k večeři? Gratulujeme. 👍 S tímto vylepšením posunete projekt dál: zpráva se bude měnit podle denní doby a navíc na ni můžete odpovědět.
V tomto projektu se naučíte nastavit různé zprávy pro různou denní dobu, odeslat speciální notifikaci dlouhým podržením tlačítka a naprogramovat jednoduchou odpověď. 👌
Základní verzi projektu najdete tady: Vyrobte si IoT tlačítko, kterým vás máma zavolá k večeři.
Budete potřebovat krabičku s tlačítkem a USB dongle. Vystačíte si tedy se základní Sadou Start od HARDWARIO.
Připravte si Node-RED
- Sadu Start sestavte a spárujte. Do modulu Core Module budete potřebovat opět starý známý firmware twr-radio-push-button.

Nastavte si notifikaci
- Flow pro notifikaci nastavte podobně jako u základní verze projektu.
Na plochu umístěte uzel mqtt in ze sekce network, který má v poli Topic počítání stisknutí. Vedle něj umístěte uzel write ze sekce Blynk IoT a nastavte ho stejně jako v základní verzi: stejné připojení (Url, Auth Token, Template ID) i stejný virtuální pin. Notifikaci do mobilu pak pošle automatizace, kterou už v Blynku máte.
❗ Uzel Change zatím vynechte, hned se dozvíte proč.
Zatím to vypadá takto:

- Mezi oba uzly tentokrát vložte jiný uzel, do kterého zkopírujete JavaScript. Najdete ho jako uzel function ve stejnojmenné sekci.

- Do tohoto uzlu vložíte kód, kterým ovládnete čas. ⏳ Nastavíte v něm, od kolika do kolika hodin vám má chodit zpráva o snídani 🍳, obědě 🍗 a večeři 🍕. Chytrý JavaScript, že?
Následující kód zkopírujte v nastavení uzlu na záložku On Message. Když se na kód podíváte, uvidíte, že některé části jsou barevně zvýrazněné. V nich nastavíte čas jídla a vlastní zprávu. Barevné části kódu si upravte podle sebe, jen pamatujte, že háčky a čárky fungovat nebudou.
var date = new Date();
var hour = date.getHours();
if(hour >= 8 && hour < 11)
{
msg.payload = "Pojd na snidani, ospalce";
return msg;
}
else if(hour >= 11 && hour < 17)
{
msg.payload = "Obidek na tebe uz ceka";
return msg;
}
else if(hour >= 17 && hour < 21)
{
msg.payload = "Podava se vrchol dne, vecere";
return msg;
}

- Ve stejném okně uzel ještě pojmenujte v řádku Name, třeba Nastavení času a zprávy.

Potvrďte tlačítkem Done.
Nastavte dlouhé stisknutí tlačítka
- A jedeme dál. Teď nastavte, co tlačítko udělá, když ho rodiče dlouho podrží. I to se dá ovládat. 👌
Na plochu umístěte další uzel mqtt in ze sekce network.
- Nastavte v něm ale jiný Topic, díky kterému tlačítko zareaguje právě na dlouhé stisknutí.
node/push-button:0/push-button/-/hold-count

- Za něj umístěte uzel change, který už znáte ze základní verze. Nastavte v něm vlastní zprávu, která se odešle, když rodiče tlačítko dlouho podrží. Hodí se k zavolání kvůli čemukoli jinému než jídlu 🙂, třeba: Pojd dolu, lenochu!

- Za tento uzel přidejte ještě jeden, ve kterém zprávu odkliknete. Zpráva vám navíc vyskočí nejen v mobilu, ale i na počítači.
Je to uzel notification v sekci dashboard.

- V uzlu vyberte v řádku Layout možnost OK / Cancel Dialog a potvrďte tlačítkem Done.

- Všechno propojte podle obrázku: oba flow vedou do uzlu write a do uzlu notification. Pak stiskněte Deploy.

Akce!
- Stejně jako minule svěřte vylepšenou krabičku mámě a tátovi.
- Vysvětlete jim, že krátkým stisknutím vás zavolají k jídlu…

- …a pokud vás chtějí zavolat kvůli čemukoli jinému, musí tlačítko podržet déle. 👇

Aspoň vás nezklame, když místo jídla dostanete na talíř rodinnou poradu. Fuj, jiné menu, prosím!