====== SMS ====== ===== Use of integrated SMS commands ===== Wirnetâ„¢ i-series gateways can be configured using SMS commands. Most features available from the web interface and the REST API can be activated/configured over SMS. SMS syntax and list of available SMS are described in //Keros SMS commands specification//. Specification aligned with your firmware can be found in [[wiki:resources:resources#keros_sms_documentation|the resources page]]. ===== Use of customs SMS ===== Wirnetâ„¢ i-series gateways are able to send and receive SMS if the mobile network is properly configured. Modems are identified by ''manufacturer_X'' where: * ''manufacturer'' is the modem manufacturer (''sierra'', ''quectelqmi'', ...) * ''X'' is a number starting from 0. It can vary if there are more than one modem on gateway or if modem has been reset (dongle unplug and replug for example) To retrieve the identifier, use the ''gsmdiag.py'' command. Here is an output of ''/tmp/gsmdiag.txt''. Two modems are displayed, and only one has a SIM card present. Its identifier is ''/sierra_0''. ++++ Content - gsmdiag.py output | root@klk-lpbs-060434:~ # gsmdiag.py Diagnostic written in /tmp/gsmdiag.txt root@klk-lpbs-060434:~ # cat /tmp/gsmdiag.txt Number of modems: 2 [Modem:/sierra_1] Syspath:/sys/devices/soc0/soc/2100000.aips-bus/2184200.usb/ci_hdrc.1/usb2/2-1/2-1.3 HardwarePosition:1,1 Powered:1 Online:0 Manufacturer:Sierra Wireless, Incorporated Model:MC7304 Revision:SWI9X15C_05.05.58.00 r27038 carmd-fwbuild1 2015/03/04 21:30:23 [SimProps] Present:0 Error: no SIM in modem [Modem:/sierra_0] Powered:1 Online:1 Manufacturer:Sierra Wireless, Incorporated Model:MC7354 Revision:SWI9X15C_05.05.58.00 r27038 carmd-fwbuild1 2015/03/04 21:30:23 [SimProps] Present:1 CardIdentifier:895XXXXXXXXXXXX1015 SubscriberIdentity:3XXXXXXXXXXXXX3 LockedPins:dbus.Array([], signature=dbus.Signature('s'), variant_level=1) PinRequired:none [NetworkRegistrationProps] Status:registered MobileCountryCode:XXX MobileNetworkCode:YY Name:ABCD Strength:80 [ConnectionContexts] [/sierra_0/context1] Name:Internet Active:1 Type:internet Protocol:ip AccessPointName:apname Username:uname Password:pass AuthenticationMethod:chap ++++ ==== Send ==== It is possible to send an SMS using a DBUS command. Examples: * To send an SMS using the modem ''/sierra_0'' (Wirnet iBTS): dbus-send --system --print-reply --dest=org.ofono /sierra_0 org.ofono.MessageManager.SendMessage string:"+33XXXXXXXXXX" string:"test sms" * To send an SMS using the modem ''/huawei_0'' (Wirnet iFemtoCell): dbus-send --system --print-reply --dest=org.ofono /huawei_0 org.ofono.MessageManager.SendMessage string:"+33XXXXXXXXXX" string:"test sms" ==== Receive ==== Receive an SMS using a python test script : ++++ File - receive SMS python script | #!/usr/bin/python2 from gi.repository import GLib import dbus import dbus.mainloop.glib def chunkstring(string, length): return (string[0+i:length+i] for i in range(0, len(string), length)) def incoming_message(message, details, path, interface): message_txt = str(message.encode('utf-8')) print("Size of message: %d" % len(message_txt)) print("%s" % (message_txt)) for line in chunkstring(message_txt, 40): print("%s" % line) for key in details: val = details[key] print(" %s = %s" % (key, val)) print(" %s = %s" % ('path',path)) print(" %s = %s" % ('interface', interface)) if __name__ == '__main__': dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) bus = dbus.SystemBus() bus.add_signal_receiver(incoming_message, bus_name="org.ofono", signal_name = "ImmediateMessage", path_keyword="path", interface_keyword="interface") bus.add_signal_receiver(incoming_message, bus_name="org.ofono", signal_name = "IncomingMessage", path_keyword="path", interface_keyword="interface") mainloop = GLib.MainLoop() mainloop.run() ++++