diff --git a/Documentation/SRG-300H dimensins.pdf b/Documentation/SRG-300H dimensins.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..885c5739267f1c9d35aaf785ebca8a1b4a161295
Binary files /dev/null and b/Documentation/SRG-300H dimensins.pdf differ
diff --git a/Documentation/SRG_300H command list.pdf b/Documentation/SRG_300H command list.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..7d04a07b1f6c0e97e64b74c7e8830fe19de057d5
Binary files /dev/null and b/Documentation/SRG_300H command list.pdf differ
diff --git a/Logiciels/RM-IPSetupTool/RM-IPSetupTool/RM-IPSetupTool.exe b/Logiciels/RM-IPSetupTool/RM-IPSetupTool/RM-IPSetupTool.exe
new file mode 100644
index 0000000000000000000000000000000000000000..cf1a04b621079ba939ad0c6509412296c09828a3
Binary files /dev/null and b/Logiciels/RM-IPSetupTool/RM-IPSetupTool/RM-IPSetupTool.exe differ
diff --git a/Logiciels/RM-IPSetupTool/RM-IPSetupTool/ReleaseNote.txt b/Logiciels/RM-IPSetupTool/RM-IPSetupTool/ReleaseNote.txt
new file mode 100644
index 0000000000000000000000000000000000000000..399dd38d942a6ba1e2b8e93baa2440af6eabe1d1
--- /dev/null
+++ b/Logiciels/RM-IPSetupTool/RM-IPSetupTool/ReleaseNote.txt
@@ -0,0 +1,5 @@
+Ver1.1.0 (Dec. 22,2017)
+- Chinese Language is now supported.
+
+Ver1.0.0 (Mar. 15,2017)
+- First release
diff --git a/Logiciels/RM-IPSetupTool/RM-IPSetupTool/log/connectlog_181125093606.log b/Logiciels/RM-IPSetupTool/RM-IPSetupTool/log/connectlog_181125093606.log
new file mode 100644
index 0000000000000000000000000000000000000000..45996ecc935b3364539081bb77fd20dedf90f67b
--- /dev/null
+++ b/Logiciels/RM-IPSetupTool/RM-IPSetupTool/log/connectlog_181125093606.log
@@ -0,0 +1,12 @@
+[SUCCESS] 181125093606
+Success!!
+
+[SND/NETINQ] 181125093606
+02454e513a6e6574776f726bff03
+
+[SND/NETINQ] 181125093610
+02454e513a6e6574776f726bff03
+
+[SND/NETINQ] 181125093612
+02454e513a6e6574776f726bff03
+
diff --git a/Logiciels/RM-IPSetupTool/RM-IPSetupTool/log/connectlog_181125094825.log b/Logiciels/RM-IPSetupTool/RM-IPSetupTool/log/connectlog_181125094825.log
new file mode 100644
index 0000000000000000000000000000000000000000..03ac0ea3e504e050076e544ac6d56492b17d7dfc
--- /dev/null
+++ b/Logiciels/RM-IPSetupTool/RM-IPSetupTool/log/connectlog_181125094825.log
@@ -0,0 +1,39 @@
+[SUCCESS] 181125094825
+Success!!
+
+[SND/NETINQ] 181125094825
+02454e513a6e6574776f726bff03
+
+[RECIEVE] 181125094826
+024d41433a30342d35442d34422d32462d43342d3637ff494e464f3a6e6574776f726bff4d4f44454c3a495043415244ff534f465456455253494f4e3a322e3130ff49504144523a3139322e3136382e302e313030ff4d41534b3a3235352e3235352e3235352e30ff474154455741593a302e302e302e30ff4e414d453a43414d31ff57524954453a6f6eff03
+
+[RCV/NETINQ] 181125094826
+Analyze start.
+
+[SND/NETINQ] 181125100703
+02454e513a6e6574776f726bff03
+
+[RECIEVE] 181125100703
+024d41433a30342d35442d34422d32462d43342d3637ff494e464f3a6e6574776f726bff4d4f44454c3a495043415244ff534f465456455253494f4e3a322e3130ff49504144523a3139322e3136382e302e313030ff4d41534b3a3235352e3235352e3235352e30ff474154455741593a302e302e302e30ff4e414d453a43414d31ff57524954453a6f6eff03
+
+[RCV/NETINQ] 181125100703
+Analyze start.
+
+[SND/NETINQ] 181125100710
+02454e513a6e6574776f726bff03
+
+[RECIEVE] 181125100710
+024d41433a30342d35442d34422d32462d43342d3637ff494e464f3a6e6574776f726bff4d4f44454c3a495043415244ff534f465456455253494f4e3a322e3130ff49504144523a3139322e3136382e302e313030ff4d41534b3a3235352e3235352e3235352e30ff474154455741593a302e302e302e30ff4e414d453a43414d31ff57524954453a6f6eff03
+
+[RCV/NETINQ] 181125100710
+Analyze start.
+
+[SND/NETINQ] 181125100713
+02454e513a6e6574776f726bff03
+
+[RECIEVE] 181125100713
+024d41433a30342d35442d34422d32462d43342d3637ff494e464f3a6e6574776f726bff4d4f44454c3a495043415244ff534f465456455253494f4e3a322e3130ff49504144523a3139322e3136382e302e313030ff4d41534b3a3235352e3235352e3235352e30ff474154455741593a302e302e302e30ff4e414d453a43414d31ff57524954453a6f6eff03
+
+[RCV/NETINQ] 181125100713
+Analyze start.
+
diff --git a/Logiciels/Wireshark-win64-2.6.4.exe b/Logiciels/Wireshark-win64-2.6.4.exe
new file mode 100644
index 0000000000000000000000000000000000000000..aba2279f5bff4f6d9d35cbc33e35e71d310cae93
Binary files /dev/null and b/Logiciels/Wireshark-win64-2.6.4.exe differ
diff --git a/cam commandes.py b/cam commandes.py
new file mode 100644
index 0000000000000000000000000000000000000000..ce0f916842821be4cefdda6d387f820c191f5053
--- /dev/null
+++ b/cam commandes.py	
@@ -0,0 +1,91 @@
+import socket
+sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # UDP
+sequence_number=520
+
+UDP_IP = "192.168.0.100"
+UDP_PORT = 52381
+VV =  "10 " # Pan speed setting between 01 and 18 in normal speed, up to 0x7E in slow move mode.
+WW = "10 " # Tilt speed 
+POS_1=["0A00","FB00"]
+POS_2=["F700","FB00"]
+#sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+payload = ""
+header=""
+message=""
+
+while True:
+    command = input('Indique ta commande : pos1, pos2, reset \n')
+    if(command == "pos1"):
+        payload = "81 01 06 02 " #Movetoabsoluteposition in POS
+        payload = payload + VV + WW #add move speed
+        for i in POS_1: #add position
+            for j in i:
+                payload = payload + "0" + j +" "
+        payload = payload + "FF " #end byte
+        header = "01 00 " # Payload type : 0100 for a command, 0110 for and inquiry, 0200 for a control command and 0120 for a device setting command
+        header = header + "00 "
+        #header = header + ('0'*(4-len(hex(len(payload.replace(' ',''))//2))) +hex(len(payload.replace(' ',''))//2))
+        header=header + '0F '
+        header = header + ('0'*(8-len(str(sequence_number)))+str(sequence_number)) 
+        message = header + payload
+        sock.sendto(bytes.fromhex(message.replace(' ','')),(UDP_IP,UDP_PORT))
+        print("salle1" + message)
+        sequence_number=sequence_number+1
+    if(command=="pos2"):
+        payload = "81 01 06 02 " #Movetoabsoluteposition in POS
+        payload = payload + VV + WW #add move speed
+        for i in POS_2: #add position
+            for j in i:
+                payload = payload + "0" + j +" "
+        payload = payload + "FF " #end byte
+        header = "01 00 " # Payload type : 0100 for a command, 0110 for and inquiry, 0200 for a control command and 0120 for a device setting command
+        header = header + "00 "
+        #header = header + ('0'*(4-len(hex(len(payload.replace(' ',''))//2))) +hex(len(payload.replace(' ',''))//2))
+        header=header + '0F '
+        header = header + ('0'*(8-len(str(sequence_number)))+str(sequence_number)) 
+        message = header + payload
+        sock.sendto(bytes.fromhex(message.replace(' ','')),(UDP_IP,UDP_PORT))
+        print("salle2 " + message)
+        sequence_number=sequence_number+1
+    if(command=="reset"):
+        payload = "01 " #Movetoabsoluteposition in POS
+        payload = payload + "FF " #end byte
+        
+        header = "02 00 " # Payload type : 0100 for a command, 0110 for and inquiry, 0200 for a control command and 0120 for a device setting command
+        
+        #header = header + ('0'*(4-len(hex(len(payload.replace(' ',''))//2))) +hex(len(payload.replace(' ',''))//2))
+        header=header + '01 '
+        header = header + "00 00 00 00"
+        message = header + payload
+        
+        sock.sendto(bytes.fromhex(message.replace(' ','')),(UDP_IP,UDP_PORT))
+        print("reset " + message)
+        sequence_number=1
+""""if(command=='moveleft'):
+        payload = "81 01 06 01 03 03 01 03 FF"
+        header = "10 00 00 09"
+        header = header + ('0'*(8-len(str(sequence_number)))+str(sequence_number)) 
+        message = header + payload
+        sock.sendto(bytes.fromhex(message.replace(' ','')),(UDP_IP,UDP_PORT))
+        print("Moveleft : " + message)
+    if(command =='moveright'):
+        payload = "81 01 06 01 03 03 02 03 FF"
+        header = "10 00 00 09"
+        header = header + ('0'*(8-len(str(sequence_number)))+str(sequence_number)) 
+        message = header + payload
+        sock.sendto(bytes.fromhex(message.replace(' ','')),(UDP_IP,UDP_PORT))
+        print("Moveleft : " + message)"""
+        
+""" if(command=="zoom0"):
+        payload="81 01 04 47 00 00 00 00 FF"
+    if(command=="zoom2"):
+        payload="81 01 04 47 01 06 0A 01 FF"
+    if(command=="focustuyau"): #6m
+        payload="81 01 04 48 04 00 00 00 FF"
+    if(command=="manualfocus"):
+        payload="81 01 04 38 03 FF"
+    if(command=="autofocus"):
+        payload="81 01 04 38 02 FF"
+    if(command=="movetuyau"):
+        payload="81 01 06 02 10 10 01 02 00 00 0F 0E 0C 00 ff"""
+    
\ No newline at end of file
diff --git a/camera.py b/camera.py
new file mode 100644
index 0000000000000000000000000000000000000000..69b73bfdfd9b4e11e86c0301180eb9fabf0d96da
--- /dev/null
+++ b/camera.py
@@ -0,0 +1,47 @@
+from tkinter import *
+import tkinter as Tk
+import socket
+
+UDP_IP = "192.168.0.100"
+UDP_PORT = 52381
+
+
+root=Tk.Tk()
+root.title('commande camera')
+root.withdraw()
+top=Tk.Toplevel()
+top.title("commande camera")
+background=Tk.Frame(root)
+
+sequence_number = 83
+sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+
+def salle1():
+    message = ""
+    sock.sendto(bytes.hex(message.replace(' ',''))
+    print("salle1")
+
+def salle2():
+    message = ""
+    sock.sendto(bytes.hex(message.replace(' ',''))
+    print("salle 1")
+
+def reset():
+    message = ""
+    sock.sendto(bytes.hex(message.replace(' ',''))    
+    print("salle 2")
+
+
+salle1_button=Tk.Button(top, text='salle 1', bg='grey', fg='black', padx=30, pady=6, command=salle1)
+salle1_button.pack()
+
+salle2_button=Tk.Button(top, text='salle 2', bg='red', fg='black', padx=30, pady=6, command=salle2)
+salle2_button.pack()
+
+reset_button=Tk.Button(top, text='reset', bg='white', fg='black', padx=30, pady=6, command=reset)
+reset_button.pack()
+
+quit_menu=Tk.Button(top, text='QUIT', bg='red', fg='white', command=quit)
+quit_menu.pack(anchor='e')
+
+root.mainloop()
diff --git a/camera2.py b/camera2.py
new file mode 100644
index 0000000000000000000000000000000000000000..68ba25fb7ac61e5246fb810c2cb8fd59757264cb
--- /dev/null
+++ b/camera2.py
@@ -0,0 +1,101 @@
+from tkinter import *
+import tkinter as Tk
+
+import socket
+
+root=Tk.Tk()
+root.title('commande camera')
+root.withdraw()
+top=Tk.Toplevel()
+top.title("commande camera")
+background=Tk.Frame(root)
+
+sequence_number=83
+
+UDP_IP = "192.168.0.100"
+UDP_PORT = 52381
+VV =  "18 " # Pan speed setting between 01 and 18 in normal speed, up to 0x7E in slow move mode.
+WW = "17 " # Tilt speed 
+POS_1=["1200","EF00"]
+POS_2=["ED00","0400"]
+#sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+payload = ""
+header=""
+message=""
+def salle1():
+    payload = "81 01 06 02 " #Movetoabsoluteposition in POS
+    payload = payload + VV + WW #add move speed
+    for i in POS_1: #add position
+        for j in i:
+            payload = payload + "0" + j +" "
+    payload = payload + "FF " #end byte
+    header = "01 00 " # Payload type : 0100 for a command, 0110 for and inquiry, 0200 for a control command and 0120 for a device setting command
+    header = header + "00 "
+    #header = header + ('0'*(4-len(hex(len(payload.replace(' ',''))//2))) +hex(len(payload.replace(' ',''))//2))
+    header=header + '0F '
+    header = header + ('0'*(8-len(str(sequence_number)))+str(sequence_number)) 
+    message = header + payload
+    sock.sendto(bytes.hex(message.replace(' ','')))
+    print("salle1" + message)
+    sequence_number=sequence_number+1
+
+def salle2():
+    payload = "81 01 06 02 " #Movetoabsoluteposition in POS
+    payload = payload + VV + WW #add move speed
+    for i in POS_1: #add position
+        for j in i:
+            payload = payload + "0" + j +" "
+    payload = payload + "FF " #end byte
+    header = "01 00 " # Payload type : 0100 for a command, 0110 for and inquiry, 0200 for a control command and 0120 for a device setting command
+    header = header + "00 "
+    #header = header + ('0'*(4-len(hex(len(payload.replace(' ',''))//2))) +hex(len(payload.replace(' ',''))//2))
+    header=header + '0F '
+    header = header + ('0'*(8-len(str(sequence_number)))+str(sequence_number)) 
+    message = header + payload
+    sock.sendto(bytes.hex(message.replace(' ','')))
+    print("salle1" + message)
+    sequence_number=sequence_number+1
+
+def reset():
+    payload = "01h " #Movetoabsoluteposition in POS
+    payload = payload + "FF " #end byte
+    
+    header = "02 00 " # Payload type : 0100 for a command, 0110 for and inquiry, 0200 for a control command and 0120 for a device setting command
+    
+    #header = header + ('0'*(4-len(hex(len(payload.replace(' ',''))//2))) +hex(len(payload.replace(' ',''))//2))
+    header=header + '0F '
+    header = header + ('0'*(8-len(str(sequence_number)))+str(sequence_number)) +" "
+    message = header + ('0'*(4-len(hex(len(payload.replace(' ',''))//2))) +hex(len(payload.replace(' ',''))//2)) + " "
+    
+    #sock.sendto(bytes.hex(message.replace(' ','')))
+    print("reset " + message)
+    sequence_number=1
+
+
+up_gap=Tk.Label(top, text=' ')  #mise en forme
+up_gap.pack()
+
+salle1_button=Tk.Button(top, text='salle 1', bg='grey', fg='black', padx=30, pady=6, command=salle1)
+salle1_button.pack()
+
+salle2_button=Tk.Button(top, text='salle 2', bg='red', fg='black', padx=30, pady=6, command=salle2)
+salle2_button.pack()
+
+reset_button=Tk.Button(top, text=' reset ', bg='white', fg='black', padx=30, pady=6, command=reset)
+reset_button.pack()
+
+up_gap2=Tk.Label(top, text=' ')  #mise en forme
+up_gap2.pack()
+
+quit_menu=Tk.Button(top, text='QUIT', bg='red', fg='white', command=quit)
+quit_menu.pack(anchor='c')
+
+#mise en forme
+
+
+left_gap=Tk.Label(top, text=' ')
+left_gap.pack(side='left')
+right_gap=Tk.Label(top, text=' ')
+right_gap.pack(side='right')
+
+root.mainloop()