отправить sms с переменной в гамму [python]

Я пытаюсь отправить переменную в sms, используя gammu. Я использую gammu smsd runonreceive для запуска сценария python, когда я отправляю сообщение на свой raspberry pi со своего телефона. Вот как выглядит сценарий.

#!/usr/bin/python
import os

os.system("sh .webgps.sh > coordinates.text")

file = "/home/pi/coordinates.text"
with open(file) as f:
(lat, long) = f.read().splitlines()

os.system("echo lat | sudo gammu-smsd-inject TEXT 07xxxxxxxxx")

Этот сценарий выполняет сценарий оболочки, который получает широту и долготу из моего модуля GPS и помещает их в текстовый файл. Затем он получает значения из текстового файла и помещает широту в переменную lat и долготу в переменную long. Я могу проверить, что это работает, потому что, когда я печатаю переменные, я вижу широту и долготу, и они имеют те же значения, что и в текстовом файле.

Теперь бит, с которым у меня проблемы, - это отправка значений на мой телефон. Если я запустил скрипт python в том виде, в каком он сейчас, то я получу на свой телефон сообщение с надписью lat. Я хочу, чтобы мне отправили фактические значения широты и долготы, и я не знаю, как поместить переменные в текстовую строку ввода гамму.


person Dave Bedworth    schedule 23.04.2017    source источник


Ответы (2)


Вы получаете "lat" в своем телефоне, потому что переменная python "lat" не так просто разбирается в эхо-вызове os.system.

Отправка переменной python в оболочку - немного странная история.

Одно из решений, которое сработало для меня в аналогичной ситуации, выглядит следующим образом:

with open(file) as f:
  (lat, long) = f.read().splitlines()

cmd="echo "+lat+" | sudo gammu-smsd-inject TEXT 07xxxxxxxxx"
os.system(cmd)
person George Vasiliou    schedule 23.04.2017

Лучше используйте свою собственную библиотеку gammu, Python-gammu позволяет легко получить прямой доступ к телефону и лучше обрабатывать ошибки. Многие примеры доступны в каталоге examples / в источниках python-gammu.

В Ubuntu рекомендуется использовать репозиторий дистрибутивов. Таким образом, установка python-gammu должна производиться для каждого менеджера apt:

apt-get install python-gammu 

Вот пример сценария: Отправка сообщения

#!/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)
person Don Globian    schedule 17.05.2019