This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm that you accept these cookies being set.

Logic Machine wishlist
#21
We have plans for complete rewrite of the editor for next year.
Reply
#22
Please, add button "Add" to Objects - Mass Edit -> Tags.
Because I want to select whole room and set tag "room"
Then I want to select all lights and set tag "lights"
As a result I want to see lights in room tagged as room, lights.
This is not possible now (or I haven't found any way how to do it without coding in Lua)
LM5Lp, firmware: 2018.08.22 and 2021.12.15, FlashSYS v2, ARMv7 Processor rev 5 (v7l), kernel 4.4.151 and 4.4.259
Reply
#23
Hi Thomas,

You can do that already, and yes also in LM FW (:

   
BR,

Erwin
Reply
#24
Hi,
How? This simple process you described deletes already existing tags.
LM5Lp, firmware: 2018.08.22 and 2021.12.15, FlashSYS v2, ARMv7 Processor rev 5 (v7l), kernel 4.4.151 and 4.4.259
Reply
#25
Hi,

Use the filters before changing tags on objects that already has tags.

Question : Why don't you want to use script for adding tags to objects? The only extra handling is creating a temp script container. There are very powerfull script commands to do this, do you know them?

Code:
grp.gettags(alias)
grp.addtags(alias, tags)
grp.removetags(alias, tags)
grp.removealltags(alias)
grp.settags(alias, tags) -- methode mass update uses, overwrite all existing tags
 
Some simple samples:
1) Add tags based on name (partial), existing tags will be untouched
Code:
-- Start address of objects
start_objectaddress = '1/1/1'

-- End address of objects
end_objectaddress = '15/7/255'

-- Set Tag(s)
tags = {'Tag 1' , 'Tag 2' , 'Tag 3'} -- Multiple tags

-- Calculate start address to numeric format
start_objectaddress = knxlib.encodega(start_objectaddress)

-- Calculate end address to numeric format
end_objectaddress = knxlib.encodega(end_objectaddress)

-- Get all objects
result = grp.all()

-- Loop through all objects
for _, object in ipairs(result) do
 
 -- Only update objects within the start - end range
 if object.id >= start_objectaddress and object.id <= end_objectaddress then
 
   -- Only add tags when object name partial matches
   partial = 'Test'
   
   if string.match(object.name, partial) then
      grp.addtags(knxlib.decodega(object.id), tags)
   end
   
 end
end

-- Self disable script
script.disable(_SCRIPTNAME)

2) Add tags based on DPT, existing tags will be untouched
Code:
-- Start address of objects
start_objectaddress = '1/1/1'

-- End address of objects
end_objectaddress = '15/7/255'

-- Set Tag(s)
tags = 'Tag 1'  -- Single tag

-- Calculate start address to numeric format
start_objectaddress = knxlib.encodega(start_objectaddress)

-- Calculate end address to numeric format
end_objectaddress = knxlib.encodega(end_objectaddress)

-- Get objects by dtp type
result = grp.dpt(dt.float16, false) -- set to true for only exact dpt, now all 2 byte objects matches

-- Loop through all objects
for _, object in ipairs(result) do

 -- Only update objects within the start - end range
 if object.id >= start_objectaddress and object.id <= end_objectaddress then
    grp.addtags(knxlib.decodega(object.id), tags)
 end

end

-- Self disable script
script.disable(_SCRIPTNAME)

BR,

Erwin
Reply
#26
Hi Erwin
Thank you for your codes. I planned to develop similar functions.

You wrote "Use the filters before changing tags on objects that already has tags."
Maybe I'm overlooking something but whai I want to point out is there's no solution for this situation:
1. I want all object in 1st floor tagged as "1st_floor"
2. I want all lights tagged as "light".
So as a result every light in 1st floor has tags 1st_floor,light. This is just example. I understand I can filter lights in 1st floor and fill two tags. But imagine situation I have six tags per object. Every new tag doubles complexity of the process. In other words: missing "Add" button makes it very difficult.
LM5Lp, firmware: 2018.08.22 and 2021.12.15, FlashSYS v2, ARMv7 Processor rev 5 (v7l), kernel 4.4.151 and 4.4.259
Reply
#27
Hi Thomas,

Do you mean by "1st_floor" the objects that are created on a certain plan? Or do they have the name "1st_floor" in the object name / description?

How can the system determine it's 'lights' ? Do you have this name used in the object name / description?

BR,

Erwin
Reply
#28
Do you mean by "1st_floor" the objects that are created on a certain plan? Or do they have the name "1st_floor" in the object name / description?
They have special object address.

How can the system determine it's 'lights' ?
Object name contains _L_ and the data type is 1.1

But this is not important for functionality I suggest to add. The rule can be everything which is filterable. Next think I would like to see is a "negative filtering". Like google does. If I write 1st_floor,lights,-feedback into tag searcher I would like to get results which contains light objects at first floor but are not feedbacks.
LM5Lp, firmware: 2018.08.22 and 2021.12.15, FlashSYS v2, ARMv7 Processor rev 5 (v7l), kernel 4.4.151 and 4.4.259
Reply
#29
Hi,

For special address range you can use a widcard like 1/2/* or 1/*/8 in the filter.

For lights you can enter '_L_' into the name field and set datatype to '01.001 switch' to filter them and add tags by mass edit in this filtered list.

If you add tag 'feedback' to the feedbacks and 'control' to the controls and all have the tag '1th floor' and 'lights' you can filter them as you want with match mode 'all tags'.

BR,

Erwin
Reply
#30
BTW enhance the address filter to a fully regexp based search would be great improvement too.
Instead of just star like in Erwin's example above I need something more sophisticated like [1-8]/[6;7]/* as an option.
LM5Lp, firmware: 2018.08.22 and 2021.12.15, FlashSYS v2, ARMv7 Processor rev 5 (v7l), kernel 4.4.151 and 4.4.259
Reply
#31
Hi,

I don't think it will be added any time soon, you are the only one asking for it..

To be honest, i use the controller on daily base for about 4 years and see a lot of projects and never missed it and none of our customers asked for it or made any comment on it..

BR,

Erwin
Reply
#32
The functionality I'm missing:

1. Multiple "Default Page". I have two very different layouts and I need to define default page on per user basis.
2. Trend log as insertable object in the same way as Graph is.
3. User access log available directly from the visu.
4. User name and IP in Object log (as I described somewhere else and buuudzik gave me an idea for a solution)
5. "Thermometer gauge" - Normal "oldschool" vertically oriented linear thermometer with scale and numbers. I think measuring and showing of actual temperature is one of most used tasks LM does.
6. Icon for on and off state for the right part of a touch visu in case object has a default value. The only available options now are "v" and "x" icons which is confusing in such cases. People don't understand they should click "x" when they want turn the lights on.
7. Ability to choose which group addresses are ACKed by LM. I have another PLC in the same line and I don't want LM ACK group addresses which are for the second PLC.
8. Ability to choose which screen is a main screen (available from simple URL http://<LM_IP>). Some other products can do it. In LM5  is this option missing.
9. Insert a custom SSL certificate. The actual state is a real disaster. Sorry.
10. Cloud support for both "traditional" visualisations. Siemens can do it so there's a way how to do it.
11. Per tag triggered scripts. If you want to calculate "Is there at least one light turned on in the house" task and you don't want use a resident script then you have to put the function to every feedback object. Which is plenty of work. It would be nice to be able to create a script for group of objects with the same tag.
LM5Lp, firmware: 2018.08.22 and 2021.12.15, FlashSYS v2, ARMv7 Processor rev 5 (v7l), kernel 4.4.151 and 4.4.259
Reply
#33
Nr.5 can be easily created via SVG with any styling you want.

Nr.9 is planned for the next FW release.

Nr.11 is already there, you can map event script to a group address or a tag.
Reply
#34
Hi
5. Can you please direct me to an example? I've no idea how to make object in SVG parameter dependant on group address value.
11. Perfect! I missed this option.
LM5Lp, firmware: 2018.08.22 and 2021.12.15, FlashSYS v2, ARMv7 Processor rev 5 (v7l), kernel 4.4.151 and 4.4.259
Reply
#35
Hi Thomas,

Here is a random SVG file i downloaded and i added some JS to it (; 

For details how i did it see EOF and noticed the ID mercury i attached to the object listener inside this SVG.

Basicly i added this code into the SVG just above EOF </svg> and attached it to the bar element with ID "mercury" : 

Code:
<defs>
    <script type="text/javascript">
        <![CDATA[
            var p = window.parent, el;
            el = document.getElementById('mercury');
            if (p) {
                if (typeof p.grp != 'undefined') {
                           p.grp.listen('1/1/17', function(object, state) {
                                 el.setAttribute('height', Math.round(object.value / 3.5));
                           }, false);
                }
            }
        ]]>
    </script>
</defs>
Now attached to address 1/1/17 as 2 byte float with min/max 0-35

.svg   thermometer.svg (Size: 9.76 KB / Downloads: 101)

BR,

Erwin
Reply
#36
Erwin, you should replace addListener with grp.listen as it is guaranteed not to change between firmware releases.
Reply
#37
Hi Admin,

I already tried before posting this, but didn't work...

Now i checked again and i notice i forgot to change obj to object (:

I updated the post and sample file above to the grp.listen methode

Thanks for tip (;

BR,

Erwin
Reply
#38
Thank you.
But it means I need a special SVG for every room. Which is not a big deal but I would rather see it as a standard gauge option.
LM5Lp, firmware: 2018.08.22 and 2021.12.15, FlashSYS v2, ARMv7 Processor rev 5 (v7l), kernel 4.4.151 and 4.4.259
Reply
#39
Hi,

Me to, but i prefer a improved html5 editor first.

You don't need a svg for each room, you could include custom classes into the JavaScript like sample i gave you for lux value scaling, this way you can attach a address listener to the SVG for multiple usage of the same SVG file. However this custom class is in the parent so it's not real easy to figure out how to bind the listener to the correct item. I have done it before with frames so i know it's possible..

BR,

Erwin
Reply
#40
Hi
I would like to know your opinion:
I've been thinking about a new SQL server separated form the internal SQLLite. This server is going to be visible from outside and available from Lua in form of embedded SQL commands too. At the begining I asked myself what is should be good for. Then I have got these ideas:
1. There are lots of requests like "I want to export data which are not easily exportable. Graphs, Logs etc.". You can store all data you need by events.
2. From time to time you need to store global values. You can of course use the storage space but it's too simple tool.
3. Lua with their tables is a perfect tool for storing SELECT results.
4. It would be perfect for statistics operations. Like I would like to see average wind speed from the previous 10 minutes. But not in 10 minutes blocks but in time. This is not possible to do now.
5. You can fully replicate the database by standard DB tools.
6. You can easily embed tables stored in SQL database into an enterprise environment.
LM5Lp, firmware: 2018.08.22 and 2021.12.15, FlashSYS v2, ARMv7 Processor rev 5 (v7l), kernel 4.4.151 and 4.4.259
Reply


Forum Jump: