Procházet zdrojové kódy

change: encoder to json socket

micha před 3 roky
rodič
revize
125035abf2
2 změnil soubory, kde provedl 50 přidání a 3 odebrání
  1. 44 1
      _LibreLightDesk.py
  2. 6 2
      console.py

+ 44 - 1
_LibreLightDesk.py

@@ -1997,7 +1997,36 @@ class Fixtures(Base):
                 data = self.fixtures[fix]
                 for attr in data["ATTRIBUT"]:
                     data["ATTRIBUT"][attr]["FX"] = ""
+    def get_attr(self,fix,attr):
+        if fix in self.fixtures:
+            data = self.fixtures[fix]
+            if "ATTRIBUT" in data:
+                if attr in data["ATTRIBUT"]:
+                    return data["ATTRIBUT"][attr]
 
+    def get_dmx(self,fix,attr):
+        cprint("get_dmx",[fix,attr])
+        if fix in self.fixtures:
+            data = self.fixtures[fix]
+            if "DMX" in data:
+                DMX = int(data["DMX"])
+            else:
+                return -1
+            if "UNIVERS" in data:
+                DMX += (int(data["UNIVERS"])*512)
+            adata = self.get_attr(fix,attr)
+            cprint(adata,DMX)
+
+            if adata:
+                if "NR" in adata:
+                    NR = adata["NR"] 
+                    if NR > 0:
+                        DMX+=NR-1
+                    else:
+                        return -2
+                return DMX
+            return -4
+        return -3
     def update_raw(self,rdata):
         cprint("update_raw",len(rdata))
         cmd = []
@@ -2079,15 +2108,19 @@ class Fixtures(Base):
         v2=data["ATTRIBUT"][attr]["VALUE"]
         change=0
         increment = 4.11
+        jdata = {"MODE":"ENC"}
         if xval == "+":
             v2+= increment
+            jdata["INC"] = increment
             v = "+{:0.4f}".format( increment ) #) #4.11"
             change=1
         elif xval == "-":
+            jdata["INC"] = increment*-1
             v2-= increment
             v = "-{:0.4f}".format( increment ) #) #4.11"
             change=1
         elif type(xval) is int or type(xval) is float:
+            jdata["xVALUE"] = round(xval,4)
             v2 = xval 
             change=1
 
@@ -2096,17 +2129,27 @@ class Fixtures(Base):
             v2=0
         elif v2 > 256:
             v2=256
+        jdata["VALUE"] = round(v2,4)
+        jdata["FIX"] = fix
+        jdata["ATTR"] = attr
+        jdata["DMX"] = FIXTURES.get_dmx(fix,attr)
         out = {} 
         if change:
             data["ATTRIBUT"][attr]["ACTIVE"] = 1
             data["ATTRIBUT"][attr]["VALUE"] = round(v2,4)
             if xfade:
                 cmd=update_dmx(attr=attr,data=data)
+                jdata["FADE"] = xfade
             else:
                 cmd=update_dmx(attr=attr,data=data,args=[0])
+                jdata["FADE"] = 0
 
             if cmd and not modes.val("BLIND"):
-                client.send(cmd)
+                #client.send(cmd)
+                jdata = [jdata]
+                print(jdata)
+                #print(cmd)
+                jclient.send("**"+json.dumps(jdata)+"**")
         return v2
 
     def get_active(self):

+ 6 - 2
console.py

@@ -384,6 +384,8 @@ def JCB(data):
     time = 0
     delay = 0
     for j in jdatas:
+        if not j:
+            continue
         try:
             jdata = j #jdatas[j]
             #print(j)
@@ -412,10 +414,10 @@ def JCB(data):
                 
                 if v is not None:
                     if "FLASH" in x:
-                        print("FLASH")
+                        #print("FLASH")
                         Bdmx[DMX].flush(target=v,time=time, clock=c,delay=delay)
                     else:
-                        print("FADE")
+                        #print("FADE")
                         Bdmx[DMX].fade(target=v,time=time, clock=c,delay=delay)
                 if fx:
                     ccm = str(DMX+1)+":"+fx
@@ -428,6 +430,7 @@ def JCB(data):
             return
         except Exception as e:
             print("EXCEPTION JCB",e)
+            print("----",jdata)
             print("Error on line {}".format(sys.exc_info()[-1].tb_lineno))
             
 def CB(data):
@@ -586,5 +589,6 @@ def CB(data):
 jchat = chat.CMD(JCB,port=50001) # server listener
 thread.start_new_thread(jchat.poll,())
 chat.cmd(CB) # server listener
+#chat.cmd(JCB,port=50001) # server listener
 
 #input("END")