Jump to content

Displaying individual variables "as devices" (sort of like virtual devices)


madcodger

Recommended Posts

After a couple of false starts for the benefit of the forum members who may find this thread. Like many here I am a visual learner so will offer a few image captures to ease the pain of trying to figure out what selection / operator boxes need to be chosen.

Once again much thanks goes out to @markv58 who has made Virtual Nodes a reality! ?

This is something that has been asked for years and should have been implemented long ago. 

Thank You - All!

IF Statement.PNG

THEN Statement.PNG

THEN Statement 2.PNG

Link to comment
31 minutes ago, markv58 said:

Ok,

If

     The    (Temperature reported by something)    is not     (the Variable for the Virtual Temp) 

Then

    Set     (the Variable for the Virtual Temp)     =   (Temperature reported by something)

    Set     (the Virtual Temp Device)       =     (the Variable for the Virtual Temp)

 

Does that help?

Thanks for the simplification.  The last step is the one that does not work.  However. if I manually change the temperature of the node (see below) it updates on Polisy instantly.  I am somehow missing the connection between the node and the state variable.

996159761_ScreenShot2020-07-06at5_38_37PM.thumb.png.58a84e0768d8edd94207d6ad28ca7c70.png

Link to comment
55 minutes ago, markv58 said:

I'm working on this, everything had been working quite well.

Right click on the program and choose Run If and see if that nudges the cycle.

Yes and no joy. I also created another variable to track my Ecobee thermostat temperature to check if the zwave sensor is the issue.  Same problem....the variable updates on a temp change but the value is not passed to the Virtual node.  I hope this is not all because I broke tradition and started my State variables with "v" instead of "s" in honor of your new node server....:)

Let me know what else I can do to help.  Thanks again for building this!  

Link to comment
7 minutes ago, JBanaszak said:

Yes and no joy. I also created another variable to track my Ecobee thermostat temperature to check if the zwave sensor is the issue.  Same problem....the variable updates on a temp change but the value is not passed to the Virtual node.  I hope this is not all because I broke tradition and started my State variables with "v" instead of "s" in honor of your new node server....:)

Let me know what else I can do to help.  Thanks again for building this!  

Got it......

Variable precision has to be set to 0.

Link to comment
Just now, JBanaszak said:

Got it......

Variable precision has to be set to 0.

Yes, I was just testing that. You probably want to restart the nodeserver to clear any errors.

I will work on an update to cure that glitch.

Link to comment

Do I have something set wrong here or do I just not understand what this is supposed to do?  I assumed that setting the value from the main node page of ISY would then propagate through and set the variable.  But the variable does not change.  Do I need to write programs both directions?  If the variable changes then it changes the node, and vice-versa?  If so, I don't understand why the node server needs my ISY ip/user/pass.  I've tried 192.168.1.9    192.168.1.9:80   192.168.1.9:443  192.168.001.009:80

 

Untitled.png

Link to comment
Just now, apostolakisl said:

Do I have something set wrong here or do I just not understand what this is supposed to do?  I assumed that setting the value from the main node page of ISY would then propagate through and set the variable.  But the variable does not change.  Do I need to write programs both directions?  If the variable changes then it changes the node, and vice-versa?  If so, I don't understand why the node server needs my ISY ip/user/pass.

The Switch will set its variable to 1 for ON and 0 for OFF, the Dimmer, 100 for ON and 0 for Off or anywhere in between with the drop down. The Temperature is just a holder and does nothing unless you have a program change it.

The ISY info is so the NodeServer can change the Variables for the Switch and Dimmers.

These are virtual devices and do nothing unless you want them to. My main purpose for creating Virtual is to have a way to see if a Scene is on or off using the Rest interface so that information can be used in a Custom ISY Control app that I am working on. I create a Virtual Switch, add it to a Scene and have it turn off or on with the scene. I can now use the rest interface to poll the switch and see its status. There isn't another way to do that other than to track everything in the scene and set a variable based on that.

Another user wants a way to collect Temperature information from various devices and move all of that into a separate folder rather than click through pages. I'm sure there are many other uses for the thing. A need for a Virtual device has been discussed for quite some time so now there is Virtual.

