參考:http://white5168.blogspot.com/2017/01/line-notify-6-line-notify.html#.Yh63k09BzX4
只需修改sToken 與 sFilepath填入你自已的Token與圖檔放置的位置就可以直接執行。
參考:http://white5168.blogspot.com/2017/01/line-notify-6-line-notify.html#.Yh63k09BzX4
只需修改sToken 與 sFilepath填入你自已的Token與圖檔放置的位置就可以直接執行。
Sub line_notify()
'===================================
'Line訊息
'===================================
Dim oXML As Object
Dim Token As String
Dim URL As String
'指定的Line Notify Token
Token = "你的TOKEN"
'Line Notify的傳送訊息網址
Line_Message = "利用VBA傳訊息"
URL = "https://notify-api.line.me/api/notify"
Set oXML = CreateObject("Microsoft.XMLHTTP")
With oXML
'使用同步傳輸
.Open "POST", URL, 0
'設定傳送封包Header
.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
.setRequestHeader "Authorization", "Bearer " & Token
'執行Ajax傳送
.send "message=" & Chr(10) & Line_Message
Debug.Print oXML.responseText
End With
'釋放物件資源
Set oXML = Nothing
End Sub
Public Sub sendData2GoogleSheet()
On Error GoTo handleerr
num1 = Sheet1.Range("E2") '將excel的E2的欄位資料丟進num1的變數中
num2 = Sheet1.Range("F2") '將excel的F2的欄位資料丟進num2的變數中
num3 = Sheet1.Range("G2") '將excel的G2的欄位資料丟進num3的變數中
num4 = Sheet1.Range("H2") '將excel的H2的欄位資料丟進num4的變數中
num5 = Sheet1.Range("I2") '將excel的I2的欄位資料丟進num5的變數中
num6 = Sheet1.Range("J2") '將excel的J2的欄位資料丟進num6的變數中
num7 = Sheet1.Range("K2") '將excel的K2的欄位資料丟進num7的變數中
num8 = Sheet1.Range("L2") '將excel的L2的欄位資料丟進num8的變數中
'將資料寫進googlesheet
Set WinHttp = CreateObject("WinHttp.WinHttpRequest.5.1")
postData = "method=write&snum1=" & num1 & "&snum2=" & num2 & "&snum3=" & num3 & "&snum4=" & num4 & "&snum5=" & num5 & "&snum6=" & num6 & "&snum7=" & num7 & "&snum8=" & num8 '&與變數之間要空一格
WinHttp.Open "POST", "這裡請填上你發佈的網路應用程式的網址", False
WinHttp.setRequestHeader "authority", "script.google.com"
WinHttp.setRequestHeader "User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"
WinHttp.setRequestHeader "Content-type", "application/x-www-form-urlencoded"
WinHttp.send postData
MsgBox "傳送成功"
Exit Sub
handleerr:
MsgBox "傳送失敗"
End Sub
var sheet1=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("sheet1");
function doPost(e) {
var para = e.parameter, method = para.method;
if (method == "write") {
write_data(para);
}
}
function write_data(para) {
var num1 = para.snum1,num2 = para.snum2,num3 = para.snum3,num4 = para.snum4,num5 = para.snum5,num6 = para.snum6,num7 = para.snum7,num8 = para.snum8;
var date = new Date();
var now = date.getHours() + ':' + date.getMinutes() + ':' + date.getSeconds();
sheet1.getRange(4,2).setValue(num1);
sheet1.getRange(5,2).setValue(num2);
sheet1.getRange(6,2).setValue(num3);
sheet1.getRange(7,2).setValue(num4);
sheet1.getRange(8,2).setValue(num5);
sheet1.getRange(9,2).setValue(num7);
sheet1.getRange(10,2).setValue(num8);
sheet1.getRange(3,2).setValue(num6);
sheet1.getRange(1,2).setValue(now);
}
Private Sub CommandButton1_Click()
On Error Resume Next
NETComm1.SThreshold = 1
NETComm1.RThreshold = 1
NETComm1.CommPort = ComboBox1.Text
If NETComm1.PortOpen = False Then 'if the serial port is closed
NETComm1.PortOpen = True 'open the serial port
CommandButton1.Enabled = False
End If
If Err Then MsgBox Error$, 48
End Sub
Private Sub CommandButton2_Click()
'Close serial port on exit
On Error Resume Next 'Error handler
If NETComm1.PortOpen = True Then 'check if the serial port is open
NETComm1.PortOpen = False 'close the serial port
End If
If Err Then MsgBox Error$, 48 'Display error in message box
End
End Sub
Private Sub NETComm1_OnComm()
Static Buffer As String
Dim CRLFPos As Integer
Buffer = Buffer & NETComm1.InputData 'or whatever name you use for the instance of NETComm
CRLFPos = InStr(Buffer, vbCr)
If CRLFPos > 0 Then
Dim MyData As String
d = Now()
MyData = d & Mid(Buffer, 1, CRLFPos - 1) & vbCrLf
TextBox1.Text = TextBox1.Text & MyData
Buffer = ""
End If
End Sub
Private Sub UserForm_Initialize()
Dim i As Byte
For i = 1 To 9
If IsComPortAvailable(i) = True Then
ComboBox1.AddItem i
End If
Next
End Sub
Private Sub UserForm_Terminate()
'Close serial port on exit
On Error Resume Next 'Error handler
If NETComm1.PortOpen = True Then 'check if the serial port is open
NETComm1.PortOpen = False 'close the serial port
End If
If Err Then MsgBox Error$, 48 'Display error in message box
End Sub
Function IsComPortAvailable(ByVal portNum As Integer) As Boolean
Dim fnum As Integer
On Error Resume Next
fnum = FreeFile
Open "COM" & CStr(portNum) For Binary Shared As #fnum
If Err = 0 Then
Close #fnum
IsComPortAvailable = True
End If
End Function
Private Sub CommandButton1_Click()
End
End Sub
Private Sub UserForm_Initialize()
Dim i As Byte
For i = 1 To 9
If IsComPortAvailable(i) = True Then
ComboBox1.AddItem i
End If
Next
End Sub
Function IsComPortAvailable(ByVal portNum As Integer) As Boolean
Dim fnum As Integer
On Error Resume Next
fnum = FreeFile
Open "COM" & CStr(portNum) For Binary Shared As #fnum
If Err = 0 Then
Close #fnum
IsComPortAvailable = True
End If
End Function
Private Sub Workbook_Open()
UserForm1.Show '表單名稱.show
End Sub
Private Sub CommandButton1_Click()
On Error Resume Next
NETComm1.SThreshold = 1
NETComm1.RThreshold = 1
NETComm1.CommPort = 4
If NETComm1.PortOpen = False Then 'if the serial port is closed
NETComm1.PortOpen = True 'open the serial port
End If
If Err Then MsgBox Error$, 48
End Sub
Private Sub CommandButton2_Click()
'Close serial port on exit
On Error Resume Next 'Error handler
If NETComm1.PortOpen = True Then 'check if the serial port is open
NETComm1.PortOpen = False 'close the serial port
End If
If Err Then MsgBox Error$, 48 'Display error in message box
End
End Sub
Private Sub NETComm1_OnComm()
Dim d As Date
Static Buffer As String
Dim CRLFPos As Integer
Buffer = Buffer & NETComm1.InputData 'or whatever name you use for the instance of NETComm
CRLFPos = InStr(Buffer, vbCr)
If CRLFPos > 0 Then
Dim MyData As String
d = Now()
MyData = d & Mid(Buffer, 1, CRLFPos - 1) & vbCrLf
TextBox1.Text = TextBox1.Text & MyData
Buffer = ""
End If
End Sub
Private Sub UserForm_Terminate()
'Close serial port on exit
On Error Resume Next 'Error handler
If NETComm1.PortOpen = True Then 'check if the serial port is open
NETComm1.PortOpen = False 'close the serial port
End If
If Err Then MsgBox Error$, 48 'Display error in message box
End Sub
#include <DHT.h>
#define DHTPIN 2 // 設定DHT的接腳
#define DHTTYPE DHT11 // DHT 11 定義DHT的類型為DHT11
//#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
//Serial.println("DHT11 test!");
dht.begin(); //啟動DHT
}
void loop() {
// 每次偵測間隔2秒
char ch=13;
delay(2000);
//讀取濕度
float h = dht.readHumidity();
//讀取攝氏溫度
float t = dht.readTemperature();
//讀取華氏溫度
float f = dht.readTemperature(true);
//檢查是不是有讀到資料
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println("Failed to read from DHT sensor! \n");
return;
}
Serial.print("Humidity:");
Serial.print(h,1); //顯示到小數點後一位
Serial.print("%/");
Serial.print("Temperature:");
Serial.print(t,1);//顯示到小數點後一位
Serial.print("C");
Serial.print(ch);
}