Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!

C# scripting med intellisense


darkZ

Anbefalte innlegg

Jeg tror dessverre ikke tenScripting fungerer med C#, men det er relativt enkelt å sette opp et scripting-miljø.

 

Sett opp et prosjekt, gjerne et console application.

Legg til referanser fra "HomeSeerAPI.dll", "HSCF.dll" og "Scheduler.dll".

 

Så er det bare å legge "HomeSeerAPI.IHSApplication hs" øverst i klassen du jobber i. :)

 

  • Like 1
Lenke til kommentar
Del på andre sider

11 timer siden, Moskus skrev:

Jeg tror dessverre ikke tenScripting fungerer med C#, men det er relativt enkelt å sette opp et scripting-miljø.

 

Sett opp et prosjekt, gjerne et console application.

Legg til referanser fra "HomeSeerAPI.dll", "HSCF.dll" og "Scheduler.dll".

 

Så er det bare å legge "HomeSeerAPI.IHSApplication hs" øverst i klassen du jobber i. :)

 

Takk for tipset :) Men får jeg koblet til HS så jeg får debugget i VS?

Lenke til kommentar
Del på andre sider

Nei, dessverre. Men du får IntelliSense.

.. selve tenScripting sin mulighet for debugging er vel etter min mening så som så uansett. Du kan sette break-points etc, men scriptene kan kjøre fint i VS og fremdeles være vanskelige når de portes til HS (som i det minste er erfaringen med VB.net-kompilatoren, muligens og forhåpentligvis er C# bedre).

 

  • Like 1
Lenke til kommentar
Del på andre sider

Den 4/24/2017 klokken 13.17, Moskus skrev:

Nei, dessverre. Men du får IntelliSense.

.. selve tenScripting sin mulighet for debugging er vel etter min mening så som så uansett. Du kan sette break-points etc, men scriptene kan kjøre fint i VS og fremdeles være vanskelige når de portes til HS (som i det minste er erfaringen med VB.net-kompilatoren, muligens og forhåpentligvis er C# bedre).

 

 

Jeg må nok lære meg litt VB-net, endte nå opp med å skrive scriptene på nytt i VB.net. Jeg skrev et C# script som kjørte hvert minutt, da krasjet HS minst en gang i døgnet. Mistenker dette er minnelekkasje problematikken jeg har lest om med C# scripts? Antall threads økte med 1 hver gang et script ble kjørt til den nådde 1000-1500 threads, så stoppet HS å fungere. Med VB.net script ser det ikke ut til å være noe problem.

Lenke til kommentar
Del på andre sider

1 time siden, darkZ skrev:

Mistenker dette er minnelekkasje problematikken jeg har lest om med C# scripts? 

Det kan være, men den bug'en burde være død og begravet for minst et par versjoner siden, hvis jeg leste rett.

Lenke til kommentar
Del på andre sider

Den 4/26/2017 klokken 11.33, Moskus skrev:

Det kan være, men den bug'en burde være død og begravet for minst et par versjoner siden, hvis jeg leste rett.

 

Og det gjorde du nok :) Jeg stolte på noen forumposter som sa de fortsatt hadde de samme problemene, men oppdaterte HS3 igår og enablet C# scriptene igjen, funker utmerket :) 

Lenke til kommentar
Del på andre sider

Godt å høre! [emoji4]
 
Vet du noe om hvor godt C# takler Linq i HS? VB-kompilatoren er ikke glad i det... [emoji20] 


Jeg har kun laget noen veldig enkle scripts foreløpig, så det har jeg ikke testet enda


Sent from my iPhone using Tapatalk
Lenke til kommentar
Del på andre sider

  • 1 år senere...

Med litt triksing/hacking fikk jeg kjørt c# script i tenScripting.

 

  • Lag et c# prosjekt ved siden av.
  • Legg scriptet ditt inn der, jeg kalte mitt InfluxDBScript
  • Hack triggingen...... i tenScript.vb RunScript metoden....
 anObj = Activator.CreateInstance(t)
        Dim instance = New InfluxDBScript
        instance.hs = hs
        anObj = instance
        t = instance.GetType

        '' Log we are now running a script
        MyLog("Running " & sd.ClassName & "." & sd.MethodName)
        hs.WriteLog("tenScripting", "****************************** Debug Started for " & sd.ClassName & "." & sd.MethodName)
        '' Run the Script
        Try
            instance.Test(pParms)
            t.InvokeMember("Test", BindingFlags.InvokeMethod Or BindingFlags.Instance Or
                BindingFlags.Public Or BindingFlags.IgnoreCase,
                Nothing, anObj, pParms, Nothing, Nothing, Nothing)
  • Med en god dose tålmodighet og tid (noe jeg har alt for lite av) kan man fikse tenScript til å gjøre c# scripts.

 

Mitt problem (som totalt newbee på Homeseer) er at c# scriptet som kjører fint i tenScript ikke er i nærheten av å kjøre i Homeseer.... Jeg prøvde å konvertere dette scriptet til c#, uten hell så langt. Er det virkelig slik at man må skrive full navn for alle typer? Får ikke using til å fungere? Er det noe godt starting point for c# scripting i Homeseer?

Lenke til kommentar
Del på andre sider

Var litt uoversiktlig feilmelding; det var ikke using som import som ikke fungerete:

                using (var stream = request.GetRequestStream())
                {
                    stream.Write(data, 0, data.Length);
                }

Det var denne using..... Og det virker fortsatt som om using (som import) ikke unngår at man må skrive fully qualified name:

var data = System.Text.Encoding.ASCII.GetBytes(query);

I stedet for:

using System.Text;

...

var data = Encoding.ASCII.GetBytes(query);

 

Lenke til kommentar
Del på andre sider

C# scrip engine i HomeSeer er ikke bra. Jeg finner desverre ikke posten som beskriver hvilken de har implementert, men etter hva jeg forstår så er den ikke oppdatert på aldri så lenge.

Min erfaring så langt er at c# script som kjører prikkfritt på maskinen må gjøres om når det skal kjøre i HomeSeer. Using er en av tingene, men det er mye annet også. Synd det skal være slik...

Lenke til kommentar
Del på andre sider

Jeg har ikke prøvd så mye etter at jeg lagde ett par veldig simple script som måtte skrives om ganske massivt for at det skulle gå i HomeSeer.

 

Jeg har ikke så mye å scripte enda så jeg overlever med å prøve meg fra i VB script.

Lenke til kommentar
Del på andre sider

Bli med i samtalen

Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.