serialNo = $serialNo; $this->payload = $payload; } /** * Execute the job. */ public function handle(): void { $machine = Machine::withoutGlobalScopes()->where('serial_no', $this->serialNo)->first(); if (!$machine) { Log::warning("MQTT Heartbeat: Machine not found", ['serial_no' => $this->serialNo]); return; } // 更新機台狀態 $updateData = [ 'last_heartbeat_at' => now(), ]; // 根據 payload 動態更新欄位 if (isset($this->payload['current_page'])) { $updateData['current_page'] = $this->payload['current_page']; } if (isset($this->payload['temperature'])) { $updateData['temperature'] = $this->payload['temperature']; } if (isset($this->payload['firmware_version'])) { $updateData['firmware_version'] = $this->payload['firmware_version']; } $machine->update($updateData); } }