[info] Received status update for terminal 612509043800091 [info] Incoming JSON payload: { "oid": "organization_id", "sn": "61250904380091", "vendor": "MoreFun", "model" : "MF919", "uploadTime": "2024-01-31T10:30:00Z", "org.device": [ { "itemkey": "status", "value": "online", "timestamp": "2024-01-31T10:30:00Z", "message": "Terminal status update" }, { "itemkey": "battery", "value": "85", "timestamp": "2024-01-31T10:30:00Z", "message": "Battery level" }, { "itemkey": "network", "value": "online", "timestamp": "2024-01-31T10:30:00Z", "message": "Network connectivity" }, { "itemkey": "cpu", "value": "45", "timestamp": "2024-01-31T10:30:00Z", "message": "CPU usage percentage" }, { "itemkey": "memory", "value": "60", "timestamp": "2024-01-31T10:30:00Z", "message": "Memory usage percentage" }, { "itemkey": "emv_config", "value": "", "timestamp": "", "message": "EMV Config" }, { "itemkey": "parameter_config", "value": "", "timestamp": "", "message": "Parameter config" }, { "itemkey": "application", "value": "", "timestamp": "", "message": "application" }, { "itemkey": "keys_config", "value": "", "timestamp": "", "message": "keys" } ] } [info] Decoded JSON: %{"model" => "MF919", "oid" => "organization_id", "org.device" => [%{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2024-01-31T10:30:00Z", "value" => "online"}, %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2024-01-31T10:30:00Z", "value" => "85"}, %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2024-01-31T10:30:00Z", "value" => "online"}, %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2024-01-31T10:30:00Z", "value" => "45"}, %{"itemkey" => "memory", "message" => "Memory usage percentage", "timestamp" => "2024-01-31T10:30:00Z", "value" => "60"}, %{"itemkey" => "emv_config", "message" => "EMV Config", "timestamp" => "", "value" => ""}, %{"itemkey" => "parameter_config", "message" => "Parameter config", "timestamp" => "", "value" => ""}, %{"itemkey" => "application", "message" => "application", "timestamp" => "", "value" => ""}, %{"itemkey" => "keys_config", "message" => "keys", "timestamp" => "", "value" => ""}], "sn" => "61250904380091", "uploadTime" => "2024-01-31T10:30:00Z", "vendor" => "MoreFun"} [info] Extracted versions for 61250904380091: %{application: "", emv_config: "", keys_config: "", parameter_config: ""} [info] Detected missing versions for 61250904380091, triggering auto-push [info] AutoPushService: Triggering auto-push for 61250904380091 (MoreFun MF919) - missing version [debug] QUERY OK source="parameter_templates" db=1.3ms idle=1365.3ms SELECT p0.`id`, p0.`name`, p0.`description`, p0.`vendor`, p0.`model`, p0.`is_default`, p0.`is_active`, p0.`created_by_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_templates` AS p0 WHERE (((p0.`is_active` = TRUE) AND (p0.`vendor` = ?)) AND (p0.`model` = ?)) LIMIT 1 ["MoreFun", "MF919"] ↳ TmsCore.TerminalManagement.AutoPushService.find_best_template/2, at: lib/tms_core/terminal_management/auto_push_service.ex:64 [debug] QUERY OK source="tms_terminals" db=0.6ms idle=635.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250904380091"] ↳ TmsCore.TerminalManagement.AutoPushService.trigger_missing_version_push/3, at: lib/tms_core/terminal_management/auto_push_service.ex:34 [debug] QUERY OK db=15.0ms queue=0.3ms idle=1.2ms INSERT INTO `parameter_push_logs` (`status`,`request_id`,`log_time`,`terminal_id`,`push_type`,`template_id`,`device_vendor`,`device_model`,`config_type`,`trigger_reason`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?) ["pending", 292, ~U[2026-03-09 16:58:05Z], 7, "full", 3, "MoreFun", "MF919", "parameter", "missing_version", ~N[2026-03-09 16:58:05], ~N[2026-03-09 16:58:05]] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:105 [info] AutoPushService: Created push log 8 for parameters (template: 3) [debug] QUERY OK source="parameter_template_values" db=1.3ms idle=16.0ms SELECT p0.`id`, p0.`value`, p0.`is_overridden`, p0.`template_id`, p0.`parameter_definition_id`, p0.`inserted_at`, p0.`updated_at` FROM `parameter_template_values` AS p0 WHERE (p0.`template_id` = ?) [3] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:110 [debug] QUERY OK source="parameter_push_logs" db=20.0ms queue=0.3ms idle=1.9ms UPDATE `parameter_push_logs` SET `parameters_sent` = ?, `updated_at` = ? WHERE `id` = ? [%{}, ~N[2026-03-09 16:58:05], 8] ↳ TmsCore.TerminalManagement.AutoPushService.push_template_parameters/5, at: lib/tms_core/terminal_management/auto_push_service.ex:121 [info] MF919 MQTT Command: %{"command" => "UPDATE_PARAMS", "requestId" => 292, "type" => "tms_command"} [info] AutoPushService: Sending parameter push to 61250904380091 on topic: /ota/pFppbioOCKlo5c8E/61250904380091/update [info] AutoPushService: Parameter push sent successfully to 61250904380091 [error] AutoPushService: Failed to create emv_config push log: #Ecto.Changeset, valid?: false, ...> [info] KeysConfigService: Generating keys.json for 61250904380091 (MF919) [debug] QUERY OK source="tms_terminals" db=0.6ms queue=0.1ms idle=22.3ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250904380091"] ↳ TmsCore.TerminalManagement.KeysConfigService.generate_and_store_keys_file/2, at: lib/tms_core/terminal_management/keys_config_service.ex:39 [info] KeysConfigService TMS Core: Calling getRki endpoint for 61250904380091 with params: %{"kekKcv" => "112233", "model" => "MF919", "serialNumber" => "61250904380091", "slotNumber" => 1} with url: http://localhost:8300/api/v1/getRki [error] KeysConfigService: getRki returned status 404: %{"error" => "Not Found", "path" => "/api/v1/getRki", "status" => 404, "timestamp" => "2026-03-09T16:58:05.640+00:00"} [error] KeysConfigService: Failed to fetch RKI key: "getRki endpoint returned status 404" [error] KeysConfigService: Failed to generate keys for 61250904380091: "Failed to fetch RKI key: \"getRki endpoint returned status 404\"" [error] AutoPushService: Failed to generate keys.json for 61250904380091: "Failed to fetch RKI key: \"getRki endpoint returned status 404\"" [error] AutoPushService: Failed to create application push log: #Ecto.Changeset, valid?: false, ...> [info] AutoPushService: Auto-push completed for 61250904380091 [debug] QUERY OK source="tms_terminals" db=0.4ms idle=10.9ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250904380091"] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:98 [info] Terminal updated: 61250904380091 [debug] QUERY OK source="tms_terminals" db=1.0ms idle=9.2ms SELECT t0.`id`, t0.`serial_number`, t0.`oid`, t0.`status`, t0.`model`, t0.`vendor`, t0.`area`, t0.`group`, t0.`imei`, t0.`imei2`, t0.`cpuid`, t0.`mac`, t0.`app_version`, t0.`data_version`, t0.`system_version`, t0.`secure_firmware`, t0.`factory_time`, t0.`boot_version`, t0.`pubkey`, t0.`appkey`, t0.`locked`, t0.`hardware_version`, t0.`driver_version`, t0.`pro_version`, t0.`module_version`, t0.`wifi_version`, t0.`remark`, t0.`otp_id`, t0.`netmac`, t0.`heart`, t0.`parameter_config_version`, t0.`emv_config_version`, t0.`keys_config_version`, t0.`kek_kcv`, t0.`slot_number`, t0.`last_keys_update`, t0.`merchant_id`, t0.`location_code`, t0.`deployment_type`, t0.`tier`, t0.`inserted_at`, t0.`updated_at` FROM `tms_terminals` AS t0 WHERE (t0.`serial_number` = ?) ["61250904380091"] ↳ TmsCore.TerminalManagement.update_heartbeat/1, at: lib/tms_core/terminal_management.ex:621 [debug] QUERY OK source="tms_terminals" db=31.0ms idle=1.6ms UPDATE `tms_terminals` SET `updated_at` = ? WHERE `id` = ? [~N[2026-03-09 16:58:05], 7] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:123 [debug] QUERY OK db=23.1ms idle=31.6ms INSERT INTO `tms_terminal_status_logs` (`terminal_id`,`oid`,`upload_time`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) [7, "organization_id", "2024-01-31T10:30:00Z", ~N[2026-03-09 16:58:05], ~N[2026-03-09 16:58:05]] ↳ DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:125 [info] Saved status_log: %TmsCore.TerminalManagement.TmsTerminalStatusLog{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_logs">, id: 6416, oid: "organization_id", upload_time: "2024-01-31T10:30:00Z", terminal_id: 7, terminal: #Ecto.Association.NotLoaded, status_items: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-09 16:58:05], updated_at: ~N[2026-03-09 16:58:05]} [info] Saving status item: %{"itemkey" => "status", "message" => "Terminal status update", "timestamp" => "2024-01-31T10:30:00Z", "value" => "online"} [debug] QUERY OK db=10.8ms idle=24.3ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Terminal status update", "2024-01-31T10:30:00Z", "online", "status", 6416, ~N[2026-03-09 16:58:05], ~N[2026-03-09 16:58:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:135 [info] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 16900, itemkey: "status", value: "online", timestamp: "2024-01-31T10:30:00Z", message: "Terminal status update", status_log_id: 6416, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-09 16:58:05], updated_at: ~N[2026-03-09 16:58:05]}} [info] Setting terminal 61250904380091 status to 'online' from status itemkey [info] Saving status item: %{"itemkey" => "battery", "message" => "Battery level", "timestamp" => "2024-01-31T10:30:00Z", "value" => "85"} [debug] QUERY OK db=29.7ms idle=12.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Battery level", "2024-01-31T10:30:00Z", "85", "battery", 6416, ~N[2026-03-09 16:58:05], ~N[2026-03-09 16:58:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:135 [info] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 16901, itemkey: "battery", value: "85", timestamp: "2024-01-31T10:30:00Z", message: "Battery level", status_log_id: 6416, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-09 16:58:05], updated_at: ~N[2026-03-09 16:58:05]}} [info] Saving status item: %{"itemkey" => "network", "message" => "Network connectivity", "timestamp" => "2024-01-31T10:30:00Z", "value" => "online"} [debug] QUERY OK db=25.7ms idle=32.4ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Network connectivity", "2024-01-31T10:30:00Z", "online", "network", 6416, ~N[2026-03-09 16:58:05], ~N[2026-03-09 16:58:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:135 [info] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 16902, itemkey: "network", value: "online", timestamp: "2024-01-31T10:30:00Z", message: "Network connectivity", status_log_id: 6416, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-09 16:58:05], updated_at: ~N[2026-03-09 16:58:05]}} [info] Setting terminal 61250904380091 status to 'online' from network itemkey [info] Saving status item: %{"itemkey" => "cpu", "message" => "CPU usage percentage", "timestamp" => "2024-01-31T10:30:00Z", "value" => "45"} [debug] QUERY OK db=11.2ms idle=28.2ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["CPU usage percentage", "2024-01-31T10:30:00Z", "45", "cpu", 6416, ~N[2026-03-09 16:58:05], ~N[2026-03-09 16:58:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:135 [info] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 16903, itemkey: "cpu", value: "45", timestamp: "2024-01-31T10:30:00Z", message: "CPU usage percentage", status_log_id: 6416, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-09 16:58:05], updated_at: ~N[2026-03-09 16:58:05]}} [info] Saving status item: %{"itemkey" => "memory", "message" => "Memory usage percentage", "timestamp" => "2024-01-31T10:30:00Z", "value" => "60"} [debug] QUERY OK db=18.9ms idle=12.6ms INSERT INTO `tms_terminal_status_items` (`message`,`timestamp`,`value`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?,?,?) ["Memory usage percentage", "2024-01-31T10:30:00Z", "60", "memory", 6416, ~N[2026-03-09 16:58:05], ~N[2026-03-09 16:58:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:135 [info] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 16904, itemkey: "memory", value: "60", timestamp: "2024-01-31T10:30:00Z", message: "Memory usage percentage", status_log_id: 6416, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-09 16:58:05], updated_at: ~N[2026-03-09 16:58:05]}} [info] Saving status item: %{"itemkey" => "emv_config", "message" => "EMV Config", "timestamp" => "", "value" => ""} [debug] QUERY OK db=16.1ms idle=20.1ms INSERT INTO `tms_terminal_status_items` (`message`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["EMV Config", "emv_config", 6416, ~N[2026-03-09 16:58:05], ~N[2026-03-09 16:58:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:135 [info] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 16905, itemkey: "emv_config", value: nil, timestamp: nil, message: "EMV Config", status_log_id: 6416, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-09 16:58:05], updated_at: ~N[2026-03-09 16:58:05]}} [info] Saving status item: %{"itemkey" => "parameter_config", "message" => "Parameter config", "timestamp" => "", "value" => ""} [debug] QUERY OK db=38.9ms idle=17.4ms INSERT INTO `tms_terminal_status_items` (`message`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["Parameter config", "parameter_config", 6416, ~N[2026-03-09 16:58:05], ~N[2026-03-09 16:58:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:135 [info] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 16906, itemkey: "parameter_config", value: nil, timestamp: nil, message: "Parameter config", status_log_id: 6416, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-09 16:58:05], updated_at: ~N[2026-03-09 16:58:05]}} [info] Saving status item: %{"itemkey" => "application", "message" => "application", "timestamp" => "", "value" => ""} [debug] QUERY OK db=16.5ms idle=40.3ms INSERT INTO `tms_terminal_status_items` (`message`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["application", "application", 6416, ~N[2026-03-09 16:58:05], ~N[2026-03-09 16:58:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:135 [info] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 16907, itemkey: "application", value: nil, timestamp: nil, message: "application", status_log_id: 6416, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-09 16:58:05], updated_at: ~N[2026-03-09 16:58:05]}} [info] Saving status item: %{"itemkey" => "keys_config", "message" => "keys", "timestamp" => "", "value" => ""} [debug] QUERY OK db=10.9ms idle=18.0ms INSERT INTO `tms_terminal_status_items` (`message`,`itemkey`,`status_log_id`,`inserted_at`,`updated_at`) VALUES (?,?,?,?,?) ["keys", "keys_config", 6416, ~N[2026-03-09 16:58:05], ~N[2026-03-09 16:58:05]] ↳ anonymous fn/4 in DaProductApp.MQTT.Handler.handle_message/3, at: lib/da_product_app/mqtt/handler.ex:135 [info] Result of create_status_item: {:ok, %TmsCore.TerminalManagement.TmsTerminalStatusItem{__meta__: #Ecto.Schema.Metadata<:loaded, "tms_terminal_status_items">, id: 16908, itemkey: "keys_config", value: nil, timestamp: nil, message: "keys", status_log_id: 6416, status_log: #Ecto.Association.NotLoaded, inserted_at: ~N[2026-03-09 16:58:05], updated_at: ~N[2026-03-09 16:58:05]}} [warning] Unexpected async result