No announcement yet.

Tesla Monitoring from HSTouch

  • Filter
  • Time
  • Show
Clear All
new posts

    Tesla Monitoring from HSTouch

    I have built a "Tesla" screen in HSTouch and I want to be able to update the Tesla devices when I click on a button in HSTouch.

    I see that the Status device has a status of "Waiting on Sleep" and a value of 4 and when i issue the "Update " command, after a short delay, the status changes to "Success" with a value of 1.
    Do I need to issue the Update command to the Status device and then check for the Status value to change to 1 before I check the value of the Charge Port device?

    I want to create a script that:
    1. requests an update of tesla devices
    2. Verifies the tesla devices update occurred
    3 check for charge port closed
    4. if closed, issue a voice command from homeseer that the charging cable is not plugged in.

    I know the charge port device is a 1 when open and 0 when closed.
    My question is what is the correct way to force an update of the tesla device, and verify the update occurred?

    I don't think I can really do what I want with events and that I will need to write a script(i am a beginner). When I try the following two script commands, I always get a value of -1 for both devices instead of 0 or 1 for Charge Port and 1 or 4 for Status as I get from HSTouch:
    hs.WriteLog("Tesla", "Charge Port = " & hs.DeviceValueByName("(MAS Dream Car) Charge Port" ))
    hs.WriteLog("Tesla", "Status = " & hs.DeviceValueByName("(MAS Dream Car) Status" )) '(MAS Dream Car is the Room Name)

    Any help would be much appreciated.

    Because of the unpredictable sleep schedule of the car and the unpredictable time it takes to wake up a sleeping car, all the commands the plugin issues are asynchronous. The best you can do is write a script that:
    • Checks the time of the last update of the status device
    • Calls for an update
    • Waits for a bit and checks the last update of the status device, keep doing this until it changes
    • Once it changes, if the status is "Success" (1) or back to "Waiting on Sleep" (4), then you can assume it worked and continue;
      • if it fails, then stop or do start over or something.
    • Check the "Charging State" device for "Disconnected" (or you can check the charge port, either way)
    Sub Main(parm as object)
         Dim objCAPIControl As CAPIControl
         Dim intRef As Integer
         Dim dtmChanged As Date
         Dim blnChanged As Boolean
         'customizable variables/constants
         Dim strStatus = "MAS Dream Car Status"
         Dim strChargeState = "MAS Dream Car Charging State"
         Const TIMEOUT As Integer = 30
         ' 1. Request an Update
         'get the Update control
         intRef = hs.GetDeviceRefByName(strStatus)
         If intRef Then
              objCAPIControl = hs.CAPIGetSingleControl(intRef, True, "Update", True, False)
              If objCAPIControl IsNot Nothing Then
                   'execute the command
                   hs.WriteLog("ERROR", "CAPI Control 'Update' not found for device '" & strStatus & "'.")
              End If
              hs.WriteLog("ERROR", "Device '" & strStatus & "' not found.")
         End If
         ' 2. Wait for it to change
         'when did it change last?
         dtmChanged = hs.DeviceDateTime(intRef)
         For i = 1 to TIMEOUT
              'once a second for 30 seconds, check to see if it changed
              If hs.DeviceDateTime(intRef) > dtmChanged Then
                   blnChanged = (hs.DeviceValue(intRef) = 1 Or hs.DeviceValue(intRef) = 4)
                   Exit For
              End If
         ' 3. If it changed, check the charge state
         'stop here if it didn't
         If blnChanged Then
              'do something if it's not connected
              If hs.DeviceValueByName(strChargeState) = 0 Then
                   '<<<<< YOUR CODE TO TAKE ACTION ON THIS FACT GOES HERE >>>>>
              End If
              hs.WriteLog("ERROR", "Device failed to change successfully within " & TIMEOUT & " seconds.")
         End If
    End Sub
    (Note: I wrote this code in the forum text editor and have not tested it so there may be syntactical errors, but hopefully it's a good starting point!)

    I prefer to concentrate on what events should trigger this reminder. For my car, I have an event that says "If location has been 'Home' for exactly 5 minutes AND charge state is disconnected AND battery range < 150" then send me a push notification reminding me to plug in the car. That way it's not dependent on me pushing any buttons - the goal is to automate all this stuff, right?


      Thanks for your response. I will play with the scripting, but I like your event concept and I will implement that tonight.

      Thanks again,