Игорь Пашев

Feb. 18th, 2011

08:24 pm - Отправка SMS с USB-модема

Упростил запрос баланса и, главное,
добавил отправку SMS. Пока только латиницей.

http://lj.rossia.org/users/igorpashev/95763.html
http://www.developershome.com/sms/smsIntro.asp
http://www.communica.se/multitech/gprs_at.pdf

#!/usr/bin/env python3
#coding: utf8

import io

class Modem:
    def __init__(self, dev='/dev/ttyUSB1'):
        self.stream = io.open(dev, 'w+b', 0)

    def __write(self, s):
        self.stream.write(str.encode('{}\r\n'.format(s)))

    def close(self):
        self.stream.close()

    def ussd(self, code):
        self.__write('AT+CUSD=1,{},15'.format(code))

    def balance(self, code='*100#'):
        self.ussd(code)
        for l in self.stream:
            if l.startswith(b'+CUSD'):
                msg = l[10:l.rfind(b'"')].decode('ascii')
                return bytes.fromhex(msg).decode('utf-16-be')

    def sendSMS(self, phone, msg):
        self.__write('AT+CMGS="{}"'.format(phone))
        self.__write('{}\x1a'.format(msg))



modem = Modem()
modem.sendSMS('+7XXXXXXXXXX', 'test')

Альбом: Any key

Tags: , , , ,
(1 комментарий | Оставить комментарий)

Feb. 17th, 2011

12:38 pm - Скрипт для USB модема

Подсмотрел здесь: http://ru.gentoo-wiki.com/wiki/MF626
Переписал на Python 3, сделал расширяемым.
В таком виде показывает баланс и рекламу :-)

Раскрасил так:

pygmentize -f html -O 'noclasses=true' 1.py


#!/usr/bin/env python3
#coding: utf8
import time, io

class Modem:
    p = None
    def __init__(self, dev='/dev/ttyUSB1'):
        self.open(dev)

    def open(self, dev):
        #self.close()
        self.p = io.open(dev, 'w+b', 0)
    
    def write(self, s):
        self.p.write(str.encode(s) + b'\r\n')
        time.sleep(0.1)

    def close(self):
        self.p.close()

    def ussd(self, code):
        self.write('AT+CPBS="SM"')
        self.write('AT+CPMS="SM","SM",""')
        self.write('AT+ZSNT=0,0,2')
        self.write('AT+CUSD=1,' + code + ',15')

        for ln in self.p:
            if ln.startswith(b'+CUSD'):
                msg = ln[10:ln.rfind(b'"')].decode('ascii')
                return bytes.fromhex(msg).decode('utf-16-be')

    def balance(self, code='*100#'):
        return self.ussd(code)

modem = Modem()
print(modem.balance())

Tags: , , , ,
(4 комментария | Оставить комментарий)

May. 1st, 2010

10:52 pm - Ненавижу убунту, ненавижу гном

На каждый чих — отдельная библиотека, пофиг, что нигде больше не используется.

Искал экранную клавиатуру.

GOK — дофига зависимостей, в том числе libcanberra — звуковые схемы. ЗАЧЕМ?
И эту зависимость не отключить, нафига вообще скрипт configure?

onboard — написан на питоне, но установщик написан на python-distutils-extra

EXTRA! — ещё самих distutils нету, а тут extra. Сам установщик — только
копирует файлы. Писец. Да, ещё модуль virtkey.

Ну нельзя же всё так дробить!

Tags: , , ,
(1 комментарий | Оставить комментарий)

Sep. 27th, 2009

04:22 pm

Обновление к http://lj.rossia.org/users/igorpashev/37872.html

http://github.com/ip1981/newslack

Что нового в программе:

* Можно указать рабочую директорию: ./newslack /mnt/host/etc
* Можно применить частичный патч: надо выделить часть текста, и будут применены блоки, охваченные выделением.

Tags: , , , , ,
(Оставить комментарий)

Sep. 21st, 2009

10:17 pm

После обновления Слаки с директории /etc
остаётся несколько файлов типа rc.inet1.new,
которые по идее должны заменить старые файлы (типа rc.inet1).

Я обычно это делал руками: diff -u rc.inet1 rc.inet1.new,
а затем принимал решение о замене.
мне это надоело, и я написал программу на Питоне,
которая это автоматизирует.
Программа графическая, использует Qt4, pygments.


http://picasaweb.google.ru/lh/photo/EVmsIvYlCcb-ZmFgkTSdNQ?feat=directlink

#!/usr/bin/python )

Tags: , , ,
(Оставить комментарий)