изпращане на sms с променлива в gammu [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. Това, което искам, е да ми бъдат изпратени действителните стойности за географска ширина и дължина и не знам как да поставя променливите в текстовия ред за инжектиране на gammu.


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


Отговори (2)


Получавате "lat" в телефона си, защото променливата "lat" на python не се анализира толкова лесно в ехо повикването на 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