Ejemplo n.º 1
0
import json, platform, time
import pigpio
from settings.parseSettings import get_Settings
from pigpiod_service_manager import start_PIGPIO_Service
from datentime.datentime import dt

DHT22_Settings = get_Settings('DHT22')

#For DHT Library
import DHT22_Library
#For Adafruit Library
import Adafruit_DHT as dht

Adafruit_Lib = True


def read_DHT22():
    dt_Obj = dt()
    data = {}

    if Adafruit_Lib == True:
        Humidity, Temperature = dht.read_retry(dht.DHT22,
                                               int(DHT22_Settings['DATA']))

        data['sid'] = DHT22_Settings['SENSOR_ID']
        data['dt'] = str(dt_Obj.get_DB_datetime_str())
        data['temp'] = '{0:0.2f}'.format(Temperature)
        data['humi'] = '{0:0.2f}'.format(Humidity)

    else:
        dht22_Obj = DHT22_Sensor()
import paho.mqtt.client as mqtt
from db.sensor_data_to_db import sensor_Data_Handler

from settings.parseSettings import get_Settings
MQTT_Settings = get_Settings('MQTT')


#Subscribe to all Sensors at Base Topic
def on_connect(mosq, obj, rc):
    mqttc.subscribe(MQTT_Settings['MQTT_BASE_TPC'], 0)


#Save Data into DB Table
def on_message(mosq, obj, msg):
    sensor_Data_Handler(msg.topic, msg.payload)


def on_subscribe(mosq, obj, mid, granted_qos):
    pass


mqttc = mqtt.Client()
# Assign event callbacks
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe

# Connect
mqttc.connect(MQTT_Settings['HOST'], int(MQTT_Settings['PORT']),
              int(MQTT_Settings['KEEPALIVE']))
Ejemplo n.º 3
0
import inspect, os
from subprocess import PIPE, Popen
from datetime import datetime

camera_Dir = os.path.dirname(
    os.path.abspath(inspect.getfile(inspect.currentframe())))
ffmpeg_File_Path = os.path.join(camera_Dir, 'ffmpeg')

from settings.parseSettings import get_Settings
Camera_Settings = get_Settings('CAMERA')

Video_Dir_Path = Camera_Settings['VIDEO_DIR']
Frame_Height = Camera_Settings['VIDEO_FRAME_HEIGHT']
Frame_Width = Camera_Settings['VIDEO_FRAME_WIDTH']
Frame_Per_Second = Camera_Settings['VIDEO_FRAME_PER_SECOND']
Bit_Rate = Camera_Settings['VIDEO_BITRATE']

YouTube_Settings = get_Settings('YOUTUBE')
Stream_Name = YouTube_Settings['LIVE_STREAM_NAME_KEY']


#====================================================================================
def cmdline(command):
    process = Popen(args=command, stdout=PIPE, shell=True)
    return process.communicate()[0]


#====================================================================================

#====================================================================================
# UNDER TESTING (DO NOT USE)
Ejemplo n.º 4
0
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from settings.parseSettings import get_Settings

EMAIL_Settings = get_Settings('EMAIL')
FROM_ADD = EMAIL_Settings['FROM_ADD']
USERNAME = EMAIL_Settings['USERNAME']
PASSWORD = EMAIL_Settings['PASSWORD']
SMTP_SERVER = EMAIL_Settings['SMTP_ADD']
SMTP_PORT = EMAIL_Settings['SMTP_PORT']


class Class_eMail():
    def __init__(self):
        self.session = smtplib.SMTP_SSL(SMTP_SERVER, SMTP_PORT)
        self.session.ehlo()
        self.session.login(USERNAME, PASSWORD)

    def initialise_Mail_Body(self, To_Add, Subject):
        #Prepare Mail Body
        Mail_Body = MIMEMultipart()
        Mail_Body['From'] = FROM_ADD
        Mail_Body['To'] = To_Add
        Mail_Body['Subject'] = Subject
        return Mail_Body

    #Call this to send plain text emails.
    def send_Text_Mail(self, To_Add, Subject, txtMessage):
        Mail_Body = self.initialise_Mail_Body(To_Add, Subject)
        #Attach Mail Message
Ejemplo n.º 5
0
import RPi.GPIO as GPIO
from settings.parseSettings import get_Settings
Status_LED_Settings = get_Settings('STATUS_LED')


GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(int(Status_LED_Settings['POWER']), GPIO.OUT)

