Page 1 of 1

eenvoudig(?) script speak probleem

Posted: Sat Jan 30, 2010 11:09 pm
by Louis
Elders op dit forum vond ik een voorbeeld van een script dat een 'variabele' zin uitspreekt (met temperatuur er in).
Dat script leidt bij mij tot een error in de log, en geen uitgesproken tekst.
Ik heb het script vereenvoudigd (alle variabelen er uit) tot het volgende, wat nog steeds een error geeft.
Was is er mis met dit script of met mijn HomeSeer installatie?
(mijn HS script ervaring is nihil, ik heb het RFXcom SMS script wel werkend).

Sctipt (file genaamd "hallo.vb" in de script directory) heeft deze inhoud:

Code: Select all

Sub main()
hs.speak "hallo"
end sub
en genereert deze foutmelding in de log:
30-1-2010 21:46:35 Error Script compile error: Method arguments must be enclosed in parentheses.on line 15
30-1-2010 21:46:35 SCR Option Strict Offimports Schedulerimports SystemPublic Module scriptcode12#Region "Automatically generated code, do not modify"'Automatically generated code, do not modify'Event Sources Begin Public WithEvents hs As Scheduler.hsapplication Public WithEvents hsp As scheduler.hsp Public WithEvents hssystem As scheduler.phone0'Event Sources End'End of automatically generated code#End RegionSub main()hs.speak "hallo"end subEnd Module
haakjes toevoegen verandert wel iets maar werkt nog niet:

Code: Select all

Sub main()
hs.speak("hallo")
end sub
geeft deze foutmelding:
30-1-2010 21:48:16 Error 1 Running script hallo.vb :method not found

Re: eenvoudig(?) script speak probleem

Posted: Sat Jan 30, 2010 11:39 pm
by Alexander
Als dit script alleen deze hs.speak gebruikt, kun je ook bij de action het veld "or script statement" dat invullen, precies zoals het voorbeeld daar gegeven wordt.
Waarom ie over een method zeurt zie ik even niet :cry:

Re: eenvoudig(?) script speak probleem

Posted: Sat Jan 30, 2010 11:49 pm
by Louis
Het voorbeeld was versimpeld, het ging er niet om een "speak" actie uit te voeren (dat kan zelfs zonder script,met een "speak" action in een event).

Inmiddels heb ik met wat copy/paste uit andere voorbeelden een scripot dat wel werkt (zie onder), ik weet nog niet waarom dit wel werkt en wat nou eigenlijk een "minimum template" voor een script file is.

Beetje bij beetje kom ik er wel, hopelijk komt de volgende scripting workshop snel...

Code: Select all

Sub Main(Optional ByVal strAppCmd As String = "")
hs.speak("This script is working fine")
end sub
[edit / add-it:]
Na nog wat experimenten...
Het lijkt er op dat de "method not found" error optreed als het woord Main in de file niet met een hoofdletter begint.
bij het woord Sub (of sub) maakt hoofdletter-gebruik niets uit.
En het lijkt er op dat er minstens 1 teken tussen de haakjes achter Main moet staan.
Het volgende is volgens mij een 'minimum template' voor een script (dat een speak commando uitvoert):

Code: Select all

Sub Main(x)
hs.speak("Hello, world!")
end sub

Re: eenvoudig(?) script speak probleem

Posted: Sun Jan 31, 2010 12:43 pm
by AshaiRey
Doordat je de .vb extentie gebruikt gaat HS ervan uit dat het .NET is en dan moet je het script aanroepen met de sub naam (Main in dit geval) en eventueele parameters.
vb. spreek.vb("Main", "Je tekst")

Re: eenvoudig(?) script speak probleem

Posted: Mon Feb 01, 2010 9:06 pm
by Louis
Aanroepen zonder sub naam en zonder parameters gaat prima, met sub naam en parameters werkt ook.
Dan toch maar RTFM (Read The Fine Manual):
VB.NET scripts use a slightly different format. The script is always passed a "parms" object which will be an array of objects that are the parameters. The object will be nothing if no parameters are supplied. The above script would be formatted as follows:

Sub Main(parms As Object)
If hs.IsOn("B2") then
hs.ExecX10("B2","off",0)
End If
End Sub