This repository has been archived by the owner on Feb 16, 2024. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 41
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #103 from DewGew/beta
Merge Beta
Showing
9 changed files
with
956 additions
and
852 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,90 +1,89 @@ | ||
import os | ||
import sys | ||
from pathlib import Path | ||
import socketserver | ||
|
||
from const import PUBLIC_URL | ||
from server import * | ||
from auth import * | ||
from smarthome import * | ||
from helpers import configuration | ||
from const import VERSION, PUBLIC_URL | ||
|
||
if 'ngrok_tunnel' in configuration and configuration['ngrok_tunnel'] == True: | ||
from pyngrok import ngrok | ||
|
||
tunnel = PUBLIC_URL | ||
|
||
|
||
class ThreadingSimpleServer(socketserver.ThreadingMixIn, http.server.HTTPServer): | ||
pass | ||
|
||
def requestDevicesSync(): | ||
SmartHomeReqHandler.forceDevicesSync() | ||
|
||
|
||
|
||
def startServer(): | ||
global tunnel | ||
# Create tunnel if ngrok_tunnel set to true | ||
if 'ngrok_tunnel' in configuration and configuration['ngrok_tunnel'] == True: | ||
if 'ngrok_tunnel' in configuration and configuration['ngrok_tunnel'] is True: | ||
try: | ||
if 'ngrok_auth_token' in configuration and configuration['ngrok_auth_token'] != 'auth_token': | ||
ngrok.set_auth_token(configuration['ngrok_auth_token']) | ||
else: | ||
logger.info('If you use the ngrok tunnel option without account the tunnel will be terminated after 5 or 6 hours') | ||
logger.info( | ||
'If you use the ngrok tunnel option without account the tunnel will be terminated after 5 or 6 hours') | ||
public_url = ngrok.connect(configuration['port_number']) | ||
tunnel = public_url.replace("http", "https") | ||
except Exception as e: | ||
logger.error ('Ngrok was unable to start. Error: %s is not valid' % (e)) | ||
except Exception as err: | ||
logger.error('Ngrok was unable to start. Error: %s is not valid' % err) | ||
try: | ||
# Create a web server and define the handler to manage the | ||
# incoming request | ||
server = ThreadingSimpleServer(('', configuration['port_number']), AogServer) | ||
logger.info ('========') | ||
logger.info ('Started DZGA v' + VERSION + ' server at port ' + str(configuration['port_number'])) | ||
logger.info (' ') | ||
if 'userinterface' in configuration and configuration['userinterface'] == True: | ||
logger.info (' Visit http://localhost:' + str(configuration['port_number']) + '/settings to access the user interface') | ||
logger.info('========') | ||
logger.info('Started DZGA v' + VERSION + ' server at port ' + str(configuration['port_number'])) | ||
logger.info(' ') | ||
if 'userinterface' in configuration and configuration['userinterface'] is True: | ||
logger.info(' Visit http://localhost:' + str( | ||
configuration['port_number']) + '/settings to access the user interface') | ||
else: | ||
logger.info (' Configure your settings in config.yaml in Domoticz-Google-Assistant folder') | ||
logger.info (' ') | ||
logger.info(' Configure your settings in config.yaml in Domoticz-Google-Assistant folder') | ||
logger.info(' ') | ||
logger.info('=========') | ||
logger.info ('Visit the Actions on Google console at http://console.actions.google.com') | ||
logger.info ('Under Develop section, replace the fulfillment URL in Actions with:') | ||
logger.info (' ' + tunnel + '/smarthome') | ||
logger.info (' ') | ||
logger.info ('In Account linking, set the Authorization URL to:') | ||
logger.info (' ' + tunnel + '/oauth') | ||
logger.info (' ') | ||
logger.info ('Then set the Token URL to:') | ||
logger.info (' ' + tunnel + '/token') | ||
logger.info (' ') | ||
logger.info ('Finally press \'SAVE\' and then \'TEST\' button') | ||
if 'ngrok_tunnel' in configuration and configuration['ngrok_tunnel'] == True: | ||
logger.info ('** NOTE: Ngrok assigns random urls. When server restart the server gets a new url') | ||
logger.info ('=======') | ||
logger.info('Visit the Actions on Google console at http://console.actions.google.com') | ||
logger.info('Under Develop section, replace the fulfillment URL in Actions with:') | ||
logger.info(' ' + tunnel + '/smarthome') | ||
logger.info(' ') | ||
logger.info('In Account linking, set the Authorization URL to:') | ||
logger.info(' ' + tunnel + '/oauth') | ||
logger.info(' ') | ||
logger.info('Then set the Token URL to:') | ||
logger.info(' ' + tunnel + '/token') | ||
logger.info(' ') | ||
logger.info('Finally press \'SAVE\' and then \'TEST\' button') | ||
if 'ngrok_tunnel' in configuration and configuration['ngrok_tunnel'] is True: | ||
logger.info('** NOTE: Ngrok assigns random urls. When server restart the server gets a new url') | ||
logger.info('=======') | ||
print("(Press CTRL+C to stop server)") | ||
# Sync with domoticz at startup | ||
try: | ||
getDevices() | ||
getSettings() | ||
except: | ||
except (ValueError, Exception): | ||
pass | ||
# Exit if running on travis | ||
istravis = os.environ.get('TRAVIS') == 'true' | ||
if istravis == True: | ||
if istravis: | ||
logger.info('Travis test is finished') | ||
exit() | ||
# Wait forever for incoming http requests | ||
server.serve_forever() | ||
|
||
except (KeyboardInterrupt, SystemExit): | ||
print() | ||
logger.info ('^C received, shutting down the web server') | ||
logger.info('^C received, shutting down the web server') | ||
server.socket.close() | ||
|
||
|
||
if __name__ == "__main__": | ||
# Execute only if run as a script | ||
|
||
for path,value in {**oauthGetMappings, **smarthomeGetMappings}.items(): | ||
for path, value in {**oauthGetMappings, **smarthomeGetMappings}.items(): | ||
addGetMappings(path, value) | ||
for path,value in {**oauthPostMappings, **smarthomePostMappings}.items(): | ||
|
||
for path, value in {**oauthPostMappings, **smarthomePostMappings}.items(): | ||
addPostMappings(path, value) | ||
|
||
startServer() |
Oops, something went wrong.