Aplicaciones Virtuales Mc driver Applications: Number Fields and Basic Calculations

The problem is: the between option is not available on the Temperature device (from weather)

Is it possible to use RulesAPI rules?

Edit: RulesAPI rule is not possible

@andre_petinga

You can use two virtual switches and 4 routines

  1. routine sets virtual switch 1 when temperature is >=15.
  2. routine resets virtual switch 1 when temperature is <=14.
  3. routine sets virtual switch 2 when temperature is <=20.
  4. routine resets virtual switch 2 when temperature is >=21.

when both virtual switches are On temperature is >=15 and <=20.

I think we don’t have access to the weather device, because it’s not “our device”. It’s a general ST device…

You will need to use a sensor outside. I use a couple of simple cheap Tuya sensors under some form of cover to avoid rain.
Alternatively if you have Raspberry Pi or similar there is @TAustin’s Edge Weather V1 driver which can be synced by rule (always talking about Rules API here) to a Virtual T&H sensor.
As you say using the location temperature (weather option) gives very little information, as discussed in this thread here, and still unanswered.
Cannot post rules with location capabilities?

1 Like

Thanks for your feedback.
I was just trying something like that :laughing:
And I think it worked well…
What I did was:

Create 1 routine that executes 10 minutes before the time I want to adjust the blinds, I’m checking if the current temperature is <=14.
If it is, then Virtual Switch called “Cold” :grin: is set to ON (and goes OFF 4h20m later, because I want to adjust the blinds again on the afternoon, at 14:00)

At the exact time (10:00), I have 3 routines:

  • 1 for the Cold weather (temperature <=14):
    If Virtual Switch "Cold" = ON (pre-condition) -> It's cold!!! -> Open all blinds

  • 1 for the Hot weather (temperature >=20):
    If Outside temperature >=20 -> It's hot!!! -> Close all blinds

  • 1 for the Mild weather (temperature >=15 and <=19):
    If Virtual Switch "Cold" = OFF (pre-condition) AND Outside temperature <=19 -> It's mild... -> Place all blinds at 50%

Thanks!

1 Like

Total Energy Calculation

This example implements the summation of 5 energy measurements into a Total Energy (Calculation Result).

Total Energy Device

Calculation Formula: 1+2+3+4+5

Rules API rule to calculate Total Energy:

{
  "name": "Total Energy Model using Number Fields",
  "actions": [
    {
      "if": {
        "equals": {
          "right": {
            "device": {
              "devices": [
                "-- ID Virtual Switch Device --"
              ],
              "component": "main",
              "capability": "switch",
              "attribute": "switch"
            }
          },
          "left": {
            "string": "on"
          }
        },
        "then": [
          {
			"command": {
			  "devices": [
				"-- ID Number Field (Total Energy) Device --"
			  ],
			  "commands": [
				{
				  "component": "main",
				  "capability": "legendabsolute60149.numberFieldOne",
				  "command": "setNumberFieldOne",
				  "arguments": [
					{
					  "device": {
						"devices": [
						  "-- ID Power Measuring Device 1 --"
						],
						"component": "main",
						"capability": "energyMeter",
						"attribute": "energy"
					  }
					}
				  ]
				},
				{
				  "component": "main",
				  "capability": "legendabsolute60149.numberFieldTwo",
				  "command": "setNumberFieldTwo",
				  "arguments": [
					{
					  "device": {
						"devices": [
						  "-- ID Power Measuring Device 2 --"
						],
						"component": "main",
						"capability": "energyMeter",
						"attribute": "energy"
					  }
					}
				  ]
				},
				{
				  "component": "main",
				  "capability": "legendabsolute60149.numberFieldThree",
				  "command": "setNumberFieldThree",
				  "arguments": [
					{
					  "device": {
						"devices": [
						  "-- ID Power Measuring Device 3 --"
						],
						"component": "main",
						"capability": "energyMeter",
						"attribute": "energy"
					  }
					}
				  ]
				},
				{
				  "component": "main",
				  "capability": "legendabsolute60149.numberFieldFour",
				  "command": "setNumberFieldFour",
				  "arguments": [
					{
					  "device": {
						"devices": [
						  "-- ID Power Measuring Device 4 --"
						],
						"component": "main",
						"capability": "energyMeter",
						"attribute": "energy"
					  }
					}
				  ]
				},
				{
				  "component": "main",
				  "capability": "legendabsolute60149.numberFieldFive",
				  "command": "setNumberFieldFive",
				  "arguments": [
					{
					  "device": {
						"devices": [
						  "-- ID Power Measuring Device 5 --"
						],
						"component": "main",
						"capability": "energyMeter",
						"attribute": "energy"
					  }
					}
				  ]
				}
			  ]
			}
		  }		  
        ]
      }
    }
  ]
}

Total Energy calculation is triggered using virtual switch.
Total Energy calculation testing is easy when rule is triggered using virtual switch.

Here is an example of how to set a virtual switch on the first day of the month (after midnight with a 5 minutes delay).

{
	"name": "Month First Day Set VSwitch",
	"actions": [
		{
		   "every": {
                "specific": {
                    "day": 1,
                    "reference": "Midnight",
                    "offset": {
                        "value": {
                            "integer": 5
                        },
                        "unit": "Minute"
                    }
            },
            "actions": [
				{
					"command": {
						"devices": ["-- ID Virtual Switch Device --"],
					"commands": [
						{
							"component": "main",
							"capability": "switch",
							"command": "on"
						}
					  ]
					}
				}
			  ]
			}
		}
	]
}
2 Likes

Temperature Difference Calculation

Calculation Formula: 1-2

