Plugin reageert niet als ik hem aanstuur via script.txt

Homeseer Forum in het Nederlands (DUTCH forum)

Moderator: Ruud

Post Reply
maikelwijnen
Starting Member
Starting Member
Posts: 41
Joined: Tue Jun 16, 2009 9:15 pm
Location: Netherlands

Plugin reageert niet als ik hem aanstuur via script.txt

Post by maikelwijnen »

Hoi,

Ik heb een tijdje geleden een plugin geschreven om via Homeseer de Velleman K8061 aan te sturen. Nu blijkt er toch nog een bug in te zitten.
Als ik de Analoge Outputs aanstuur via de Device-List of via Control werkt hij goed.
Echter als ik een script schrijf om die uitgang aan te sturen middels hs.SetDeviceValue "[32", 100 verander de waarde in de pagina Device-List wel, maar de uitgang van mijn IO-kaart niet.

Het lijkt er op dat als een script.txt uitgevoerd wordt dit niet via PUBLIC SUB SETIOEX in HSPI.vb gaat waar dus de verwerking van mijn interface zit.
Welke sub wordt aangesproken als in een script een output gewijzigd wordt?

mvg Maikel
User avatar
Rene
Global Moderator
Global Moderator
Posts: 1689
Joined: Wed Oct 08, 2008 3:54 pm
Location: Netherlands

Re: Plugin reageert niet als ik hem aanstuur via script.txt

Post by Rene »

Dit handel je normaliter af in de SetIO of SetIOEx sub routines af.
Rene.
maikelwijnen
Starting Member
Starting Member
Posts: 41
Joined: Tue Jun 16, 2009 9:15 pm
Location: Netherlands

Re: Plugin reageert niet als ik hem aanstuur via script.txt

Post by maikelwijnen »

De verwerking van de IOcard zit bij mijn plugin ook in de SetIOEx.
ik heb voor de test in het begin van SetIOEx een regel hs.WriteLog(PLUGIN_NAME, "SETIOEx wordt verwerkt") geplaatst. Al ik de handmatig een output aanstuur komt de regel wel in de log, maar als ik een script run zoals hieronder:

test.txt

Code: Select all

Sub Main()
hs.SetDeviceValue "[32",100
End Sub
veranderd de status in homeseer wel, maar in de log staat mijn regel er niet in.

Hier is mijn SetIOEx script uit de HSPI.VB

Code: Select all

    Public Sub SetIOEx(ByVal dv As Object, ByVal housecode As String, ByVal devicecode As String, ByVal command As Short, _
                   ByVal brightness As Short, ByVal data1 As Short, ByVal data2 As Short, ByVal voice_command As String, ByVal host As String)

        Dim bOurs As Boolean = False

        hs.WriteLog(PLUGIN_NAME, "SETIOEx wordt verwerkt")

        If Not dv Is Nothing Then
            If dv.interface.trim = PLUGIN_NAME Then
                bOurs = True
            Else
                Exit Sub    ' Not ours.
            End If
        End If

        If Not bOurs Then
            If gBaseCode.ToUpper <> housecode.Trim.ToUpper Then
                Exit Sub    ' Not ours
            End If
        End If

        hs.WriteLog(PLUGIN_NAME, "SetIOEx for " & housecode & devicecode & _
                                ", Cmd=" & command.ToString & _
                                ", Brt=" & brightness.ToString & _
                                ", D1/D2=" & data1.ToString & "/" & data2.ToString & _
                                ", Vcmd=" & voice_command & _
                                ", Host=" & host)

        Dim ref As Integer
        Dim ArrayCount As Integer
        Dim DeviceCodeSplit() As String = Split(devicecode, "+")
        Dim i As Integer

        ArrayCount = UBound(DeviceCodeSplit)

        For i = 0 To ArrayCount
            ref = hs.GetDeviceRef(housecode & DeviceCodeSplit(i))
            dv = hs.GetDeviceByRef(ref)
            ' Nu is dv. gevult met de gegevens van de output die we willen aansturen.

            Dim SetOutput() As String = Split(dv.dev_type_string)
            Dim IOCard As Integer = SetOutput(2)
            Dim IOType As String = SetOutput(4)
            Dim IOChannel As Integer = SetOutput(5)
            Dim Max As Integer
            Dim Min As Integer

            Select Case IOType
                Case "DO"
                    OutputChange(IOCard, 1) = 1
                Case "AO"
                    Max = IOCardValMax(IOCard, 2, IOChannel)
                    Min = IOCardValMin(IOCard, 2, IOChannel)
                    If command.ToString = 2 Then
                        hs.SetDeviceValue(housecode & DeviceCodeSplit(i), Max)
                    ElseIf command.ToString = 3 Then
                        hs.SetDeviceValue(housecode & DeviceCodeSplit(i), Min)
                    End If
                    OutputChange(IOCard, 2) = 1
                Case "PWM"
                    Max = IOCardValMax(IOCard, 3, IOChannel)
                    Min = IOCardValMin(IOCard, 3, IOChannel)
                    If command.ToString = 2 Then
                        hs.SetDeviceValue(housecode & DeviceCodeSplit(i), Max)
                    ElseIf command.ToString = 3 Then
                        hs.SetDeviceValue(housecode & DeviceCodeSplit(i), Min)
                    End If
                    OutputChange(IOCard, 3) = 1
            End Select
        Next
    End Sub
