eenvoudig(?) script speak probleem

Homeseer Forum in het Nederlands (DUTCH forum)

Moderator: Ruud

Post Reply
Louis
Member
Member
Posts: 61
Joined: Mon Sep 28, 2009 9:42 pm
Location: Netherlands

eenvoudig(?) script speak probleem

Post 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
Alexander
Global Moderator
Global Moderator
Posts: 1532
Joined: Sat Mar 10, 2007 11:19 pm
Location: Netherlands

Re: eenvoudig(?) script speak probleem

Post 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:
Alexander
Louis
Member
Member
Posts: 61
Joined: Mon Sep 28, 2009 9:42 pm
Location: Netherlands

Re: eenvoudig(?) script speak probleem

Post 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
AshaiRey
Senior Member
Senior Member
Posts: 1310
Joined: Mon Feb 02, 2009 5:27 pm
Location: Netherlands
Contact:

Re: eenvoudig(?) script speak probleem

Post 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")
Bram
Louis
Member
Member
Posts: 61
Joined: Mon Sep 28, 2009 9:42 pm
Location: Netherlands

Re: eenvoudig(?) script speak probleem

Post 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
Post Reply

Return to “Homeseer algemeen Forum”