Link to comment
6 hours ago, Teken said:

@markv58

First, if no one has said how fantastic you're today - You Are! ?

On to the trouble shooting portion in hopes of some insight and next steps. The node server installed without issues but none of the new nodes display any current values?!? I have appended a few image captures to show you the State Variables are present and are updating. The *Key Value* matches in all of the systems and the log shows nothing after it has started??

Next, would it be possible for you to include the following enhancements for display purposes.

- Celsius vs Fahrenheit: Can you give us Canadians the big *C* ?

- Decimal Value: My Autelis Bridge sends the numeric values as a whole value. Would it be possible for your Node Server to do some heavy lifting for me and convert the number to allow at least two decimal places. The ISY has a precision field which doesn't work and has no impact in changing where the decimal place is inserted. So if the value is 243 I would love to see it represented in the Device Tree as 24.3'C. Others have used the ISY to do the math conversion which works but is clumsy and require more resources than my little box can handle anymore.

This Virtual Node Server has made 2020 truly epic . . .

Thank You -Sir! 

 

 

"The ISY has a precision field which doesn't work and has no impact in changing where the decimal place is inserted."

It works.
1.) Right click on the variable.
2.) Change precision.
3.) here is the kicker ... "CLICK SAVE"

Link to comment
3 hours ago, markv58 said:

The Switch will set its variable to 1 for ON and 0 for OFF, the Dimmer, 100 for ON and 0 for Off or anywhere in between with the drop down. The Temperature is just a holder and does nothing unless you have a program change it.

The ISY info is so the NodeServer can change the Variables for the Switch and Dimmers.

These are virtual devices and do nothing unless you want them to. My main purpose for creating Virtual is to have a way to see if a Scene is on or off using the Rest interface so that information can be used in a Custom ISY Control app that I am working on. I create a Virtual Switch, add it to a Scene and have it turn off or on with the scene. I can now use the rest interface to poll the switch and see its status. There isn't another way to do that other than to track everything in the scene and set a variable based on that.

Another user wants a way to collect Temperature information from various devices and move all of that into a separate folder rather than click through pages. I'm sure there are many other uses for the thing. A need for a Virtual device has been discussed for quite some time so now there is Virtual.

OK, got it.  Thanks for creating it.  Just my luck I decided to test it using temp.  You might have one that is allows you to put in a wider range of numbers and transfer that over to a variable.  Also, not have it labeled "dimmer".  Maybe include negative numbers.  I assume you are limited to the number of choices that can fill in the field by ISY? 

Link to comment
3 hours ago, ZW-Tom said:

"The ISY has a precision field which doesn't work and has no impact in changing where the decimal place is inserted."

It works.
1.) Right click on the variable.
2.) Change precision.
3.) here is the kicker ... "CLICK SAVE"

The precision has no impact on a whole value. All it does is add more zeros to the end (right of) decimal place value. When this feature was first incorporated into the 5.XX frame work I was truly over the moon. Only to find out it had no impact or ability to *Move* the decimal place which I'm pretty sure many customers would see value in. So, if Mark can get that done in the Virtual Node Server he is truly the 2020 Node Server God!

Again, the ask is this: 243 = 24.30 Not 243.0 / 243.00

 

Prec 2.PNG

Prec 4.PNG

Link to comment

The values need to stay mathematically correct. Precision is not an arithmetic operator. It appears your Autelis box, like the WC8 board, does not understand precision and sends raw binary counts. This means 24.2 degrees is sent as 242 raw binary counts.

Changing the precision shouldn't modify values. That would make it mathematically incorrect. If you want to shift decimal places it requires multiplication, or division, by powers of 10, not attempting to correct the deficiencies of equipment that doesn't support the protocol used.

CAO Wireless Tags support this protocol just fine. If the precision used in ISY was to multiply values times 10^n, values from those devices would all be represented incorrectly. UDI implemented correct methods. Some equipment is using a different standard industry protocol.

As a simple example....what if an end device was sending values where each count represented 0.05 degrees C? Should ISY multiply the received value times 20 to get engineering values?

