Gisteren ook dit interessante script geïnstalleerd, ivm een aangeschafd zonnescherm. Ik krijg ook een foutmelding. Hier wat in het Event Log staat:
Code: Select all
14-3-2011 18:23:08 - Info - Event Trigger "Regenmonitor"
14-3-2011 18:23:08 - Info - Running script in background: regenmonitor.vb("Main","4058223;v1")
14-3-2011 18:23:08 - Error - Script compile error: Het argument is niet opgegeven voor de parameter data2 van Public Function Transmit(code As String, cmd As String, dimval As Integer, data2 As Integer, wait As Boolean, [raw As Boolean = False], [update As Boolean = True], [out_interface As Integer = 0]) As Integer.on line 133
14-3-2011 18:23:08 - SCR - Option Strict Offimports Schedulerimports SystemPublic Module scriptcode285#Region "Automatically generated code, do not modify"'Automatically generated code, do not modify'Event Sources Begin <System.ContextStaticAttribute()> Public WithEvents hs As Scheduler.hsapplication <System.ContextStaticAttribute()> Public WithEvents hsp As scheduler.hsp <System.ContextStaticAttribute()> Public WithEvents hssystem As scheduler.phone0'Event Sources End'End of automatically generated code#End Region' RegenMonitor.vb script' Auteur: Alexander' Versie: 2.51' Laatst gewijzigd: 26-07-2010 19:30' Change Log:' 1.0: Start' 1.11: - Functionaliteit: Script stopt zodra de webpagina een niet verwachte tekst terug geeft. Zodra dat gebeurd zal het device een status "unknown" krijgen.' - Functionaliteit: Als de webpagina zijn regenverwachting bijstelt, zal het event dat al aangemaakt is van de bijgestelde tijd worden voorzien.' - Functionaliteit: Als de regenverwachting in de webpagina eerder is dan de huidige tijd, wordt het device direct geschakeld en het eerder aangemaakte event verwijderd.' - Functionaliteit: Twee parameters moeten worden toegevoegd. De eerste is de gevraagde locatie voor weersverwachting en de tweede het device dat geschakeld moet worden.' - Bugfix: Als er regen was verwacht werd dit niet goed afgehandeld.' 2.0: - Functionaliteit: Andere url wordt nu gebruikt voor de weersverwachting.' 2.1: - Functionaliteit: De Status string van het device wordt nu ingevuld.' 2.2: - Functionaliteit: Multi Device wordt nu ondersteunt: Er worden 24 devices aangemaakt met een weersverwachting intervalverschil van 5 minuten.' 2.31: - Functionaliteit: Images van Rien worden niet in de Status String toegevoegd' - Functionaliteit: Device Location en Device Type worden nu ingevuld bij het aanmaken van device(s), bij afwezigheid, door het script' - Bugfix: Dubbele quotes waren niet meegenomen in het uitvoeren van de HS commando om de Device String bij te werken' 2.41: - Functionaliteit: De Last Update van het device wordt nu altijd bijgewerkt ongeacht de waarde van het device' - Bugfix: Bij gebruik van Multi Device werd alleen het eerste Device geupdate met het ON/OFF commando' 2.51: - Bugfix: Bij de parameter voor het device werd de derde karakter, indien aanwezig, genegeerd.' - Comment: Kommentaar toegevoegd en change log vertaalt naar het Nederlands.' - Functionaliteit: Extra checks toegevoegdSub Main(ByVal Params As String) ' Vervang deze waarden als je andere omschrijvingen wilt hebben, zodra de device(s) wordt/worden aangemaakt. Dim strDeviceLocation As String = "Virtual - Monitoring" ' Sla deze waarde op in de variabele strDeviceLocation Dim strDeviceType As String = "Verwachte Regen Monitoring" ' Sla deze waarde op in de variabele strDeviceType Dim strGeoAreaId As String = hs.StringItem(Params, 1, ";") ' Haal de waarde van de eerste parameter op en sla deze op Dim strDevice As String = hs.StringItem(Params, 2, ";") ' Haal de waarde van de tweede parameter op en sla deze op Dim strHouseCode As String = GetChar(strDevice,1) ' Pak de eerste karakter van de variabele strDevice en sla deze op dim strDeviceCode As String = strDevice.subString(1) ' Pak de tekst op vanaf de tweede positie van de variabele strDevice en sla deze op Dim blRainInText As Boolean = hs.StringItem(Params, 3, ";") = "yes" ' Haal de waarde van de derde parameter op en als deze "yes" als waarde heeft, dan is de variabele blRainInText WAAR anders ONWAAR Dim blMultiDevice As Boolean = hs.StringItem(Params, 4, ";") = "yes" ' Haal de waarde van de vierde parameter op en als deze "yes" als waarde heeft, dan is de variabele blMultiDevice WAAR anders ONWAAR Dim strData As String = hs.GetURL("www.weeronline.nl", "/Go/FlashCharts/RainImmediate?geoAreaId=" & strGeoAreaId, false, 80) ' Haal de tekst van de webpagina op en deze in de variabele strData opslaan Dim i As Integer If not ((Val(strDeviceCode)>=1) And (Val(strDeviceCode)<=128)) Then hs.WriteLog("RegenMonitor", "Ongeldige DeviceCode! Uitvoeren script gestopt...") Exit Sub End If If not (strHouseCode <> "") Then hs.WriteLog("RegenMonitor", "Ongeldige HouseCode! Uitvoeren script gestopt...") Exit Sub End If If (Not InStr(strData, "?xml") > 0) Then hs.SetDeviceString(strDevice, "Website weeronline.nl down", True) hs.SetDeviceStatus(strDevice, 17) Exit Sub End If If blMultiDevice Then For i = 0 To 23 If hs.DeviceExistsRef(strHouseCode & Val(strDeviceCode)+i) = -1 Then Dim dv As Object dv = hs.GetDeviceByRef(hs.NewDeviceRef("Regen" & "-" & i+1)) dv.hc = strHouseCode dv.dc = Val(strDeviceCode)+i dv.misc = "&h10" dv.location = strDeviceLocation dv.dev_type_string = strDeviceType End If Next Else If hs.DeviceExistsRef(strHouseCode & strDeviceCode) = -1 Then Dim dv As Object dv = hs.GetDeviceByRef(hs.NewDeviceRef("Regen")) dv.hc = strHouseCode dv.dc = strDeviceCode dv.misc = "&h10" dv.location = strDeviceLocation dv.dev_type_string = strDeviceType End If End If Dim strArr() As String Dim strDate(24) As String Dim strTime(24) As String Dim strValue(24) As String strArr = strdata.split(chr(13)) Dim j As Integer For i = 12 To strArr.Length - 1 If InStr(strArr(i), "<date>") > 0 Then Dim a As Integer = InStr(strArr(i), "<date>") Dim b As Integer = InStr(strArr(i), "</date>") Dim c As Integer = InStr(strArr(i), "<date>") Dim strTmp = strArr(i).SubString(a + 5, b - c - 6) strDate(j) = Left(strTmp, InStr(strTmp, "T") - 1) strTime(j) = Mid(strTmp, InStr(strTmp, "T") + 1) ElseIf InStr(strArr(i), "<item") > 0 Then Dim a As Integer = InStr(strArr(i), "value=") Dim b As Integer = InStr(strArr(i), " />") Dim c As Integer = InStr(strArr(i), "value=") strValue(j) = strArr(i).SubString(a + 6, b - c - 8) j += 1 End If Next For i = 0 To j - 1 Dim strEvent As String = strDate(i) & "_" & strTime(i) If hs.EventExists(strEvent) Then hs.DeleteEvent(strEvent) Dim lngValueCommand As Long = Math.Round((Left(strValue(i), InStr(strValue(i), " mm") - 1) * 100), 0) Dim strValueCommand As String If blMultiDevice Then strValueCommand = "&hs.SetDeviceValue(" & strHouseCode & Val(strDeviceCode) + i & ", " & lngValueCommand.toString() & ")" Else strValueCommand = "&hs.SetDeviceValue(" & strDevice & ", " & lngValueCommand.toString() & ")" End If If (DateTime.Compare(strTime(i), FormatDateTime(Now, 4)) <= 0) Then If InStr(strValue(i), "0 mm/uur") > 0 Then If blMultiDevice Then If Not hs.DeviceStatus(strHouseCode & Val(strDeviceCode) + i) = 3 Then hs.Transmit(strHouseCode & Val(strDeviceCode) + i, "off") hs.SetDeviceValue(strHouseCode & Val(strDeviceCode) + i, 0) hs.writelog("RegenMonitor", "1-" & i.toString() & " - " & strTime(i) & " - device: " & strHouseCode & Val(strDeviceCode) + i & " - value: 0") End If hs.SetDeviceString(strHouseCode & Val(strDeviceCode) + i, WeerType(lngValueCommand, blRainInText) & " om " & strTime(i), True) Else If Not hs.DeviceStatus(strDevice) = 3 Then hs.Transmit(strDevice, "off") hs.SetDeviceValue(strDevice, 0) End If hs.SetDeviceString(strDevice, WeerType(lngValueCommand, blRainInText), True) hs.writelog("RegenMonitor", "2-" & i.toString() & " - " & strTime(i) & "- device: " & strDevice & " - value: 0") End If Else If blMultiDevice Then If Not hs.DeviceStatus(strHouseCode & Val(strDeviceCode) + i) = 2 Then hs.Transmit(strHouseCode & Val(strDeviceCode) + i, "on") hs.SetDeviceValue(strHouseCode & Val(strDeviceCode) + i, lngValueCommand.toString()) hs.SetDeviceString(strHouseCode & Val(strDeviceCode) + i, WeerType(lngValueCommand, blRainInText) & " om " & strTime(i), True) hs.writelog("RegenMonitor", "3-" & i.toString() & " - " & strTime(i) & "- device: " & strHouseCode & Val(strDeviceCode) + i & " - value: " & lngValueCommand.toString()) Else If Not hs.DeviceStatus(strDevice) = 2 Then hs.Transmit(strDevice, "on") hs.SetDeviceValue(strDevice, lngValueCommand.toString()) hs.SetDeviceString(strDevice, WeerType(lngValueCommand, blRainInText), True) hs.writelog("RegenMonitor", "4-" & i.toString() & " - " & strTime(i) & "- device: " & strDevice & " - value: " & lngValueCommand.toString()) End If End If ElseIf Not blMultiDevice Then If (InStr(strValue(i), "0 mm/uur") > 0) and (i>0) Then If Not (InStr(strValue(i - 1), "0 mm/uur") > 0) Then hs.NewTimeEvent(strEvent, strTime(i), "", 1, 1, 1, 1, 1, 1, 1, strDevice & ":off", 1, "", "") hs.AddAction(hs.GetEventRefByName(strEvent), 5, strValueCommand) hs.AddAction(hs.GetEventRefByName(strEvent), 5, Chr(34) & "&hs.SetDeviceString(" & strDevice & ", " & Chr(34) & WeerType(lngValueCommand, blRainInText) & Chr(34) & "), True") hs.EnableEvent(strEvent) End If ElseIf (InStr(strValue(i), "0 mm/uur") > 0) and (i=0) Then hs.NewTimeEvent(strEvent, strTime(i), "", 1, 1, 1, 1, 1, 1, 1, strDevice & ":off", 1, "", "") hs.AddAction(hs.GetEventRefByName(strEvent), 5, strValueCommand) hs.AddAction(hs.GetEventRefByName(strEvent), 5, Chr(34) & "&hs.SetDeviceString(" & strDevice & ", " & Chr(34) & WeerType(lngValueCommand, blRainInText) & Chr(34) & "), True") hs.EnableEvent(strEvent) Else hs.NewTimeEvent(strEvent, strTime(i), "", 1, 1, 1, 1, 1, 1, 1, strDevice & ":on", 1, "", "") hs.AddAction(hs.GetEventRefByName(strEvent), 5, strValueCommand) hs.AddAction(hs.GetEventRefByName(strEvent), 5, Chr(34) & "&hs.SetDeviceString(" & strDevice & ", " & Chr(34) & WeerType(lngValueCommand, blRainInText) & Chr(34) & ", True)") hs.EnableEvent(strEvent) End If Else If InStr(strValue(i), "0 mm/uur") > 0 Then If Not hs.DeviceStatus(strHouseCode & Val(strDeviceCode) + i) = 3 Then hs.Transmit(strHouseCode & Val(strDeviceCode) + i, "off") hs.SetDeviceValue(strHouseCode & Val(strDeviceCode) + i, 0) End If hs.SetDeviceString(strHouseCode & Val(strDeviceCode) + i, WeerType(lngValueCommand, blRainInText) & " om " & strTime(i), True) hs.writelog("RegenMonitor", "5-" & i.toString() & " - " & strTime(i) & "- device: " & strHouseCode & Val(strDeviceCode) + i & " - value: 0") Else If Not hs.DeviceStatus(strHouseCode & Val(strDeviceCode) + i) = 2 Then hs.Transmit(strHouseCode & Val(strDeviceCode) + i, "on") hs.SetDeviceValue(strHouseCode & Val(strDeviceCode) + i, lngValueCommand.toString()) hs.SetDeviceString(strHouseCode & Val(strDeviceCode) + i, WeerType(lngValueCommand, blRainInText) & " om " & strTime(i), True) hs.writelog("RegenMonitor", "6-" & i.toString() & " - " & strTime(i) & "- device: " & strHouseCode & Val(strDeviceCode) + i & " - value: " & lngValueCommand.toString()) End If End If 'hs.writelog("RegenMonitor", strDate(i) & " - " & strTime(i) & " - " & strValue(i)) NextEnd SubFunction WeerType(Value As Integer, blRainInText As Boolean) As String If blRainInText Then Select Case Value Case 0 To 1 Return "<img align='absmiddle' src='images/RegenMonitor/no_rain.png'> Geen regen" Case 2 To 100 Return "<img align='absmiddle' src='images/RegenMonitor/light_rain.png'> Lichte regen" Case 101 To 500 Return "<img align='absmiddle' src='images/RegenMonitor/medium_rain.png'> Matige regen" Case 501 To 2500 Return "<img align='absmiddle' src='images/RegenMonitor/heavy_rain.png'> Zware regen" Case Is > 2500 Return "<img align='absmiddle' src='images/RegenMonitor/heavy_rain.png'> Wolkbreuk" End Select Else Dim strTmp As String Select Case Value Case 0 To 1 strTmp = "<img align='absmiddle' src='images/RegenMonitor/no_rain.png'>" Case 2 To 100 strTmp = "<img align='absmiddle' src='images/RegenMonitor/light_rain.png'>" Case 101 To 500 strTmp = "<img align='absmiddle' src='images/RegenMonitor/medium_rain.png'>" Case 501 To 2500 strTmp = "<img align='absmiddle' src='images/RegenMonitor/heavy_rain.png'>" Case Is > 2500 strTmp = "<img src='images/RegenMonitor/heavy_rain.png'>" End Select Return strTmp & " " & Math.Round(Value/100, 2).toString() & " mm/uur" End IfEnd FunctionEnd Module
14-3-2011 18:23:38 - Database Item - Saving Device Regenmonitor