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 } end
Pokud 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