This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm that you accept these cookies being set.

problem with 4g modem
#8
You have the same code in the resident script twice, this can lead to errors. You've also commented out all alerts so there's no way of knowing if the script is working or not.

Replace your resident script with this and post what you get in alerts:
Code:
-- init
if not numbers then
  require('user.sms')
  require('json')
  require('socket')

  -- allowed numbers, SMS from other numbers will be ignored
  numbers = { '3332958126' }

  -- port number depends on modem model
  comport = 'ttyACM3'
  doreset = false -- set to true if USB reset is required before starting any communication

  -- if SIM PIN is enabled, uncomment the line below and replace 0000 with SIM PIN
  -- pincode = '0000'

  -- command parser
  parser = function(cmd, sender)
    local find, pos, name, mode, offset, value, dvalue, obj, message

    cmd = cmd:trim()
    mode = cmd:sub(1, 1):upper()

    -- invalid request
    if mode ~= 'W' and mode ~= 'R' then
      return
    end

    cmd = cmd:sub(3):trim()

    -- parse object name/address
    find = cmd:sub(1, 1) == '"' and '"' or ' '
    offset = find == '"' and 1 or 0

    -- pad with space when in read mode
    if mode == 'R' and find == ' ' then
      cmd = cmd .. ' '
    end

    -- find object name
    pos = cmd:find(find, 1 + offset, true)

    -- name end not found, stop
    if not pos then
      return
    end

    -- get name part
    name = cmd:sub(1 + offset, pos - offset):trim()

    if mode == 'W' then
      value = cmd:sub(pos + offset):trim()

      if #value > 0 then
        -- try decoding value
        dvalue = json.pdecode(value)
        if dvalue ~= nil then
          value = dvalue
        end

        -- send to bus
        grp.write(name, value)
      end
    -- read request
    else
      obj = grp.find(name)

      -- object not known
      if not obj then
        return
      end

      -- send read request and wait for an update
      obj:read()
      os.sleep(1)

      -- read new value
      value = grp.getvalue(name)

      -- got no value
      if value == nil then
        return
      end

      -- add object name if specified
      if obj.name then
        name = string.format('%s (%s)', obj.name, obj.address)
      end

      message = string.format('Value of %s is %s', name, json.encode(value))
      modem:sendsms('+' .. sender, message)
    end
  end

  -- incoming sms handler
  handler = function(sms)
    --alert('incoming sms: [%s] %s', tostring(sms.sender), tostring(sms.data))
    -- sms from known number, call parser
    if table.contains(numbers, sms.sender) then
      --parser(sms.data, sms.sender)
    end
  end

  -- check local udp server for messages to send
  udphandler = function(server)
    -- check for local sms to send
    local msg = server:receive()
    -- got no message
    if not msg then
      return
    end

    -- split into number and message
    local sep = msg:find(' ')
    if not sep then
      return
    end

    alert('sending sms: ' .. msg)
    modem:sendsms(msg:sub(1, sep - 1), msg:sub(sep + 1))
  end
end

-- handle data from modem
if modem then
  if modem:run() then
    udphandler(server)
  else
    alert('SMS handler lost connection')
    modem:reinit()
  end
-- modem init
else
  alert('SMS handler init')
  -- open serial port
  modem = AT:init('/dev/' .. comport, doreset)

  -- init ok
  if modem then
    -- set sms handler
    modem:setsmshandler(handler)

    -- send pin if set
    if pincode then
      modem:send('AT+CPIN=' .. pincode)
      modem:read()
    end

    -- set to pdu mode
    modem:send('AT+CMGF=0')
    -- enable sms notifications
    modem:send('AT+CNMI=1,1,0,0,0')
    -- fixup encoding
    modem:send('AT+CSCS="GSM"')
    -- delete all saved messages
    modem:send('AT+CMGD=1,4')

    -- local udp server for sending sms
    server = socket.udp()
    server:setsockname('127.0.0.1', 12535)
    server:settimeout(0.1)

    alert('SMS handler started')
  -- init failed
  else
    alert('SMS USB init failed')
  end
end
Reply


Messages In This Thread
problem with 4g modem - by Frank68 - 31.01.2022, 14:03
RE: problem with 4g modem - by admin - 31.01.2022, 15:30
RE: problem with 4g modem - by Frank68 - 31.01.2022, 16:05
RE: problem with 4g modem - by admin - 01.02.2022, 08:20
RE: problem with 4g modem - by Frank68 - 01.02.2022, 12:12
RE: problem with 4g modem - by admin - 01.02.2022, 12:18
RE: problem with 4g modem - by Frank68 - 01.02.2022, 12:24
RE: problem with 4g modem - by admin - 01.02.2022, 13:35
RE: problem with 4g modem - by Frank68 - 01.02.2022, 14:54
RE: problem with 4g modem - by admin - 01.02.2022, 14:56
RE: problem with 4g modem - by Frank68 - 01.02.2022, 15:08
RE: problem with 4g modem - by admin - 02.02.2022, 09:13
RE: problem with 4g modem - by Frank68 - 02.02.2022, 09:23
RE: problem with 4g modem - by admin - 02.02.2022, 09:24
RE: problem with 4g modem - by admin - 02.02.2022, 09:53
RE: problem with 4g modem - by Frank68 - 02.02.2022, 09:54
RE: problem with 4g modem - by Frank68 - 02.02.2022, 14:06
RE: problem with 4g modem - by admin - 03.02.2022, 07:27
RE: problem with 4g modem - by Frank68 - 03.02.2022, 07:32

Forum Jump: