فهرست منبع

fix: FX json bug's

micha 3 سال پیش
والد
کامیت
addf9af5f4
2فایلهای تغییر یافته به همراه82 افزوده شده و 18 حذف شده
  1. 38 14
      _LibreLightDesk.py
  2. 44 4
      console.py

+ 38 - 14
_LibreLightDesk.py

@@ -488,6 +488,7 @@ class Xevent():
                     #print( "ADD FX",fix)
                     for attr in data["ATTRIBUT"]:
                         jdata = {"MODE":"FX"}
+                        jdata["VALUE"] = None
                         jdata["FIX"] = fix
                         jdata["DMX"] = FIXTURES.get_dmx(fix,attr)
                         jdata["ATTR"] =attr
@@ -499,7 +500,7 @@ class Xevent():
                         cstart = fx_prm["START"]
                         cbase  = fx_prm["BASE"]
                         #cstart = start
-                        coffset= offset
+                        coffset= round(offset,1)
                         #cbase  = base
                         fx=""
                         if "SIN" in self.attr:
@@ -642,18 +643,25 @@ class Xevent():
                                 else:
                                     cprint("FX: unbekant",fx_modes[fx_prm["MODE"]],color="red")
 
-                            jdata["TYPE"]  = fx
-                            jdata["OFFSET"]= coffset
-                            jdata["SPEED"] = cspeed
-                            jdata["START"] = cstart
-                            jdata["BASE"]  = cbase
-                            if fx:
+                            #if fx:
+                            fxtype = fx
+                            if data["ATTRIBUT"][attr]["ACTIVE"] and fx:
+                                fjdata = {}
+                                fjdata["TYPE"]  = fxtype
+                                fjdata["SIZE"] = round(csize,2)
+                                fjdata["SPEED"] = round(cspeed,2)
+                                fjdata["START"] = cstart
+                                fjdata["OFFSET"]= round(coffset,2)
+                                fjdata["BASE"]  = cbase
+                                jdata["FX2"] = fjdata
                                 print(jdata)
-                                jdatas.append(jdata)
+                                #jdatas.append(jdata)
 
+                        fxtype = fx
                         if fx:
                             #fx += ":{:0.0f}:{:0.0f}:{:0.0f}:{:0.0f}:{}:".format(fx_prm["SIZE"],fx_prm["SPEED"],start,offset,base)
                             fx += ":{:0.0f}:{:0.0f}:{:0.0f}:{:0.0f}:{}:".format(csize,cspeed,cstart,coffset,cbase)
+                            jdata["FX"] = fx
                             offset_flag=1
                             #print("ADD FX",fix,attr,fx,data["ATTRIBUT"][attr]["ACTIVE"])
 
@@ -663,11 +671,22 @@ class Xevent():
                             print("++ADD FX",fix,attr,fx)
                             data["ATTRIBUT"][attr]["FX"] = fx #"sinus:40:100:10"
                             cmd+=update_dmx(attr,data,pfx="fx",value=fx)#,flash=FLASH)
+                            fjdata = {}
+                            fjdata["TYPE"]  = fxtype
+                            fjdata["SIZE"] = round(csize,2)
+                            fjdata["SPEED"] = round(cspeed,2)
+                            fjdata["START"] = cstart
+                            fjdata["OFFSET"]= round(coffset,2)
+                            fjdata["BASE"]  = cbase
+                            jdata["FX2"] = fjdata
+                            jdatas.append(jdata)
+                            print(jdata)
 
 
                     if fx_prm["OFFSET"] > 0.5 and offset_flag:  
                         offset_flag=0
                         offset += fx_prm["OFFSET"] # add offset on next fixture
+                        offset = round(offset,2)
                     #print("offset",offset)
             if cmd and not modes.val("BLIND"):
                 #client.send(cmd)
@@ -1993,7 +2012,7 @@ class Fixtures(Base):
                     return data["ATTRIBUT"][attr]
 
     def get_dmx(self,fix,attr):
-        cprint("get_dmx",[fix,attr])
+        #cprint("get_dmx",[fix,attr])
         if fix in self.fixtures:
             data = self.fixtures[fix]
             if "DMX" in data:
@@ -2004,7 +2023,7 @@ class Fixtures(Base):
                 DMX += (int(data["UNIVERS"])*512)
             adata = self.get_attr(fix,attr)
             #-hier ende 8.2.22
-            cprint("adata",adata,DMX)
+            #cprint("adata",adata,DMX)
 
             if adata:
                 if "NR" in adata:
@@ -2613,10 +2632,15 @@ class Console():
             #client.send("fx0:alloff:,fxf:alloff:,")
             #client.send("df0:alloff:::,")
             j = []
-            jdata = {'VALUE': None, 'args': [], 'FX': 'alloff::::', 'FADE': 2, 'DMX': '0'}
-            j.append(jdata)
-            jdata = {'VALUE': None, 'args': [], 'FX': 'alloff::::', 'FADE': 2,'FLASH':1, 'DMX': '0'}
-            j.append(jdata)
+            if 0:
+                jdata = {'VALUE': None, 'args': [], 'FX': 'alloff::::', 'FADE': 2, 'DMX': '0'}
+                j.append(jdata)
+                jdata = {'VALUE': None, 'args': [], 'FX': 'alloff::::', 'FADE': 2,'FLASH':1, 'DMX': '0'}
+                j.append(jdata)
+            else:
+                jdata = {'VALUE': None, 'args': [], 'FX2': {"TYPE":"alloff"}, 'FADE': 2,'FLASH':1, 'DMX': '1'}
+                j.append(jdata)
+
             jclient_send(j)
             return 0
 

+ 44 - 4
console.py

@@ -332,6 +332,7 @@ class DMXCH(object):
             except Exception as e:
                 print( "Except:fade",e,target,ftime,clock)
     def fx(self,xtype="sinus",size=40,speed=40,start=0,offset=0,base="", clock=0):
+        print([self,xtype,size,speed,start,offset,base, clock])
         if str(xtype).lower() == "off":
             #self._fx = Fade(self._fx_value,target=0,ftime=2,clock=clock) 
             self._fx = None
@@ -360,7 +361,7 @@ class DMXCH(object):
     def __str__(self):
         return self.__repr__()
     def __repr__(self):
-        return "< DMXCH {:0.2f} > \n{}\n {}".format( self._last_val,self._fx,self._fade)
+        return "< DMXCH {:0.2f} > {} {}".format( self._last_val,self._fx,self._fade)
     def fade_ctl(self,cmd=""):#start,stop,backw,fwd,bounce
         pass
     def next(self,clock=0):
@@ -427,14 +428,21 @@ def JCB(data):
                 cprint("json", x,type(x),color="yellow")#,cmds[x])
 
                 if "DMX" in x:
-                    DMX = int(x["DMX"])-1
+                    DMX = int(x["DMX"])
                 else:continue
+                if DMX > 0:
+                    DMX -=1
+                else:continue
+
                 if "VALUE" in x:# and x["VALUE"] is not None:
                     v = x["VALUE"]
                 else:continue
                 if "FX" in x:# and x["VALUE"] is not None:
                     fx = x["FX"]
                 else:fx=""
+                if "FX2" in x:# and x["VALUE"] is not None:
+                    fx2 = x["FX2"]
+                else:fx2={}
                 if "FADE" in x:
                     ftime = x["FADE"]
                 else:ftime=0
@@ -452,9 +460,41 @@ def JCB(data):
                     else:
                         #print("FADE")
                         Bdmx[DMX].fade(target=v,ftime=ftime, clock=c,delay=delay)
-                if type(fx) is str and fx:
+                
+                if type(fx2) is dict and fx2:
+
+                    cprint("FX2",DMX,fx2,color="green")
+                    xtype="fade"
+                    size  = 10
+                    speed = 10
+                    start = 0
+                    offset= 0
+                    base = "-"
+                    if "TYPE" in fx2:
+                        xtype = fx2["TYPE"]
+                    if "SIZE" in fx2:
+                        size = fx2["SIZE"]
+                    if "SPEED" in fx2:
+                        speed = fx2["SPEED"]
+                    if "OFFSET" in fx2:
+                        offset = fx2["OFFSET"]
+                    if "BASE" in fx2:
+                        base = fx2["BASE"]
+
+                    if "alloff" == xtype.lower():
+                        for i in Bdmx:
+                            if i is not None:
+                                i.flush_fx(xtype="off",clock=c)
+                                i.fx(xtype="off",clock=c)
+
+                    if "FLASH" in x:
+                        Bdmx[DMX].flush_fx(xtype=xtype,size=size,speed=speed,start=start,offset=offset,base=base,clock=c)
+                    else:
+                        Bdmx[DMX].fx(xtype=xtype,size=size,speed=speed,start=start,offset=offset,base=base,clock=c)
+
+                elif type(fx) is str and fx:  # old fx like sinus:200:12:244 
                     ccm = str(DMX+1)+":"+fx
-                    #print("ccm",ccm)
+                    print("fx",ccm)
                     if "FLASH" in x:
                         CB({"cmd":"fxf"+ccm})
                     else: