Intensity setzen mit VB.NET

Hi Leute,

bin neu im Umgang mit der ganzen Materie und hätte schon gleich ne Frage.

Zum aktuellen Stand:
Ich habe ne FHZ1300 und ein Dimmermodul mit ner Lampe dran.

Mit folgendem Script lese ich den aktuellen Stand aus und schalte die Lampe An und Aus, funktioniert auch (Verbesserungsvorschläge werden aber gerne angenommen):


Dim ips As IPS.Environment
Dim tmp_event As New IPS.RVarEvent

    Private Sub btnCheck_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCheck.Click
        Dim o() As String = ips.GetVariables()

        For Each s As String In o
            Select Case ips.GetVariableType(s)
                Case Global.IPS.EVarTypes.vtBoolean
                    If s = "Dimmer_1.Status" Then
                        If ips.ReadVarBoolean(s) = True Then
                            btnAn.Enabled = False
                            btnAus.Enabled = True
                        Else
                            btnAus.Enabled = False
                            btnAn.Enabled = True
                        End If
                    End If
                Case Global.IPS.EVarTypes.vtInteger
                    If s = "Dimmer_1_Int" Then
                        TrackBar1.Value = ips.ReadVarInteger(s)
                    End If
            End Select
        Next
    End Sub

    Private Sub btnAn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAn.Click
        ips.RunScript("Dimmer_1_ON")

        btnAn.Enabled = False
        btnAus.Enabled = True
    End Sub

    Private Sub btnAus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAus.Click
        ips.RunScript("Dimmer_1_OFF")

        btnAn.Enabled = True
        btnAus.Enabled = False
    End Sub


Nun hab ich mir ne Trackbar auf die Form gemacht um die Itensity der Variablen zu ändern. Der Wert der Trackbar geht von 0-16.


 Private Sub TrackBar1_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrackBar1.Scroll
        ips.WriteVarInteger("Dimmer_1_Int", TrackBar1.Value)
    End Sub

Nun zum Problem, die Variable wird zwar in IPS direkt sichtbar geändert aber die Lampe selbst verändert ihre Helligkeit nicht.:confused:

Kann mir jemand sagen, was noch fehlt, dass der Wert auch an die Lampe übergeben wird?

LG
Kim

Das Setzen der Variable ändert nicht automatisch das Gerät. Die Variable ist mehr oder weniger nur als „Info“ da. Um wirklich eine Aktion auszuführen, muss man einen Befehl wie IPS_SetIntensity ausführen. Den Befehl kann man z.B. schön in ein Script einbauen, das bei Änderung der Variable getriggert wird. Es geht sicher auch direkt aus VB.

Tommi

Das Scipt mit SetIntensity hab ich auch schon eingefügt, aber nach meinem aktuellen Wissensstand muss ich 16 Skripte einfügen die ich einzeln aus VB aufrufe. Gut wäre es, wenn ich die Variable mit dem Wert in das Skript einfügen könnte, dann bräuchte ich nur ein Script. Geht das? Wenn ja wie?

Das IPS-Script kann sich den Wert der Variable doch holen:


$instance=<deine InstanceID>;
$dauer=20;
$wert=GetValueInteger("Dimmer_1_Int");
ips_setIntensity($instance,$wert,$dauer);

Mit $IPS_SENDER und $IPS_VARIABLE kriegt man auch raus, wer/was die Änderung getriggert hat. Dann braucht man nur noch ein Script für alle Dimmer, wenn man $instance und den Variablennamen entsprechend einsetzt.

Tommi

Hi Tommi,

funktioniert prima! Danke für die schnelle Hilfe!:smiley:

LG
Kim