def status_LED_ON():
	GPIO.output(int(Status_LED_Settings['POWER']), GPIO.HIGH)
	return
	
def status_LED_OFF():
	GPIO.output(int(Status_LED_Settings['POWER']), GPIO.LOW)
	return
Ejemplo n.º 6
0
import json
from settings.parseSettings import get_Settings
from datentime.datentime import dt
import Adafruit_BMP.BMP085 as BMP085

BMP180_Settings = get_Settings('BMP180')

def read_BMP180():
	dt_Obj = dt()	
	data = {}
	
	sensor = BMP085.BMP085()
	
	data['sid'] = str(BMP180_Settings['SENSOR_ID'])
	data['dt'] = dt_Obj.get_DB_datetime_str()
	data['pres'] = format(sensor.read_pressure())
	data['pres_at_sea_level'] = '{0:0.2f}'.format(sensor.read_sealevel_pressure())
	data['alti'] = '{0:0.2f}'.format(sensor.read_altitude())
	data['temp'] = '{0:0.2f}'.format(sensor.read_temperature())
	
	json_data = json.dumps(data)
	del dt_Obj
	return json_data
Ejemplo n.º 7
0
from led.status_led import status_LED_ON, status_LED_OFF
from photocell_light.photocell_light_sensor import read_LIGHT
from settings.parseSettings import get_Settings, Str_To_Boolean
from multi_threading.multi_threading import RepeatedTimer
from pir.pir_motion_sensor import PIR_Sensor
from camera.capture_time_lapse_photo import start_Time_Lapse_Photo_Capture
from camera.camera_file_gdrive_youtube_upload import PiCam_GDrive_YouTube_Upload_Service, get_GDrive_PiCam_Data_Path
from camera.capture_mp4_video import start_Video_Capture
from twitter_post.twitter_post import publish_Status_On_Twitter
from facebook_post.facebook_post import post_on_Facebook
from sms.ways2sms import send_SMS

#======================================================
#Fetch Settings
#======================================================
MQTT_Settings = get_Settings('MQTT')
DHT22_Settings = get_Settings('DHT22')
BMP180_Settings = get_Settings('BMP180')
LIGHT_Settings = get_Settings('PHOTOCELL')
STATUS_LED_Settings = get_Settings('STATUS_LED')
SYSTEM_Settings = get_Settings('SYSTEM')
Motion_Sensor_Settings = get_Settings('PIR')
Camera_Settings = get_Settings('CAMERA')
GOOGLE_DRIVE_Settings = get_Settings('GOOGLE_DRIVE')
FACEBOOK_Settings = get_Settings('FACEBOOK')
TWITTER_Settings = get_Settings('TWITTER')
WAYS2SMS_Settings = get_Settings('WAYS2SMS')

#======================================================

from db.db_operations import DatabaseManager
from google_drive.google_drive_upload import gDrive
from datentime.datentime import dt
import time, json, os, threading
from youtube.youtube_upload import upload_Video_On_YouTube

from settings.parseSettings import get_Settings
GOOGLE_DRIVE_Settings = get_Settings('GOOGLE_DRIVE')


#========================================================================
class Upload_Camera_Files:
    def __init__(self):
        #Initialize Objects
        self.gdObj = gDrive()
        self.DateObj = dt()
        self.db_Obj = DatabaseManager()

    def get_Motion_Event_Google_Drive_Folder_ID(self, sensor_ID,
                                                motion_Event_Date):
        #Get Camera File Root Folder ID from Google Drive (Create it if it doesn't exist)
        Root_Folder_Name = GOOGLE_DRIVE_Settings[
            'ROOT_FOLDER_FOR_UPLOADED_CAMERA_FILES']
        Root_Folder_ID = self.gdObj.create_GDrive_Folder(Root_Folder_Name)

        #Create a Folder with Today's Date in Root Folder inside Root Folder(if it doesn't exists)
        Today_Folder_Name = self.DateObj.get_GDrive_Day_Folder_datetime_str(
            motion_Event_Date)
        Today_Folder_ID = self.gdObj.create_GDrive_Folder(
            Today_Folder_Name, Root_Folder_ID)
Ejemplo n.º 9
0
import json

from db.db_operations import DatabaseManager
from settings.parseSettings import get_Settings

DB_Settings = get_Settings('SQLIGHT')
MQTT_Settings = get_Settings('MQTT')


