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.

LM phone call to phone number
#7
(21.08.2023, 07:36)Daniel Wrote: The message says it, If you want us to look drop full script not screenshot.

Hi, sorry. My script:

Code:
-- init -- -- if not numbers then   require('user.sms')   require('json')   require('socket')   -- allowed numbers, SMS from other numbers will be ignored   numbers = { '371xxxxxxx', '371xxxxxxx' }   -- port number depends on modem model   comport = 'ttyUSB0'   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   readcsq = function()     local res, err, reply = modem:send('AT+CSQ')     local rssi     if reply then       rssi = reply:match('%+CSQ:%s+(%d+),(%d+)')     end     rssi = tonumber(rssi) or 0     if 2 <= rssi and rssi <= 9 then       quality = 'marginal'     elseif 10 <= rssi and rssi <= 14 then       quality = 'ok'     elseif 15 <= rssi and rssi <= 19 then       quality = 'good'     elseif 20 <= rssi and rssi <= 30 then       quality = 'excellent'     else       quality = 'unknown'     end     grp.write('0/0/40', quality)  -- Modem signal level write to group   end   csqtime = os.time()   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   local num = msg:sub(1, sep - 1)   local txt = msg:sub(sep + 1)   if txt == 'CALL' then     alert('calling: ' .. num)     modem:call(num)   else     alert('sending sms: ' .. msg)     modem:sendsms(num, txt)   end     end   end -- look like this place could be correct??------------------------------------------------------------------------------- -- handle data from modem if modem then   if modem:run() then     now = os.time()     delta = math.abs(now - csqtime)     if delta >= 15 then       csqtime = now       readcsq()     end     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)     -- enable local echo     modem:send('ATE1')         -- send pin if set     if pincode then       modem:send('AT+CPIN=' .. pincode)       modem:read()     end     -- phase 2+     modem:send('AT+CSMS=1')     -- set to pdu mode     modem:send('AT+CMGF=0')     -- enable sms notifications     modem:send('AT+CNMI=1,1,0,0,1')     -- fixup encoding     modem:send('AT+CSCS="GSM"')     --modem:send('AT+CSCS="UCS2"') --not working     -- modem:send('ATD+371xxxxxxx;')    -- sleep(8)    -- modem:send('ATH')         --modem:send('AT+CSQ')     --modem:read()     -- delete all saved messages     modem:send('AT+CMGD=1')     sleep(0.2)      modem:send('AT+CMGD=2')     sleep(0.2)      modem:send('AT+CMGD=3')     sleep(0.2)      modem:send('AT+CMGD=4')     sleep(0.2)      modem:send('AT+CMGD=5')     sleep(0.2)      modem:send('AT+CMGD=6')     sleep(0.2)      modem:send('AT+CMGD=7')     sleep(0.2)      modem:send('AT+CMGD=8')     sleep(0.2)      modem:send('AT+CMGD=9')     sleep(0.2)      modem:send('AT+CMGD=10')     sleep(0.2)      modem:send('AT+CMGD=11')     sleep(0.2)      modem:send('AT+CMGD=12')     sleep(0.2)      modem:send('AT+CMGD=13')     sleep(0.2)      modem:send('AT+CMGD=14')     sleep(0.2)      modem:send('AT+CMGD=15')     sleep(0.2)      modem:send('AT+CMGD=16')     sleep(0.2)      modem:send('AT+CMGD=17')     sleep(0.2)      modem:send('AT+CMGD=18')     sleep(0.2)      modem:send('AT+CMGD=19')     sleep(0.2)      modem:send('AT+CMGD=20')     -- 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
BR, Alex
Reply


Messages In This Thread
LM phone call to phone number - by AlexLV - 28.07.2023, 22:07
RE: LM phone call to phone number - by admin - 08.08.2023, 08:01
RE: LM phone call to phone number - by AlexLV - 17.08.2023, 07:24
RE: LM phone call to phone number - by admin - 17.08.2023, 07:48
RE: LM phone call to phone number - by AlexLV - 19.08.2023, 11:04
RE: LM phone call to phone number - by Daniel - 21.08.2023, 07:36
RE: LM phone call to phone number - by AlexLV - 22.08.2023, 21:11
RE: LM phone call to phone number - by Daniel - 23.08.2023, 14:11
cell signal on reactor - by Frank68 - 15.07.2026, 09:32
RE: LM phone call to phone number - by admin - 15.07.2026, 10:53
RE: LM phone call to phone number - by admin - 15.07.2026, 11:14
RE: LM phone call to phone number - by admin - 15.07.2026, 12:18
RE: LM phone call to phone number - by admin - 15.07.2026, 12:39

Forum Jump: