{
"id": "ShariXKnowledgeTeltonikaGpsTrackerBPMN",
"page": "sharixopen:knowledge:scenarios:teltonika_gps_tracker",
"area": "open",
"type": "procedure",
"title": "Приёмник Teltonika open_teltonika_gps_tracker",
"status": "review",
"schema_version": 1,
"relations": {
"related_to": [
"ShariXKnowledgeBasicBotBPMN",
"ShariXKnowledgeReportHandlerBPMN",
"ShariXKnowledgeOpenKnowledgeModulesHandlers",
"ShariXKnowledgeScenarios"
],
"depends_on": [
"ShariXKnowledgeOpenKnowledgeModulesHandlers"
],
"verified_by": [
"ShariXKnowledgeVerification"
]
},
"extensions": {
"taxonomy": {
"domain": "integrations",
"lifecycle": "implemented",
"component": "handlers_examples, handlers_backend",
"parents": [
"ShariXKnowledgeScenarios"
],
"terms": [
"audience_developer",
"audience_integrator",
"audience_operator",
"audience_support",
"audience_ai",
"product_sharix_open",
"material_scenario",
"topic_operations_diagnostics",
"topic_handlers_blockly",
"topic_handlers_runtime",
"teltonika",
"udp",
"avl",
"gpx",
"device_ack",
"first_party_handler",
"xmpp",
"bpmn",
"blockly",
"generated_python"
]
},
"diagram": {
"format": "bpmn",
"executable": false
},
"source_evidence": [
{
"repository": "sharix-open-handlers-examples",
"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb",
"path": "handlers/open_teltonika_gps_tracker.py",
"sha256": "176dc8e04c8370481da568124f7e5a27a5418592a3947f718986b042b4a5e083"
},
{
"repository": "sharix-open-handlers-examples",
"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb",
"path": "generated_handler_blocks/open_teltonika_gps_tracker.json",
"sha256": "a44f034cf10fe311ba6775c8c3579bd14448dc95c9c8ef08fa699c5c2b13ef2d"
},
{
"repository": "sharix-open-handlers-examples",
"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb",
"path": "catalog.py",
"sha256": "e3dcb72b7e620e2837adacd7af053f35b04cdff475789496d9c114e17d57dfde"
},
{
"repository": "sharix-open-handlers-examples",
"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb",
"path": "first_party_operations/open_teltonika_gps_tracker.py",
"sha256": "d8c766ceecb6eabdd24bccc0d0f6e9ddcab1fc3b8dab7432b1cf6a0dbda27e86"
},
{
"repository": "sharix-open-handlers-examples",
"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb",
"path": "config.py",
"sha256": "7b23db9ed283d3bbc3cf2cfbd5d41c629f6be507c3ca38c611572d08a75743a4"
},
{
"repository": "sharix-open-handlers-backend",
"commit": "50baf376e224d915a87d63240f3f339b3dda9afa",
"path": "first_party_blockly_codegen.py",
"sha256": "7f4dc6607ad62f3150c58de6341b758ebe97f81bd936c9ec033b7d86fed44640"
},
{
"repository": "sharix-open-handlers-backend",
"commit": "50baf376e224d915a87d63240f3f339b3dda9afa",
"path": "core/first_party_handler_runtime.py",
"sha256": "fb5ee98561b029de9291e73c2a08205cc9fc2b7b239abffe4a4bb24f56093bdb"
},
{
"repository": "sharix-open-handlers-backend",
"commit": "50baf376e224d915a87d63240f3f339b3dda9afa",
"path": "main.py",
"sha256": "66b7df94fedbec931ed4cb2d4e1afd9cf0386e14ed0932e22b15eb301cd792d7"
},
{
"repository": "sharix-open-handlers-backend",
"commit": "50baf376e224d915a87d63240f3f339b3dda9afa",
"path": "runtime_provider.py",
"sha256": "c311d3b0721d18d8eccc9cd7fba155108bf285df3002507ee915ee73b797a2f4"
},
{
"repository": "sharix-open-handlers-backend",
"commit": "50baf376e224d915a87d63240f3f339b3dda9afa",
"path": "core/JabberBot.py",
"sha256": "7fbd4d1f41bc867109b73dbb632efcfae920269a1aaf6da0e577cc70838820f1"
},
{
"repository": "sharix-open-handlers-examples",
"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb",
"path": "teltonika_config.py",
"sha256": "37b1abca5f520f89812e0c0f02c0386511a69553ace5e9cf29243d0ad3d7fb0d"
},
{
"repository": "sharix-open-handlers-examples",
"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb",
"path": "handlers/open_teltonika_gps_tracker_dir/catcher.py",
"sha256": "f99e418651e38d15bf198e5cd8fb547d97fc084a7bd330e88f9bb9a8e0cdf6dd"
},
{
"repository": "sharix-open-handlers-examples",
"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb",
"path": "handlers/open_teltonika_gps_tracker_dir/decoder.py",
"sha256": "e5420416a997acfabf29ae0942d8fa95b52890cec71d036f39d9164c210942d3"
},
{
"repository": "sharix-open-handlers-examples",
"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb",
"path": "handlers/open_teltonika_gps_tracker_dir/gpx_recorder.py",
"sha256": "fa7cbabbfe354fade58e2d9b16195df911755dc49489c405fad389a38abb1b38"
},
{
"repository": "sharix-open-handlers-examples",
"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb",
"path": "handlers/open_teltonika_gps_tracker_dir/config_importer.py",
"sha256": "3b2ca95e371bdf92dad65a7a9bd4befd0682f0c8ea03212c94b1c2678376c5df"
}
],
"handler_process": {
"handler_id": "open_teltonika_gps_tracker",
"source_kind": "git_builtin",
"canonical_python_verified": true,
"reviewed_on": "2026-10-29",
"generator": "tools/generate_handler_bpmn.py",
"generator_sha256": "488101a6be2f8f43d63ce966760be9f1c3664c88d88bed17ce0d6bfee9563cae",
"models": {
"startup": "7cb80dec5a0ffd4830c44262261653ebdaec2976918ed1f7e5fa605eddab8264",
"packet": "7ef78abb7b1a1caefcc38a12a8232a7f762363095d6763919ae7f3f906962df3"
},
"canonical_renderer": "handlers_backend/first_party_blockly_codegen.py",
"typed_operations": [
"teltonika_udp_receiver"
]
},
"classification": {
"schema": "sharix.knowledge.classification.v1",
"products": [
"sharix_open"
],
"audiences": [
"developer",
"integrator",
"operator",
"support",
"ai"
],
"material": "scenario",
"topics": [
"operations/diagnostics",
"handlers/blockly",
"handlers/runtime"
],
"tag_terms": [
"audience_developer",
"audience_integrator",
"audience_operator",
"audience_support",
"audience_ai",
"product_sharix_open",
"material_scenario",
"topic_operations_diagnostics",
"topic_handlers_blockly",
"topic_handlers_runtime",
"teltonika",
"udp",
"avl",
"gpx",
"device_ack",
"first_party_handler",
"xmpp",
"bpmn",
"blockly",
"generated_python"
],
"registry_document": "ShariXKnowledgeClassification",
"state_meaning": "implemented — описана проверенная реализация исходников; серверный runtime отдельно; review — состояние текста"
},
"editorial_review": {
"date": "2026-10-31",
"scope": "Конкретизация действий, условий, результатов и диагностики; перечисления; исходные BPMN сохранены",
"current_source_records_verified": 15,
"original_source_evidence_recheck": "После git fetch все исходные commits/SHA-256 совпали; дополнительные функциональные источники включены в source_evidence",
"canonical_regeneration": {
"kind": "first_party",
"compared_python_paths": [
"handlers/open_teltonika_gps_tracker.py"
],
"generator_sources_verified": 11,
"handler_executed": false
},
"runtime_checked": false
}
},
"content_sha256": "219a0431e5fc529909c786fb6d4c09fae6263f12d7c8b0335642c3d9a0c380ab",
"schema": 1
}
====== Приёмник Teltonika open_teltonika_gps_tracker ======
~~NOCACHE~~
**Назначение:** [[sharixopen:knowledge:classification:materials#scenarij_processa|Сценарий процесса]]. **Продукт:** [[sharixopen:knowledge:classification:products#sharix_open|ShariX Open]].
**Для кого:** [[sharixopen:knowledge:classification:audiences#razrabotchik|Разработчик]] · [[sharixopen:knowledge:classification:audiences#integrator|Интегратор]] · [[sharixopen:knowledge:classification:audiences#operator_razvjortyvanija|Оператор развёртывания]] · [[sharixopen:knowledge:classification:audiences#podderzhka|Поддержка]] · [[sharixopen:knowledge:classification:audiences#nejroset|Нейросеть]].
**Темы:** [[sharixopen:knowledge:classification:topics#diagnostika|Эксплуатация → Диагностика]] · [[sharixopen:knowledge:classification:topics#blockly|Обработчики → Blockly]] · [[sharixopen:knowledge:classification:topics#runtime|Обработчики → Runtime]].
**Область:** ShariX Open. **Обработчик:** ''open_teltonika_gps_tracker'', системный first-party handler без типа/рабочего статуса Ticket. 31.10.2026 исходники повторно получены из Git. First-party Python совпал с каноническим renderer; отдельно проверены операция, catcher, decoder, recorder и общий launcher. Сам обработчик и его внешние действия не запускались. Выбранная версия, настройки и доступность подключений конкретной установки проверяются отдельно.
===== Назначение и канонический контракт =====
Обработчик запускает пример UDP-приёмника AVL-пакетов:
* получает датаграмму и разбирает её;
* пишет читаемую диагностику;
* при включённых режимах записывает GPX и отдельные AVL-файлы;
* отправляет ответ устройству.
Координаты не записываются этим путём в Orders/Provider/Ticket; интеграция с картой и смена статуса заказа здесь не выполняются.
В Blockly зафиксирована typed operation ''teltonika_udp_receiver''. Сгенерированный Python вызывает binding; runtime сверяет точную program tuple с каталогом и загружает ''first_party_operations/open_teltonika_gps_tracker.py''. Бизнес-детали находятся также в catcher/decoder/GPX recorder, поэтому они включены в источники сценария. Совпадение generated wrapper не заменяет анализа вложенной operation.
BPMN описательные, isExecutable=false; исполняется Python из Blockly, а не JSON/XML Wiki. Сценарий описывает текущий пример, не обещает поддержку всех вариантов протокола Teltonika.
===== Запуск и UDP loop (BPMN) =====
{"notes": ["BPMN isExecutable=false; typed operation teltonika_udp_receiver из Blockly, Python сверён канонически.", "Штатный binding requires_xmpp=True: UDP запускается после XMPP connection preflight.", "GPX и отдельные AVL файлы по умолчанию выключены в этом binding; интерактивный catcher main не вызывается.", "ACK из raw byte slices не доказывает успешное сохранение всех точек."], "sources": [{"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_teltonika_gps_tracker.py", "repository": "sharix-open-handlers-examples", "sha256": "176dc8e04c8370481da568124f7e5a27a5418592a3947f718986b042b4a5e083"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "generated_handler_blocks/open_teltonika_gps_tracker.json", "repository": "sharix-open-handlers-examples", "sha256": "a44f034cf10fe311ba6775c8c3579bd14448dc95c9c8ef08fa699c5c2b13ef2d"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "catalog.py", "repository": "sharix-open-handlers-examples", "sha256": "e3dcb72b7e620e2837adacd7af053f35b04cdff475789496d9c114e17d57dfde"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "first_party_operations/open_teltonika_gps_tracker.py", "repository": "sharix-open-handlers-examples", "sha256": "d8c766ceecb6eabdd24bccc0d0f6e9ddcab1fc3b8dab7432b1cf6a0dbda27e86"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "config.py", "repository": "sharix-open-handlers-examples", "sha256": "7b23db9ed283d3bbc3cf2cfbd5d41c629f6be507c3ca38c611572d08a75743a4"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "first_party_blockly_codegen.py", "repository": "sharix-open-handlers-backend", "sha256": "7f4dc6607ad62f3150c58de6341b758ebe97f81bd936c9ec033b7d86fed44640"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/first_party_handler_runtime.py", "repository": "sharix-open-handlers-backend", "sha256": "fb5ee98561b029de9291e73c2a08205cc9fc2b7b239abffe4a4bb24f56093bdb"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "main.py", "repository": "sharix-open-handlers-backend", "sha256": "66b7df94fedbec931ed4cb2d4e1afd9cf0386e14ed0932e22b15eb301cd792d7"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "runtime_provider.py", "repository": "sharix-open-handlers-backend", "sha256": "c311d3b0721d18d8eccc9cd7fba155108bf285df3002507ee915ee73b797a2f4"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/JabberBot.py", "repository": "sharix-open-handlers-backend", "sha256": "7fbd4d1f41bc867109b73dbb632efcfae920269a1aaf6da0e577cc70838820f1"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "teltonika_config.py", "repository": "sharix-open-handlers-examples", "sha256": "37b1abca5f520f89812e0c0f02c0386511a69553ace5e9cf29243d0ad3d7fb0d"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_teltonika_gps_tracker_dir/catcher.py", "repository": "sharix-open-handlers-examples", "sha256": "f99e418651e38d15bf198e5cd8fb547d97fc084a7bd330e88f9bb9a8e0cdf6dd"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_teltonika_gps_tracker_dir/decoder.py", "repository": "sharix-open-handlers-examples", "sha256": "e5420416a997acfabf29ae0942d8fa95b52890cec71d036f39d9164c210942d3"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_teltonika_gps_tracker_dir/gpx_recorder.py", "repository": "sharix-open-handlers-examples", "sha256": "fa7cbabbfe354fade58e2d9b16195df911755dc49489c405fad389a38abb1b38"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_teltonika_gps_tracker_dir/config_importer.py", "repository": "sharix-open-handlers-examples", "sha256": "3b2ca95e371bdf92dad65a7a9bd4befd0682f0c8ea03212c94b1c2678376c5df"}]}
udp_start
udp_xmpp
udp_socket
udp_stop
udp_close
udp_receive
udp_result
udp_repeat
udp_error
udp_Flow_0
udp_Flow_0
udp_Flow_1
udp_Flow_1
udp_Flow_2
udp_Flow_2
udp_Flow_3
udp_Flow_4
udp_Flow_3
udp_Flow_4
udp_Flow_5
udp_Flow_5
udp_Flow_6
udp_Flow_7
udp_Flow_6
udp_Flow_7
Несмотря на UDP-полезную работу, текущий binding имеет **requires_xmpp=true** и создаёт JabberBot. Общий launcher сначала подключает XMPP, регистрирует callback/supervisor и ждёт connection preflight. При неуспехе UDP loop не начинается. Успешный XMPP connect, напротив, ещё не доказывает доступность UDP endpoint устройству.
UDP loop после XMPP bootstrap:
- Создать IPv4 UDP socket с SO_REUSEADDR.
- Установить timeout=1.0 секунды и bind на TELTONIKA_HOSTNAME/TELTONIKA_PORT.
- Пока exit_event не установлен — вызывать receive_and_print.
- При TimeoutError/socket.timeout продолжать цикл.
- При другом исключении выйти через finally с закрытием socket; далее действует общая политика launcher.
При штатной остановке exit_event проверяется между вызовами; затем закрываются socket и XMPP.
В operation нет отдельного TCP listener или IMEI handshake. Закомментированный TCP-код в catcher не является активным путём запуска.
===== Одна датаграмма: разбор, файлы и ACK (BPMN) =====
{"notes": ["BPMN isExecutable=false; typed operation teltonika_udp_receiver из Blockly, Python сверён канонически.", "Штатный binding requires_xmpp=True: UDP запускается после XMPP connection preflight.", "GPX и отдельные AVL файлы по умолчанию выключены в этом binding; интерактивный catcher main не вызывается.", "ACK из raw byte slices не доказывает успешное сохранение всех точек."], "sources": [{"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_teltonika_gps_tracker.py", "repository": "sharix-open-handlers-examples", "sha256": "176dc8e04c8370481da568124f7e5a27a5418592a3947f718986b042b4a5e083"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "generated_handler_blocks/open_teltonika_gps_tracker.json", "repository": "sharix-open-handlers-examples", "sha256": "a44f034cf10fe311ba6775c8c3579bd14448dc95c9c8ef08fa699c5c2b13ef2d"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "catalog.py", "repository": "sharix-open-handlers-examples", "sha256": "e3dcb72b7e620e2837adacd7af053f35b04cdff475789496d9c114e17d57dfde"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "first_party_operations/open_teltonika_gps_tracker.py", "repository": "sharix-open-handlers-examples", "sha256": "d8c766ceecb6eabdd24bccc0d0f6e9ddcab1fc3b8dab7432b1cf6a0dbda27e86"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "config.py", "repository": "sharix-open-handlers-examples", "sha256": "7b23db9ed283d3bbc3cf2cfbd5d41c629f6be507c3ca38c611572d08a75743a4"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "first_party_blockly_codegen.py", "repository": "sharix-open-handlers-backend", "sha256": "7f4dc6607ad62f3150c58de6341b758ebe97f81bd936c9ec033b7d86fed44640"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/first_party_handler_runtime.py", "repository": "sharix-open-handlers-backend", "sha256": "fb5ee98561b029de9291e73c2a08205cc9fc2b7b239abffe4a4bb24f56093bdb"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "main.py", "repository": "sharix-open-handlers-backend", "sha256": "66b7df94fedbec931ed4cb2d4e1afd9cf0386e14ed0932e22b15eb301cd792d7"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "runtime_provider.py", "repository": "sharix-open-handlers-backend", "sha256": "c311d3b0721d18d8eccc9cd7fba155108bf285df3002507ee915ee73b797a2f4"}, {"commit": "50baf376e224d915a87d63240f3f339b3dda9afa", "path": "core/JabberBot.py", "repository": "sharix-open-handlers-backend", "sha256": "7fbd4d1f41bc867109b73dbb632efcfae920269a1aaf6da0e577cc70838820f1"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "teltonika_config.py", "repository": "sharix-open-handlers-examples", "sha256": "37b1abca5f520f89812e0c0f02c0386511a69553ace5e9cf29243d0ad3d7fb0d"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_teltonika_gps_tracker_dir/catcher.py", "repository": "sharix-open-handlers-examples", "sha256": "f99e418651e38d15bf198e5cd8fb547d97fc084a7bd330e88f9bb9a8e0cdf6dd"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_teltonika_gps_tracker_dir/decoder.py", "repository": "sharix-open-handlers-examples", "sha256": "e5420416a997acfabf29ae0942d8fa95b52890cec71d036f39d9164c210942d3"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_teltonika_gps_tracker_dir/gpx_recorder.py", "repository": "sharix-open-handlers-examples", "sha256": "fa7cbabbfe354fade58e2d9b16195df911755dc49489c405fad389a38abb1b38"}, {"commit": "76e0c693b628ed4a1fa34515a3f8abdff26149bb", "path": "handlers/open_teltonika_gps_tracker_dir/config_importer.py", "repository": "sharix-open-handlers-examples", "sha256": "3b2ca95e371bdf92dad65a7a9bd4befd0682f0c8ea03212c94b1c2678376c5df"}]}
packet_start
packet_parse
packet_parsed
packet_log
packet_record
packet_gpx
packet_ack
packet_end
packet_broken
packet_error
packet_abort
packet_gpx_error
packet_ack_error
packet_Flow_0
packet_Flow_0
packet_Flow_1
packet_Flow_1
packet_Flow_2
packet_Flow_8
packet_Flow_2
packet_Flow_3
packet_Flow_3
packet_Flow_4
packet_Flow_6
packet_Flow_4
packet_Flow_5
packet_Flow_5
packet_Flow_6
packet_Flow_9
packet_Flow_7
packet_Flow_7
packet_Flow_8
packet_Flow_9
packet_Flow_10
packet_Flow_10
packet_Flow_11
packet_Flow_12
packet_Flow_11
packet_Flow_12
Обработка одной датаграммы:
- Получить до 1024 байт через recvfrom и адрес отправителя.
- Передать raw bytes и addr decoder.
- Проверить заявленную/фактическую длину, извлечь заголовки, IMEI, codec, records и IO.
- При успешной структуре сформировать читаемый logging-output.
- Отдельный AVL-файл писать только при write_logs=true.
После parse:
- Если есть структура и GPX recorder включён — добавить точки с координатами, высотой и timestamp по IMEI.
- Пропустить точку (0,0).
- Сформировать ACK через answer_to_device.
- Вызвать sendto на адрес источника датаграммы.
ACK формируется и после parse_data=None, если до него не было исключения.
==== ACK не равен сохранённой телеметрии ====
ACK берёт поля непосредственно из raw bytes:
* UDP packet id — data[2:4];
* AVL packet id — data[5:6];
* count — data[24:25].
Count не вычисляется по фактически разобранным или записанным GPX-точкам. Получение ACK не подтверждает сохранённую телеметрию или обновление бизнес-объекта.
Поэтому ACK не доказывает корректность всех координат, запись файла или обновление бизнес-объекта. Исключение декодирования, файловой операции или sendto — другой исход: оно не обрабатывается как обычный socket timeout и может завершить текущий запуск с последующим restart. Разбор не содержит полноценного fail-closed валидатора всех возможных форматов/codec; IMEI извлекается как данные, а не сопоставляется здесь с разрешённым устройством в БД.
Лимит recvfrom — 1024 байта. Для диагностики длинных/повреждённых пакетов учитывайте этот предел и реальный формат входа, а не только факт получения UDP. Сценарий не объявляет универсальную совместимость по одному удачно разобранному пакету.
===== Что действительно включено при штатном запуске =====
В штатном first-party запуске:
* GPX_Recorder создаётся с is_recording=false;
* AVL_DATA — с write_logs=false и show_broken_data=false;
* binding вызывает receive_and_print напрямую;
* catcher.main, control_thread и переключатели записи этим путём не вызываются.
Команды stdin g/l/b/q самостоятельного примера не являются интерфейсом управления handler через XMPP или launcher.
Обычный читаемый logging при удачном parse выполняется, но отдельные AVL-файлы и GPX в этом binding автоматически не включаются. Директории могут создаваться при импорте recorder/decoder ещё до открытия socket; наличие каталога не доказывает активную запись. Если запись включена другим разрешённым способом, GPX хранится по IMEI и времени первой точки, AVL logs — по IMEI в своих output dirs. Это файлы примера, а не проекция в БД сервиса.
===== Настройки и диагностика =====
^ Назначение ^ Настройка / значение источника ^
| UDP host | TELTONIKA_HOSTNAME; default 0.0.0.0 |
| UDP port | TELTONIKA_PORT; default 350, допустимо 1..65535 |
| Часовой пояс timestamp | TELTONIKA_TIMEZONE; default UTC, проверяется ZoneInfo |
| Каталог отдельного AVL-log | TELTONIKA_AVL_OUTPUT_DIR |
| Каталог GPX | TELTONIKA_GPX_OUTPUT_DIR |
| Период проверки остановки socket loop | Socket timeout 1.0 секунды, в operation |
| Подключение и общие restart limits | Штатные настройки общего handler runtime |
Относительные output paths разрешаются от корня проекта; реальные значения и managed permissions определяет установка. Не следует считать default внутри каталога примера доказательством фактического пути production. Проверяйте штатную env/permission-подготовку, не создавая параллельный неуправляемый конфиг для handler.
Порядок диагностики:
- Сверить выбранные Python version и binding.
- Проверить XMPP preflight: без него UDP loop не начинается.
- Проверить import и права output dirs, затем bind UDP.
- Проверить приход датаграммы и реальный parse result.
- Отдельно проверить флаги записи, созданные данные и ACK.
XMPP callback только логирует допустимые chat/normal от технического allowlist; он не переключает GPX и не обновляет трекер в БД.
===== Проверенные источники =====
Git SHA/SHA-256 и модели закреплены в metadata/BPMN; упаковка повторно сверяет файлы. Handler, socket, устройства и тестовые сообщения при анализе не запускались, секретные runtime env не читались. Общий автоматический hook Wiki пока не завершён.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-examples/src/commit/76e0c693b628ed4a1fa34515a3f8abdff26149bb/handlers/open_teltonika_gps_tracker.py|sharix-open-handlers-examples / handlers/open_teltonika_gps_tracker.py]] — Git 76e0c693b628ed4a1fa34515a3f8abdff26149bb.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-examples/src/commit/76e0c693b628ed4a1fa34515a3f8abdff26149bb/generated_handler_blocks/open_teltonika_gps_tracker.json|sharix-open-handlers-examples / generated_handler_blocks/open_teltonika_gps_tracker.json]] — Git 76e0c693b628ed4a1fa34515a3f8abdff26149bb.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-examples/src/commit/76e0c693b628ed4a1fa34515a3f8abdff26149bb/catalog.py|sharix-open-handlers-examples / catalog.py]] — Git 76e0c693b628ed4a1fa34515a3f8abdff26149bb.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-examples/src/commit/76e0c693b628ed4a1fa34515a3f8abdff26149bb/first_party_operations/open_teltonika_gps_tracker.py|sharix-open-handlers-examples / first_party_operations/open_teltonika_gps_tracker.py]] — Git 76e0c693b628ed4a1fa34515a3f8abdff26149bb.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-examples/src/commit/76e0c693b628ed4a1fa34515a3f8abdff26149bb/config.py|sharix-open-handlers-examples / config.py]] — Git 76e0c693b628ed4a1fa34515a3f8abdff26149bb.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-backend/src/commit/50baf376e224d915a87d63240f3f339b3dda9afa/first_party_blockly_codegen.py|sharix-open-handlers-backend / first_party_blockly_codegen.py]] — Git 50baf376e224d915a87d63240f3f339b3dda9afa.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-backend/src/commit/50baf376e224d915a87d63240f3f339b3dda9afa/core/first_party_handler_runtime.py|sharix-open-handlers-backend / core/first_party_handler_runtime.py]] — Git 50baf376e224d915a87d63240f3f339b3dda9afa.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-backend/src/commit/50baf376e224d915a87d63240f3f339b3dda9afa/main.py|sharix-open-handlers-backend / main.py]] — Git 50baf376e224d915a87d63240f3f339b3dda9afa.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-backend/src/commit/50baf376e224d915a87d63240f3f339b3dda9afa/runtime_provider.py|sharix-open-handlers-backend / runtime_provider.py]] — Git 50baf376e224d915a87d63240f3f339b3dda9afa.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-backend/src/commit/50baf376e224d915a87d63240f3f339b3dda9afa/core/JabberBot.py|sharix-open-handlers-backend / core/JabberBot.py]] — Git 50baf376e224d915a87d63240f3f339b3dda9afa.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-examples/src/commit/76e0c693b628ed4a1fa34515a3f8abdff26149bb/teltonika_config.py|sharix-open-handlers-examples / teltonika_config.py]] — Git 76e0c693b628ed4a1fa34515a3f8abdff26149bb.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-examples/src/commit/76e0c693b628ed4a1fa34515a3f8abdff26149bb/handlers/open_teltonika_gps_tracker_dir/catcher.py|sharix-open-handlers-examples / handlers/open_teltonika_gps_tracker_dir/catcher.py]] — Git 76e0c693b628ed4a1fa34515a3f8abdff26149bb.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-examples/src/commit/76e0c693b628ed4a1fa34515a3f8abdff26149bb/handlers/open_teltonika_gps_tracker_dir/decoder.py|sharix-open-handlers-examples / handlers/open_teltonika_gps_tracker_dir/decoder.py]] — Git 76e0c693b628ed4a1fa34515a3f8abdff26149bb.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-examples/src/commit/76e0c693b628ed4a1fa34515a3f8abdff26149bb/handlers/open_teltonika_gps_tracker_dir/gpx_recorder.py|sharix-open-handlers-examples / handlers/open_teltonika_gps_tracker_dir/gpx_recorder.py]] — Git 76e0c693b628ed4a1fa34515a3f8abdff26149bb.
* [[https://git.sharix-app.org/ShariX_Open/sharix-open-handlers-examples/src/commit/76e0c693b628ed4a1fa34515a3f8abdff26149bb/handlers/open_teltonika_gps_tracker_dir/config_importer.py|sharix-open-handlers-examples / handlers/open_teltonika_gps_tracker_dir/config_importer.py]] — Git 76e0c693b628ed4a1fa34515a3f8abdff26149bb.
===== Связанные материалы =====
* [[sharixopen:knowledge:scenarios:basic_bot|Диагностический XMPP-бот]]
* [[sharixopen:knowledge:scenarios:report_handler|Сборщик служебных отчётов]]
* [[sharixopen:knowledge:modules:handlers|Модуль обработчиков]]
* [[sharixopen:knowledge:scenarios:start|Индекс сценариев]]
~~SHARIX_KNOWLEDGE_RELATED~~