GPRS-Shield + Iskra JS. Есть что подправить.

Тема в разделе "Iskra JS, Espruino, Йодо", создана пользователем sys, 2 июл 2016.

  1. sys

    sys Злобный Буратино Модератор

    Во-первых, исправьте, пожалуйста, название библиотеки в описании примера http://wiki.amperka.ru/js:gprs-shield - правильно Sim900r
    Код (Javascript):
    var sim = require('@amperka/Sim900r').connect();
    , а не с маленькой s. И разночтение в Вики - там это библиотека числится как gprs-shield... путаете, товарищи :)

    Во-вторых, желательно, в сам начале того же описания библиотеки упомянуть о необходимости использования внешнего питания.

    В-третьих, поправьте библиотеку на предмет вызова getImei(...). Сейчас там непонятное что-то с parse.first(data);
    Код (Javascript):
    Sim900r.prototype.getImei = function(callback) {
      this.cmd('AT+GSN', function(data) {
        var imei = Sim900r.prototype.parse.first(data);
        if (callback) {
          callback(imei);
        }
      });
    };
    у себя сделал по аналогии с другими прототипами
    Код (Javascript):
    Sim900r.prototype.getImei = function(callback) {
      this.cmd('AT+GSN', function(error,data) {
        if (!error) {
           data = data[0];
        }
        if (callback) {
          callback(error, data);
        }
      });
    };
    И вообще возникло ощущение, что библиотека сыровата и неполная, а описание библиотеки не совсем соответствует действительности.

    Непонятки например с Sim900r.on('simReady', ...), Sim900r.on('ready', ... ) - что и когда срабатывает.

    По поводу CallerID совсем беда - в описании написано что для включения отключения определителя указывается булевое значение, хотя в спецификациях на АТ-команды фигурируют 0 и 1... Но хуже того, что у меня шилд отказывается вообще выдавать информацию (AT+CLIP?, AT+CLIP=?, AT+CLIP=0 (1) выдают пустой массив
    [ ]), и при срабатывании события 'ring' и phone и cnt имеют значение undefined.

    Из описания библиотеки вообще неясно, как с его помощью взаимодействовать с интернетом... я примерно представляю как это приготовить с помощью команд, но все таки хотелось бы плясать уже на готовеньком :)


    И еще, заметил одну странность - после включения шилда первый вызов Sim900r.cmd() (например: AT+CSPN?, AT+GSN, AT+CSQ и т.д.) выдает пустой массив и соответственно получаем undefined в ответах функций использующих cmd() (.netProvider, .getImei, .netQuality и т.д.), а последующие вызовы отрабатываются нормально. Делаем powerOff(), затем powerOn() - и история повторяется.... Приходится после включения обязательно выполнять какой-нибудь ненужный вызов, чтобы затем нормально работать...

    Возможно, надо глубже проанализировать библиотечную .cmd(), но мне пока это сложновато...

    на данный момент все ;) Шилд очень понравился - красивый и аккуратный - прям айфон в мире шилдов :)
     
    Последнее редактирование: 4 июл 2016
  2. sys

    sys Злобный Буратино Модератор

    Попробовал поработать с шилдом в ручном режиме (без подключения библиотеки) - все работает отлично.. на все команды получаю адекватные ответы... Значит все таки библиотека... копаю дальше...

    И еще: отчего, при подключенной библиотеке могут быть срабатывания 'powerOn' уже после отработки на подключения питания (допустим при входящих звонках и т.п.) прям по несколько сработок чуть ли не циклически? Я так понимаю сработка ведется от показаний _statusPin. Ничего кроме шилда больше не подключено. Блок питания 7,5В 2А Robiton. и что означает input_pulldown в pinMode? (нашел pinMode() в описании встроенных функций http://wiki.amperka.ru/js:builtins , попутал с Pin.mode(), но это не отменяет того, что в http://wiki.amperka.ru/js:pin опечатка и указаны два определения для pullup, одно из которых я подозреваю для пулдауна :)
     
    Последнее редактирование: 8 июл 2016
  3. sys

    sys Злобный Буратино Модератор

    Update: по поводу скачков на Status Pin'e (P3) - походу дела, все таки в питании было дело - выставил свой двухамперный Robiton на 9В и скачки больше пока не наблюдал.... видно, 7.5В либо мало, либо БП их плохо держит...

    Разобрался с библиотекой - она действительно не закончена, но как оказалось там все не так сложно... главное правильно распарсить :). Еще раз убедился, что не зря выбрал JS. Так что подправить библиотеку под себя вполне реально (в принципе как и написать заново свою).
    На сим свой монолог пожалуй я окончу.

    З.Ы. Надеюсь на активное развитие данной платформы... ну лето не считается :)
     
  4. r1000ru

    r1000ru JS-технократ

    Спасибо за замечания. Эту библиотеку я писал самой первой, когда еще не было принято наших внутренних стандартов по их написанию, да и вообще платформа Espruino для всех была новой. В ближайшее время я закончу работу над библиотекой IMU10 и разберусь (очень надеюсь) с багом USB Hid, и возьмусь за исправления библиотеки для Sim900, так же добавив туда работу с GPRS. Если вы желаете, вы можете и самостоятельно отправлять свои доработки в наш репозитарий. Для этого сделайте клон, новый бранч с названием библиотеки, вносите изменения, комитте и как закончите - отправляйте пулл-реквест. Еще раз повторюсь - это исключительно по вашему желанию. Единственное - важно соответствовать правилам кодирования. Ваши изменения вы можете проверить, используя eslint. Файл конфигурации лежит в корне репозитария.
     
    sys нравится это.
  5. sys

    sys Злобный Буратино Модератор

    Вы только не подумайте чего - я без наезда и претензий :) Благодаря вашей библиотеке и руководству по AT командам - я в принципе разобрался: как взаимодействовать с модулем напрямую, в каком мне направлении двигаться дальше, что и как мне делать для получения нужного мне результата - а это уже куча положительных эмоций и интрига на пути к светлому будущему... Так что, Вам спасибо! ;)