def bmp180_Data(jsonData):
    print "BMP 180 Data"
    print jsonData
    #Parse Data
    json_Dict = json.loads(jsonData)
    SensorID = json_Dict['sid']
    DatenTime = json_Dict['dt']
    Pressure = json_Dict['pres']
    Pressure_At_Sea_Level = json_Dict['pres_at_sea_level']
    Altitude = json_Dict['alti']
    Temperature = json_Dict['temp']

    #Push into DB Table
    dbObj = DatabaseManager()
    dbObj.add_del_update_db_record(
        "insert into BMP180_Data (SensorID, Date_n_Time, Pressure, Pressure_At_Sea_Level, Altitude, Temperature) values (?,?,?,?,?,?)",
        [
            SensorID, DatenTime, Pressure, Pressure_At_Sea_Level, Altitude,
            Temperature
        ])
    del dbObj
Ejemplo n.º 10
0
import facebook
from settings.parseSettings import get_Settings

FACEBOOK_Settings = get_Settings('FACEBOOK')
FB_APP_ID = FACEBOOK_Settings['FB_APP_ID']
FB_APP_SECRET = FACEBOOK_Settings['FB_APP_SECRET']
FB_ACCESS_TOKEN = FACEBOOK_Settings['FB_ACCESS_TOKEN']


def post_on_Facebook(strMsg):
    facebook_graph = facebook.GraphAPI(FB_ACCESS_TOKEN)
    try:
        response = facebook_graph.put_wall_post(strMsg)
    except facebook.GraphAPIError as e:
        print e
Ejemplo n.º 11
0
from decimal import Decimal
import threading, time, json
import RPi.GPIO as GPIO
from datentime.datentime import dt

#Read Settings
from settings.parseSettings import get_Settings
Motion_Sensor_Settings = get_Settings('PIR')
Data_Pin = int(Motion_Sensor_Settings['DATA'])

#Set GPIO Mode and Pin
GPIO.setmode(GPIO.BCM)
GPIO.setup(Data_Pin, GPIO.IN, GPIO.PUD_DOWN)


class PIR_Sensor():
    def __init__(self):
        pass

    #=============================================================================
    def read_PIR_Motion_Sensor(self, event_Listener_Function):
        #Initialize Variables
        Previous_Motion_State = 0
        Current_Motion_State = 0
        Motion_Start_Time = None
        dt_Obj = dt()

        #Keep Reading Sensor
        while True:
            Previous_Motion_State = Current_Motion_State
            #Read Motion Sensor
Ejemplo n.º 12
0
import RPi.GPIO as GPIO, time, os, json
from datentime.datentime import dt

from settings.parseSettings import get_Settings

Light_Sensor_Settings = get_Settings('PHOTOCELL')

DEBUG = 1
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)

# Set GPIO Pin to Output Pun as we need to use it as 3V Power supply for Circuit
GPIO.setup(int(Light_Sensor_Settings['POWER']), GPIO.OUT)


def read_LIGHT():
    # Set GPIO High to supply 3V Power to Circuit
    GPIO.output(int(Light_Sensor_Settings['POWER']), GPIO.HIGH)

    RCpin = int(Light_Sensor_Settings['DATA'])
    reading = 0
    GPIO.setup(RCpin, GPIO.OUT)
    GPIO.output(RCpin, GPIO.LOW)
    time.sleep(0.1)
    GPIO.setup(RCpin, GPIO.IN)
    # This takes about 1 millisecond per loop cycle
    while (GPIO.input(RCpin) == GPIO.LOW):
        reading += 1

    GPIO.output(int(Light_Sensor_Settings['POWER']), GPIO.LOW)
Ejemplo n.º 13
0
import time
from datetime import datetime, date
from settings.parseSettings import get_Settings

dt_Settings = get_Settings('DATE_TIME')


class dt:
    def __init__(self):
        pass

    def get_datetime_str(self):
        return (datetime.today()).strftime(dt_Settings['DATE_TIME_FORMAT'])

    def get_datetime(self):
        return datetime.today()

    def get_date_str(self):
        return (datetime.today()).strftime(dt_Settings['DATE_FORMAT'])

    def get_date(self):
        return date.today()

    def get_time_str(self):
        return (datetime.today()).strftime(dt_Settings['TIME_FORMAT'])

    def get_time(self):
        return time.time()
#============================================================================
# 	DB Date Entries
#============================================================================
Ejemplo n.º 14
0
import picamera
from datetime import datetime, date
import time

