Ejemplo n.º 1
0
def write_sms_to_outbox(sms_msg, pb_id=None, send_status=0):
    query = ("INSERT INTO smsoutbox (ts_written,pb_id,sms_msg,"
             "send_status) VALUES ")

    tsw = dt.today().strftime("%Y-%m-%d %H:%M:%S")

    mc = common.get_mc_server()
    inv_pb_names = mc.get('phonebook_inv')

    # default send to server if sim_num is empty
    if not pb_id:
        #mc = common.get_mc_server()
        s_conf = common.get_config_handle()

        #pb_names = mc.get('pb_names')
        #sendto = s_conf['serverinfo']['sendto']

        #inv_pb_names = {v: k for k, v in pb_names.items()}
        #print inv_pb_names
        #pb_id = inv_pb_names[sendto]

        pb_id = s_conf['serverinfo']['simnum']

    pb_id = inv_pb_names[str(pb_id)]

    query += "('%s','%s','%s','%s')" % (tsw, pb_id, sms_msg, send_status)

    print(query)

    commit_to_db(query, "WriteOutboxMessageToDb")
Ejemplo n.º 2
0
def init_gsm_serial():
    gsm = serial.Serial()

    s_conf = common.get_config_handle()

    port = s_conf['gsmio']['port']
    baudrate = s_conf['gsmio']['baudrate']
    timeout = s_conf['gsmio']['timeout']

    gsm.port = port
    gsm.baudrate = baudrate
    gsm.timeout = timeout

    count = 0
    while gsm.isOpen():
        print 'GSM is busy...'
        time.sleep(10)
        count += 1
        if count == 10:
            print 'Force close gsm serial'
            gsm.close()
            break

    gsm.open()

    return gsm
Ejemplo n.º 3
0
def power_gsm(mode="ON"):
    print ">> Power GSM", mode
    # reset_pin = common.get_config_handle()['gsmio']['reset_pin']
    sconf = common.get_config_handle()
    reset_pin = sconf['gsmio']['resetpin']
    stat_pin = sconf['gsmio']['statpin']

    GPIO.setmode(GPIO.BOARD)
    GPIO.setup(reset_pin, GPIO.OUT)
    GPIO.setup(stat_pin, GPIO.IN)

    if mode == "ON":
        exit_stat = 1
    else:
        exit_stat = 0

    print exit_stat, GPIO.input(stat_pin)

    now = time.time()

    if GPIO.input(stat_pin) == exit_stat:
        print 'already in %s mode' % (mode)
        return True
    else:
        GPIO.output(reset_pin, True)
        while GPIO.input(stat_pin) != exit_stat and time.time()<now+10:
            time.sleep(0.2)

        GPIO.output(reset_pin, False)

        if time.time()>10:
            return False
        else:
            return True
Ejemplo n.º 4
0
def set_system_time():
    now = time.time()

    pmod = serial.Serial()
    sc = common.get_config_handle()
    print 'Initializing power module', sc['pmm']['port']
    pmod.port = sc['pmm']['port']
    pmod.baudrate = sc['pmm']['baud']
    pmod.open()

    pmod.write("PM+R\r")

    a = pmod.readline()
    print a

    try:
        a = re.sub(r'\W+', '', a)
        print "I got time"
        print a

        dtnow = dt.strptime(a, "%y%m%d%H%M%S")
        print "Time is"
        print dt.now().strftime("%c")

        subprocess.call(["date", "-s", dtnow.strftime("%c")])

    except ValueError:
        print "Error in processing time"
        f = open('timelog.txt', 'a')
        f.write("no time\r\n")
        f.close()