What if F degrees is wanted for display? The NS will require scaling factors, offsets, and clamping factors for each parameter. A clamping factor specifies the minimum change ISY programs would require for triggering, say  on 0.0005C changes if not desired. SCADA master? Here we come!   My ISY is already too busy with polyglot, to handle NSs properly without 3-4 seconds Waits between sends.

Link to comment
7 hours ago, apostolakisl said:

OK, got it.  Thanks for creating it.  Just my luck I decided to test it using temp.  You might have one that is allows you to put in a wider range of numbers and transfer that over to a variable.  Also, not have it labeled "dimmer".  Maybe include negative numbers.  I assume you are limited to the number of choices that can fill in the field by ISY? 

What would I call something like that? and what would be its purpose?

Link to comment
The values need to stay mathematically correct. Precision is not an arithmetic operator. It appears your Autelis box, like the WC8 board, does not understand precision and sends raw binary counts. This means 24.2 degrees is sent as 242 raw binary counts.
Changing the precision shouldn't modify values. That would make it mathematically incorrect. If you want to shift decimal places it requires multiplication, or division, by powers of 10, not attempting to correct the deficiencies of equipment that doesn't support the protocol used.
CAO Wireless Tags support this protocol just fine. If the precision used in ISY was to multiply values times 10^n, values from those devices would all be represented incorrectly. UDI implemented correct methods. Some equipment is using a different standard industry protocol.
As a simple example....what if an end device was sending values where each count represented 0.05 degrees C? Should ISY multiply the received value times 20 to get engineering values?
What if F degrees is wanted for display? The NS will require scaling factors, offsets, and clamping factors for each parameter. A clamping factor specifies the minimum change ISY programs would require for triggering, say  on 0.0005C changes if not desired. SCADA master? Here we come!   My ISY is already too busy with polyglot, to handle NSs properly without 3-4 seconds Waits between sends.


Hi Larry,

The idea and concept of Node Servers is to extend the capabilities of the system. What I am asking Mark to do is extend that capability which has no impact on the normal operations of the ISY Series Controller.

The phrase do no harm would be key. By default this extra feature of shifting the decimal place would be left at 0.

No harm - no foul.

Those like me who need to change a raw whole value to have 1-2-3- decimal places however many can do so!

All of the Node Server developers are like artists. They can do whatever they want to meet their need to produce that master piece. As of this writing, Mark is painting a master piece that will go down in HA history for all of us.

As you noted the Autelis, WC8, and countless others do not send the values a lay person would expect! As such being on the ground level of development this is the time to offer a choice and option to do so.

Having choices is what everyone wants especially those of us in the HA industry.

Bottom line, someone doesn’t want to use it - Don’t! Those who do surely will and have the ability to see that value as it’s intended in the AC, emails, other.

Lastly, going this route off loads the processing to another more powerful box. Those of us rocking more than 500 programs, network resources, have run out of I/O and processes to do clumsy math that should have been done at the core of the hardware.




Sent from my iPhone using Tapatalk
Link to comment
I suppose I could add an Autelis Node that does the slicing and dicing.


Hi Mark,

I am truly humbled you would consider setting aside to do this for those of us having an Autelis Bridge!

I believe your focus should be to move forward in the development of adding those two features to the virtual node server. As this offers a much larger audience those benefits and your development time isn’t split.

Regardless, if you have the free cycles to make an Autelis Bridge Node Server - Go 4 it!!

Thank You!


Sent from my iPhone using Tapatalk
Link to comment
1 hour ago, markv58 said:

What would I call something like that? and what would be its purpose?

