class PBEventHandler: def __init__(self): self.KEY = KEY self.HIST_FILE = HIST_FILE self.pb = PushBullet(KEY) self.maxmod = float(0) self.iden = None self._sync_maxmod() self._sync_maxmod(self._get_modified()) devices = self.pb.getDevices() for device in devices: if device['nickname'] == DEVICE: self.iden = device['iden'] break def _get_modified(self): return self.pb.getPushHistory(self.maxmod) def _sync_maxmod(self, pushes = []): for push in pushes: if float(push['modified']) > self.maxmod: self.maxmod = float(push['modified']) n = float(self.maxmod) try: fn = float(open(self.HIST_FILE).read()) + 0.01 except: fn = 0 fn = max(float(n), float(fn)) open(self.HIST_FILE, "w").write(str(fn)) self.maxmod = float(fn) def _event(self, data, callback): if data['type'] == 'tickle' and data['subtype'] == 'push': pushes = self.pb.getPushHistory(self.maxmod) for push in pushes: if push['modified'] > self.maxmod: self.maxmod = push['modified'] self._sync_maxmod() if self.iden != None and\ push['target_device_iden'] != self.iden: continue try: callback(push) except: pass def run(self, callback): def __event(data): print "event: " + str(data) self._event(data, callback) self.pb.realtime(__event)
def getDevices(args): p = PushBullet(args.api_key) devices = p.getDevices() if args.json: print(json.dumps(devices)) return for device in devices: print("%s %s %s" % (device["iden"], device["manufacturer"], device["model"]))
def send_note(title, body): '''Sends Pushbullet notification to all mobile devices linked to your account. The account details are derived from PUSHBULLET_API_KEY provided in private.py. Title and body text must be provided. ''' if type(private.PUSHBULLET_API_KEY) != iter: private.PUSHBULLET_API_KEY = [private.PUSHBULLET_API_KEY] for key in private.PUSHBULLET_API_KEY: p = PushBullet(key) devices = p.getDevices() for d in devices: if d['icon'] == 'phone': p.pushNote(d['iden'], title=title, body=body)
def getDevices(args): p = PushBullet(args.api_key) try: devices = p.getDevices() except HTTPError: _, e, _ = sys.exc_info() print("The server couldn\'t fulfill the request.") print("Error code: %s" % (e.code)) except URLError: _, e, _ = sys.exc_info() print("We failed to reach a server.") print("Reason: %s" % (e.reason)) else: if args.json: print(devices) return for device in devices: if "nickname" in device["extras"]: print("%s %s" % (device["id"], device["extras"]["nickname"])) else: print("%s %s %s" % (device["id"], device["extras"]["manufacturer"], device["extras"]["model"]))
import socket import sys import pushbullet from pushbullet import PushBullet from socket import socket, SOCK_DGRAM, AF_INET #getting IP address s = socket(AF_INET, SOCK_DGRAM) s.connect(('google.com', 0))#using Google since it's pretty well always reachable IP = s.getsockname()[0] #grab IP portion #Make sure to put your api key here to work! apiKey = "YOUR_API_KEY_HERE" #create pushbullet obj and get list of devices pb = PushBullet(apiKey) devices = pb.getDevices() #push IP to device! pb.pushNote(devices[0]["id"], "IP Address", IP)
from imutils.video import VideoStream from pushbullet import PushBullet # Inisialisasi variabel counter, label dan tanggal inc = 0 label = "Init" intercept = [None, None] frameIntercept = [None, None, None, None, None, None, None, None] frameCount = 0 # Token untuk PushBullet token = 'o.ddpV3vtIXKx3vRVPbeoDaI2rsyGzHAvx' # Setting untuk PushBullet p = PushBullet(token) devices = p.getDevices() contacts = p.getContacts() # Fungsi untuk mendeteksi apakah memakai masker def deteksi_masker(frame, faceNet, maskNet): (h, w) = frame.shape[:2] blob = cv2.dnn.blobFromImage(frame, 1.0, (224, 224), (104.0, 177.0, 123.0)) faceNet.setInput(blob) detections = faceNet.forward() faces = [] locs = [] preds = []
#!/usr/bin/python import RPi.GPIO as GPIO import time import picamera import datetime from pushbullet import PushBullet import os apiKey = "" p = PushBullet(apiKey) devices = p.getDevices() def removeoldpics(): os.remove(fileName) def getFileName(): return datetime.datetime.now().strftime ("%Y-%m-%d_%H.%M.%S.jpg") sensorPin = 7 GPIO.setmode(GPIO.BOARD) GPIO.setup(sensorPin, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) prevState = False currState = False cam = picamera.PiCamera() while True:
class Pushbullet(AgoAlert): """Class for push message sending for ios and android @info https://www.pushbullet.com """ def __init__(self, apikey, devices): """Constructor""" AgoAlert.__init__(self) global client self.name = 'pushbullet' self.pushbullet = None self.apikey = apikey if len(devices)==0: self.devices = [] else: self.devices = json.loads(devices) self.pbdevices = {} self.pushTitle = 'Agocontrol' if apikey and len(apikey)>0 and devices and len(devices)>0: self.__configured = True self.pushbullet = PushBullet(self.apikey) client.emit_event('alertcontroller', "event.device.statechanged", STATE_PUSH_CONFIGURED, "") else: self.__configured = False client.emit_event('alertcontroller', "event.device.statechanged", STATE_PUSH_NOT_CONFIGURED, "") def getConfig(self): configured = 0 if self.__configured: configured = 1 return {'configured':configured, 'apikey':self.apikey, 'devices':self.devices, 'provider':self.name} def getPushbulletDevices(self, apikey=None): """request pushbullet to get its devices""" if not self.__configured and not apikey: logging.error('Pushbullet: unable to get devices. Not configured and no apikey specified') return {} if apikey: self.pushbullet = PushBullet(apikey) devices = [] if self.pushbullet: devs = self.pushbullet.getDevices() logging.debug('pushbullet devs=%s' % str(devs)) for dev in devs: name = '%s %s (%s)' % (dev['extras']['manufacturer'], dev['extras']['model'], dev['id']) self.pbdevices[name] = {'name':name, 'id':dev['id']} devices.append(name) else: logging.error('Pushbullet: unable to get devices because not configured') return devices def setConfig(self, apikey, devices): """set config @param apikey: pushbullet apikey (available on https://www.pushbullet.com/account) @param devices: array of devices (id) to send notifications """ if not apikey or len(apikey)==0 or not devices or len(devices)==0: logging.error('Pushbullet: all parameters are mandatory') return False if not agoclient.set_config_option('push', 'provider', 'pushbullet','alert') or not agoclient.set_config_option('pushbullet', 'apikey', apikey, 'alert') or not agoclient.set_config_option('pushbullet', 'devices', json.dumps(devices), 'alert'): logging.error('Pushbullet: unable to save config') return False self.apikey = apikey self.devices = devices self.pbdevices = {} self.pushbullet = PushBullet(self.apikey) self.__configured = True client.emit_event('alertcontroller', "event.device.statechanged", STATE_PUSH_CONFIGURED, "") return True def addPush(self, message, file=None): """Add push @param message: push notification @file: full file path to send""" if self.__configured: #check params if not message or len(message)==0: if not file or len(file)==0: logging.error('Pushbullet: Unable to add push (at least one parameter is mandatory)') return False elif not file or len(file)==0: if not message or len(message)==0: logging.error('Pushbullet: Unable to add push (at least one parameter is mandatory)') return False if message==None: message = '' if file==None: file = '' #queue push message self._addMessage({'message':message, 'file':file}) return True else: logging.error('Pushover: unable to add message because not configured') return False def _send_message(self, message): #get devices from pushbullet if necessary if len(self.pbdevices)==0: self.getPushbulletDevices() #push message for device in self.devices: #get device id if self.pbdevices.has_key(device): if len(message['file'])==0: #send a note resp = self.pushbullet.pushNote(self.pbdevices[device]['id'], self.pushTitle, message['message']) logging.info(resp) else: #send a file resp = self.pushbullet.pushFile(self.pbdevices[device]['id'], message['file']) else: logging.warning('Pushbullet: unable to push notification to device "%s" because not found' % (device))
class Pushbullet(AgoAlert): """Class for push message sending for ios and android @info https://www.pushbullet.com """ def __init__(self, apikey, devices): """Constructor""" AgoAlert.__init__(self) global client self.name = 'pushbullet' self.pushbullet = None self.apikey = apikey if len(devices)==0: self.devices = [] else: self.devices = json.loads(devices) self.pbdevices = {} self.pushTitle = 'Agocontrol' if apikey and len(apikey)>0 and devices and len(devices)>0: self.__configured = True self.pushbullet = PushBullet(self.apikey) client.emitEvent('alertcontroller', "event.device.statechanged", STATE_PUSH_CONFIGURED, "") else: self.__configured = False client.emitEvent('alertcontroller', "event.device.statechanged", STATE_PUSH_NOT_CONFIGURED, "") def getConfig(self): configured = 0 if self.__configured: configured = 1 return {'configured':configured, 'apikey':self.apikey, 'devices':self.devices, 'provider':self.name} def getPushbulletDevices(self, apikey=None): """request pushbullet to get its devices""" if not self.__configured and not apikey: logging.error('Pushbullet: unable to get devices. Not configured and no apikey specified') return {} if apikey: self.pushbullet = PushBullet(apikey) devices = [] if self.pushbullet: devs = self.pushbullet.getDevices() logging.debug('pushbullet devs=%s' % str(devs)) for dev in devs: name = '%s %s (%s)' % (dev['extras']['manufacturer'], dev['extras']['model'], dev['id']) self.pbdevices[name] = {'name':name, 'id':dev['id']} devices.append(name) else: logging.error('Pushbullet: unable to get devices because not configured') return devices def setConfig(self, apikey, devices): """set config @param apikey: pushbullet apikey (available on https://www.pushbullet.com/account) @param devices: array of devices (id) to send notifications """ if not apikey or len(apikey)==0 or not devices or len(devices)==0: logging.error('Pushbullet: all parameters are mandatory') return False if not agoclient.setConfigOption('push', 'provider', 'pushbullet','alert') or not agoclient.setConfigOption('pushbullet', 'apikey', apikey, 'alert') or not agoclient.setConfigOption('pushbullet', 'devices', json.dumps(devices), 'alert'): logging.error('Pushbullet: unable to save config') return False self.apikey = apikey self.devices = devices self.pbdevices = {} self.pushbullet = PushBullet(self.apikey) self.__configured = True client.emitEvent('alertcontroller', "event.device.statechanged", STATE_PUSH_CONFIGURED, "") return True def addPush(self, message, file): """Add push @param message: push notification @file: full file path to send""" if self.__configured: #check params if not message or len(message)==0: if not file or len(file)==0: logging.error('Pushbullet: Unable to add push (at least one parameter is mandatory)') return False elif not file or len(file)==0: if not message or len(message)==0: logging.error('Pushbullet: Unable to add push (at least one parameter is mandatory)') return False if message==None: message = '' if file==None: file = '' #queue push message self._addMessage({'message':message, 'file':file}) return True else: logging.error('Pushover: unable to add message because not configured') return False def _sendMessage(self, message): #get devices from pushbullet if necessary if len(self.pbdevices)==0: self.getPushbulletDevices() #push message for device in self.devices: #get device id if self.pbdevices.has_key(device): if len(message['file'])==0: #send a note resp = self.pushbullet.pushNote(self.pbdevices[device]['id'], self.pushTitle, message['message']) logging.info(resp) else: #send a file resp = self.pushbullet.pushFile(self.pbdevices[device]['id'], message['file']) else: logging.warning('Pushbullet: unable to push notification to device "%s" because not found' % (device))