from settings.parseSettings import get_Settings
Camera_Settings = get_Settings('CAMERA')


class camera_module:
    def __init__(self):
        #Initialize Camera Object
        self.Camera_Obj = picamera.PiCamera()

        #Set Camera Settings
        self.Camera_Obj.resolution = tuple(
            [int(s) for s in Camera_Settings['RESOLUTION'].split(',')])
        self.Camera_Obj.sharpness = int(Camera_Settings['SHARPNESS'])
        self.Camera_Obj.contrast = int(Camera_Settings['CONTRAST'])
        self.Camera_Obj.brightness = int(Camera_Settings['BRIGHTNESS'])
        self.Camera_Obj.saturation = int(Camera_Settings['SATURATION'])
        self.Camera_Obj.ISO = int(Camera_Settings['ISO'])
        self.Camera_Obj.video_stabilization = True if (
            Camera_Settings['VIDEO_STABILIZATION']
        ).title() == 'True' else False
        self.Camera_Obj.exposure_compensation = int(
            Camera_Settings['EXPOSURE_COMPENSATION'])
        self.Camera_Obj.exposure_mode = Camera_Settings['EXPOSURE_MODE']
        self.Camera_Obj.meter_mode = Camera_Settings['METER_MODE']
        self.Camera_Obj.awb_mode = Camera_Settings['AWB_MODE']
        self.Camera_Obj.image_effect = Camera_Settings['IMAGE_EFFECT']
        self.Camera_Obj.color_effects = None if (
Ejemplo n.º 15
0
from twitter import *
from settings.parseSettings import get_Settings

TWITTER_Settings = get_Settings('TWITTER')
CONSUMER_KEY = TWITTER_Settings['CONSUMER_KEY']
CONSUMER_SECRET = TWITTER_Settings['CONSUMER_SECRET']
ACCESS_TOKEN = TWITTER_Settings['ACCESS_TOKEN']
ACCESS_TOKEN_SECRET = TWITTER_Settings['ACCESS_TOKEN_SECRET']


def publish_Status_On_Twitter(Twitter_Status):
    TW = Twitter(auth=OAuth(ACCESS_TOKEN, ACCESS_TOKEN_SECRET, CONSUMER_KEY,
                            CONSUMER_SECRET))
    TW.statuses.update(status=Twitter_Status)
Ejemplo n.º 16
0
from camera.video_stream_encoder import capture_MP4_Video
from db.db_operations import DatabaseManager
from datentime.datentime import dt
import threading, json

#Read Settings
from settings.parseSettings import get_Settings
Motion_Sensor_Settings = get_Settings('PIR')
PIR_MOTION_STATUS_HOLD_TIME = int(
    Motion_Sensor_Settings['MOTION_STATUS_HOLD_TIME'])

Camera_Settings = get_Settings('CAMERA')
Video_Upload_Location = (Camera_Settings['VIDEO_UPLOAD_AT']).upper()


#====================================================================================
def capture_and_add_to_upload_queue(motion_Start_Json_Data):

    #Read Sensor Data
    json_Dict = json.loads(motion_Start_Json_Data)
    SensorID = json_Dict['sid']
    Motion_Event_Date = json_Dict['dt']

    #Generate Video File Name
    DateObj = dt()
    File_Name = DateObj.get_Video_Name_datetime_str(Motion_Event_Date)
    del DateObj

    #Start Capturing Video
    File_Path = capture_MP4_Video(File_Name,
                                  int(PIR_MOTION_STATUS_HOLD_TIME) - 2)
Ejemplo n.º 17
0
import sqlite3
import inspect, os
from settings.parseSettings import get_Settings

DB_Settings = get_Settings('DATABASE')

DB_Dir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) 
DB_File = "UserDB"

class DatabaseManager():
	def __init__(self):
		self.conn = sqlite3.connect(DB_File)
		self.conn.execute('pragma foreign_keys = on')
		self.conn.commit()
		self.cur = self.conn.cursor()
		
	def query_records(self, sql_query, args=(), single_record=False):
		records = []
		self.cur.execute(sql_query, args)
		if single_record == True:
			records = self.cur.fetchone()
		else:
			records = self.cur.fetchall()			
		col_names = list(map(lambda x: x[0], self.cur.description))
		return records, col_names
		
	def add_del_update_db_record(self, sql_query, args=()):
		self.cur.execute(sql_query, args)
		self.conn.commit()
		return