I would just call it "numeric value" or something totally generic.  Certainly you could just use the "dimmer" node and just know that despite the label, you are not dimming a light.  It would be there as a generic node that can track or set anything that can be controlled or tracked with a number.  Humidity, RPM's, minutes, days, seconds, hours to set something to stay on, or off, or track how long it has been on/off, etc.  The first thing I would use it for is to control the hvac at my church.  Currently I have a variable that I set for the number of hours I want it to turn on the system.  Before an event in the church that you know will last, for example, 2.5 hours, you set the variable to 2.5 and it counts down to off and shuts down the system.  It would be much easier to train the ISY novices at the church to use a node rather than digging into variables and setting it there.   Perhaps doing decimals doesn't work, but I could use minutes instead.  Trouble is currently limited to 100 minutes using the dim level node or using hours I would be stuck with whole numbers.  Below is the program I use currently, but like I said I have to set it in the variable section.  It allows for setting down to 2 decimal places.  The idea is to set it in 15 minute increments, like 3.25 for 3 hours 15 minutes.

Manual Time to Unit Shut Down - [ID 003E][Parent 0049]

If
        $s.Manual.Hours.To.Shutdown > 0
 
Then
        $s.Units.Running  = 3
        Wait  3 minutes 
        $s.Manual.Hours.To.Shutdown -= 0.05
 
Else
        $s.Units.Running  = 6
        $s.Units.Running  = 0
        $s.Manual.Hours.To.Shutdown  = 0
 

 

Link to comment

@apostolakisl I am thinking about redoing the dimmer, I can't think of a use for it.

I've worked out a couple of bugs with prec so that is working. I will do some tinkering and see what I can come up with, kind of a catch all variable manipulator. It could do some math on raw data for @Teken.

I will play.

Link to comment

One thing that should be considered is having the ability to define a free value vs a defined value in a drop down box. Best case include both options for everyone so there are choices!

 

Also what is the maximum number of channels or nodes this virtual server can support?!? As I have two Autelis Bridges which equates to 64 nodes. I have two Dash Boxes which equates to 110 nodes. Last but not least there are two EDS systems that can support 200 sensors.

 

I don’t intend to add all of this but would like to know the theoretical limit so I am more than far away from the line to avoid a system crash.

 

On a related matter would it be possible to have the Node Server offer the ability to define when each value is pushed to the AC for display vs using a wait statement?!?

 

I’m trying to avoid exhausting all of the I/O and processes of the ISY Series Controller.

 

 

Sent from my iPhone using Tapatalk

 

Link to comment
1 hour ago, Teken said:

All of the Node Server developers are like artists. They can do whatever they want to meet their need to produce that master piece. As of this writing, Mark is painting a master piece that will go down in HA history for all of us. emoji3516.pngemoji110.pngemoji481.png

I'll drink to that....:)!!!!!!!

Thanks again for creating this nodeserver Mark.  I am up and running:

495903863_ScreenShot2020-07-07at9_50_09AM.thumb.png.dd973f2bf4be826d36542c6e59861051.png

Link to comment
2 hours ago, Teken said:

One thing that should be considered is having the ability to define a free value vs a defined value in a drop down box. Best case include both options for everyone so there are choices! emoji106.pngemoji1787.png

I was also wondering if this is possible.  But every node that currently exists in ISY has only a set array of values, nothing is "fill in the blank".  I suspect that "fill in the blank" is not possible for a node value.

Link to comment
I was also wondering if this is possible.  But every node that currently exists in ISY has only a set array of values, nothing is "fill in the blank".  I suspect that "fill in the blank" is not possible for a node value.


Maybe someone can shed some light as to how and why one selection allows free form vs predefined?

In the action vs condition why does one allow a free form entry box vs defined?!? The two obviously exists but it seems the current frame work has limited it to be one vs the other???

Anyone?


Sent from my iPhone using Tapatalk
Link to comment
1 hour ago, Teken said:

 


Maybe someone can shed some light as to how and why one selection allows free form vs predefined?

In the action vs condition why does one allow a free form entry box vs defined?!? The two obviously exists but it seems the current frame work has limited it to be one vs the other??? emoji848.png

Anyone?


Sent from my iPhone using Tapatalk

 

What nodes do you have that have free form?  I'm pretty sure every node I have is a drop down selection.

Link to comment

Archived

This topic is now archived and is closed to further replies.


  • Recently Browsing

    • No registered users viewing this page.
  • Forum Statistics

    • Total Topics
      36.9k
    • Total Posts
      370.2k
×
×
  • Create New...