Skip to content

Instantly share code, notes, and snippets.

@mcarey42
Last active June 3, 2019 23:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mcarey42/545bb699a54019e8e60e327b825651e1 to your computer and use it in GitHub Desktop.
Save mcarey42/545bb699a54019e8e60e327b825651e1 to your computer and use it in GitHub Desktop.
A quick reworked example of how to get information from the ModemManager component of NetworkManager into python in a meaningful way.
import sys
import dbus
from gi.repository import GObject
from pprint import pprint
# from gi.repository import GLib, GObject, Gio, ModemManager
bus = dbus.SystemBus()
manager_proxy = bus.get_object('org.freedesktop.ModemManager1', '/org/freedesktop/ModemManager1')
manager_iface = dbus.Interface(manager_proxy, dbus_interface='org.freedesktop.ModemManager1')
manager_om = dbus.Interface(manager_proxy, "org.freedesktop.DBus.ObjectManager")
#modems = manager_iface.EnumerateDevices()
modems = manager_om.GetManagedObjects()
if len(modems) == 0:
print("No modems found")
sys.exit(1)
#proxy = bus.get_object('org.freedesktop.ModemManager1', modems[0])
modem_proxy = bus.get_object('org.freedesktop.ModemManager1', '/org/freedesktop/ModemManager1/Modem/0')
modem = dbus.Interface(modem_proxy, dbus_interface='org.freedesktop.ModemManager1.Modem')
modem.Enable(True)
#modem.Enable(True)
messaging_iface = dbus.Interface(manager_proxy, dbus_interface='org.freedesktop.ModemManager.Modem.Messaging')
messaging_om = dbus.Interface(manager_proxy, "org.freedesktop.DBus.ObjectManager")
messaging_props = messaging_om.GetManagedObjects()
sms_iface = dbus.Interface(manager_proxy, dbus_interface='org.freedesktop.ModemManager1.Modem.Sms')
SMS_om = dbus.Interface(manager_proxy, "org.freedesktop.DBus.ObjectManager")
SMSs = SMS_om.GetManagedObjects()
pprint(SMSs['/org/freedesktop/ModemManager1/Modem/0']['org.freedesktop.ModemManager1.Modem.Messaging']['Messages'])
for sms_path in SMSs['/org/freedesktop/ModemManager1/Modem/0']['org.freedesktop.ModemManager1.Modem.Messaging']['Messages']:
print('Reading SMS: ' + sms_path)
sms_composite_path = sms_path
sms_msg_proxy = bus.get_object('org.freedesktop.ModemManager1', sms_composite_path)
#text_prop = sms_msg_proxy.Get('org.freedesktop.ModemManager1.Sms', 'Text', dbus_interface='org.freedesktop.DBus.Properties')
#print(text_prop)
text_props = sms_msg_proxy.GetAll('org.freedesktop.ModemManager1.Sms', dbus_interface='org.freedesktop.DBus.Properties')
#print(text_props)
print('Text from: ' + text_props['Number'])
print('Text command: ' + text_props['Text'])
print('Text At: ' + text_props['Timestamp'])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment