======= Odesílání e-mailů =======
#;;
Patron
Neuron
Gate
Unipi 1.1
Axon
#;;
Mervis, společně s jednotkami Unipi, podporuje odesílání emailů. Tento návod popisuje, jak nastavit PLC a realizovat odesílání emailů diagramem funčních bloků. Zasílání emailů je možné jak nešifrovaně (non-SSL), tak šifrovaně (SSL).
----
V následujícím návodu je vysvětleno pouze odesílání emailů blokem **sendmailtrig**, realizované ve FBD. V jazyce ST doporučujeme použít blok **sendmail**, jehož použití je popsáno v nápovědě Mervis IDE.
Funkcí bloku **sendmailtrig** je odeslat email na předem definovanou adresu při detekci náběžné hrany na vstupu **send**.
{{ :en:sw:01-mervis:sending-email:sending_emails_01_sendmailtrig_fbd_block.png?nolink&175 |}}
**Upozornění:** \\
Při tvorbě programu je nutné zajistit, aby v jeden moment docházelo k odeslání pouze jednoho emailu a před odesláním dalšího emailu byla dodržena pauza alespoň jednu vteřinu.
===== Nastavení alarmového kanálu =====
Pro správnou funkci odesílání emailů je nutné nejdříve nastavit alarmový kanál. Dvojitě klikněte na **PLC** v **levém panelu**, vyberte záložku **Definice hlášení**, klikněte pravým tlačítkem myši do prostoru hlavního okna (seznam alarmových kanálů) a v kontextovém menu vyberte možnost **Přidat alarmový kanál**:
{{ .:sending-email:sending_emails_02_setup_channel.png?direct |}}
----
Objeví se nový alarmový kanál. Ve výchozím stavu je nastaven pro odesílání emailových zpráv. Nyní je možné definovat název, který se následně použije na vstupu bloku **sendmailtrig**, nebo ponechat výchozí název **alrchannel**.
{{ .:sending-email:sending_emails_03_new_channel.png?direct |}}
Dále se definuje typ spojení **SMTP**. Po kliknutí na kanál v hlavním okně se v pravém sloupci zobrazí tabulka vlastností zvoleného kanálu:
* **Server**: ze které bude email odesílán
* **Port**: na kterém bude RT komunikovat (dle emailového serveru)
* **Používat přihlašování**: ''TRUE'' v případě nutnosti přihlašování
* **Jméno uživatele**: v případě přihlašování, standardně emailová adresa
* **Heslo**: v případě přihlašování, heslo pro použitý email
* **Povolit SSL**: pro zabezpečenou komunikaci
* **Validace certfikátu**: standardně ''FALSE'', více v článku [[ssl-certification-validation-hidden|]]
{{ .:sending-email:sending_emails_04_channel_attributes.png?direct |}}
Všechny změny je nutné potvrdit kliknutím na OK v červené liště:
{{ .:sending-email:sending_emails_05_name_channel.png?direct |}}
===== Odesílání emailů =====
Funkční blok **sendmailtrig** lze nalézt v levém panelu v záložce **FUPLA bloky**, nebo v kontextovém menu **Přidat blok knihovny** po stisknutí pravého tlačítka myši v **hlavním okně** (prostoru fbd programu).
{{ .:sending-email:sending_emails_06_fbd_block_program.png?direct |}}
----
Tento funkční blok má 6 vstupů. Pro pohodlnější ladění je vhodné vytvořit pomocné proměnné, které se na tyto vstupy připojí. První je vstup **channel**, který je datového typu string. Při definování proměnné je možné zvolit název shodný s názvem vstupu, ale je třeba třeba zvolit shodný datový typ, tedy string. Počáteční hodnotou je název alarmového kanálu, kde výchozí hodnotou je řetězec **alrchannel**:
{{ .:sending-email:sending_emails_07_global_variable.png?direct |}}
----
**Stejný postup platí i pro ostatní vstupní proměnné:**
|< 100% 15% 15% 70%>|
^ Vstup ^ Typ ^ Význam ^
| CHANNEL | STRING | název alarmového kanálu (definuje se v možnostech PLC; [[#nastaveni_alarmoveho_kanalu|viz výše]]) |
| FROM | STRING | emailová adresa odesílatele |
| RECIPIENT | STRING | emailová adresa příjemce |
| SUBJECT | STRING | předmět emailu |
| MESSAGE | STRING | zpráva emailu |
| SEND | BOOL | povel pro odeslání emailu |
----
Výsledek by měl vypadat přibližně takto:
{{ .:sending-email:sending_emails_08_sendmailtrig_with_variables.png?direct |}}
----
Pokud je odeslání emailu úspěšné, výstup **Result** bude mít hodnotu 0.
|< 100% 15% 15% 70%>|
^ Výstup ^ Typ ^ Význam ^
| RESULT | SINT | číselný status; výsledek operace (odeslání emailu) |
Jiná hodnota než nula znamená chybový kód; v takovém lze určit příčinu problému (chybu) pomocí následující tabulky, nebo nápovědy funkčního bloku (po označení bloku a stisknutí klávesy **F1**).
|< 100% 20% 80%>|
^ Číselný status ^ Význam ^
| 0 | OK |
| 8 | Plná emailová fronta |
| 16 | Neznámý kanál |
| 24 | Chyba - hodnota číselného statusu nelze určit |
| jiné | Interní chyba - kontaktujte technickou podporu |
==== Příklad použití ====
Typicky lze tuto funkci využít pro hlášení alarmových stavů. Odeslání emailu je spuštěno nastalým alarmovým stavem, v tomto příkladu překročením proměnné ''teplota'' přes hodnotou proměnné ''mez_teploty'' (s hysterezí). Další email (s jiným obsahem zprávy) je odeslán po snížení hodnoty proměnné ''teplota'' pod hodnotu ''mez_teploty'' (s hysterezí).
{{ .:sending-email:sending_emails_09_program_windowed.png?direct |}}
===== Doporučení pro Gmail: =====
V případě Google účtu (je-li nastaveno dvoufázové ověřování) je postup pro vygenerování hesla následující:
- V Google Account nastavení
- Vyhledat **Hesla Aplikací**
- Vybrat aplikaci **Pošta** a zařízení "**Jiné** //vlastní název//"
- Vygenerovat heslo pro použití ve Vaší aplikaci: "xxxyyyyzzz"