Při hledání chyb v systému, který používá CAN sběrnici, se může hodit funkce odeslání hlášení nebo dat pomocí emailu. Některé situace - chyby, kombinace hodnot a podobně mohou nastávat velmi sporadicky a v nepravidelných časových intervalech. Na událost je možné upozornit ze skriptu pomocí okna hlášení msg_box, či použít zvukové upozornění pomocí msg_beep. Pokud však nechceme u počítače "sedět" a čekat až událost nastane, je možné také odeslat email.
Odeslání emailu není přímo vestavěná funkce interpreteru CAN skriptů, ale využijeme funkci command a pro odeslání použijeme externí program pro příkazovou řádku. V tomto případě použijeme program mailsend. Ten je k dispozici jak ve formě zdrojových kódů na Githubu, tak i přeložený do EXE souboru. Stáhnout je jej možné na této adrese: https://github.com/muquit/mailsend/releases/ .
Protože každý smtp server pro odeslání emailu vyžaduje trochu jiné parametry, je vhodné proto celý příkaz pro odeslání odladit na příkazovém řádku a následně jej použít ve skriptu.
V mém případě pro smtp u poskytovatele hostingu Wedos vypadá příkaz takto:
mailsend1.20b.exe -to KOMU -from OD_KOHO -ssl -port 465 -auth -smtp wes1-smtp.wedos.net -sub Warning -user UZIVATEL -pass HESLO -M TEXT
Samozřejmě části KOMU,OD_KOHO je třeba nahradit validní emailovou adresou. Stejně tak část UZIVATEL a HESLO. Část TEXT pak tvoří tělo emailu. Pokud je tělo složitější - obsahuje mezery, je třeba aby bylo v uvozovkách. Předmět emailu je nastaven na text Warning (parametr -sub).
Jako příklad si uvedeme velmi jednoduchý skript, který pouze reaguje na příchod zprávy s identifikátorem 111 a pokud takováto zpráva dorazí, dojde k odeslání emailu který obsahuje aktuální čas a první dva datové bajty CAN zprávy. Nic však nebrání rozšíření funkcionality skriptu. Ten může sledovat i další provozní hodnoty dekódováním dalších zpráv na CAN sběrnici a nebo odeslat data uložená například do csv pomocí objektu obj_csvfile ve formě přílohy.
script:
type = CAN_FUNCTION;
end
// Definice promennych
variables:
string s;
string email_cmd;
string message;
string cmd;
int e;
end
// Definice objektu
objects:
obj_can_msg can_msg;
end
init:
e=0;
email_cmd = "mailsend1.20b.exe -to KOMU -from OD_KOHO -ssl -port 465 -auth -smtp wes1-smtp.wedos.net -sub Warning -user UZIVATEL -pass HESLO -M ";
//za parametrem -M je mezera zámerne, za tuto mezeru se vkládá text emailu
//email_cmd = "support -to spanel@canlab.cz -from debug@canlab.cz -ssl -port 465 -auth -smtp wes1-smtp.wedos.net -sub Warning -user debug@canlab.cz -pass oKolokolkolo8877 -M ";
end
shutdown:
end
body:
prints("data");
can_msg.load();
if(can_msg.stext==false && can_msg.rtr==false && can_msg.id1==111)
{
message = "\"";
message = message + i2str(time_h());
message = message + ":";
message = message + i2str(time_m());
message = message + ":";
message = message + i2str(time_s());
message = message + " Data: ";
message = message + i2str(can_msg.data(0));
message = message + ":";
message = message + i2str(can_msg.data(1));
message = message+ "\"";
cmd = email_cmd;
cmd = cmd + message;
prints(cmd);
command(cmd,s);
//V s je prípadný výstup z mailsend
}
endPokud potřebujete monitorovat data a události ze vzdáleného místa, kde není možné použít notebook a převodník USB2CAN, je možné také použít zařízení Waylogger 4 s LTE modemem nebo WiFi a použít plugin pro odeslání emailu. Více informací zde.
Další díly seriálu:
- Díl 1: Periodické generování dat na CAN sběrnici.
- Díl 2: Uživatelské prvky pro řízení skriptu
- Díl 3: Simulace joysticku dle SAE J1939
- Díl 4: Monitorování a zápis událostí do souboru CSV
- Díl 5: Měření periody a zápis do CSV pomocí přiřazení objektu
- Díl 6: Komunikace pomocí TCP
- Díl 7: Komunikace pomocí sériové linky
- Díl 8: PID regulátor
- Díl 9: Výpočet CRC a objekt obj_dataset
- Díl 10: Volání funkce z externí DLL
- Díl 11: Odeslání emailu s hlášením