Ejemplo n.º 5
0
def reset_gsm(delay=45):
    print(">> Resetting GSM Module")

    mc = common.get_mc_server()
    mc.set('rst_gsm_done', False)

    #SIM800L
    try:
        raise CustomGSMResetException
        reply = gsmcmd('AT+CPOWD=1')
        print(">> Waiting GSM Reboot")
        print(delay)
        time.sleep(delay)
    except CustomGSMResetException:
        print(">> Hard Reset Initialized")
        sconf = common.get_config_handle()
        reset_pin = sconf['gsmio']['resetpin']

        GPIO.setmode(GPIO.BOARD)
        GPIO.setup(reset_pin, GPIO.OUT)

        GPIO.output(reset_pin, False)
        time.sleep(0.2)
        GPIO.output(reset_pin, True)
        print(delay)
        time.sleep(delay)

    mc.set('rst_gsm_done', True)

    return
Ejemplo n.º 6
0
def init_gsm(delay=45):
    print('Connecting to GSM modem')

    mc = common.get_mc_server()
    mc.set('init_gsm_done', False)

    gsm = init_gsm_serial()

    reset_gsm(delay)

    print("Initializing ...")
    gsm.write(('AT\r\n').encode())
    time.sleep(0.5)
    gsm.write(('AT\r\n').encode())
    time.sleep(0.5)
    print('Switching to no-echo mode', gsmcmd('ATE0').strip('\r\n'))
    print('Switching to text mode', gsmcmd('AT+CMGF=1').rstrip('\r\n'))

    try:
        sconf = common.get_config_handle()
        simnetconfig = 'AT+COPS=1,1,"{}"'.format(sconf['coordinfo']['simnet'])
        print('Connecting manually to network',
              gsmcmd(simnetconfig).rstrip('\r\n'))
    except:
        print(">> Error connecting to sim network")

    mc.set('init_gsm_done', True)
    gsm.close()
Ejemplo n.º 7
0
def routine(xbee=None):

    if not xbee:
        xbee = get_xbee_handle()

    #reset(xbee)

    power_off(xbee)
    time.sleep(5)
    power_on(xbee)
    time.sleep(5)
    rssi_info = get_rssi(xbee)
    time.sleep(2)
    transmit_time(xbee)

    #wakeup(xbee)

    sc = common.get_config_handle()

    signal.signal(signal.SIGALRM, signal_handler)
    signal.alarm(sc['xbee']['sampletimeout'])

    # try:
    router_tsm_msgs, voltage_info = receive(xbee)
    # except KeyboardInterrupt:
    # print '>> Uesr timeout!'

    # for key in router_tsm_msgs.keys():
    # 	for msg in router_tsm_msgs[key].split(",")[:-1]:
    # 		# msg_cleaned = re.sub('[^A-Zxyabc0-9\*]',"",msg)
    # 		# print msg_cleaned
    # 		print msg
    # 		common.save_sms_to_memory(msg)

    # rssi and voltage message
    sc = common.get_config_handle()
    site_code = sc['coordinfo']['name']
    rssi_msg = "GATEWAY*RSSI,%s" % (site_code)
    for key in list(rssi_info.keys()):
        try:
            rssi_msg += ",%s,%s,%s" % (key, rssi_info[key], voltage_info[key])
        except KeyError:
            rssi_msg += ",%s,%s,," % (key, rssi_info[key])
    rssi_msg += dt.now().strftime("*%y%m%d%H%M%S")
    print(rssi_msg)
    common.save_sms_to_memory(rssi_msg)
    power_off(xbee)
Ejemplo n.º 8
0
def get_xbee_handle():
    sc = common.get_config_handle()

    try:
        ser = serial.Serial(sc['xbee']['port'], sc['xbee']['baud'])
        xbee = ZigBee(ser, escaped=True)
    except serial.serialutil.SerialException:
        print('>> Error: No serial port')
        # send error message to server here
        sys.exit()

    return xbee
