1414# along with Jeedom. If not, see <http://www.gnu.org/licenses/>.
1515
1616import logging
17- import string
1817import sys
1918import os
2019import time
21- import datetime
2220import traceback
23- import re
2421import signal
25- from optparse import OptionParser
26- from os .path import join
2722import json
2823import argparse
2924
30- try :
31- from jeedom .jeedom import *
32- except ImportError :
33- print ("Error: importing module jeedom.jeedom" )
34- sys .exit (1 )
25+ from jeedom .jeedom import jeedom_socket , jeedom_utils , jeedom_com , JEEDOM_SOCKET_MESSAGE # jeedom_serial
26+
3527
3628def read_socket ():
37- global JEEDOM_SOCKET_MESSAGE
38- if not JEEDOM_SOCKET_MESSAGE . empty ():
39- logging . debug ( "Message received in socket JEEDOM_SOCKET_MESSAGE" )
40- message = json . loads ( jeedom_utils . stripped ( JEEDOM_SOCKET_MESSAGE . get ()))
41- if message [ ' apikey' ] != _apikey :
42- logging . error ( "Invalid apikey from socket: %s" , message )
43- return
44- try :
45- print ( 'read' )
46- except Exception as e :
47- logging . error ( 'Send command to demon error: %s' , e )
29+ if not JEEDOM_SOCKET_MESSAGE . empty ():
30+ logging . debug ( "Message received in socket JEEDOM_SOCKET_MESSAGE" )
31+ message = json . loads ( jeedom_utils . stripped ( JEEDOM_SOCKET_MESSAGE . get ()) )
32+ if message [ 'apikey' ] != _apikey :
33+ logging . error ( "Invalid apikey from socket: %s" , message )
34+ return
35+ try :
36+ print ( 'read' )
37+ except Exception as e :
38+ logging . error ( 'Send command to demon error: %s' , e )
39+
4840
4941def listen ():
50- jeedom_socket .open ()
51- try :
52- while 1 :
53- time .sleep (0.5 )
54- read_socket ()
55- except KeyboardInterrupt :
56- shutdown ()
42+ my_jeedom_socket .open ()
43+ try :
44+ while 1 :
45+ time .sleep (0.5 )
46+ read_socket ()
47+ except KeyboardInterrupt :
48+ shutdown ()
5749
58- # ----------------------------------------------------------------------------
5950
6051def handler (signum = None , frame = None ):
61- logging .debug ("Signal %i caught, exiting..." , int (signum ))
62- shutdown ()
52+ logging .debug ("Signal %i caught, exiting..." , int (signum ))
53+ shutdown ()
54+
6355
6456def shutdown ():
65- logging .debug ("Shutdown" )
66- logging .debug ("Removing PID file %s" , _pidfile )
67- try :
68- os .remove (_pidfile )
69- except :
70- pass
71- try :
72- jeedom_socket .close ()
73- except :
74- pass
75- try :
76- jeedom_serial .close ()
77- except :
78- pass
79- logging .debug ("Exit 0" )
80- sys .stdout .flush ()
81- os ._exit (0 )
82-
83- # ----------------------------------------------------------------------------
57+ logging .debug ("Shutdown" )
58+ logging .debug ("Removing PID file %s" , _pidfile )
59+ try :
60+ os .remove (_pidfile )
61+ except Exception as e :
62+ logging .warning ('Error removing PID file: %s' , e )
63+ try :
64+ my_jeedom_socket .close ()
65+ except Exception as e :
66+ logging .warning ('Error closing socket: %s' , e )
67+ # try: # if you need jeedom_serial
68+ # my_jeedom_serial.close()
69+ # except Exception as e:
70+ # logging.warning('Error closing serial: %s', e)
71+ logging .debug ("Exit 0" )
72+ sys .stdout .flush ()
73+ os ._exit (0 )
74+
8475
8576_log_level = "error"
8677_socket_port = 55009
@@ -91,19 +82,18 @@ def shutdown():
9182_callback = ''
9283_cycle = 0.3
9384
94- parser = argparse .ArgumentParser (
95- description = 'Desmond Daemon for Jeedom plugin' )
85+ parser = argparse .ArgumentParser (description = 'Desmond Daemon for Jeedom plugin' )
9686parser .add_argument ("--device" , help = "Device" , type = str )
9787parser .add_argument ("--loglevel" , help = "Log Level for the daemon" , type = str )
9888parser .add_argument ("--callback" , help = "Callback" , type = str )
9989parser .add_argument ("--apikey" , help = "Apikey" , type = str )
100- parser .add_argument ("--cycle" , help = "Cycle to send event" , type = str )
90+ parser .add_argument ("--cycle" , help = "Cycle to send event" , type = float )
10191parser .add_argument ("--pid" , help = "Pid file" , type = str )
102- parser .add_argument ("--socketport" , help = "Port for Zigbee server" , type = str )
92+ parser .add_argument ("--socketport" , help = "Port for socket server" , type = int )
10393args = parser .parse_args ()
10494
10595if args .device :
106- _device = args .device
96+ _device = args .device
10797if args .loglevel :
10898 _log_level = args .loglevel
10999if args .callback :
@@ -115,7 +105,7 @@ def shutdown():
115105if args .cycle :
116106 _cycle = float (args .cycle )
117107if args .socketport :
118- _socketport = args .socketport
108+ _socket_port = args .socketport
119109
120110_socket_port = int (_socket_port )
121111
@@ -133,10 +123,15 @@ def shutdown():
133123signal .signal (signal .SIGTERM , handler )
134124
135125try :
136- jeedom_utils .write_pid (str (_pidfile ))
137- jeedom_socket = jeedom_socket (port = _socket_port ,address = _socket_host )
138- listen ()
126+ jeedom_utils .write_pid (str (_pidfile ))
127+ my_jeedom_com = jeedom_com (apikey = _apikey , url = _callback , cycle = _cycle )
128+ if not my_jeedom_com .test ():
129+ logging .error ('Network communication issues. Please fixe your Jeedom network configuration.' )
130+ shutdown ()
131+ # my_jeedom_serial = jeedom_serial(device=_device) # if you need jeedom_serial
132+ my_jeedom_socket = jeedom_socket (port = _socket_port , address = _socket_host )
133+ listen ()
139134except Exception as e :
140- logging .error ('Fatal error: %s' , e )
141- logging .info (traceback .format_exc ())
142- shutdown ()
135+ logging .error ('Fatal error: %s' , e )
136+ logging .info (traceback .format_exc ())
137+ shutdown ()
0 commit comments