Как я смски получал с помощью ИИ
Disclaimer: эта история не про код, а про использование ИИ для упрощения и ускорения написания мелких pet-проектов (и не только).
Я живу в деревне и как практически в любой деревне на постсоветском пространстве у нас интернет идёт через модем с сим-картой.

В моём случае это NR-400
У моего модема на борту есть LUCI.
Возникла необходимость читать смски с этого модема не заходя в web-интерфейс (слишком много времени на это тратится). Но писать самому этот код не очень хотелось. Поэтому решил использовать ChatGPT как помощника.
Задача №1. Получить смски на модеме
Найти код в самом модеме отвечающий за чтение смсок. Тут я справился сам (т.к. уже копался в потрохах LUCI на этом модеме). Нашёл команду которая читает все смс: at -S modem at-sms-list all. Результат был в виде json данных. Дальше встал вопрос парсинга данных и перекодировки самих сообщений.
Задача №2. Разобрать данные
Из кода web-интерфейса я узнал что значат часть полей json. Но хотелось узнать что значат все поля. Задал этот вопрос чату. И он на удивление всё расписал как надо:
Hidden text
Данные в предоставленной JSON строке представляют собой информацию о SMS-сообщениях, включая метаданные и содержимое сообщений. Вот как расшифровать структуру данных:
"mem": Объект с информацией о памяти."type": Тип памяти («ME» — внутренняя память телефона)."used": Использованная память в единицах."total": Общий объем памяти в единицах.
"sms": Список объектов SMS-сообщений."idx": Индекс сообщения."stat": Статус сообщения («read» — прочитано)."fail": Признак ошибки отправки («False» — не было ошибки)."smsc": Сервисный центр SMS."sender": Отправитель сообщения."ts": Временная метка сообщения."date": Дата сообщения."time": Время сообщения."zone": Часовой пояс сообщения."c_ref": Счетчик ссылок (если есть)."c_cur": Текущий номер сообщения."c_tot": Общее количество частей сообщения."dcs": Кодировка данных."data": Содержимое SMS в виде строки.
Каждый объект в списке "sms" представляет одно SMS-сообщение. Важные поля:
"sender": Имя отправителя."ts","date","time","zone": Дата и время отправки сообщения с учетом часового пояса."data": Содержимое сообщения (текст).
Кодировка "dcs" указывает на способ кодирования данных в поле "data". Значение 2 указывает на кодировку UCS-2 (16-бит Unicode), которая обычно используется для текстовых сообщений на кириллице.
Обратите внимание, что часть информации может быть неполной или сокращенной, так как эти данные представляют собой сжатую версию длинных SMS-сообщений.
Если у вас есть какие-либо дополнительные вопросы или вы хотите более подробно разобраться с каким-либо аспектом данных, пожалуйста, уточните.
Задача №3. Написать рабочий код
Пришло время писать код. Но писать с нуля не очень хотелось. Поэтому был взят код из web-интерфейса модема, написанного на JS. Попросил чат конвертировать этот код из JS в PHP (лучше наверно в python, но опыта маловато). Он сделал это, но предупредил что часть кода пропала, т.к. в PHP не получится работать с DOM деревом страницы
