• Протокол общения с Arduino?

    a_volkov1987
    @a_volkov1987
    Инженер-схемотехник
    Для начала определите какое оборудование будет подключено к ардуине и в каком виде оно будет принимать и отдавать данные для общения с сервером.
    Потом определитесь как именно будет происходить общение с серверомю Может вам нужны данные от оборудования только "по запросу" или же ардуина должна с определенным интервалом отдавать данные сама.
    Ну и исходя из этого разработайте протокол.
    Определите заголовок пакета для передачи и приема, если придется принимать и передавать пакеты разной длины, в заголовке выделите секцию под описание длины пакета. И не передавайте данные в стоковом виде, если можно обойтись без этого. То есть секция пакета, которая описывает получателя данных, не должна быть со строковыми данными. Используйте код. 01 - модем, A2 - датчик температуры .... F0 - датчик влажности и т.д.
    В принципе пакет от сервера может иметь следующий вид:
    AA 00 - (2 байта) признак начала пакета
    XX XX - (2 байта) длина пакета в байтах (без заголовка)
    XX -(1 байт) получатель данных
    XX...XX (n байт) аргумент для передачи получателю

    Опционально в конце пакета можно передать контрольную сумму, вычисленную как некую функцию от заголовка и тела пакета.

    Что и как передается в аргументе - ваше дело. Для датчика DHT вы вообще можете ничего не указывать, а для модема первый байт пакета может содержать AT-команду в виде условного кода, 10 байт после нее - номер абонента без 8 и (возможно) еще n байт с текстом, если это передача смс.
    ДЛя управления какой-нибудь индикацией вы можете передавать 1 байт, в котором будет зашифрован тип индикации (00 - индикация выключена, 01 - постоянная индикация, 02 - мигающая индикация)

    От ардуино вы можете получать данные таким же пакетом.
    Ответ написан
    Комментировать
  • Протокол общения с Arduino?

    Весь протокол в обмене словами, по сути.
    Т.е. по определенному набору входных слов можно сделать функции, которые отработают и отправят в ответ строку - результат.

    Можно сделать примерно такое (сильно не пинать за говнокод, это пример!):
    отправляем строку. арудина её читает, если находит подстроку, то выполняет определенное действие, иногда пишет в терминал какие-то слова, что действие выполнено.
    if (strstr(term_in, "SWPOWER"   ) != 0) code = 1;/*strstr - найти подстроку в строке, пришедшей с ПК (алгоритм чтения слова опустим)*/
    if (strstr(term_in, "CALL_1"    ) != 0) code = 2;
    if (strstr(term_in, "SMS_SEND"  ) != 0) code = 3;
    if (strstr(term_in, "CTRL+Z"    ) != 0) code = 4;
    //в зависимости от найденной подстроки был получен один из кодов и по нему работает case
          switch (code)
          {
            case 1:
              Serial.println("@power on/off signal");
              digitalWrite(9, HIGH);
              delay(1000);
              digitalWrite(9, LOW);
              break;
            case 2:
              Serial.println("term@: call number +790679__823");//отправляем сообщение, что начата попытка дозвона
              gprsSerial.println("ATD+790679__823;");//в шилд
              break;
            case 3:
              function1();
       default:
              /*Код, который выполнится, если ниодно из константых значению не соответствует значение в переменной variable*/
              Serial.print("text ");
              break;
    Ответ написан
    3 комментария
  • Как разделить смешанный backend?

    vollossy
    @vollossy
    Веб-разработчик с небольшим опытом работы
    Я лично выделил бы апи и админку в отдельные модули просто.
    Как варианты можно сделать так:
    Если первые три правила только для админки используются, то я бы просто в них добавил префикс подходящий:
    ...
    'admin/<controller:\w+>/<id:\d+>'  => 'adminController/view',
    'admin/<controller:\w+>/<action:\w+>/<id:\d+>' => 'adminController/<action>',
    'admin/<controller:\w+>/<action:\w+>' => 'adminController/<action>'
    ...

    Ну или если для более общих вариантов, создал бы свое правило, в котором проверял бы, что запрос к апи и вызывал бы соответствующий путь.
    Ответ написан
    Комментировать
  • Какую CMS использовать для лёгкого сайта-визитки?

    Salavat
    @Salavat
    http://getsimple.ru/
    GetSimple это бесплатная открытая система управления контентом (open source CMS), которая работает очень быстро, потому что не использует баз данных.
    Идеально подходит для создания мини-сайтов и сайтов-визиток, т.к. понятна и удобна для использования даже тем, кто слабо разбирается в интернете.
    Ответ написан
    1 комментарий
  • Какую CMS использовать для лёгкого сайта-визитки?

    Вы уверены что на этом сайте нужна CMS. Если речь идет о 3-5 страницах, не проще ли на HTML`е накидать и все. Тогда будет достаточно самого дешевого хостинга и быстродействие будет на уровне: "сервер отдал статику"
    Ответ написан
    Комментировать
  • HTML+CSS+JS+PHP - идеальная IDE существует?

    Webdesus
    @Webdesus
    Продукты jetbrains я считаю самые лучшие. По этому почему бы не посмотреть в сторону phpstorm
    Ответ написан
    1 комментарий
  • REST Модели и связи

    EugeneOZ
    @EugeneOZ
    Один геморрой с этими вложенными адресами, гораздо проще для каждого ресурса свою точку входа.
    В AngularJS для работы с REST есть специальный $resource.
    Если не получается с $resource — можно обычным $http.
    Ответ написан
    2 комментария
  • Как вы распоряжаетесь своими пенсионными накоплениями?

    @tsegorah
    Пока думаю об этом. Но пару дней назад оформляя страховку на машину узнал от страховщика что государственный пенсионный фонд
    сокращает процентную ставку где-то в 3 раза. Задумался о том, что бы сменить. Если ничего не путаю, то менять можно раз в год.
    Ответ написан
    4 комментария