{
  "name": "T Measurements changes > Calculate T Difference",
  "actions": [
	   {
		 "if": {
		  "changes": {
			"operand": {
			  "device": {
				"devices": [
				  "-- ID Temperature Measurement Device 1 --"
				],
				"component": "main",
				"capability": "temperatureMeasurement",
				"attribute": "temperature",
				"trigger": "Always"
			  }
			}
		  },
		   "then": [
			  {
				"command": {
				  "devices": [
					"-- ID Number Field Device --"
				  ],
				  "commands": [
					{
					  "component": "main",
					  "capability": "legendabsolute60149.numberFieldOne",
					  "command": "setNumberFieldOne",
					  "arguments": [
						{
						  "device": {
							"devices": [
							  "-- ID Temperature Measurement Device 1 --"
							],
							"component": "main",
							"capability": "temperatureMeasurement",
							"attribute": "temperature"
						  }
						}
					  ]
					}					
				  ]
				}
			  }
			]
		}
	   },
	   {
		 "if": {
		  "changes": {
			"operand": {
			  "device": {
				"devices": [
				  "-- ID Temperature Measurement Device 2 --"
				],
				"component": "main",
				"capability": "temperatureMeasurement",
				"attribute": "temperature",
				"trigger": "Always"
			  }
			}
		  },
		   "then": [
			  {
				"command": {
				  "devices": [
					"-- ID Number Field Device --"
				  ],
				  "commands": [
					{
					  "component": "main",
					  "capability": "legendabsolute60149.numberFieldTwo",
					  "command": "setNumberFieldTwo",
					  "arguments": [
						{
						  "device": {
							"devices": [
							  "-- ID Temperature Measurement Device 2 --"
							],
							"component": "main",
							"capability": "temperatureMeasurement",
							"attribute": "temperature"
						  }
						}
					  ]
					}						
				  ]
				}
			  }
			]
		}
	   }
	],
	"sequence": {
		"actions": "Parallel"
	}
}

The Calculation Result is correct only after the values ​​of both measurements have changed.

The Calculation Result can also be used in ST App Routines as Condition.

===============================================
It’s also possible to add Rules API rules using AWA.

Rules API rule template for AWA

	   {
		 "if": {
		  "changes": {
			"operand": {
			  "device": {
				"devices": [
				  "-- ID Temperature Measurement Device 1 --"
				],
				"component": "main",
				"capability": "temperatureMeasurement",
				"attribute": "temperature",
				"trigger": "Always"
			  }
			}
		  },
		   "then": [
			  {
				"command": {
				  "devices": [
					"-- ID Number Field Device --"
				  ],
				  "commands": [
					{
					  "component": "main",
					  "capability": "legendabsolute60149.numberFieldOne",
					  "command": "setNumberFieldOne",
					  "arguments": [
						{
						  "device": {
							"devices": [
							  "-- ID Temperature Measurement Device 1 --"
							],
							"component": "main",
							"capability": "temperatureMeasurement",
							"attribute": "temperature"
						  }
						}
					  ]
					}					
				  ]
				}
			  }
			]
		}
	   },
	   {
		 "if": {
		  "changes": {
			"operand": {
			  "device": {
				"devices": [
				  "-- ID Temperature Measurement Device 2 --"
				],
				"component": "main",
				"capability": "temperatureMeasurement",
				"attribute": "temperature",
				"trigger": "Always"
			  }
			}
		  },
		   "then": [
			  {
				"command": {
				  "devices": [
					"-- ID Number Field Device --"
				  ],
				  "commands": [
					{
					  "component": "main",
					  "capability": "legendabsolute60149.numberFieldTwo",
					  "command": "setNumberFieldTwo",
					  "arguments": [
						{
						  "device": {
							"devices": [
							  "-- ID Temperature Measurement Device 2 --"
							],
							"component": "main",
							"capability": "temperatureMeasurement",
							"attribute": "temperature"
						  }
						}
					  ]
					}						
				  ]
				}
			  }
			]
		}
	   }

Change to template your device IDs

– ID Temperature Measurement Device 1 – to your device ID; example 12345678-1234-1234-1234-123456789777
– ID Temperature Measurement Device 2 – to your device ID; example 12345678-1234-1234-1234-123456789888
– ID Number Field Device – to your device ID; example 12345678-1234-1234-1234-123456789999

3 Likes

Thanks for this … while I have some programming background, I have not done anything like this in ST yet. I think I understand this and have found the device ID’s for my temp measure 1 and 2. Is “ID Number Field Device – to your device ID” a virtual device I need to create to store the result of the calculation?

Install this driver

and add Virtual Device NumberField 5 Fields & Calculator

FYI for users of Basic Calculations

I have reported this issue.

SmartThing Developer Support reply:

1 Like

Hi @Mariano_Colmenarejo

I create my list of battery devices, but at Smartthings app it shows at devices information these html tags.

Is it a problem with Android app?

Thanks


strong text

Yes, is a problem with smartthings HTLM text in app´s,They have banned its use and and this virtual device has become unusable.

I have not deleted this function because I was waiting to see if they would reverse this ban.

You can see all batteries status in advanced users/ device and you order it by the battery field

3 Likes

@Mariano_Colmenarejo, how are you?
the local utc time field on the timer seconds virtual device shows a numeric virtual keyboard that doesnt allow to input negative values on iOS app (last version):

It must be an issue with the iOS app, it has nothing to do with the driver

Type it into any text field in a file or search engine, copy and paste into the app.

You can try setting the value with a scene or routine to see if it lets you.

2 Likes

I copied the value from a text field! :+1: