Всем привет.
Как управлять Wanscam камерой с помощью Powershell?
Автор идеи купил китайскую wanscam вебкамеру с wifi, инфракрасной подсветкой, микрофоном, динамиком, поворотным механизмом и web-интерфейсом. И решил автор сделать из этой web-камеры что-то вроде домашней видео-охраны.
Как он пишет идея была следующая: пингуем смартфоны или ноутбуки дома, если пингуются - значит кто-то есть дома, если не пингуются - значит дома, скорее всего, никого нет, или они просто забыты. Когда дома никого нет - камера поворачивается в сторону, например, двери и включается в режим "motion alarm", то есть оповещает нас если что-либо в кадре начинает двигаться. Если же дома кто-то есть - отключаем "motion alarm" и поворачиваем камеру в стенку.
Что делать с любимой кошкой?) Ограничить область сканирования уровнем выше полуметра от пола. Или ничего не делать, ибо кошки не так активны днем как нам кажется.
А вот его Powershell скрипт с помощью которого это все было реализовано:
#Общие параметры
$hour = (Get-Date).Hour #текущее время
$date = Get-Date -format dd-MM-yyyy
$file_temp = "C:\Temp\WebCam\camera.txt"
$file_log = "C:\Temp\WebCam\Camera_log-" + $date + ".txt"
$ping = new-object System.Net.NetworkInformation.Ping
#Сетевые параметры
#увы, но пароль к камере здесь в открытом виде
$camera_user_pass = "user=CameraUser&pwd=CameraPassword"
$camera_ip = "192.168.2.30"
$camera_ip_port = "http://"+$camera_ip+":8888/"
$mail_username = "MyHouse"
$mail_from = $mail_username+"@gmail.com"
$mail_to = "HugMe@gmail.com"
#пароль к gmail тоже в открытом виде
$mail_pass = "mail_password"
$wifi_ip = "192.168.2.10" #телефон автора
$wifi_ip2 = "192.168.2.11" #резервный
$wifi_ip3 = "192.168.2.12" #ноут
#А доступна ли web-камера по ping?
$i = 0;$time = 'timeout'
While (($i -lt 3) -and ($time -eq 'timeout')) {
$i++
$reply = $ping.send($camera_ip) #пинг в адрес камеры
$time = $reply.RoundtripTime
#Упс, а наша камера недоступна. Надо об этом срочно сообщить мне!
if (($reply.status -ne "Success") -and ($i -eq 3)){
write-host "send mail"
#заголовки сообщения
$SMTPServer = "smtp.gmail.com"
$SMTPPort = "587"
$subject = "Camera Timeout"
$body = "Camera Timeout"
#текст в формате HTML
$message = New-Object System.Net.Mail.MailMessage $mail_from, $mail_to
$message.Subject = $subject
$message.IsBodyHTML = $true
$message.Body = $body
$smtp = New-Object System.Net.Mail.SmtpClient($SMTPServer, $SMTPPort)
$smtp.EnableSSL = $true
$smtp.Credentials = New-Object System.Net.NetworkCredential($mail_username, $mail_pass)
#и
отправляем сообщение $smtp.Send($message)
}
}