Я пытаюсь реализовать протокол MQTT в pic-микроконтроллере с использованием модема sim 900 gprs, уже прочитал версию документации mqtt версии 3.1. Успешно я могу иметь возможность сделать соединение с GPRS модемом MYSERVER ф (117.218.81.15), используя следующие команды ...Реализация MQTT в микроконтроллере PIC
- AT
- AT + CPIN?
- AT + CREG?
- AT + CGATT?
- AT + CIPSHUT
- AT + CIPSTATUS
- AT + CIPMUX = 0
- AT + CSTT = \ "Интернет \", \ "\", \ "\"
- AT + CIICR
- AT + CIFSR
AT + CIPSTART = \ "TCP \", \ "117.218.81.15 \", \ "1883 \"
в соответствии с документацией протокола MQTT я написал функцию на соединение пакета. После установления соединения tcp я попытался отправить функцию connect_packet(), я не получаю никакого подтверждения от брокера .. Пожалуйста, помогите мне в устранении этой проблемы. Я проверил с помощью инструмента анализатора сети wirehark мои данные поступают в порт 1883 tcp, но я не понимаю, почему я не получаю никаких подтверждений? Код connect_packet является
unsigned char topiclen = 0,time_out1=0,time_out2=0; unsigned char connectdatalen,packetlen; memset(buffer,0,sizeof(buffer)); time_out1 = (time_out >>8) & 0XFF; time_out2 = (time_out & 0XFF); topiclen = strlen(sacketid); connectdatalen = 2 + 6 + 1 + 1 + 2 + 2 + topiclen;
В ничтожной основной функции код
packetlen = 2 + connectdatalen;
buffer[0] = 0X10; buffer[1] = connectdatalen; buffer[2] = 0x00; buffer[3] = 0X06; buffer[4] = 'M'; buffer[5] = 'Q'; buffer[6] = 'I'; buffer[7] = 's'; buffer[8] = 'd'; buffer[9] = 'p'; buffer[10] = 0x03; buffer[11] = 0x02; buffer[12] = time_out1; buffer[13] = time_out2; buffer[14] = (topiclen >> 8); buffer[15] = topiclen & 0XFF; for(i=0;i<packetlen;i++) { buffer[(i+16)] = sacketid[i]; } uart_puts(buffer); uart_puts("\x1A");uart_init(9600,16); DelayMs(100); gprs_init(); gprs_tcpconnect(); DelayMs(200); connect_packet("MQTT",180); memset(buffer,0,sizeof(buffer));
Какой брокер вы используете? вы пытались включить подробный журнал в брокерах? – hardillb
Mosquito broker .... ya Я включил подробное ведение журнала @ hardillb –