diff --git a/Dockerfile b/Dockerfile
index 145c1339ec410e7d3b0af02e0aa1994d945c6913..591f783b4bc570d52cd63187aaf6246991589307 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -10,4 +10,4 @@ COPY . /usr/src/app
 
 # For Django
 EXPOSE 8080
-CMD ["websocketd", "--port", "8080", "python3", "/usr/src/app/websocketd_server.py", "/opt/persist/data.csv"]
+CMD ["websocketd", "--port", "8080", "python3", "/usr/src/app/websocketd_server.py", "/opt/persist/data", "/opt/persist/hearbeat.log"]
diff --git a/websocketd_server.py b/websocketd_server.py
index 5ff5e32093c84a8ccc0d34ae484760c99667b5b8..3d1d8035b83b08a1c0c719278749d59468150b29 100644
--- a/websocketd_server.py
+++ b/websocketd_server.py
@@ -1,17 +1,29 @@
 #!/usr/bin/env python3
 
 import datetime
+import json
 import sys
 
 def main():
-	output_file = sys.argv[1]
-	print("Saving output to %s" % output_file)
+	data_prefix, heartbeat_file = sys.argv[1:]
+	print("Using file prefix %s for data" % data_prefix)
+	print("Using heartbeat file %s" % heartbeat_file)
 	for line in sys.stdin:
-		entry = line.strip() + ',' + datetime.datetime.now().isoformat()
-		with open(output_file, 'a') as f:
-			f.write(entry + '\n')
-		print(entry)
+		line = line.strip()
+		if line.startswith('PING'):
+			# Let's not care about the possible simultaneous writes. It's just a heart beat.
+			with open(heartbeat_file, 'a') as f:
+				f.write(line + '\n')
+			continue
+
+		entry = line + ',' + datetime.datetime.now().isoformat()
+		tms, direction, vehicle_class, *rest = line.split(',')
+		print(json.dumps({'tmsNumber': int(tms), 'direction': int(direction), 'vehicle_class': int(vehicle_class)}))
 		sys.stdout.flush()
 
+		data_file = '%s_%d.csv' % (data_prefix, int(tms))
+		with open(data_file, 'a') as f:
+			f.write(entry + '\n')
+
 if __name__ == '__main__':
 	main()
\ No newline at end of file