Heeft iemand een idee of het probleem in de plugin of het script zit?
User avatar
Rene
Global Moderator
Global Moderator
Posts: 1689
Joined: Wed Oct 08, 2008 3:54 pm
Location: Netherlands

Re: Plugin reageert niet als ik hem aanstuur via script.txt

Post by Rene »

En je hebt ook de volgende code in je source staan?

Code: Select all

Public ReadOnly Property SupportsHS2() As Boolean
        Get
            Return True
        End Get
End Property
Rene.
maikelwijnen
Starting Member
Starting Member
Posts: 41
Joined: Tue Jun 16, 2009 9:15 pm
Location: Netherlands

Re: Plugin reageert niet als ik hem aanstuur via script.txt

Post by maikelwijnen »

Ja,hij stond er al in. Deze code staat in HSPI.VB onder het script van Accesslevel.
Misschien een ander idee?
maikelwijnen
Starting Member
Starting Member
Posts: 41
Joined: Tue Jun 16, 2009 9:15 pm
Location: Netherlands

Re: Plugin reageert niet als ik hem aanstuur via script.txt

Post by maikelwijnen »

Even een kleine update,

Als ik de hspi_NETSample_2.0 download, en hier alleen een Log in de SetIOEx zet zoals ik hierboven beschrijf, werkt het ook niet. Dus met de demoplugin van homeseer kun je ook niet met een script SetIOEx aanroepen :cry: ? Is er iemand die een simpele plugin source beschikbaar wil stellen (Waar het wel werkt) zodat ik kan testen en vergelijken?
User avatar
Rene
Global Moderator
Global Moderator
Posts: 1689
Joined: Wed Oct 08, 2008 3:54 pm
Location: Netherlands

Re: Plugin reageert niet als ik hem aanstuur via script.txt

Post by Rene »

Ik was effe het verkeerde pad op gestuurd. hs.setdevicestatus of hs.setdevicevalue kunnen niet worden gebruikt om de status of waarde van een device daadwerkelijk te wijzigen, je kan er alleen de status of waarde binnen Homeseer mee wijzigen. Om een commando naar een device te sturen moet je hs.transmit gebruiken, b.v. hs.transmit "^25", "on".
Rene.
maikelwijnen
Starting Member
Starting Member
Posts: 41
Joined: Tue Jun 16, 2009 9:15 pm
Location: Netherlands

Re: Plugin reageert niet als ik hem aanstuur via script.txt

Post by maikelwijnen »

Helemaal goed! Zo doet hij het wel. Effe het script aangepassen omdat je niet een Value kunt doorsturen, maar alleen een Datawaarde of Brightness.

Thanks :D
Post Reply

Return to “Homeseer algemeen Forum”