def __init__(self, sh, *args, **kwargs): global paired_nukis global nuki_event_items global nuki_action_items global nuki_door_items global nuki_battery_items global lock global request_queue if '.'.join(VERSION.split('.', 2)[:2]) <= '1.5': self.logger = logging.getLogger(__name__) self._base_url = self.get_parameter_value( 'protocol') + '://' + self.get_parameter_value( 'bridge_ip') + ":" + str( self.get_parameter_value('bridge_port')) + '/' self._token = self.get_parameter_value('bridge_api_token') self._action = '' self._noWait = self.get_parameter_value('no_wait') self.items = Items.get_instance() if not self.init_webinterfaces(): self._init_complete = False self._callback_ip = self.mod_http.get_local_ip_address( ) # get_parameter_value('bridge_callback_ip') self._callback_port = self.mod_http.get_local_servicesport( ) # get_parameter_value('bridge_callback_port') if self._callback_ip is None: # 0.0.0.0 or empty means "all network interfaces" or self._callback_ip in ['0.0.0.0', '']: self._callback_ip = Utils.get_local_ipv4_address() if not self._callback_ip: self.logger.critical( "Plugin '{}': Could not fetch internal ip address. Set it manually!" .format(self.get_shortname())) self.alive = False return self.logger.info( "Plugin '{pluginname}': using local ip address {ip}".format( pluginname=self.get_shortname(), ip=self._callback_ip)) else: self.logger.info( "Plugin '{pluginname}': using given ip address {ip}".format( pluginname=self.get_shortname(), ip=self._callback_ip)) self._callback_url = "http://{ip}:{port}/nuki_callback/".format( ip=self._callback_ip, port=self._callback_port) self._lockActions = [ 1, # unlock 2, # lock 3, # unlatch 4, # lockAndGo 5, # lockAndGoWithUnlatch ] self.init_webinterface()
def system_html(self): # now = datetime.datetime.now().strftime('%d.%m.%Y %H:%M') now = self.plugin.shtime.now().strftime('%d.%m.%Y %H:%M') system = platform.system() vers = platform.version() # node = platform.node() node = socket.getfqdn() arch = platform.machine() user = pwd.getpwuid(os.geteuid()).pw_name # os.getlogin() ip = Utils.get_local_ipv4_address() ipv6 = Utils.get_local_ipv6_address() space = os.statvfs(self._sh_dir) freespace = space.f_frsize * space.f_bavail / 1024 / 1024 # return host uptime uptime = time.mktime(datetime.datetime.now().timetuple()) - psutil.boot_time() days = uptime // (24 * 3600) uptime = uptime % (24 * 3600) hours = uptime // 3600 uptime %= 3600 minutes = uptime // 60 uptime %= 60 seconds = uptime uptime = self.age_to_string(days, hours, minutes, seconds) # return SmarthomeNG runtime rt = str(self._sh.runtime()) daytest = rt.split(' ') if len(daytest) == 3: days = int(daytest[0]) hours, minutes, seconds = [float(val) for val in str(daytest[2]).split(':')] else: days = 0 hours, minutes, seconds = [float(val) for val in str(daytest[0]).split(':')] sh_uptime = self.age_to_string(days, hours, minutes, seconds) pyversion = "{0}.{1}.{2} {3}".format(sys.version_info[0], sys.version_info[1], sys.version_info[2], sys.version_info[3]) #python_packages = self.getpackages() #req_dict = self.get_requirements_info() return self.render_template('system.html', now=now, system=system, sh_vers=shngversion.get_shng_version(), sh_desc=shngversion.get_shng_description(), plg_vers=shngversion.get_plugins_version(), plg_desc=shngversion.get_plugins_description(), sh_dir=self._sh_dir, vers=vers, node=node, arch=arch, user=user, freespace=freespace, uptime=uptime, sh_uptime=sh_uptime, pyversion=pyversion, ip=ip, ipv6=ipv6)
def system_json(self): """ Return System inforation as json ( for Angular tests only) :return: """ # now = datetime.datetime.now().strftime('%d.%m.%Y %H:%M') now = self.plugin.shtime.now().strftime('%d.%m.%Y %H:%M') system = platform.system() vers = platform.version() # node = platform.node() node = socket.getfqdn() arch = platform.machine() user = pwd.getpwuid(os.geteuid()).pw_name # os.getlogin() ip = Utils.get_local_ipv4_address() ipv6 = Utils.get_local_ipv6_address() space = os.statvfs(self._sh_dir) freespace = space.f_frsize * space.f_bavail / 1024 / 1024 # return host uptime uptime = time.mktime( datetime.datetime.now().timetuple()) - psutil.boot_time() days = uptime // (24 * 3600) uptime = uptime % (24 * 3600) hours = uptime // 3600 uptime %= 3600 minutes = uptime // 60 uptime %= 60 seconds = uptime uptime = self.age_to_string(days, hours, minutes, seconds) # return SmarthomeNG runtime rt = str(Shtime.get_instance().runtime()) daytest = rt.split(' ') if len(daytest) == 3: days = int(daytest[0]) hours, minutes, seconds = [ float(val) for val in str(daytest[2]).split(':') ] else: days = 0 hours, minutes, seconds = [ float(val) for val in str(daytest[0]).split(':') ] sh_uptime = self.age_to_string(days, hours, minutes, seconds) pyversion = "{0}.{1}.{2} {3}".format(sys.version_info[0], sys.version_info[1], sys.version_info[2], sys.version_info[3]) #python_packages = self.getpackages() #req_dict = self.get_requirements_info() response = {} response['now'] = now response['system'] = system response['sh_vers'] = shngversion.get_shng_version() response['sh_desc'] = shngversion.get_shng_description() response['plg_vers'] = shngversion.get_plugins_version() response['plg_desc'] = shngversion.get_plugins_description() response['sh_dir'] = self._sh_dir response['vers'] = vers response['node'] = node response['arch'] = arch response['user'] = user response['freespace'] = freespace response['uptime'] = uptime response['sh_uptime'] = sh_uptime response['pyversion'] = pyversion response['ip'] = ip response['ipv6'] = ipv6 return json.dumps(response)
def systeminfo_json(self): """ Return System inforation as json ( for Angular tests only) :return: """ # now = datetime.datetime.now().strftime('%d.%m.%Y %H:%M') now = str(self.module.shtime.now()) system = platform.system() self.read_linuxinfo() vers = Utils.strip_quotes(self.os_release.get('PRETTY_NAME', '')) if vers == '': vers = platform.version() arch = platform.machine() # node = platform.node() node = socket.getfqdn() user = pwd.getpwuid(os.geteuid()).pw_name # os.getlogin() ipv6 = Utils.get_local_ipv6_address() ip = Utils.get_local_ipv4_address() space = os.statvfs(self._sh.base_dir) freespace = space.f_frsize * space.f_bavail / 1024 / 1024 rt = Shtime.get_instance().runtime_as_dict() sh_runtime_seconds = rt['total_seconds'] pyversion = "{0}.{1}.{2} {3}".format(sys.version_info[0], sys.version_info[1], sys.version_info[2], sys.version_info[3]) response = {} response['now'] = now response['ostype'] = self.get_ostype() response['system'] = system response['sh_vers'] = shngversion.get_shng_version() response['sh_desc'] = shngversion.get_shng_description() response['plg_vers'] = shngversion.get_plugins_version() response['plg_desc'] = shngversion.get_plugins_description() response['sh_dir'] = self._sh.base_dir response['vers'] = vers response['node'] = node response['arch'] = arch response['user'] = user response['freespace'] = freespace response['hardware'] = self.get_rasppi_info() if response['hardware'] == '': response['hardware'] = self.cpu_info.get('brand_raw', '') response['rasppi'] = self.running_on_rasppi() response['uptime'] = time.mktime(datetime.datetime.now().timetuple()) - psutil.boot_time() response['sh_uptime'] = sh_runtime_seconds response['pyversion'] = pyversion response['pypath'] = self._sh.python_bin response['ip'] = ip response['ipv6'] = ipv6 response['pid'] = str(lib.daemon.read_pidfile(self._sh._pidfile)) self.logger.warning("admin: systeminfo_json: response = {}".format(response)) return json.dumps(response)
def systeminfo_json(self): """ Return System inforation as json ( for Angular tests only) :return: """ # now = datetime.datetime.now().strftime('%d.%m.%Y %H:%M') now = str(self.module.shtime.now()) system = platform.system() vers = platform.version() # node = platform.node() node = socket.getfqdn() arch = platform.machine() user = pwd.getpwuid(os.geteuid()).pw_name # os.getlogin() # ipv6 = Utils.get_local_ipv6_address() ip = Utils.get_local_ipv4_address() ipv6 = '' space = os.statvfs(self._sh.base_dir) freespace = space.f_frsize * space.f_bavail / 1024 / 1024 # rt = str(self.module.shtime.runtime()) # daytest = rt.split(' ') # if len(daytest) == 3: # days = int(daytest[0]) # hours, minutes, seconds = [float(val) for val in str(daytest[2]).split(':')] # else: # days = 0 # hours, minutes, seconds = [float(val) for val in str(daytest[0]).split(':')] # sh_runtime_seconds = days * 24 * 3600 + hours * 3600 + minutes * 60 + seconds rt = Shtime.get_instance().runtime_as_dict() sh_runtime_seconds = rt['total_seconds'] pyversion = "{0}.{1}.{2} {3}".format(sys.version_info[0], sys.version_info[1], sys.version_info[2], sys.version_info[3]) response = {} response['now'] = now response['system'] = system response['sh_vers'] = shngversion.get_shng_version() response['sh_desc'] = shngversion.get_shng_description() response['plg_vers'] = shngversion.get_plugins_version() response['plg_desc'] = shngversion.get_plugins_description() response['sh_dir'] = self._sh.base_dir response['vers'] = vers response['node'] = node response['arch'] = arch response['user'] = user response['freespace'] = freespace response['uptime'] = time.mktime( datetime.datetime.now().timetuple()) - psutil.boot_time() response['sh_uptime'] = sh_runtime_seconds response['pyversion'] = pyversion response['ip'] = ip response['ipv6'] = ipv6 self.logger.debug( "admin: systeminfo_json: response = {}".format(response)) return json.dumps(response)
def __init__(self, sh, testparam=''): """ Initialization Routine for the module """ # TO DO: Shortname anders setzen (oder warten bis der Plugin Loader es beim Laden setzt self._shortname = self.__class__.__name__ self._shortname = self._shortname.lower() self.logger = logging.getLogger(__name__) self._sh = sh self.shtime = Shtime.get_instance() self.logger.debug("Module '{}': Initializing".format(self._shortname)) self.logger.debug("Module '{}': Parameters = '{}'".format( self._shortname, str(self._parameters))) # for authentication self.send_hash = 'shNG0160$' self.jwt_secret = 'SmartHomeNG$0815' try: self.mod_http = Modules.get_instance().get_module( 'http' ) # try/except to handle running in a core version that does not support modules except: self.mod_http = None if self.mod_http is None: self.logger.error( "Module '{}': Not initializing - Module 'http' has to be loaded BEFORE this module" .format(self._shortname)) self._init_complete = False return self._showtraceback = self.mod_http._showtraceback try: self.login_expiration = self._parameters['login_expiration'] self.login_autorenew = self._parameters['login_autorenew'] self.pypi_timeout = self._parameters['pypi_timeout'] self.itemtree_fullpath = self._parameters['itemtree_fullpath'] self.itemtree_searchstart = self._parameters[ 'itemtree_searchstart'] self.websocket_host = self._parameters['websocket_host'] self.websocket_port = self._parameters['websocket_port'] self.log_chunksize = self._parameters['log_chunksize'] self.developer_mode = self._parameters['developer_mode'] self.click_dropdown_header = self._parameters[ 'click_dropdown_header'] except: self.logger.critical( "Module '{}': Inconsistent module (invalid metadata definition)" .format(self._shortname)) self._init_complete = False return mysuburl = '' if suburl != '': mysuburl = '/' + suburl ip = Utils.get_local_ipv4_address() self._port = self.mod_http._port # self.logger.warning('port = {}'.format(self._port)) self.shng_url_root = 'http://' + ip + ':' + str( self._port) # for links mto plugin webinterfaces self.url_root = self.shng_url_root + mysuburl self.api_url_root = self.shng_url_root + 'api' self.api2_url_root = self.shng_url_root + 'api2'