Ejemplo n.º 9
0
def main():
    sconf = common.get_config_handle()
    ri_pin = sconf['gsmio']['ripin']
    GPIO.setmode(GPIO.BOARD)
    GPIO.setup(ri_pin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
    GPIO.add_event_detect(ri_pin,
                          GPIO.FALLING,
                          callback=ring_isr,
                          bouncetime=3000)

    while True:
        time.sleep(100000)
Ejemplo n.º 10
0
def db_connect():
    s_conf = common.get_config_handle()

    while True:
        try:
            db = MySQLdb.connect(host=s_conf['localdb']['host'],
                                 user=s_conf['localdb']['user'],
                                 passwd=s_conf['localdb']['password'],
                                 db=s_conf['localdb']['dbname'])
            cur = db.cursor()
            return db, cur
        except MySQLdb.OperationalError:
            print('6.', end=' ')
            time.sleep(2)
Ejemplo n.º 11
0
def reset_gsm():
    print ">> Resetting GSM Module"

    mc = common.get_mc_server()
    mc.set('rst_gsm_done',False)

    #SIM800L
    sconf = common.get_config_handle()
    reset_pin = sconf['gsmio']['resetpin']

    GPIO.setmode(GPIO.BOARD)
    GPIO.setup(reset_pin, GPIO.OUT)

    GPIO.output(reset_pin, False)
    time.sleep(0.5)
    GPIO.output(reset_pin, True)
    time.sleep(45)

    mc.set('rst_gsm_done',True)

    return
Ejemplo n.º 12
0
def get_network_info():
    sc = common.get_config_handle()
    # mc = common.get_mc_server()
    site_code = sc['coordinfo']['name']

    # get info from mysql tables
    query = ("select r.name, r.xbee_addr_short, r.xbee_addr_long from "
             "gateways g inner join routers r on g.gateway_id = r.gateway_id "
             "where g.code = '%s';") % (site_code)

    router_info = dbio.query_database(query, "gni")

    # print router_info

    # routers = pd.DataFrame(columns = ['name','addr_short','addr_long'])

    network_info = {}
    network_info['site_code'] = site_code
    network_info['router_name_by_addr_long'] = {}
    network_info['router_name_by_addr_short'] = {}
    network_info['addr_short_list'] = []
    network_info['addr_long_list'] = []
    network_info['router_addr_long_by_name'] = {}
    network_info['router_addr_short_by_name'] = {}

    for name, addr_short, addr_long in router_info:
        addr_long_packed = struct.pack('>q', int(addr_long, 16))
        network_info['router_name_by_addr_long'][addr_long_packed] = name
        network_info['router_name_by_addr_short'][addr_short] = name
        network_info['addr_short_list'].append(addr_short)
        network_info['addr_long_list'].append(addr_long_packed)
        network_info['router_addr_long_by_name'][name] = addr_long_packed
        network_info['router_addr_short_by_name'][name] = addr_short

    print(network_info)
    common.mc.set('network_info', network_info)
Ejemplo n.º 13
0
def listen(xbee):
    sc = common.get_config_handle()
    signal.signal(signal.SIGALRM, signal_handler)
    signal.alarm(sc['xbee']['utslidartimeout'])

    router_tsm_msgs, voltage_info = receive(xbee)
Ejemplo n.º 14
0
# from gsmSerialio import *
import configparser, os, sys, subprocess
from datetime import datetime as dt
from crontab import CronTab
import gsmio
import common
import processcontrol as pctrl
import dbio
import subprocess

mc = common.get_mc_server()
sconf = common.get_config_handle()


def gateway_initialize():
    common.main()


def change_server_number(row):
    cfg = common.read_cfg_file()

    args = row['msg'].split()

    try:
        number = args[2]
    except IndexError:
        reply = "Insufficient arguments."
        common.save_sms_to_memory(reply, row['contact_id'])
        return

    print("Changing server num")
Ejemplo n.º 15
0
def create_startup_message():
    sc = common.get_config_handle()
    ts = dt.today().strftime("%c")
    common.save_sms_to_memory("%s SUCCESSFUL SYSTEM STARTUP at %s" %
                              (sc['coordinfo']['name'], ts))