Announcement

Collapse
No announcement yet.

Request for Novice Script Help

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Request for Novice Script Help

    Hello

    Please could you help with my Script

    The TVChangeFreeView should be called with the parameter "livingroom" from a HS3 event.

    It then gets an Object (I think an Array of 3 Integers) from getFreeViewIR function (not sure if this should be function or sub as sub generates a RETURN value error)

    I am having little luck trying to work out the errors.
    When a hs.WriteLogEx error occurs, I would like the script to end.

    Any help would be greatly appreciated. I am a Novice level-scripter.


    SCRIPT:
    Code:
    '----------------------------------
    ' Television Script by Chris Coles
    '----------------------------------
    
    
    
    '---------------------------------------------------------------------------
    ' Public Variables
    '---------------------------------------------------------------------------
    
    
    
    '---------------------------------------------------------------------------
    ' Main Method
    '---------------------------------------------------------------------------
    Sub Main(parm As Object)
    End Sub
    
    
    
    '---------------------------------------------------------------------------
    ' Script when the Freeview Channel is Changed
    '---------------------------------------------------------------------------
    Sub TVChangeFreeView(TV As String)
    	
    	Dim RefID_TV As Integer
    	Dim IRControl_TV As Integer
    	Dim RefID_TV_Value As Integer
    	Dim IRSet As Object
    	Dim IR1 As Integer
    	Dim IR2 As Integer
    	Dim IR3 As Integer
    
    	Select Case TV
    		Case "livingroom"
    					RefID_TV = 226
    					IRControl_TV = 1368
    		Case "frontroom"
    					RefID_TV = 226
    					IRControl_TV = 1368
    		Case "masterbedroom"
    					RefID_TV = 226
    					IRControl_TV = 1368
    		Case else
    					hs.WriteLogEx("TV Changer Script", "Incorrect TV Name", "#ff0000")
    					Exit Sub
    	End Select
    
    	RefID_TV_Value = hs.DeviceValueEx(RefID_TV)
    	hs.WriteLog("TV Changer Script", "TV " & TV & "Ref: " & RefID_TV & " has a value of: " & RefID_TV_Value)
    
    	IRSet = getFreeViewIR(RefID_TV)
    
    	'Display Returned IR Values
    	IR1 = IRSet(1) 
    	IR1 = IRSet(2)
    	IR1 = IRSet(3)
    	hs.WriteLog("TV Changer Script", "IR Code to use is: " & IR1 & IR2 & IR3)
    
    End Sub
    
    
    
    '---------------------------------------------------------------------------
    ' Gets the Channel IR Number (FreeView)
    '---------------------------------------------------------------------------
    Public Function getFreeViewIR(RefID_TV As Integer) As Object()
    
    	Dim IR1 As Integer
    	Dim IR2 As Integer
    	Dim IR3 As Integer
    	Dim IR(3) As Object
    
    	Select Case RefID_TV
    
    		Case 1 		'BBC 1 HD
    						IR1 = 1 : IR2 = 0 : IR3 = 1
    		Case 2 		'BBC 2
    						IR1 = 1 : IR2 = 0 : IR3 = 2
    		Case 3 		'BBC 4
    						IR1 = 1 : IR2 = 0 : IR3 = 6
    		Case 4 		'ITV HD
    						IR1 = 1 : IR2 = 0 : IR3 = 3
    		Case 5 		'ITV +1
    						IR1 = 0 : IR2 = 3 : IR3 = 3
    		Case 6 		'ITV 2
    						IR1 = 0 : IR2 = 0 : IR3 = 6
    		Case 7 		'ITV 2+1
    						IR1 = 0 : IR2 = 2 : IR3 = 7
    		Case 8 		'ITV 3
    						IR1 = 0 : IR2 = 1 : IR3 = 0
    		Case 9 		'ITV 3+1
    						IR1 = 0 : IR2 = 0 : IR3 = 0
    		Case 10 	'ITV 4
    						IR1 = 0 : IR2 = 2 : IR3 = 4
    		Case 11		'ITV Be
    						IR1 = 0 : IR2 = 2 : IR3 = 6
    		Case 12		'4 HD
    						IR1 = 1 : IR2 = 0 : IR3 = 4
    		Case 13		'4 HD +1
    						IR1 = 1 : IR2 = 0 : IR3 = 9
    		Case 14		'4 Seven HD
    						IR1 = 1 : IR2 = 2 : IR3 = 7
    		Case 15		'More 4
    						IR1 = 0 : IR2 = 1 : IR3 = 4
    		Case 16		'E4
    						IR1 = 0 : IR2 = 2 : IR3 = 8
    		Case 17		'E4 +1
    						IR1 = 0 : IR2 = 2 : IR3 = 9
    		Case 18		'5 HD
    						IR1 = 1 : IR2 = 0 : IR3 = 5
    		Case 19		'5 +1
    						IR1 = 0 : IR2 = 4 : IR3 = 4
    		Case 20		'5 USA
    						IR1 = 0 : IR2 = 2 : IR3 = 1
    		Case 21		'5 USA +1
    						IR1 = 0 : IR2 = 5 : IR3 = 6
    		Case 22		'5 Star
    						IR1 = 0 : IR2 = 3 : IR3 = 0
    		Case 23		'My 5
    						IR1 = 0 : IR2 = 5 : IR3 = 5
    		Case 24		'Thats Lancs
    						IR1 = 0 : IR2 = 0 : IR3 = 7
    		Case 25		'Drama
    						IR1 = 0 : IR2 = 2 : IR3 = 0
    		Case 26		'YourTV	
    						IR1 = 0 : IR2 = 7 : IR3 = 2
    		Case 27		'YourTV +1
    						IR1 = 0 : IR2 = 7 : IR3 = 3
    		Case 28		'Quest
    						IR1 = 0 : IR2 = 3 : IR3 = 7
    		Case 29		'Quest +1
    						IR1 = 0 : IR2 = 3 : IR3 = 8
    		Case 30		'CBS Reality
    						IR1 = 0 : IR2 = 6 : IR3 = 6
    		Case 31		'CBS Reality +1
    						IR1 = 0 : IR2 = 6 : IR3 = 7
    		Case 32		'CBS Action
    						IR1 = 0 : IR2 = 6 : IR3 = 4
    		Case 33		'CBS Drama
    						IR1 = 0 : IR2 = 7 : IR3 = 1
    		Case 34		'Challenge
    						IR1 = 0 : IR2 = 4 : IR3 = 6
    		Case 35		'Dave
    						IR1 = 0 : IR2 = 1 : IR3 = 2
    		Case 36		'Dave ja Vu
    						IR1 = 0 : IR2 = 8 : IR3 = 4
    		Case 37		'Really
    						IR1 = 0 : IR2 = 1 : IR3 = 7
    		Case 38		'Pick
    						IR1 = 0 : IR2 = 1 : IR3 = 1
    		Case 39		'truTV
    						IR1 = 0 : IR2 = 6 : IR3 = 8
    		Case 40		'truTV +1
    						IR1 = 0 : IR2 = 6 : IR3 = 9
    		Case 41		'Travel
    						IR1 = 0 : IR2 = 4 : IR3 = 2
    		Case 42		'4Music
    						IR1 = 0 : IR2 = 1 : IR3 = 8
    		Case 43		'Viva
    						IR1 = 0 : IR2 = 5 : IR3 = 7
    		Case 44		'Spike
    						IR1 = 0 : IR2 = 3 : IR3 = 1
    		Case 45		'True Crime
    						IR1 = 0 : IR2 = 6 : IR3 = 0
    		Case 46		'True Enterainment
    						IR1 = 0 : IR2 = 6 : IR3 = 1
    		Case 47		'Yesterday
    						IR1 = 0 : IR2 = 1 : IR3 = 9
    		Case 48		'Horror
    						IR1 = 0 : IR2 = 7 : IR3 = 0
    		Case 49		'Home
    						IR1 = 0 : IR2 = 2 : IR3 = 5
    		Case 50		'Food
    						IR1 = 0 : IR2 = 4 : IR3 = 1
    		Case 51		'Film4
    						IR1 = 0 : IR2 = 1 : IR3 = 5
    		Case 52		'Film4 +1
    						IR1 = 0 : IR2 = 4 : IR3 = 3
    		Case 53		'Movie Mix
    						IR1 = 0 : IR2 = 3 : IR3 = 2
    		Case 54		'Movies for Men
    						IR1 = 0 : IR2 = 4 : IR3 = 8
    		Case 55		'True Movies
    						IR1 = 0 : IR2 = 7 : IR3 = 4
    		Case 56		'Talking Pics
    						IR1 = 0 : IR2 = 8 : IR3 = 1
    		Case 57		'Chart Show TV
    						IR1 = 0 : IR2 = 7 : IR3 = 5
    
    		Case 58		'Sky News
    						IR1 = 1 : IR2 = 3 : IR3 = 2
    		Case 59		'BBC News
    						IR1 = 1 : IR2 = 3 : IR3 = 0
    		Case 60		'BBC Parliment
    						IR1 = 1 : IR2 = 3 : IR3 = 1
    		Case 61		'RT News HD
    						IR1 = 1 : IR2 = 1 : IR3 = 3
    		Case 62		'Al Jazera HD
    						IR1 = 1 : IR2 = 0 : IR3 = 8
    		Case 63		'CBeebies
    						IR1 = 1 : IR2 = 2 : IR3 = 4
    		Case 64		'CBBC
    						IR1 = 1 : IR2 = 2 : IR3 = 3
    		Case 65		'CITV
    						IR1 = 1 : IR2 = 2 : IR3 = 2
    		Case 66		'POP
    						IR1 = 1 : IR2 = 2 : IR3 = 5
    		Case 67		'TinyPOP
    						IR1 = 1 : IR2 = 2 : IR3 = 6
    		Case 68		'Kix
    						IR1 = 1 : IR2 = 2 : IR3 = 7
    		Case Else
    					hs.WriteLogEx("TV Changer Script", "Incorrect TV Channel", "#ff0000")
    					Exit Function
    	End Select
    	
    	hs.WriteLog("TV Changer Script", IR1 & ":" & IR2 & ":" & IR3)
    	IR(1) = IR1 : IR(2) = IR2 : IR(3) = IR3
    	Return IR
    	
    End Sub
    
    '---------------------------------------------------------------------------
    ' Changes the Channel
    '---------------------------------------------------------------------------
    Sub Function setChannel(RefID_TV As Integer, RefID_TV_Value As Integer, IRControl As Integer)
    
    	'hs.WriteLog("TV Changer Script", RefID_TV & ":" & RefID_TV_Value & ":" & IRControl)
    
    	
    	'switch to tv
    	'hs.SetDeviceValueByRef(IRControl, 162, True)
    	'switch to 0
    	'hs.SetDeviceValueByRef(IRControl, 23, True)
    	'switch to 0
    	'hs.SetDeviceValueByRef(IRControl, 23, True)
    	'switch to 6
    	'hs.SetDeviceValueByRef(IRControl, 30, True)
    
    End Sub
    Attached Files

    #2
    I have eliminated some of my errors, however now get one error:
    Error 3 Running script C:\Program Files (x86)\HomeSeer HS3\scripts\television.vb :Object reference not set to an instance of an object.->Does entry point TVChangeFreeview exist in script? at A.c17b105f989efe61e5979e67bec1ef734.cffd66cb0782c50126727e3f a75582d7a()


    Code:
    '----------------------------------
    ' Television Script by Chris Coles
    '----------------------------------
    
    
    
    '---------------------------------------------------------------------------
    ' Public Variables
    '---------------------------------------------------------------------------
    
    
    
    '---------------------------------------------------------------------------
    ' Main Method
    '---------------------------------------------------------------------------
    Sub Main(parm As Object)
    End Sub
    
    
    
    '---------------------------------------------------------------------------
    ' Script when the Freeview Channel is Changed
    '---------------------------------------------------------------------------
    Sub TVChangeFreeView(TV As String)
    	
    	Dim RefID_TV As Integer
    	Dim IRControl_TV As Integer
    	Dim RefID_TV_Value As Integer
    
    	Dim IRSet() As Integer
    	Dim IR1 As Integer
    	Dim IR2 As Integer
    	Dim IR3 As Integer
    
    	Select Case TV
    		Case "livingroom"
    					RefID_TV = 226
    					IRControl_TV = 1368
    		Case "frontroom"
    					RefID_TV = 226
    					IRControl_TV = 1368
    		Case "masterbedroom"
    					RefID_TV = 226
    					IRControl_TV = 1368
    		Case else
    					hs.WriteLogEx("TV Changer Script", "Incorrect TV Name", "#ff0000")
    					Exit Sub
    	End Select
    
    	RefID_TV_Value = hs.DeviceValueEx(RefID_TV)
    	hs.WriteLog("TV Changer Script", "TV " & TV & "Ref: " & RefID_TV & " has a value of: " & RefID_TV_Value)
    
    	IRSet = getFreeViewIR(RefID_TV)
    	
    	If Not IRSet Is Nothing Then
    		'Display Returned IR Values
    		IR1 = IRSet(0) 
    		IR1 = IRSet(1)
    		IR1 = IRSet(2)
    		hs.WriteLog("TV Changer Script", "IR Code to use is: " & IR1 & IR2 & IR3)
    	Else
    		hs.WriteLogEx("TV Changer Script", "No IR Set Recieved", "#ff0000")
    	End If
    
    End Sub
    
    
    
    '---------------------------------------------------------------------------
    ' Gets the Channel IR Number (FreeView)
    '---------------------------------------------------------------------------
    Private Function getFreeViewIR(RefID_TV As Integer) As Integer()
    
    	Dim IR1 As Integer
    	Dim IR2 As Integer
    	Dim IR3 As Integer
    	Dim IR(2) As Integer
    
    	IR1 = 0 : IR2 = 0 : IR3 = 0
    
    	Select Case RefID_TV
    
    		Case 1 		'BBC 1 HD
    						IR1 = 1 : IR2 = 0 : IR3 = 1
    		Case 2 		'BBC 2
    						IR1 = 1 : IR2 = 0 : IR3 = 2
    		Case 3 		'BBC 4
    						IR1 = 1 : IR2 = 0 : IR3 = 6
    		Case 4 		'ITV HD
    						IR1 = 1 : IR2 = 0 : IR3 = 3
    		Case 5 		'ITV +1
    						IR1 = 0 : IR2 = 3 : IR3 = 3
    		Case 6 		'ITV 2
    						IR1 = 0 : IR2 = 0 : IR3 = 6
    		Case 7 		'ITV 2+1
    						IR1 = 0 : IR2 = 2 : IR3 = 7
    		Case 8 		'ITV 3
    						IR1 = 0 : IR2 = 1 : IR3 = 0
    		Case 9 		'ITV 3+1
    						IR1 = 0 : IR2 = 0 : IR3 = 0
    		Case 10 	'ITV 4
    						IR1 = 0 : IR2 = 2 : IR3 = 4
    		Case 11		'ITV Be
    						IR1 = 0 : IR2 = 2 : IR3 = 6
    		Case 12		'4 HD
    						IR1 = 1 : IR2 = 0 : IR3 = 4
    		Case 13		'4 HD +1
    						IR1 = 1 : IR2 = 0 : IR3 = 9
    		Case 14		'4 Seven HD
    						IR1 = 1 : IR2 = 2 : IR3 = 7
    		Case 15		'More 4
    						IR1 = 0 : IR2 = 1 : IR3 = 4
    		Case 16		'E4
    						IR1 = 0 : IR2 = 2 : IR3 = 8
    		Case 17		'E4 +1
    						IR1 = 0 : IR2 = 2 : IR3 = 9
    		Case 18		'5 HD
    						IR1 = 1 : IR2 = 0 : IR3 = 5
    		Case 19		'5 +1
    						IR1 = 0 : IR2 = 4 : IR3 = 4
    		Case 20		'5 USA
    						IR1 = 0 : IR2 = 2 : IR3 = 1
    		Case 21		'5 USA +1
    						IR1 = 0 : IR2 = 5 : IR3 = 6
    		Case 22		'5 Star
    						IR1 = 0 : IR2 = 3 : IR3 = 0
    		Case 23		'My 5
    						IR1 = 0 : IR2 = 5 : IR3 = 5
    		Case 24		'Thats Lancs
    						IR1 = 0 : IR2 = 0 : IR3 = 7
    		Case 25		'Drama
    						IR1 = 0 : IR2 = 2 : IR3 = 0
    		Case 26		'YourTV	
    						IR1 = 0 : IR2 = 7 : IR3 = 2
    		Case 27		'YourTV +1
    						IR1 = 0 : IR2 = 7 : IR3 = 3
    		Case 28		'Quest
    						IR1 = 0 : IR2 = 3 : IR3 = 7
    		Case 29		'Quest +1
    						IR1 = 0 : IR2 = 3 : IR3 = 8
    		Case 30		'CBS Reality
    						IR1 = 0 : IR2 = 6 : IR3 = 6
    		Case 31		'CBS Reality +1
    						IR1 = 0 : IR2 = 6 : IR3 = 7
    		Case 32		'CBS Action
    						IR1 = 0 : IR2 = 6 : IR3 = 4
    		Case 33		'CBS Drama
    						IR1 = 0 : IR2 = 7 : IR3 = 1
    		Case 34		'Challenge
    						IR1 = 0 : IR2 = 4 : IR3 = 6
    		Case 35		'Dave
    						IR1 = 0 : IR2 = 1 : IR3 = 2
    		Case 36		'Dave ja Vu
    						IR1 = 0 : IR2 = 8 : IR3 = 4
    		Case 37		'Really
    						IR1 = 0 : IR2 = 1 : IR3 = 7
    		Case 38		'Pick
    						IR1 = 0 : IR2 = 1 : IR3 = 1
    		Case 39		'truTV
    						IR1 = 0 : IR2 = 6 : IR3 = 8
    		Case 40		'truTV +1
    						IR1 = 0 : IR2 = 6 : IR3 = 9
    		Case 41		'Travel
    						IR1 = 0 : IR2 = 4 : IR3 = 2
    		Case 42		'4Music
    						IR1 = 0 : IR2 = 1 : IR3 = 8
    		Case 43		'Viva
    						IR1 = 0 : IR2 = 5 : IR3 = 7
    		Case 44		'Spike
    						IR1 = 0 : IR2 = 3 : IR3 = 1
    		Case 45		'True Crime
    						IR1 = 0 : IR2 = 6 : IR3 = 0
    		Case 46		'True Enterainment
    						IR1 = 0 : IR2 = 6 : IR3 = 1
    		Case 47		'Yesterday
    						IR1 = 0 : IR2 = 1 : IR3 = 9
    		Case 48		'Horror
    						IR1 = 0 : IR2 = 7 : IR3 = 0
    		Case 49		'Home
    						IR1 = 0 : IR2 = 2 : IR3 = 5
    		Case 50		'Food
    						IR1 = 0 : IR2 = 4 : IR3 = 1
    		Case 51		'Film4
    						IR1 = 0 : IR2 = 1 : IR3 = 5
    		Case 52		'Film4 +1
    						IR1 = 0 : IR2 = 4 : IR3 = 3
    		Case 53		'Movie Mix
    						IR1 = 0 : IR2 = 3 : IR3 = 2
    		Case 54		'Movies for Men
    						IR1 = 0 : IR2 = 4 : IR3 = 8
    		Case 55		'True Movies
    						IR1 = 0 : IR2 = 7 : IR3 = 4
    		Case 56		'Talking Pics
    						IR1 = 0 : IR2 = 8 : IR3 = 1
    		Case 57		'Chart Show TV
    						IR1 = 0 : IR2 = 7 : IR3 = 5
    		Case 58		'Sky News
    						IR1 = 1 : IR2 = 3 : IR3 = 2
    		Case 59		'BBC News
    						IR1 = 1 : IR2 = 3 : IR3 = 0
    		Case 60		'BBC Parliment
    						IR1 = 1 : IR2 = 3 : IR3 = 1
    		Case 61		'RT News HD
    						IR1 = 1 : IR2 = 1 : IR3 = 3
    		Case 62		'Al Jazera HD
    						IR1 = 1 : IR2 = 0 : IR3 = 8
    		Case 63		'CBeebies
    						IR1 = 1 : IR2 = 2 : IR3 = 4
    		Case 64		'CBBC
    						IR1 = 1 : IR2 = 2 : IR3 = 3
    		Case 65		'CITV
    						IR1 = 1 : IR2 = 2 : IR3 = 2
    		Case 66		'POP
    						IR1 = 1 : IR2 = 2 : IR3 = 5
    		Case 67		'TinyPOP
    						IR1 = 1 : IR2 = 2 : IR3 = 6
    		Case 68		'Kix
    						IR1 = 1 : IR2 = 2 : IR3 = 7
    		Case Else
    					hs.WriteLogEx("TV Changer Script", "Incorrect TV Channel", "#ff0000")
    					Exit Function
    	End Select
    	
    	hs.WriteLog("TV Changer Script", IR1 & ":" & IR2 & ":" & IR3)
    	IR(0) = IR1 : IR(1) = IR2 : IR(2) = IR3
    	Return IR
    	
    End Function
    
    
    
    '---------------------------------------------------------------------------
    ' Changes the Channel
    '---------------------------------------------------------------------------
    Sub setChannel(RefID_TV As Integer, RefID_TV_Value As Integer, IRControl As Integer)
    
    	'hs.WriteLog("TV Changer Script", RefID_TV & ":" & RefID_TV_Value & ":" & IRControl)
    
    	
    	'switch to tv
    	'hs.SetDeviceValueByRef(IRControl, 162, True)
    	'switch to 0
    	'hs.SetDeviceValueByRef(IRControl, 23, True)
    	'switch to 0
    	'hs.SetDeviceValueByRef(IRControl, 23, True)
    	'switch to 6
    	'hs.SetDeviceValueByRef(IRControl, 30, True)
    
    End Sub

    Comment


      #3
      Very confused now, after making progress, I seem to be stuck on the last part:

      Compiling script C:\Program Files (x86)\HomeSeer HS3\scripts\television.vb: Function 'getFreeViewIR' doesn't return a value on all code paths. A null reference exception could occur at run time when the result is used.

      Error Compiling script C:\Program Files (x86)\HomeSeer HS3\scripts\television.vb: 'Is' operator does not accept operands of type 'Integer'. Operands must be reference or nullable types.

      Error Compiling script C:\Program Files (x86)\HomeSeer HS3\scripts\television.vb: Namespace or type specified in the Imports 'System.Core' doesn't contain any public member or cannot be found. Make sure the namespace or the type is defined and contains at least one public member. Make sure the imported element name doesn't use any aliases.

      Latest Code:
      Code:
      '----------------------------------
      ' Television Script by Chris Coles
      '----------------------------------
      
      
      
      '---------------------------------------------------------------------------
      ' Public Variables
      '---------------------------------------------------------------------------
      
      
      
      '---------------------------------------------------------------------------
      ' Main Method
      '---------------------------------------------------------------------------
      Sub Main(parm As Object)
      End Sub
      
      
      
      '---------------------------------------------------------------------------
      ' Script when the Freeview Channel is Changed
      '---------------------------------------------------------------------------
      Sub TVChangeFreeview(TV As String)
      	
      	Dim RefID_TV As Integer
      	Dim IRControl_TV As Integer
      	Dim RefID_TV_Value As Integer
      	Dim IRSet() As Integer
      
      	Select Case TV
      		Case "livingroom"
      					RefID_TV = 226
      					IRControl_TV = 1368
      		Case "frontroom"
      					RefID_TV = 226
      					IRControl_TV = 1368
      		Case "masterbedroom"
      					RefID_TV = 226
      					IRControl_TV = 1368
      		Case else
      					hs.WriteLogEx("TV Changer Script", "Incorrect TV Name", "#ff0000")
      					Exit Sub
      	End Select
      
      	RefID_TV_Value = hs.DeviceValueEx(RefID_TV)
      	'hs.WriteLog("TV Changer Script", "TV " & TV & "Ref: " & RefID_TV & " has a value of: " & RefID_TV_Value)
      
      	IRSet = getFreeViewIR(RefID_TV_Value)
      
      	If ((Not IRSet Is Nothing) And (Not IRControl_TV Is Nothing)) Then
      		setChannel(IRControl_TV, IRSet)
      		hs.WriteLog("TV Changer Script", "SettingIR")
      	Else
      		hs.WriteLogEx("TV Changer Script", "No IR Set Recieved", "#ff0000")
      	End If
      
      End Sub
      
      
      
      '---------------------------------------------------------------------------
      ' Gets the Channel IR Number (FreeView)
      '---------------------------------------------------------------------------
      Private Function getFreeViewIR(RefID_TV_Value As Integer) As Integer()
      
      	Dim IR1 As Integer
      	Dim IR2 As Integer
      	Dim IR3 As Integer
      	Dim IR(2) As Integer
      
      	IR1 = 0 : IR2 = 0 : IR3 = 0
      
      	Select Case RefID_TV_Value
      
      		Case 1 		'BBC 1 HD
      						IR1 = 1 : IR2 = 0 : IR3 = 1
      		Case 2 		'BBC 2
      						IR1 = 1 : IR2 = 0 : IR3 = 2
      		Case 3 		'BBC 4
      						IR1 = 1 : IR2 = 0 : IR3 = 6
      		Case 4 		'ITV HD
      						IR1 = 1 : IR2 = 0 : IR3 = 3
      		Case 5 		'ITV +1
      						IR1 = 0 : IR2 = 3 : IR3 = 3
      		Case 6 		'ITV 2
      						IR1 = 0 : IR2 = 0 : IR3 = 6
      		Case 7 		'ITV 2+1
      						IR1 = 0 : IR2 = 2 : IR3 = 7
      		Case 8 		'ITV 3
      						IR1 = 0 : IR2 = 1 : IR3 = 0
      		Case 9 		'ITV 3+1
      						IR1 = 0 : IR2 = 0 : IR3 = 0
      		Case 10 	'ITV 4
      						IR1 = 0 : IR2 = 2 : IR3 = 4
      		Case 11		'ITV Be
      						IR1 = 0 : IR2 = 2 : IR3 = 6
      		Case 12		'4 HD
      						IR1 = 1 : IR2 = 0 : IR3 = 4
      		Case 13		'4 HD +1
      						IR1 = 1 : IR2 = 0 : IR3 = 9
      		Case 14		'4 Seven HD
      						IR1 = 1 : IR2 = 2 : IR3 = 7
      		Case 15		'More 4
      						IR1 = 0 : IR2 = 1 : IR3 = 4
      		Case 16		'E4
      						IR1 = 0 : IR2 = 2 : IR3 = 8
      		Case 17		'E4 +1
      						IR1 = 0 : IR2 = 2 : IR3 = 9
      		Case 18		'5 HD
      						IR1 = 1 : IR2 = 0 : IR3 = 5
      		Case 19		'5 +1
      						IR1 = 0 : IR2 = 4 : IR3 = 4
      		Case 20		'5 USA
      						IR1 = 0 : IR2 = 2 : IR3 = 1
      		Case 21		'5 USA +1
      						IR1 = 0 : IR2 = 5 : IR3 = 6
      		Case 22		'5 Star
      						IR1 = 0 : IR2 = 3 : IR3 = 0
      		Case 23		'My 5
      						IR1 = 0 : IR2 = 5 : IR3 = 5
      		Case 24		'Thats Lancs
      						IR1 = 0 : IR2 = 0 : IR3 = 7
      		Case 25		'Drama
      						IR1 = 0 : IR2 = 2 : IR3 = 0
      		Case 26		'YourTV	
      						IR1 = 0 : IR2 = 7 : IR3 = 2
      		Case 27		'YourTV +1
      						IR1 = 0 : IR2 = 7 : IR3 = 3
      		Case 28		'Quest
      						IR1 = 0 : IR2 = 3 : IR3 = 7
      		Case 29		'Quest +1
      						IR1 = 0 : IR2 = 3 : IR3 = 8
      		Case 30		'CBS Reality
      						IR1 = 0 : IR2 = 6 : IR3 = 6
      		Case 31		'CBS Reality +1
      						IR1 = 0 : IR2 = 6 : IR3 = 7
      		Case 32		'CBS Action
      						IR1 = 0 : IR2 = 6 : IR3 = 4
      		Case 33		'CBS Drama
      						IR1 = 0 : IR2 = 7 : IR3 = 1
      		Case 34		'Challenge
      						IR1 = 0 : IR2 = 4 : IR3 = 6
      		Case 35		'Dave
      						IR1 = 0 : IR2 = 1 : IR3 = 2
      		Case 36		'Dave ja Vu
      						IR1 = 0 : IR2 = 8 : IR3 = 4
      		Case 37		'Really
      						IR1 = 0 : IR2 = 1 : IR3 = 7
      		Case 38		'Pick
      						IR1 = 0 : IR2 = 1 : IR3 = 1
      		Case 39		'truTV
      						IR1 = 0 : IR2 = 6 : IR3 = 8
      		Case 40		'truTV +1
      						IR1 = 0 : IR2 = 6 : IR3 = 9
      		Case 41		'Travel
      						IR1 = 0 : IR2 = 4 : IR3 = 2
      		Case 42		'4Music
      						IR1 = 0 : IR2 = 1 : IR3 = 8
      		Case 43		'Viva
      						IR1 = 0 : IR2 = 5 : IR3 = 7
      		Case 44		'Spike
      						IR1 = 0 : IR2 = 3 : IR3 = 1
      		Case 45		'True Crime
      						IR1 = 0 : IR2 = 6 : IR3 = 0
      		Case 46		'True Enterainment
      						IR1 = 0 : IR2 = 6 : IR3 = 1
      		Case 47		'Yesterday
      						IR1 = 0 : IR2 = 1 : IR3 = 9
      		Case 48		'Horror
      						IR1 = 0 : IR2 = 7 : IR3 = 0
      		Case 49		'Home
      						IR1 = 0 : IR2 = 2 : IR3 = 5
      		Case 50		'Food
      						IR1 = 0 : IR2 = 4 : IR3 = 1
      		Case 51		'Film4
      						IR1 = 0 : IR2 = 1 : IR3 = 5
      		Case 52		'Film4 +1
      						IR1 = 0 : IR2 = 4 : IR3 = 3
      		Case 53		'Movie Mix
      						IR1 = 0 : IR2 = 3 : IR3 = 2
      		Case 54		'Movies for Men
      						IR1 = 0 : IR2 = 4 : IR3 = 8
      		Case 55		'True Movies
      						IR1 = 0 : IR2 = 7 : IR3 = 4
      		Case 56		'Talking Pics
      						IR1 = 0 : IR2 = 8 : IR3 = 1
      		Case 57		'Chart Show TV
      						IR1 = 0 : IR2 = 7 : IR3 = 5
      		Case 58		'Sky News
      						IR1 = 1 : IR2 = 3 : IR3 = 2
      		Case 59		'BBC News
      						IR1 = 1 : IR2 = 3 : IR3 = 0
      		Case 60		'BBC Parliment
      						IR1 = 1 : IR2 = 3 : IR3 = 1
      		Case 61		'RT News HD
      						IR1 = 1 : IR2 = 1 : IR3 = 3
      		Case 62		'Al Jazera HD
      						IR1 = 1 : IR2 = 0 : IR3 = 8
      		Case 63		'CBeebies
      						IR1 = 1 : IR2 = 2 : IR3 = 4
      		Case 64		'CBBC
      						IR1 = 1 : IR2 = 2 : IR3 = 3
      		Case 65		'CITV
      						IR1 = 1 : IR2 = 2 : IR3 = 2
      		Case 66		'POP
      						IR1 = 1 : IR2 = 2 : IR3 = 5
      		Case 67		'TinyPOP
      						IR1 = 1 : IR2 = 2 : IR3 = 6
      		Case 68		'Kix
      						IR1 = 1 : IR2 = 2 : IR3 = 7
      		Case Else
      					hs.WriteLogEx("TV Changer Script", "Incorrect TV Channel", "#ff0000")
      					Exit Function
      	End Select
      	
      	'hs.WriteLog("TV Changer Script", IR1 & ":" & IR2 & ":" & IR3)
      	IR(0) = IR1 : IR(1) = IR2 : IR(2) = IR3
      	Return IR
      	
      End Function
      
      
      
      '---------------------------------------------------------------------------
      ' Changes the Channel
      '---------------------------------------------------------------------------
      Sub setChannel(IRControl As Integer, IRSet() As Integer)
      '
      '	Dim IR1 As Integer
      '	Dim IR2 As Integer
      '	Dim IR3 As Integer
      '
      '	IR1 = IRSet(0)
      '	IR2 = IRSet(1)
      '	IR3 = IRSet(2)
      '
      '	hs.WriteLog("TV Changer Script", "IR Deivce " & IRControl & " will be sent: " & IR1 & ":" & IR2 & ":" & IR3)
      '
      '	'hs.SetDeviceValueByRef(IRControl, 162, True)
      '	hs.WriteLog("TV Changer Script", "TV Mode Selected")
      '
      '	For i As Integer = IRSet.Length
      '		
      '		Select Case IRSet(i)
      '		
      '			Case 0
      '					'hs.SetDeviceValueByRef(IRControl, 23, True)
      '					hs.WriteLog("TV Changer Script", "0 Sent")
      '			Case 1
      '					'hs.SetDeviceValueByRef(IRControl, 24, True)
      '					hs.WriteLog("TV Changer Script", "1 Sent")
      '			Case 2
      '					'hs.SetDeviceValueByRef(IRControl, 26, True)
      '					hs.WriteLog("TV Changer Script", "2 Sent")
      '			Case 3
      '					'hs.SetDeviceValueByRef(IRControl, 27, True)
      '					hs.WriteLog("TV Changer Script", "3 Sent")
      '			Case 4
      '					'hs.SetDeviceValueByRef(IRControl, 28, True)
      '					hs.WriteLog("TV Changer Script", "4 Sent")
      '			Case 5
      '					'hs.SetDeviceValueByRef(IRControl, 29, True)
      '					hs.WriteLog("TV Changer Script", "5 Sent")
      '			Case 6
      '					'hs.SetDeviceValueByRef(IRControl, 30, True)
      '					hs.WriteLog("TV Changer Script", "6 Sent")
      '			Case 7
      '					'hs.SetDeviceValueByRef(IRControl, 31, True)
      '					hs.WriteLog("TV Changer Script", "7 Sent")
      '			Case 8
      '					'hs.SetDeviceValueByRef(IRControl, 32, True)
      '					hs.WriteLog("TV Changer Script", "8 Sent")
      '			Case 9
      '					'hs.SetDeviceValueByRef(IRControl, 33, True)
      '					hs.WriteLog("TV Changer Script", "9 Sent")
      '			Case Else
      					hs.WriteLogEx("TV Changer Script", "Error sending IR Command", "#ff0000")
      '					Exit Sub
      '		End Select
      '	Next
      '
      End Sub

      Comment


        #4
        I've done some changes - I've been running this in Visual Studio so you'll you need to change the console.writeline back to hs.writelog and put the hs.xxx commands back in.

        Hopefully you can see what I've done, you'll probably need to double check a couple of things though - I saw in the digits sent that you appear to be sending 23+the digit value except for 25 where you go up by 2 - not sure if this is by design or missed out...you'll need to change it if so.

        Code:
        Sub Main(ByVal Parms As Object)
                TVChangeFreeview("livingroom")
            End Sub
        
            Sub TVChangeFreeview(TV As String)
        
                Dim RefID_TV As Integer
                Dim IRControl_TV As Integer = -1
                Dim RefID_TV_Value As Integer
                Dim IRSet() As Integer
        
                Select Case TV
                    Case "livingroom"
                        RefID_TV = 226
                        IRControl_TV = 1368
                    Case "frontroom"
                        RefID_TV = 226
                        IRControl_TV = 1368
                    Case "masterbedroom"
                        RefID_TV = 226
                        IRControl_TV = 1368
                    Case Else
                        Console.WriteLine("TV Changer Script" & "Incorrect TV Name")
                        Exit Sub
                End Select
        
                RefID_TV_Value = 2
        
                Console.WriteLine("TV Changer Script" & "TV " & TV & "Ref: " & RefID_TV & " has a value of: " & RefID_TV_Value)
        
                IRSet = getFreeViewIR(RefID_TV_Value)
        
                If ((IRSet IsNot {9, 9, 9}) And (IRControl_TV <> -1)) Then
                    setChannel(IRControl_TV, IRSet)
                    Console.WriteLine("TV Changer Script" & "SettingIR")
                Else
                    Console.WriteLine("TV Changer Script", "No IR Set Recieved")
                End If
        
            End Sub
        
            Function getFreeViewIR(RefID_TV_Value As Integer) As Integer()
        
                Dim IR(2) As Integer
        
                Select Case RefID_TV_Value
        
                    Case 1      'BBC 1 HD
                        IR = {1, 0, 1}
                    Case 2      'BBC 2
                        IR = {1, 0, 2}
                    Case 3      'BBC 4
                        IR = {1, 0, 6}
                    Case 4      'ITV HD
                        IR = {1, 0, 3}
                    Case 5      'ITV +1
                        IR = {0, 3, 3}
                    Case 6      'ITV 2
                        IR = {0, 0, 6}
                    Case 7      'ITV 2+1
                        IR = {0, 2, 7}
                    Case 8      'ITV 3
                        IR = {0, 1, 0}
                    Case 9      'ITV 3+1
                        IR = {0, 0, 0}
                    Case 10     'ITV 4
                        IR = {0, 2, 4}
                    Case 11     'ITV Be
                        IR = {0, 2, 6}
                    Case 12     '4 HD
                        IR = {1, 0, 4}
                    Case 13     '4 HD +1
                        IR = {1, 0, 9}
                    Case 14     '4 Seven HD
                        IR = {1, 2, 7}
                    Case 15     'More 4
                        IR = {0, 1, 4}
                    Case 16     'E4
                        IR = {0, 2, 8}
                    Case 17     'E4 +1
                        IR = {0, 2, 9}
                    Case 18     '5 HD
                        IR = {1, 0, 5}
                    Case 19     '5 +1
                        IR = {0, 4, 4}
                    Case 20     '5 USA
                        IR = {0, 2, 1}
                    Case 21     '5 USA +1
                        IR = {0, 5, 6}
                    Case 22     '5 Star
                        IR = {0, 3, 0}
                    Case 23     'My 5
                        IR = {0, 5, 5}
                    Case 24     'Thats Lancs
                        IR = {0, 0, 7}
                    Case 25     'Drama
                        IR = {0, 2, 0}
                    Case 26     'YourTV	
                        IR = {0, 7, 2}
                    Case 27     'YourTV +1
                        IR = {0, 7, 3}
                    Case 28     'Quest
                        IR = {0, 3, 7}
                    Case 29     'Quest +1
                        IR = {0, 3, 8}
                    Case 30     'CBS Reality
                        IR = {0, 6, 6}
                    Case 31     'CBS Reality +1
                        IR = {0, 6, 7}
                    Case 32     'CBS Action
                        IR = {0, 6, 4}
                    Case 33     'CBS Drama
                        IR = {0, 7, 1}
                    Case 34     'Challenge
                        IR = {0, 4, 6}
                    Case 35     'Dave
                        IR = {0, 1, 2}
                    Case 36     'Dave ja Vu
                        IR = {0, 8, 4}
                    Case 37     'Really
                        IR = {0, 1, 7}
                    Case 38     'Pick
                        IR = {0, 1, 1}
                    Case 39     'truTV
                        IR = {0, 6, 8}
                    Case 40     'truTV +1
                        IR = {0, 6, 9}
                    Case 41     'Travel
                        IR = {0, 4, 2}
                    Case 42     '4Music
                        IR = {0, 1, 8}
                    Case 43     'Viva
                        IR = {0, 5, 7}
                    Case 44     'Spike
                        IR = {0, 3, 1}
                    Case 45     'True Crime
                        IR = {0, 6, 0}
                    Case 46     'True Enterainment
                        IR = {0, 6, 1}
                    Case 47     'Yesterday
                        IR = {0, 1, 9}
                    Case 48     'Horror
                        IR = {0, 7, 0}
                    Case 49     'Home
                        IR = {0, 2, 5}
                    Case 50     'Food
                        IR = {0, 4, 1}
                    Case 51     'Film4
                        IR = {0, 1, 5}
                    Case 52     'Film4 +1
                        IR = {0, 4, 3}
                    Case 53     'Movie Mix
                        IR = {0, 3, 2}
                    Case 54     'Movies for Men
                        IR = {0, 4, 8}
                    Case 55     'True Movies
                        IR = {0, 7, 4}
                    Case 56     'Talking Pics
                        IR = {0, 8, 1}
                    Case 57     'Chart Show TV
                        IR = {0, 7, 5}
                    Case 58     'Sky News
                        IR = {1, 3, 2}
                    Case 59     'BBC News
                        IR = {1, 3, 0}
                    Case 60     'BBC Parliment
                        IR = {1, 3, 1}
                    Case 61     'RT News 
                        IR = {1, 1, 3}
                    Case 62     'Al Jazera HD
                        IR = {1, 0, 8}
                    Case 63     'CBeebies
                        IR = {1, 2, 4}
                    Case 64     'CBBC
                        IR = {1, 2, 3}
                    Case 65     'CITV
                        IR = {1, 2, 2}
                    Case 66     'POP
                        IR = {1, 2, 5}
                    Case 67     'TinyPOP
                        IR = {1, 2, 6}
                    Case 68     'Kix
                        IR = {1, 2, 7}
                    Case Else
                        Console.WriteLine("TV Changer Script" & "Incorrect TV Channel")
                        IR = {9, 9, 9}
                        Return IR
                End Select
        
                Return IR
        
            End Function
        
            Sub setChannel(IRControl As Integer, IRSet() As Integer)
        
                Console.WriteLine("TV Changer Script", "IR Deivce " & IRControl & " will be sent: " & IRSet(0) & ":" & IRSet(1) & ":" & IRSet(2))
                Console.WriteLine("TV Changer Script" & "TV Mode Selected")
        
                For Each SingleDigit As Integer In IRSet
        
                    Select Case SingleDigit
                        Case 0 To 9
                            'hs.SetDeviceValueByRef(IRControl, 23 + SingleDigit, True)
                            Console.WriteLine("TV Changer Script " & SingleDigit & " Sent")
                        Case Else : Console.WriteLine("TV Changer Script" & " Error sending IR Command")
                    End Select
        
                Next
        
            End Sub

        Comment


          #5
          Thank you. I got it working, I just needed to sort out delays for IR.
          Does the Global Cache GC-100 do that automatically? Or do I need a delay?

          However I am also going to make the changes you suggest to improve
          I will report once done, yeah the digits for some strange reason have the digit '100' bang in between those values. I have no idea why, must be the Global Cache set.

          The idea is to delete a ridiculous number of events!

          Code:
          '----------------------------------
          ' Television Script by Chris Coles
          '----------------------------------
          
          
          
          '---------------------------------------------------------------------------
          ' Public Variables
          '---------------------------------------------------------------------------
          
          
          
          '---------------------------------------------------------------------------
          ' Main Method
          '---------------------------------------------------------------------------
          Sub Main(parm As Object)
          End Sub
          
          
          
          '---------------------------------------------------------------------------
          ' Script when the Freeview Channel is Changed
          '---------------------------------------------------------------------------
          Sub TVChangeFreeview(TV As String)
          	
          	Dim RefID_TV As Integer
          	Dim IRControl_TV As Integer
          	Dim RefID_TV_Value As Integer
          	Dim IRSet() As Integer = {0, 0, 0}
          	Dim EmptyIRSet() As Integer = {0, 0, 0}
          	
          
          	Select Case TV
          		Case "livingroom"
          					RefID_TV = 226
          					IRControl_TV = 1368
          		Case "frontroom"
          					RefID_TV = 0
          					IRControl_TV = 0
          		Case "masterbedroom"
          					RefID_TV = 0
          					IRControl_TV = 0
          		Case else
          					hs.WriteLogEx("TV Changer Script", "Incorrect TV Name", "#ff0000")
          					Exit Sub
          	End Select
          
          	RefID_TV_Value = hs.DeviceValueEx(RefID_TV)
          
          
          	'hs.WriteLog("TV Changer Script", "TV " & TV & "Ref: " & RefID_TV & " has a value of: " & RefID_TV_Value)
          
          
          	IRSet = getFreeViewIR(RefID_TV_Value)
          
          	If Not((IRSet Is Nothing) OR (IRControl_TV = 0)) Then
          		
          		If ((IRSet(0) <> 0) AND (IRSet(0) <> 0) AND (IRSet(0) <> 0)) Then
          			setChannel(IRControl_TV, IRSet)
          			hs.WriteLog("TV Changer Script", "SettingIR")
          		Else
          			hs.WriteLogEx("TV Changer Script", "No IR Set has been Recieved - 000", "#ff0000")
          		End If
          
          	Else
          		hs.WriteLogEx("TV Changer Script", "No IR Set has been Recieved - Null", "#ff0000")
          
          	End If
          
          End Sub
          
          
          
          '---------------------------------------------------------------------------
          ' Gets the Channel IR Number (FreeView)
          '---------------------------------------------------------------------------
          Private Function getFreeViewIR(RefID_TV_Value As Integer) As Integer()
          
          	Dim IR1 As Integer = 0
          	Dim IR2 As Integer = 0
          	Dim IR3 As Integer = 0
          	Dim IR() As Integer = {0, 0, 0}
          
          	Select Case RefID_TV_Value
          
          		Case 1 		'BBC 1 HD
          						IR1 = 1 : IR2 = 0 : IR3 = 1
          		Case 2 		'BBC 2
          						IR1 = 1 : IR2 = 0 : IR3 = 2
          		Case 3 		'BBC 4
          						IR1 = 1 : IR2 = 0 : IR3 = 6
          		Case 4 		'ITV HD
          						IR1 = 1 : IR2 = 0 : IR3 = 3
          		Case 5 		'ITV +1
          						IR1 = 0 : IR2 = 3 : IR3 = 3
          		Case 6 		'ITV 2
          						IR1 = 0 : IR2 = 0 : IR3 = 6
          		Case 7 		'ITV 2+1
          						IR1 = 0 : IR2 = 2 : IR3 = 7
          		Case 8 		'ITV 3
          						IR1 = 0 : IR2 = 1 : IR3 = 0
          		Case 9 		'ITV 3+1
          						IR1 = 0 : IR2 = 0 : IR3 = 0
          		Case 10 	'ITV 4
          						IR1 = 0 : IR2 = 2 : IR3 = 4
          		Case 11		'ITV Be
          						IR1 = 0 : IR2 = 2 : IR3 = 6
          		Case 12		'4 HD
          						IR1 = 1 : IR2 = 0 : IR3 = 4
          		Case 13		'4 HD +1
          						IR1 = 1 : IR2 = 0 : IR3 = 9
          		Case 14		'4 Seven HD
          						IR1 = 1 : IR2 = 2 : IR3 = 7
          		Case 15		'More 4
          						IR1 = 0 : IR2 = 1 : IR3 = 4
          		Case 16		'E4
          						IR1 = 0 : IR2 = 2 : IR3 = 8
          		Case 17		'E4 +1
          						IR1 = 0 : IR2 = 2 : IR3 = 9
          		Case 18		'5 HD
          						IR1 = 1 : IR2 = 0 : IR3 = 5
          		Case 19		'5 +1
          						IR1 = 0 : IR2 = 4 : IR3 = 4
          		Case 20		'5 USA
          						IR1 = 0 : IR2 = 2 : IR3 = 1
          		Case 21		'5 USA +1
          						IR1 = 0 : IR2 = 5 : IR3 = 6
          		Case 22		'5 Star
          						IR1 = 0 : IR2 = 3 : IR3 = 0
          		Case 23		'My 5
          						IR1 = 0 : IR2 = 5 : IR3 = 5
          		Case 24		'Thats Lancs
          						IR1 = 0 : IR2 = 0 : IR3 = 7
          		Case 25		'Drama
          						IR1 = 0 : IR2 = 2 : IR3 = 0
          		Case 26		'YourTV	
          						IR1 = 0 : IR2 = 7 : IR3 = 2
          		Case 27		'YourTV +1
          						IR1 = 0 : IR2 = 7 : IR3 = 3
          		Case 28		'Quest
          						IR1 = 0 : IR2 = 3 : IR3 = 7
          		Case 29		'Quest +1
          						IR1 = 0 : IR2 = 3 : IR3 = 8
          		Case 30		'CBS Reality
          						IR1 = 0 : IR2 = 6 : IR3 = 6
          		Case 31		'CBS Reality +1
          						IR1 = 0 : IR2 = 6 : IR3 = 7
          		Case 32		'CBS Action
          						IR1 = 0 : IR2 = 6 : IR3 = 4
          		Case 33		'CBS Drama
          						IR1 = 0 : IR2 = 7 : IR3 = 1
          		Case 34		'Challenge
          						IR1 = 0 : IR2 = 4 : IR3 = 6
          		Case 35		'Dave
          						IR1 = 0 : IR2 = 1 : IR3 = 2
          		Case 36		'Dave ja Vu
          						IR1 = 0 : IR2 = 8 : IR3 = 4
          		Case 37		'Really
          						IR1 = 0 : IR2 = 1 : IR3 = 7
          		Case 38		'Pick
          						IR1 = 0 : IR2 = 1 : IR3 = 1
          		Case 39		'truTV
          						IR1 = 0 : IR2 = 6 : IR3 = 8
          		Case 40		'truTV +1
          						IR1 = 0 : IR2 = 6 : IR3 = 9
          		Case 41		'Travel
          						IR1 = 0 : IR2 = 4 : IR3 = 2
          		Case 42		'4Music
          						IR1 = 0 : IR2 = 1 : IR3 = 8
          		Case 43		'Viva
          						IR1 = 0 : IR2 = 5 : IR3 = 7
          		Case 44		'Spike
          						IR1 = 0 : IR2 = 3 : IR3 = 1
          		Case 45		'True Crime
          						IR1 = 0 : IR2 = 6 : IR3 = 0
          		Case 46		'True Enterainment
          						IR1 = 0 : IR2 = 6 : IR3 = 1
          		Case 47		'Yesterday
          						IR1 = 0 : IR2 = 1 : IR3 = 9
          		Case 48		'Horror
          						IR1 = 0 : IR2 = 7 : IR3 = 0
          		Case 49		'Home
          						IR1 = 0 : IR2 = 2 : IR3 = 5
          		Case 50		'Food
          						IR1 = 0 : IR2 = 4 : IR3 = 1
          		Case 51		'Film4
          						IR1 = 0 : IR2 = 1 : IR3 = 5
          		Case 52		'Film4 +1
          						IR1 = 0 : IR2 = 4 : IR3 = 3
          		Case 53		'Movie Mix
          						IR1 = 0 : IR2 = 3 : IR3 = 2
          		Case 54		'Movies for Men
          						IR1 = 0 : IR2 = 4 : IR3 = 8
          		Case 55		'True Movies
          						IR1 = 0 : IR2 = 7 : IR3 = 4
          		Case 56		'Talking Pics
          						IR1 = 0 : IR2 = 8 : IR3 = 1
          		Case 57		'Chart Show TV
          						IR1 = 0 : IR2 = 7 : IR3 = 5
          		Case 58		'Sky News
          						IR1 = 1 : IR2 = 3 : IR3 = 2
          		Case 59		'BBC News
          						IR1 = 1 : IR2 = 3 : IR3 = 0
          		Case 60		'BBC Parliment
          						IR1 = 1 : IR2 = 3 : IR3 = 1
          		Case 61		'RT News HD
          						IR1 = 1 : IR2 = 1 : IR3 = 3
          		Case 62		'Al Jazera HD
          						IR1 = 1 : IR2 = 0 : IR3 = 8
          		Case 63		'CBeebies
          						IR1 = 1 : IR2 = 2 : IR3 = 4
          		Case 64		'CBBC
          						IR1 = 1 : IR2 = 2 : IR3 = 3
          		Case 65		'CITV
          						IR1 = 1 : IR2 = 2 : IR3 = 2
          		Case 66		'POP
          						IR1 = 1 : IR2 = 2 : IR3 = 5
          		Case 67		'TinyPOP
          						IR1 = 1 : IR2 = 2 : IR3 = 6
          		Case 68		'Kix
          						IR1 = 1 : IR2 = 2 : IR3 = 7
          		Case Else
          					hs.WriteLogEx("TV Changer Script", "Incorrect TV Channel", "#ff0000")
          	End Select
          	
          	'hs.WriteLog("TV Changer Script", IR1 & ":" & IR2 & ":" & IR3)
          	IR(0) = IR1 : IR(1) = IR2 : IR(2) = IR3
          	Return IR
          	
          End Function
          
          
          
          '---------------------------------------------------------------------------
          ' Changes the Channel
          '---------------------------------------------------------------------------
          Sub setChannel(IRControl As Integer, IRSet() As Integer)
          
          	Fires TV Mode
          	hs.SetDeviceValueByRef(IRControl, 162, True)
          
          	For Each i As Integer In IRSet
          		
          		Select Case i
          	
          			Case 0
          					hs.SetDeviceValueByRef(IRControl, 23, True)
          					'hs.WriteLog("TV Changer Script", "0 Sent")
          			Case 1
          					hs.SetDeviceValueByRef(IRControl, 24, True)
          					'hs.WriteLog("TV Changer Script", "1 Sent")
          			Case 2
          					hs.SetDeviceValueByRef(IRControl, 26, True)
          					'hs.WriteLog("TV Changer Script", "2 Sent")
          			Case 3
          					hs.SetDeviceValueByRef(IRControl, 27, True)
          					'hs.WriteLog("TV Changer Script", "3 Sent")
          			Case 4
          					hs.SetDeviceValueByRef(IRControl, 28, True)
          					'hs.WriteLog("TV Changer Script", "4 Sent")
          			Case 5
          					hs.SetDeviceValueByRef(IRControl, 29, True)
          					'hs.WriteLog("TV Changer Script", "5 Sent")
          			Case 6
          					hs.SetDeviceValueByRef(IRControl, 30, True)
          					'hs.WriteLog("TV Changer Script", "6 Sent")
          			Case 7
          					hs.SetDeviceValueByRef(IRControl, 31, True)
          					'hs.WriteLog("TV Changer Script", "7 Sent")
          			Case 8
          					hs.SetDeviceValueByRef(IRControl, 32, True)
          					'hs.WriteLog("TV Changer Script", "8 Sent")
          			Case 9
          					hs.SetDeviceValueByRef(IRControl, 33, True)
          					'hs.WriteLog("TV Changer Script", "9 Sent")
          			Case Else
          					hs.WriteLogEx("TV Changer Script", "Error sending IR Command", "#ff0000")
          					Exit Sub
          		End Select
          	Next
          
          End Sub

          Comment


            #6
            This is an interesting script that I might also look at using. Try this and see if it help.

            Code:
             '---------------------------------------------------------------------------
                ' Script when the Freeview Channel is Changed
                '---------------------------------------------------------------------------
                Sub TVChangeFreeview(TV As String)
            
                    Dim RefID_TV As Integer
                    Dim IRControl_TV As Integer
                    Dim RefID_TV_Value As Integer = -1
                    Dim IRSet() As Integer = {-1, -1, -1}
            
                    Select Case TV
                        Case "livingroom"
                            RefID_TV = 226
                            IRControl_TV = 1368
                        Case "frontroom"
                            RefID_TV = 226
                            IRControl_TV = 1368
                        Case "masterbedroom"
                            RefID_TV = 226
                            IRControl_TV = 1368
                        Case Else
                            hs.WriteLogEx("TV Changer Script", "Incorrect TV Name", "#ff0000")
                            Exit Sub
                    End Select
            
                    RefID_TV_Value = hs.DeviceValueEx(RefID_TV)
                    'hs.WriteLog("TV Changer Script", "TV " & TV & "Ref: " & RefID_TV & " has a value of: " & RefID_TV_Value)
            
                    IRSet = getFreeViewIR(RefID_TV_Value)
            
                    If (IRSet(0) > -1) And IRControl_TV > -1 Then
                        setChannel(IRControl_TV, IRSet)
                        hs.WriteLog("TV Changer Script", "SettingIR")
                    Else
                        hs.WriteLogEx("TV Changer Script", "No IR Set Recieved", "#ff0000")
                    End If
            
                End Sub
            
            
            
                '---------------------------------------------------------------------------
                ' Gets the Channel IR Number (FreeView)
                '---------------------------------------------------------------------------
                Private Function getFreeViewIR(RefID_TV_Value As Integer) As Integer()
            
                    Dim IR1 As Integer
                    Dim IR2 As Integer
                    Dim IR3 As Integer
                    Dim IR(2) As Integer
            
                    IR1 = 0 : IR2 = 0 : IR3 = 0
            
                    Select Case RefID_TV_Value
            
                        Case 1      'BBC 1 HD
                            IR1 = 1 : IR2 = 0 : IR3 = 1
                        Case 2      'BBC 2
                            IR1 = 1 : IR2 = 0 : IR3 = 2
                        Case 3      'BBC 4
                            IR1 = 1 : IR2 = 0 : IR3 = 6
                        Case 4      'ITV HD
                            IR1 = 1 : IR2 = 0 : IR3 = 3
                        Case 5      'ITV +1
                            IR1 = 0 : IR2 = 3 : IR3 = 3
                        Case 6      'ITV 2
                            IR1 = 0 : IR2 = 0 : IR3 = 6
                        Case 7      'ITV 2+1
                            IR1 = 0 : IR2 = 2 : IR3 = 7
                        Case 8      'ITV 3
                            IR1 = 0 : IR2 = 1 : IR3 = 0
                        Case 9      'ITV 3+1
                            IR1 = 0 : IR2 = 0 : IR3 = 0
                        Case 10     'ITV 4
                            IR1 = 0 : IR2 = 2 : IR3 = 4
                        Case 11     'ITV Be
                            IR1 = 0 : IR2 = 2 : IR3 = 6
                        Case 12     '4 HD
                            IR1 = 1 : IR2 = 0 : IR3 = 4
                        Case 13     '4 HD +1
                            IR1 = 1 : IR2 = 0 : IR3 = 9
                        Case 14     '4 Seven HD
                            IR1 = 1 : IR2 = 2 : IR3 = 7
                        Case 15     'More 4
                            IR1 = 0 : IR2 = 1 : IR3 = 4
                        Case 16     'E4
                            IR1 = 0 : IR2 = 2 : IR3 = 8
                        Case 17     'E4 +1
                            IR1 = 0 : IR2 = 2 : IR3 = 9
                        Case 18     '5 HD
                            IR1 = 1 : IR2 = 0 : IR3 = 5
                        Case 19     '5 +1
                            IR1 = 0 : IR2 = 4 : IR3 = 4
                        Case 20     '5 USA
                            IR1 = 0 : IR2 = 2 : IR3 = 1
                        Case 21     '5 USA +1
                            IR1 = 0 : IR2 = 5 : IR3 = 6
                        Case 22     '5 Star
                            IR1 = 0 : IR2 = 3 : IR3 = 0
                        Case 23     'My 5
                            IR1 = 0 : IR2 = 5 : IR3 = 5
                        Case 24     'Thats Lancs
                            IR1 = 0 : IR2 = 0 : IR3 = 7
                        Case 25     'Drama
                            IR1 = 0 : IR2 = 2 : IR3 = 0
                        Case 26     'YourTV	
                            IR1 = 0 : IR2 = 7 : IR3 = 2
                        Case 27     'YourTV +1
                            IR1 = 0 : IR2 = 7 : IR3 = 3
                        Case 28     'Quest
                            IR1 = 0 : IR2 = 3 : IR3 = 7
                        Case 29     'Quest +1
                            IR1 = 0 : IR2 = 3 : IR3 = 8
                        Case 30     'CBS Reality
                            IR1 = 0 : IR2 = 6 : IR3 = 6
                        Case 31     'CBS Reality +1
                            IR1 = 0 : IR2 = 6 : IR3 = 7
                        Case 32     'CBS Action
                            IR1 = 0 : IR2 = 6 : IR3 = 4
                        Case 33     'CBS Drama
                            IR1 = 0 : IR2 = 7 : IR3 = 1
                        Case 34     'Challenge
                            IR1 = 0 : IR2 = 4 : IR3 = 6
                        Case 35     'Dave
                            IR1 = 0 : IR2 = 1 : IR3 = 2
                        Case 36     'Dave ja Vu
                            IR1 = 0 : IR2 = 8 : IR3 = 4
                        Case 37     'Really
                            IR1 = 0 : IR2 = 1 : IR3 = 7
                        Case 38     'Pick
                            IR1 = 0 : IR2 = 1 : IR3 = 1
                        Case 39     'truTV
                            IR1 = 0 : IR2 = 6 : IR3 = 8
                        Case 40     'truTV +1
                            IR1 = 0 : IR2 = 6 : IR3 = 9
                        Case 41     'Travel
                            IR1 = 0 : IR2 = 4 : IR3 = 2
                        Case 42     '4Music
                            IR1 = 0 : IR2 = 1 : IR3 = 8
                        Case 43     'Viva
                            IR1 = 0 : IR2 = 5 : IR3 = 7
                        Case 44     'Spike
                            IR1 = 0 : IR2 = 3 : IR3 = 1
                        Case 45     'True Crime
                            IR1 = 0 : IR2 = 6 : IR3 = 0
                        Case 46     'True Enterainment
                            IR1 = 0 : IR2 = 6 : IR3 = 1
                        Case 47     'Yesterday
                            IR1 = 0 : IR2 = 1 : IR3 = 9
                        Case 48     'Horror
                            IR1 = 0 : IR2 = 7 : IR3 = 0
                        Case 49     'Home
                            IR1 = 0 : IR2 = 2 : IR3 = 5
                        Case 50     'Food
                            IR1 = 0 : IR2 = 4 : IR3 = 1
                        Case 51     'Film4
                            IR1 = 0 : IR2 = 1 : IR3 = 5
                        Case 52     'Film4 +1
                            IR1 = 0 : IR2 = 4 : IR3 = 3
                        Case 53     'Movie Mix
                            IR1 = 0 : IR2 = 3 : IR3 = 2
                        Case 54     'Movies for Men
                            IR1 = 0 : IR2 = 4 : IR3 = 8
                        Case 55     'True Movies
                            IR1 = 0 : IR2 = 7 : IR3 = 4
                        Case 56     'Talking Pics
                            IR1 = 0 : IR2 = 8 : IR3 = 1
                        Case 57     'Chart Show TV
                            IR1 = 0 : IR2 = 7 : IR3 = 5
                        Case 58     'Sky News
                            IR1 = 1 : IR2 = 3 : IR3 = 2
                        Case 59     'BBC News
                            IR1 = 1 : IR2 = 3 : IR3 = 0
                        Case 60     'BBC Parliment
                            IR1 = 1 : IR2 = 3 : IR3 = 1
                        Case 61     'RT News HD
                            IR1 = 1 : IR2 = 1 : IR3 = 3
                        Case 62     'Al Jazera HD
                            IR1 = 1 : IR2 = 0 : IR3 = 8
                        Case 63     'CBeebies
                            IR1 = 1 : IR2 = 2 : IR3 = 4
                        Case 64     'CBBC
                            IR1 = 1 : IR2 = 2 : IR3 = 3
                        Case 65     'CITV
                            IR1 = 1 : IR2 = 2 : IR3 = 2
                        Case 66     'POP
                            IR1 = 1 : IR2 = 2 : IR3 = 5
                        Case 67     'TinyPOP
                            IR1 = 1 : IR2 = 2 : IR3 = 6
                        Case 68     'Kix
                            IR1 = 1 : IR2 = 2 : IR3 = 7
                        Case Else
                            hs.WriteLogEx("TV Changer Script", "Incorrect TV Channel", "#ff0000")
                            Return Nothing
                    End Select
            
                    'hs.WriteLog("TV Changer Script", IR1 & ":" & IR2 & ":" & IR3)
                    IR(0) = IR1 : IR(1) = IR2 : IR(2) = IR3
                    Return IR
            
                End Function
            
                '---------------------------------------------------------------------------
                ' Changes the Channel
                '---------------------------------------------------------------------------
                Sub setChannel(IRControl As Integer, IRSet() As Integer)
            
            
                    If IRSet.Length >= 2 Then
                        hs.WriteLog("TV Changer Script", "IR Deivce " & IRControl & " will be sent: " & IRSet(0) & ":" & IRSet(1) & ":" & IRSet(2))
            
                        'hs.SetDeviceValueByRef(IRControl, 162, True)
                        'hs.WriteLog("TV Changer Script", "TV Mode Selected")
            
                        For i As Integer = 0 To IRSet.Length
            
                            Select Case IRSet(i)
            
                                Case 0
                                    'hs.SetDeviceValueByRef(IRControl, 23, True)
                                    hs.WriteLog("TV Changer Script", "0 Sent")
                                Case 1
                                    'hs.SetDeviceValueByRef(IRControl, 24, True)
                                    hs.WriteLog("TV Changer Script", "1 Sent")
                                Case 2
                                    'hs.SetDeviceValueByRef(IRControl, 26, True)
                                    hs.WriteLog("TV Changer Script", "2 Sent")
                                Case 3
                                    'hs.SetDeviceValueByRef(IRControl, 27, True)
                                    hs.WriteLog("TV Changer Script", "3 Sent")
                                Case 4
                                    'hs.SetDeviceValueByRef(IRControl, 28, True)
                                    hs.WriteLog("TV Changer Script", "4 Sent")
                                Case 5
                                    'hs.SetDeviceValueByRef(IRControl, 29, True)
                                    hs.WriteLog("TV Changer Script", "5 Sent")
                                Case 6
                                    'hs.SetDeviceValueByRef(IRControl, 30, True)
                                    hs.WriteLog("TV Changer Script", "6 Sent")
                                Case 7
                                    'hs.SetDeviceValueByRef(IRControl, 31, True)
                                    hs.WriteLog("TV Changer Script", "7 Sent")
                                Case 8
                                    'hs.SetDeviceValueByRef(IRControl, 32, True)
                                    hs.WriteLog("TV Changer Script", "8 Sent")
                                Case 9
                                    'hs.SetDeviceValueByRef(IRControl, 33, True)
                                    hs.WriteLog("TV Changer Script", "9 Sent")
                                Case Else
                                    hs.WriteLogEx("TV Changer Script", "Error sending IR Command", "#ff0000")
                                    Exit Sub
                            End Select
                        Next
            
                    End If
            
                End Sub
            Zwave = Z-Stick, 3xHSM100� 7xACT ZDM230, 1xEverspring SM103, 2xACT HomePro ZRP210.
            X10 = CM12U, 2xAM12, 1xAW10, 1 x TM13U, 1xMS13, 2xHR10, 2xSS13
            Other Hardware = ADI Ocelot + secu16, Global Cache GC100, RFXtrx433, 3 x Foscams.
            Plugings = RFXcom, ActiveBackup, Applied Digital Ocelot, BLDeviceMatrix, BLGarbage, BLLAN, Current Cost, Global Cache GC100,HSTouch Android, HSTouch Server, HSTouch Server Unlimited, NetCAM, PowerTrigger, SageWebcamXP, SqueezeBox, X10 CM11A/CM12U.
            Scripts =
            Various

            Comment


              #7
              Sorry should have checked back after tea before I posted. I see you got it going.
              Zwave = Z-Stick, 3xHSM100� 7xACT ZDM230, 1xEverspring SM103, 2xACT HomePro ZRP210.
              X10 = CM12U, 2xAM12, 1xAW10, 1 x TM13U, 1xMS13, 2xHR10, 2xSS13
              Other Hardware = ADI Ocelot + secu16, Global Cache GC100, RFXtrx433, 3 x Foscams.
              Plugings = RFXcom, ActiveBackup, Applied Digital Ocelot, BLDeviceMatrix, BLGarbage, BLLAN, Current Cost, Global Cache GC100,HSTouch Android, HSTouch Server, HSTouch Server Unlimited, NetCAM, PowerTrigger, SageWebcamXP, SqueezeBox, X10 CM11A/CM12U.
              Scripts =
              Various

              Comment


                #8
                You're unlikely to see any difference in the two really it was just if I make it simpler then it's easier to spot errors

                I'm afraid I can't comment on the GC100 I've never used it - you would hope it did sort out a little delay rather than sending them at once but I don't know if this is enough of a delay to be processed by the box. Having been here before I know that some set top boxes have a different response time and it can be dependent on what they are doing at the time...IR is not foolproof which is why some manufacturers publish discrete codes, I'd try and see and if you need one then at the end of your loop to change the device value add a hs.waitsecs call to delay it a bit and experiment with the delay.

                Comment


                  #9
                  Oh I appreciate it, believe me.
                  I will post the other bits once I have it working and hopefully images, won't be long now.

                  Unfortunately I am getting errors, please could you help:

                  Compiling script C:\Program Files (x86)\HomeSeer HS3\scripts\television.vb: Expression expected.

                  Error Compiling script C:\Program Files (x86)\HomeSeer HS3\scripts\television.vb: Expression expected.

                  Error Compiling script C:\Program Files (x86)\HomeSeer HS3\scripts\television.vb: Namespace or type specified in the Imports 'System.Core' doesn't contain any public member or cannot be found. Make sure the namespace or the type is defined and contains at least one public member. Make sure the imported element name doesn't use any aliases.


                  Code:
                  '----------------------------------
                  ' Television Script by Chris Coles et Al ;P
                  '----------------------------------
                  
                  
                  
                  '---------------------------------------------------------------------------
                  ' Public Variables
                  '---------------------------------------------------------------------------
                  
                  
                  
                  '---------------------------------------------------------------------------
                  ' Main Method
                  '---------------------------------------------------------------------------
                  Sub Main(parm As Object)
                  End Sub
                  
                  
                  
                  '---------------------------------------------------------------------------
                  ' Script when the Freeview Channel is Changed
                  '---------------------------------------------------------------------------
                  Sub TVChangeFreeview(TV As String)
                  	
                  	Dim RefID_TV As Integer
                  	Dim IRControl_TV As Integer
                  	Dim RefID_TV_Value As Integer
                  	Dim IRSet() As Integer
                  	
                  
                  	Select Case TV
                  		Case "livingroom"
                  					RefID_TV = 226
                  					IRControl_TV = 1368
                  		Case "frontroom"
                  					RefID_TV = 0
                  					IRControl_TV = 0
                  		Case "masterbedroom"
                  					RefID_TV = 0
                  					IRControl_TV = 0
                  		Case else
                  					hs.WriteLogEx("TV Changer Script", "Incorrect TV Name", "#ff0000")
                  					Exit Sub
                  	End Select
                  
                  	RefID_TV_Value = hs.DeviceValueEx(RefID_TV)
                  
                  
                  	'hs.WriteLog("TV Changer Script", "TV " & TV & "Ref: " & RefID_TV & " has a value of: " & RefID_TV_Value)
                  
                  
                  	IRSet = getFreeViewIR(RefID_TV_Value)
                  
                  	If ((IRSet IsNot {9, 9, 9}) And (IRControl_TV <> -1)) Then
                  			setChannel(IRControl_TV, IRSet)
                  			hs.WriteLog("TV Changer Script", "SettingIR")
                  	Else
                  		hs.WriteLogEx("TV Changer Script", "No IR Set has been Recieved - Null", "#ff0000")
                  
                  	End If
                  
                  End Sub
                  
                  
                  
                  '---------------------------------------------------------------------------
                  ' Gets the Channel IR Number (FreeView)
                  '---------------------------------------------------------------------------
                  Function getFreeViewIR(RefID_TV_Value As Integer) As Integer()
                  
                  	Dim IR(2) As Integer
                  
                  	Select Case RefID_TV_Value
                  
                  		Case 1 	'BBC 1 HD
                  					IR = {1, 0, 1}
                  		Case 2 	'BBC 2
                  					IR = {1, 0, 2}
                  		Case 3 	'BBC 4
                  					IR = {1, 0, 6}
                  		Case 4 	'ITV HD
                  					IR = {1, 0, 3}
                  		Case 5 	'ITV +1
                  					IR = {0, 3, 3}
                  		Case 6 	'ITV 2
                  					IR = {0, 0, 6}
                  		Case 7 	'ITV 2+1
                  					IR = {0, 2, 7}
                  		Case 8 	'ITV 3
                  					IR = {0, 1, 0}
                  		Case 9 	'ITV 3+1
                  					IR = {0, 3, 4}
                  		Case 10 'ITV 4
                  					IR = {0, 2, 4}
                  		Case 11	'ITV Be
                  					IR = {0, 2, 6}
                  		Case 12	'4 HD
                  					IR = {1, 0, 4}
                  		Case 13	'4 HD +1
                  					IR = {1, 0, 9}
                  		Case 14	'4 Seven HD
                  					IR = {1, 2, 7}
                  		Case 15	'More 4
                  					IR = {0, 1, 4}
                  		Case 16	'E4
                  					IR = {0, 2, 8}
                  		Case 17	'E4 +1
                  					IR = {0, 2, 9}
                  		Case 18	'5 HD
                  					IR = {1, 0, 5}
                  		Case 19	'5 +1
                  					IR = {0, 4, 4}
                  		Case 20	'5 USA
                  					IR = {0, 2, 1}
                  		Case 21	'5 USA +1
                  					IR = {0, 5, 6}
                  		Case 22	'5 Star
                  					IR = {0, 3, 0}
                  		Case 23	'My 5
                  					IR = {0, 5, 5}
                  		Case 24	'Thats Lancs
                  					IR = {0, 0, 7}
                  		Case 25	'Drama
                  					IR = {0, 2, 0}
                  		Case 26	'YourTV	
                  					IR = {0, 7, 2}
                  		Case 27	'YourTV +1
                  					IR = {0, 7, 3}
                  		Case 28	'Quest
                  					IR = {0, 3, 7}
                  		Case 29	'Quest +1
                  					IR = {0, 3, 8}
                  		Case 30	'CBS Reality
                  					IR = {0, 6, 6}
                  		Case 31	'CBS Reality +1
                  					IR = {0, 6, 7}
                  		Case 32	'CBS Action
                  					IR = {0, 6, 4}
                  		Case 33	'CBS Drama
                  					IR = {0, 7, 1}
                  		Case 34	'Challenge
                  					IR = {0, 4, 6}
                  		Case 35	'Dave
                  					IR = {0, 1, 2}
                  		Case 36	'Dave ja Vu
                  					IR = {0, 8, 4}
                  		Case 37	'Really
                  					IR = {0, 1, 7}
                  		Case 38	'Pick
                  					IR = {0, 1, 1}
                  		Case 39	'truTV
                  					IR = {0, 6, 8}
                  		Case 40	'truTV +1
                  					IR = {0, 6, 9}
                  		Case 41	'Travel
                  					IR = {0, 4, 2}
                  		Case 42	'4Music
                  					IR = {0, 1, 8}
                  		Case 43	'Viva
                  					IR = {0, 5, 7}
                  		Case 44	'Spike
                  					IR = {0, 3, 1}
                  		Case 45	'True Crime
                  					IR = {0, 6, 0}
                  		Case 46	'True Enterainment
                  					IR = {0, 6, 1}
                  		Case 47	'Yesterday
                  					IR = {0, 1, 9}
                  		Case 48	'Horror
                  					IR = {0, 7, 0}
                  		Case 49	'Home
                  					IR = {0, 2, 5}
                  		Case 50	'Food
                  					IR = {0, 4, 1}
                  		Case 51	'Film4
                  					IR = {0, 1, 5}
                  		Case 52	'Film4 +1
                  					IR = {0, 4, 3}
                  		Case 53	'Movie Mix
                  					IR = {0, 3, 2}
                  		Case 54	'Movies for Men
                  					IR = {0, 4, 8}
                  		Case 55	'True Movies
                  					IR = {0, 7, 4}
                  		Case 56	'Talking Pics
                  					IR = {0, 8, 1}
                  		Case 57	'Chart Show TV
                  					IR = {0, 7, 5}
                  		Case 58	'Sky News
                  					IR = {1, 3, 2}
                  		Case 59	'BBC News
                  					IR = {1, 3, 0}
                  		Case 60	'BBC Parliment
                  					IR = {1, 3, 1}
                  		Case 61	'RT News HD
                  					IR = {1, 1, 3}
                  		Case 62	'Al Jazera HD
                  					IR = {1, 0, 8}
                  		Case 63	'CBeebies
                  					IR = {1, 2, 4}
                  		Case 64	'CBBC
                  					IR = {1, 2, 3}
                  		Case 65	'CITV
                  					IR = {1, 2, 2}
                  		Case 66	'POP
                  					IR = {1, 2, 5}
                  		Case 67	'TinyPOP
                  					IR = {1, 2, 6}
                  		Case 68	'Kix
                  					IR = {1, 2, 7}
                  		Case Else
                  					IR = {9, 9, 9}
                  					hs.WriteLogEx("TV Changer Script", "Incorrect TV Channel", "#ff0000")
                  					Return IR
                  	End Select
                  	Return IR
                  	
                  End Function
                  
                  
                  
                  '---------------------------------------------------------------------------
                  ' Changes the Channel
                  '---------------------------------------------------------------------------
                  Sub setChannel(IRControl As Integer, IRSet() As Integer)
                  
                  	'Fires TV Mode
                  	'hs.SetDeviceValueByRef(IRControl, 162, True)
                  
                  	For Each i As Integer In IRSet
                  		
                  		Select Case i
                  	
                  			Case 0 To 1
                  					'hs.SetDeviceValueByRef(IRControl, 23 + i, True)
                  					hs.WriteLog("TV Changer Script", & i & " Sent")
                  			Case 2 to 9
                  					'hs.SetDeviceValueByRef(IRControl, 24 + i, True)
                  					hs.WriteLog("TV Changer Script", & i & " Sent")
                  			Case Else
                  					hs.WriteLogEx("TV Changer Script", "Error sending IR Command", "#ff0000")
                  		End Select
                  	Next
                  
                  End Sub

                  Comment


                    #10
                    Case 0 To 1
                    'hs.SetDeviceValueByRef(IRControl, 23 + i, True)
                    hs.WriteLog("TV Changer Script", & i & " Sent")
                    Case 2 to 9
                    'hs.SetDeviceValueByRef(IRControl, 24 + i, True)
                    hs.WriteLog("TV Changer Script", & i & " Sent")

                    You just need to drop the first &...it is looking for something to join to i and failing. I think that's the only error...

                    Comment


                      #11
                      Found it:
                      & i &

                      should be:
                      i &

                      Comment


                        #12
                        Screenshots below (how I am using the script - it has removed many replicated events!), so very happy!

                        Just need to learn how to make it wait for 1/2 sec before sending out an IR command.
                        Can this be done easily?
                        Is it just adding:

                        Threading.Thread.Sleep(500) ' 500 milliseconds = 0.5 seconds

                        There's actually this:
                        hs.waitsecs(0.5) for 500mS
                        Attached Files

                        Comment


                          #13
                          Dam, didn't work.

                          hs.SetDeviceValueByRef(IRControl, 23 + i, True)
                          hs.WriteLog("TV Changer Script", i & " Sent")

                          I know this is right, I think Randy was telling me this the other night, its a CAPI thing. So I will need to read up on it.

                          I hope I have understood Al's post correct.
                          https://forums.homeseer.com/showthre...pi#post1297652


                          Code:
                          '---------------------------------------------------------------------------
                          ' Changes the Channel
                          '---------------------------------------------------------------------------
                          Sub setChannel(IRControl As Integer, IRSet() As Integer)
                          
                          	'Fires TV Mode
                          	hs.CAPIControlHandler(hs.CAPIGetSingleControl(IRControl, false, CStr(162), false, true))
                          	hs.waitsecs(0.5)
                          
                          	For Each i As Integer In IRSet
                          		
                          		Select Case i
                          	
                          			Case 0 To 1
                          					hs.CAPIControlHandler(hs.CAPIGetSingleControl(IRControl, false, CStr(23 + i), false, true))
                          					hs.WriteLog("TV Changer Script", i & " Sent")
                          					hs.waitsecs(0.5)
                          			Case 2 to 9
                          					hs.CAPIControlHandler(hs.CAPIGetSingleControl(IRControl, false, CStr(24 + i), false, true))
                          					hs.WriteLog("TV Changer Script", i & " Sent")
                          					hs.waitsecs(0.5)
                          			Case Else
                          					hs.WriteLogEx("TV Changer Script", "Error sending IR Command", "#ff0000")
                          		End Select
                          	Next
                          
                          End Sub

                          Comment


                            #14
                            I've not got a clue with this CAPI
                            That failed well lol

                            I found this amazing utility: http://tenholder.net/tenWare2/tenScriptAid/default.aspx

                            My CAPI is:

                            hs.CAPIControlHandler(hs.CAPIGetSingleControl(1368,True,"TV" ,False,False))
                            hs.CAPIControlHandler(hs.CAPIGetSingleControl(1368,True,"DIG IT 1",False,False))
                            hs.CAPIControlHandler(hs.CAPIGetSingleControl(1368,True,"DIG IT 5",False,False))

                            I am trying this but its not working:
                            hs.CAPIControlHandler(hs.CAPIGetSingleControl(IRControl,True ,"TV",False,False))
                            hs.CAPIControlHandler(hs.CAPIGetSingleControl(IRControl, True. "DIGIT " & i, False,False))
                            hs.CAPIControlHandler(hs.CAPIGetSingleControl(IRControl, True. "DIGIT " & i, False,False))

                            and getting:

                            Compiling script C:\Program Files (x86)\HomeSeer HS3\scripts\television.vb: Identifier expected.
                            Error Compiling script C:\Program Files (x86)\HomeSeer HS3\scripts\television.vb: Identifier expected.

                            Error Compiling script C:\Program Files (x86)\HomeSeer HS3\scripts\television.vb: Namespace or type specified in the Imports 'System.Core' doesn't contain any public member or cannot be found. Make sure the namespace or the type is defined and contains at least one public member. Make sure the imported element name doesn't use any aliases.
                            Attached Files
                            Last edited by smokeycoles; April 1, 2017, 02:25 PM.

                            Comment


                              #15
                              This now works perfectly with the following code.

                              Thank you for your help



                              Code:
                              '----------------------------------
                              ' Television Script by Chris Coles
                              '----------------------------------
                              
                              
                              
                              '---------------------------------------------------------------------------
                              ' Public Variables
                              '---------------------------------------------------------------------------
                              
                              
                              
                              '---------------------------------------------------------------------------
                              ' Main Method
                              '---------------------------------------------------------------------------
                              Sub Main(parm As Object)
                              End Sub
                              
                              
                              
                              '---------------------------------------------------------------------------
                              ' Script when the Freeview Channel is Changed
                              '---------------------------------------------------------------------------
                              Sub TVChangeFreeview(TV As String)
                              	
                              	Dim RefID_TV As Integer
                              	Dim IRControl_TV As Integer
                              	Dim RefID_TV_Value As Integer
                              	Dim IRSet() As Integer
                              	
                              	Select Case TV
                              		Case "livingroom"
                              					RefID_TV = 226
                              					IRControl_TV = 1368
                              		Case "frontroom"
                              					RefID_TV = 0
                              					IRControl_TV = 0
                              		Case "masterbedroom"
                              					RefID_TV = 0
                              					IRControl_TV = 0
                              		Case Else
                              					hs.WriteLogEx("TV Changer Script", "Incorrect TV Name", "#ff0000")
                              					Exit Sub
                              	End Select
                              
                              	RefID_TV_Value = hs.DeviceValueEx(RefID_TV)
                              
                              
                              	'hs.WriteLog("TV Changer Script", "TV " & TV & "Ref: " & RefID_TV & " has a value of: " & RefID_TV_Value)
                              
                              	IRSet = getFreeViewIR(RefID_TV_Value)
                              
                              	If ((IRSet IsNot {9, 9, 9}) And (IRControl_TV <> -1)) Then
                              		setChannel(IRControl_TV, IRSet)
                              		hs.WriteLog("TV Changer Script", "SettingIR")
                              	Else
                              		hs.WriteLogEx("TV Changer Script", "No IR Set has been Recieved - Null", "#ff0000")
                              
                              	End If
                              
                              End Sub
                              
                              
                              
                              '---------------------------------------------------------------------------
                              ' Gets the Channel IR Number (FreeView)
                              '---------------------------------------------------------------------------
                              Function getFreeViewIR(RefID_TV_Value As Integer) As Integer()
                              
                              	Dim IR(2) As Integer
                              
                              	Select Case RefID_TV_Value
                              
                              		Case 1 	'BBC 1 HD
                              					IR = {1, 0, 1}
                              		Case 2 	'BBC 2
                              					IR = {1, 0, 2}
                              		Case 3 	'BBC 4
                              					IR = {1, 0, 6}
                              		Case 4 	'ITV HD
                              					IR = {1, 0, 3}
                              		Case 5 	'ITV +1
                              					IR = {0, 3, 3}
                              		Case 6 	'ITV 2
                              					IR = {0, 0, 6}
                              		Case 7 	'ITV 2+1
                              					IR = {0, 2, 7}
                              		Case 8 	'ITV 3
                              					IR = {0, 1, 0}
                              		Case 9 	'ITV 3+1
                              					IR = {0, 3, 4}
                              		Case 10 'ITV 4
                              					IR = {0, 2, 4}
                              		Case 11	'ITV Be
                              					IR = {0, 2, 6}
                              		Case 12	'4 HD
                              					IR = {1, 0, 4}
                              		Case 13	'4 HD +1
                              					IR = {1, 0, 9}
                              		Case 14	'4 Seven HD
                              					IR = {1, 2, 7}
                              		Case 15	'More 4
                              					IR = {0, 1, 4}
                              		Case 16	'E4
                              					IR = {0, 2, 8}
                              		Case 17	'E4 +1
                              					IR = {0, 2, 9}
                              		Case 18	'5 HD
                              					IR = {1, 0, 5}
                              		Case 19	'5 +1
                              					IR = {0, 4, 4}
                              		Case 20	'5 USA
                              					IR = {0, 2, 1}
                              		Case 21	'5 USA +1
                              					IR = {0, 5, 6}
                              		Case 22	'5 Star
                              					IR = {0, 3, 0}
                              		Case 23	'My 5
                              					IR = {0, 5, 5}
                              		Case 24	'Thats Lancs
                              					IR = {0, 0, 7}
                              		Case 25	'Drama
                              					IR = {0, 2, 0}
                              		Case 26	'YourTV	
                              					IR = {0, 7, 2}
                              		Case 27	'YourTV +1
                              					IR = {0, 7, 3}
                              		Case 28	'Quest
                              					IR = {0, 3, 7}
                              		Case 29	'Quest +1
                              					IR = {0, 3, 8}
                              		Case 30	'CBS Reality
                              					IR = {0, 6, 6}
                              		Case 31	'CBS Reality +1
                              					IR = {0, 6, 7}
                              		Case 32	'CBS Action
                              					IR = {0, 6, 4}
                              		Case 33	'CBS Drama
                              					IR = {0, 7, 1}
                              		Case 34	'Challenge
                              					IR = {0, 4, 6}
                              		Case 35	'Dave
                              					IR = {0, 1, 2}
                              		Case 36	'Dave ja Vu
                              					IR = {0, 8, 4}
                              		Case 37	'Really
                              					IR = {0, 1, 7}
                              		Case 38	'Pick
                              					IR = {0, 1, 1}
                              		Case 39	'truTV
                              					IR = {0, 6, 8}
                              		Case 40	'truTV +1
                              					IR = {0, 6, 9}
                              		Case 41	'Travel
                              					IR = {0, 4, 2}
                              		Case 42	'4Music
                              					IR = {0, 1, 8}
                              		Case 43	'Viva
                              					IR = {0, 5, 7}
                              		Case 44	'Spike
                              					IR = {0, 3, 1}
                              		Case 45	'True Crime
                              					IR = {0, 6, 0}
                              		Case 46	'True Enterainment
                              					IR = {0, 6, 1}
                              		Case 47	'Yesterday
                              					IR = {0, 1, 9}
                              		Case 48	'Horror
                              					IR = {0, 7, 0}
                              		Case 49	'Home
                              					IR = {0, 2, 5}
                              		Case 50	'Food
                              					IR = {0, 4, 1}
                              		Case 51	'Film4
                              					IR = {0, 1, 5}
                              		Case 52	'Film4 +1
                              					IR = {0, 4, 3}
                              		Case 53	'Movie Mix
                              					IR = {0, 3, 2}
                              		Case 54	'Movies for Men
                              					IR = {0, 4, 8}
                              		Case 55	'True Movies
                              					IR = {0, 7, 4}
                              		Case 56	'Talking Pics
                              					IR = {0, 8, 1}
                              		Case 57	'Chart Show TV
                              					IR = {0, 7, 5}
                              		Case 58	'Sky News
                              					IR = {1, 3, 2}
                              		Case 59	'BBC News
                              					IR = {1, 3, 0}
                              		Case 60	'BBC Parliment
                              					IR = {1, 3, 1}
                              		Case 61	'RT News HD
                              					IR = {1, 1, 3}
                              		Case 62	'Al Jazera HD
                              					IR = {1, 0, 8}
                              		Case 63	'CBeebies
                              					IR = {1, 2, 4}
                              		Case 64	'CBBC
                              					IR = {1, 2, 3}
                              		Case 65	'CITV
                              					IR = {1, 2, 2}
                              		Case 66	'POP
                              					IR = {1, 2, 5}
                              		Case 67	'TinyPOP
                              					IR = {1, 2, 6}
                              		Case 68	'Kix
                              					IR = {1, 2, 7}
                              		Case Else
                              					IR = {9, 9, 9}
                              					hs.WriteLogEx("TV Changer Script", "Incorrect TV Channel", "#ff0000")
                              					Return IR
                              	End Select
                              	Return IR
                              	
                              End Function
                              
                              
                              
                              '---------------------------------------------------------------------------
                              ' Changes the Channel
                              '---------------------------------------------------------------------------
                              Sub setChannel(IRControl As Integer, IRSet() As Integer)
                              
                              	'Fires TV Mode
                              	hs.CAPIControlHandler(hs.CAPIGetSingleControl(IRControl,True,"TV",False,False))
                              	hs.waitsecs(0.5)
                              
                              	For Each i As Integer In IRSet
                              		
                              		Select Case i
                              	
                              			Case 0 To 1
                              					hs.CAPIControlHandler(hs.CAPIGetSingleControl(IRControl, True, "DIGIT " & i, False,False))
                              					hs.WriteLog("TV Changer Script", i & " Sent")
                              					hs.waitsecs(0.5)
                              			Case 2 to 9
                              					hs.CAPIControlHandler(hs.CAPIGetSingleControl(IRControl, True, "DIGIT " & i, False,False))
                              					hs.WriteLog("TV Changer Script", i & " Sent")
                              					hs.waitsecs(0.5)
                              			Case Else
                              					hs.WriteLogEx("TV Changer Script", "Error sending IR Command", "#ff0000")
                              		End Select
                              	Next
                              
                              End Sub

                              Comment

                              Working...
                              X