最近常有人問要怎麼傳送錄影檔案到Line
因本身沒有門鈴所以就沒動過
參考了惟家Kris老師的做法做了些簡化
改成傳送即時影像連結而不是傳送影像檔
前置作業
1.請先參考我之前寫的前半段
Line Notify Token + 攝影機截圖 Line訊息傳送 NR應用方法
申請Line Token
2. 將你的攝影機接入HA
因本人都是Tapo下面只會用Tapo做範例
開始設定
- 須先讓攝影機產出Token
使用連結的時候需要用到
依照你的習慣看是要放/config/configuration.yaml還是其他地方都可以
ex. /config/packages/camera_taoke.yaml
sensor:
- platform: template
sensors:
cam_token:
value_template: "{{ state_attr('你的攝影機實體ID', 'access_token') }}"
設定好後重開HA讓sensor生效
- 因我都是在NR做自動化所以這邊只做function裡面的參數修正
如果有參照前一篇的文章直接修改function內容即可
var TimeNow= new Date();
var yyyy = TimeNow.getFullYear()
var MM = (TimeNow.getMonth()+1<10 ? '0' : '')+(TimeNow.getMonth()+1);
var dd = (TimeNow.getDate()<10 ? '0' : '')+TimeNow.getDate();
var h = (TimeNow.getHours()<10 ? '0' : '')+TimeNow.getHours();
var m = (TimeNow.getMinutes()<10 ? '0' : '')+TimeNow.getMinutes();
var s = (TimeNow.getSeconds()<10 ? '0' : '')+TimeNow.getSeconds();
var ms = (TimeNow.getMilliseconds()<10 ? '0' : '')+TimeNow.getMilliseconds();
var date = '_'+yyyy+'_'+MM+'_'+dd+'_'+h+'_'+m+'_'+s;
var date2 = yyyy+'/'+MM+'/'+dd+' '+h+':'+m+':'+s+'.'+ms;
const globalHomeAssistant = global.get('homeassistant');
var token = globalHomeAssistant.homeAssistant.states["sensor.cam_token"].state;
msg.payload_line = { "data": { "file": "/config/www/image/snapshot" + date + ".jpg" }, "message": date2 + "改成你要顯示的內容!" };
msg.payload_link = {
"message": "改成你要顯示的內容:\n改成你的HA對外域名:HA的port/api/camera_proxy_stream/你的攝影機ID?token="
+ token
};
msg.payload_snapshot = {
"filename":"/config/www/image/snapshot"+date+".jpg"
};
return msg;
function 的內容跟上一篇差不多只是多了以下三段
const globalHomeAssistant = global.get('homeassistant');
var token = globalHomeAssistant.homeAssistant.states["sensor.cam_token"].state;
msg.payload_link = {
"message": "改成你要顯示的內容:\n改成你的HA對外域名:HA的port/api/camera_proxy_stream/改成你的攝影機實體ID?token="
+ token
};
需要注意的是 改成你要顯示的內容 改成你的HA對外域名:HA的port 改成你的攝影機實體ID
這幾個需要變更
改成你的HA對外域名:HA的port 測試過http 或者 https都可以使用
NR測試截圖
以上為本次分享
希望能幫上有需要的朋友