2017年3月26日 星期日

python 透過 google smtp server 發信的方法

python code‧‧‧

import smtplib
    to = 'where@gmail.com'
    server = "smtp.gmail.com"
    #port = 465 # ssl
    port = 587 # tls
    gmail_user = 'youraccount@gmail.com'
    gmail_pwd = 'yourpassword or application password'
    #smtpserver = smtplib.SMTP_SSL(server, long(port)) # ssl
    smtpserver = smtplib.SMTP(server, long(port)) # tls
    smtpserver.ehlo()
    smtpserver.starttls() # tls
    smtpserver.login(gmail_user, gmail_pwd)
    header = 'To:' + to + '\n' + 'From: ' + gmail_user + '\n' + 'Subject:test \n'
    print header
    msg = header + '\n this is test \n\n'
    smtpserver.sendmail(gmail_user, to, msg)
    print 'done!'
    smtpserver.quit()

*如果你有使用兩階段驗證,必須先到 google 個人設定頁,增加應用程式密碼,smtp 才會驗證通過…
    https://myaccount.google.com/apppasswords

2017年3月1日 星期三

網頁後台使用 php 執行 python 操作 serial (uart) 權限的設定




uart0.php... (透過 shell_exec 執行 python 碼)
===============================================
$cmd = escapeshellcmd ( '/usr/bin/python uart0.py' );
$output = shell_exec ( $cmd );
echo $output;
===============================================

uart0.py... (console下執行沒問題,但透過 php 執行沒結果)
===============================================
import serial
serialport = serial.Serial("/dev/ttyAMA0", 9600, timeout=0.5)
serialport.write( "TEST" )
response = serialport.readlines(None)
print response
===============================================

解決… (需要設定裝置的權限 ttyAMA0 屬於 dialout 群組)
=1=暫時-reboot後無效==============================
sudo chmod 777 /dev/ttyAMA0
=2=============================================
sudo adduser youruser dialout
usermod -aG dialout youruser
===============================================


更高效處理 micro second 的方式

更高效處理 micro second 的方式…  以 STM32 為例… __IO unsigned long sys_tick = 0; void SysTick_Handler(void) {     HAL_IncTick();     sys_tick += (SysTi...