.. _python-gammu-examples:

More python-gammu Examples
==========================

Many examples are available in ``examples/`` directory in the python-gammu
sources.

Sending a message
-----------------

.. code-block:: python

    #!/usr/bin/env python
    # Sample script to show how to send SMS

    from __future__ import print_function
    import gammu
    import sys

    # Create object for talking with phone
    state_machine = gammu.StateMachine()

    # Optionally load config file as defined by first parameter
    if len(sys.argv) > 2:
        # Read the configuration from given file
        state_machine.ReadConfig(Filename=sys.argv[1])
        # Remove file name from args list
        del sys.argv[1]
    else:
        # Read the configuration (~/.gammurc)
        state_machine.ReadConfig()

    # Check parameters
    if len(sys.argv) != 2:
        print('Usage: sendsms.py [configfile] RECIPIENT_NUMBER')
        sys.exit(1)

    # Connect to the phone
    state_machine.Init()

    # Prepare message data
    # We tell that we want to use first SMSC number stored in phone
    message = {
        'Text': 'python-gammu testing message',
        'SMSC': {'Location': 1},
        'Number': sys.argv[1],
    }

    # Actually send the message
    state_machine.SendSMS(message)

Sending a long message
----------------------

.. code-block:: python


    #!/usr/bin/env python
    # Sample script to show how to send long (multipart) SMS

    from __future__ import print_function
    import gammu
    import sys

    # Create object for talking with phone
    state_machine = gammu.StateMachine()

    # Optionally load config file as defined by first parameter
    if len(sys.argv) > 2:
        # Read the configuration from given file
        state_machine.ReadConfig(Filename=sys.argv[1])
        # Remove file name from args list
        del sys.argv[1]
    else:
        # Read the configuration (~/.gammurc)
        state_machine.ReadConfig()

    # Check parameters
    if len(sys.argv) != 2:
        print('Usage: sendlongsms.py [configfile] RECIPIENT_NUMBER')
        sys.exit(1)

    # Connect to the phone
    state_machine.Init()


    # Create SMS info structure
    smsinfo = {
        'Class': -1,
        'Unicode': False,
        'Entries':  [
            {
                'ID': 'ConcatenatedTextLong',
                'Buffer':
                    'Very long python-gammu testing message '
                    'sent from example python script. '
                    'Very long python-gammu testing message '
                    'sent from example python script. '
                    'Very long python-gammu testing message '
                    'sent from example python script. '
            }
        ]}

    # Encode messages
    encoded = gammu.EncodeSMS(smsinfo)

    # Send messages
    for message in encoded:
        # Fill in numbers
        message['SMSC'] = {'Location': 1}
        message['Number'] = sys.argv[1]

        # Actually send the message
        state_machine.SendSMS(message)

Initiating a voice call
-----------------------

.. code-block:: python

    #!/usr/bin/env python

    from __future__ import print_function
    import gammu
    import sys

    # Create object for talking with phone
    state_machine = gammu.StateMachine()

    # Read the configuration (~/.gammurc or from command line)
    if len(sys.argv) > 2:
        state_machine.ReadConfig(Filename=sys.argv[1])
        del sys.argv[1]
    else:
        state_machine.ReadConfig()

    # Connect to the phone
    state_machine.Init()

    # Check whether we have a number to dial
    if len(sys.argv) != 2:
        print('Usage: dialvoice.py NUMBER')
        sys.exit(1)

    # Dial a number
    state_machine.DialVoice(sys.argv[1])

Reading calendar from phone
---------------------------

.. code-block:: python

    #!/usr/bin/env python
    # Example for reading calendar from phone

    from __future__ import print_function
    import gammu

    # Create object for talking with phone
    state_machine = gammu.StateMachine()

    # Read the configuration (~/.gammurc)
    state_machine.ReadConfig()

    # Connect to the phone
    state_machine.Init()

    # Get number of calendar entries
    status = state_machine.GetCalendarStatus()

    remain = status['Used']

    start = True

    while remain > 0:
        # Read the entry
        if start:
            entry = state_machine.GetNextCalendar(Start=True)
            start = False
        else:
            entry = state_machine.GetNextCalendar(Location=entry['Location'])
        remain = remain - 1

        # Display it
        print()
        print('%-20s: %d' % ('Location', entry['Location']))
        print('%-20s: %s' % ('Type', entry['Type']))
        for v in entry['Entries']:
            print('%-20s: %s' % (v['Type'], str(v['Value'])))
