In a public environnement we are interested to capture a screenshot on the real time video
and send this via FTP or SSH to a web site
Someone can help me to understand if this is possible on meraki MV71 camera and related platform?
Regards
Solved! Go to solution.
Although this is not a feature we have today, you can try the Pyhton script below courtesy of the Meraki Systems Engineering team. Note that this is provided as is with no support. It may not work, if it does work it may stop working at any time.
#!/usr/bin/python3 ''' === PREREQUISITES === Run in Python 3 or 2 Install selenium, via macOS terminal: Python 3 > pip3 install selenium Python 2 > sudo pip install selenium Install Chrome driver: brew install chromedriver Usage: Python 3 > python3 screenshot.py Python 2 > python screenshot.py === DESCRIPTION === UI script to take a screenshot every x seconds, given camera input link, until script manually terminated (control-C). ''' import datetime import time import glob import os from selenium import webdriver from selenium.webdriver.support.ui import Select, WebDriverWait from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.desired_capabilities import DesiredCapabilities # Default Chrome download folder: FILE_PATH="your local path" # If using Python 2 try: input = raw_input except NameError: pass # Generic parse function def parse(text, beg_tag, end_tag, beg_pos=0, end_pos=-1): if text.find(beg_tag, beg_pos, end_pos) == -1: return ('', -1) else: initial = text.find(beg_tag, beg_pos, end_pos) + len(beg_tag) if text.find(end_tag, initial) == -1: return ('', -1) else: final = text.find(end_tag, initial) return (text[initial:final], final+len(end_tag)) # Login to Dashboard def login(driver): while True: # For convenience, option to store credentials in separate login.py file, although unsecure since cleartext try: import login (DASHBOARD_EMAIL, DASHBOARD_PASSWORD) = (login.email, login.password) except ImportError: DASHBOARD_EMAIL = input('Enter your Dashboard account email adddress: ') DASHBOARD_PASSWORD = input('Enter your Dashboard account password: ') print('Loading Selenium headless browser...') login_url = 'https://account.meraki.com/login/login' driver.get(login_url) driver.find_element_by_id('email').send_keys(DASHBOARD_EMAIL) driver.find_element_by_id('password').send_keys(DASHBOARD_PASSWORD) driver.find_element_by_id('commit').click() # Check credentials if 'Invalid email/password combination' in driver.page_source: print('Invalid Dashboard email/password combination, please try again!\n') continue else: print('Successfully logged into Dashboard as ' + DASHBOARD_EMAIL) break # Verify two-factor authentication code while 'Enter verification code' in driver.page_source: code = input('Enter two-factor authentication code: ') input_element = driver.find_element_by_id('code') input_element.send_keys(code) input_element.submit() # Check code if 'Invalid verification code' in driver.page_source: print('Invalid verification code, please try again!\n') continue else: break if __name__ == '__main__': #driver = webdriver.PhantomJS() driver = webdriver.Chrome() login(driver) # Input MV video link from Dashboard while True: url = input('Enter link to camera page, which ends in "/manage/nodes/new_list/[node_id]":\n') url = url.rstrip('/') # Error checking for layer 8 issues if 'nodes/new_list' not in url: print('Invalid link to camera page, please try again!\n') continue else: break driver.get(url) driver.implicitly_wait(20) while True: time.sleep(5) # Downloads screenshot into default folder of the browser settings. No dialogue box presented. driver.find_element_by_css_selector('.IconButton.subtle.ScreenshotButton.btn.btn-default').click() print('Took screenshot at ' + str(datetime.datetime.now()))
Although this is not a feature we have today, you can try the Pyhton script below courtesy of the Meraki Systems Engineering team. Note that this is provided as is with no support. It may not work, if it does work it may stop working at any time.
#!/usr/bin/python3 ''' === PREREQUISITES === Run in Python 3 or 2 Install selenium, via macOS terminal: Python 3 > pip3 install selenium Python 2 > sudo pip install selenium Install Chrome driver: brew install chromedriver Usage: Python 3 > python3 screenshot.py Python 2 > python screenshot.py === DESCRIPTION === UI script to take a screenshot every x seconds, given camera input link, until script manually terminated (control-C). ''' import datetime import time import glob import os from selenium import webdriver from selenium.webdriver.support.ui import Select, WebDriverWait from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.desired_capabilities import DesiredCapabilities # Default Chrome download folder: FILE_PATH="your local path" # If using Python 2 try: input = raw_input except NameError: pass # Generic parse function def parse(text, beg_tag, end_tag, beg_pos=0, end_pos=-1): if text.find(beg_tag, beg_pos, end_pos) == -1: return ('', -1) else: initial = text.find(beg_tag, beg_pos, end_pos) + len(beg_tag) if text.find(end_tag, initial) == -1: return ('', -1) else: final = text.find(end_tag, initial) return (text[initial:final], final+len(end_tag)) # Login to Dashboard def login(driver): while True: # For convenience, option to store credentials in separate login.py file, although unsecure since cleartext try: import login (DASHBOARD_EMAIL, DASHBOARD_PASSWORD) = (login.email, login.password) except ImportError: DASHBOARD_EMAIL = input('Enter your Dashboard account email adddress: ') DASHBOARD_PASSWORD = input('Enter your Dashboard account password: ') print('Loading Selenium headless browser...') login_url = 'https://account.meraki.com/login/login' driver.get(login_url) driver.find_element_by_id('email').send_keys(DASHBOARD_EMAIL) driver.find_element_by_id('password').send_keys(DASHBOARD_PASSWORD) driver.find_element_by_id('commit').click() # Check credentials if 'Invalid email/password combination' in driver.page_source: print('Invalid Dashboard email/password combination, please try again!\n') continue else: print('Successfully logged into Dashboard as ' + DASHBOARD_EMAIL) break # Verify two-factor authentication code while 'Enter verification code' in driver.page_source: code = input('Enter two-factor authentication code: ') input_element = driver.find_element_by_id('code') input_element.send_keys(code) input_element.submit() # Check code if 'Invalid verification code' in driver.page_source: print('Invalid verification code, please try again!\n') continue else: break if __name__ == '__main__': #driver = webdriver.PhantomJS() driver = webdriver.Chrome() login(driver) # Input MV video link from Dashboard while True: url = input('Enter link to camera page, which ends in "/manage/nodes/new_list/[node_id]":\n') url = url.rstrip('/') # Error checking for layer 8 issues if 'nodes/new_list' not in url: print('Invalid link to camera page, please try again!\n') continue else: break driver.get(url) driver.implicitly_wait(20) while True: time.sleep(5) # Downloads screenshot into default folder of the browser settings. No dialogue box presented. driver.find_element_by_css_selector('.IconButton.subtle.ScreenshotButton.btn.btn-default').click() print('Took screenshot at ' + str(datetime.datetime.now()))
did this python script work for you