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

Hjelp: Starte scripte i C#


Squirrel

Anbefalte innlegg

Tiden har kommet for at jeg skal starte å lære meg litt enkel scripting i HS3. Jeg har holdt på med C++ og noe C# på hobbybasis tidligere, men dette er for mange år siden, så er litt rusten.

Dette viser seg å være en stor utfordring, da jeg føler det er vanskelig å lære seg å lage C# scripts ved å dekode VB scripts...

 

Jeg blir fryktelig frustrert av at jeg ikke en gang klarer å finne et enkelt C#-eksempel-script for å skru av et lys!!!

Kunne noen gitt meg et et slikt eksempel? La oss si at man vet device address, eller at man sender det som argument til main funksjonen. Hvordan ser et enkelt script ut der man skrur device til on?

 

On a side note:

Jeg vil holde meg til C#. Jeg har ikke tid til å kunne både VB.NET og C#, da jeg kjenner til noe CS/CPP fra før.

MEN... er ikke VB.NET et døende språk uansett? Altså, ikke heng dere opp i ordet "døende", men det er ikke akkurat det språket man lærer om man skal lage spill eller enterprise/høykvalitet programmer? (tenk adobe, windows, esxi, avid media composer, etc etc)

 

Takk

Lenke til kommentar
Del på andre sider

1 time siden, Squirrel skrev:

Jeg har ikke tid til å kunne både VB.NET og C#

Kan du C# er det bare å tenke litt "omvendt" så kan du også VB.NET? Litt for enkelt? Ja, men sånn er det (nesten).

 

1 time siden, Squirrel skrev:

er ikke VB.NET et døende språk uansett?

Det er ikke det jeg hadde lært meg hvis jeg skulle velge et programmeringsspråk fra scratch, men samtidig har jeg skrevet mange programmer og websider i det. Sluttresultatet (CLR) er jo nøyaktig det samme, enten du bruker vb.net eller C#. VB.NET blir ikke utvidet i samme takt som C#, samtidig forsvinner det nok ikke med det første. Joda, de som har utdannelse på området og er gode nerder sverger til C# og mobber VB.net, men det er mange som har starter og fremdeles starter sin programmeringskariere med å lage macroer i Excel. Samlet sett er det vel fremdeles ganske ingeniører og økonomer i verden... ;) 

 

Dessverre er ikke C#-motoren like god som VB-motoren til HomeSeer. Det er mulig å scripte, men den er litt kranglete på syntax noe som gjør det vanskeligere for de gode i C#.

 

Men det er mulig jeg skal prøve meg på et C#-script. Men device address? Nei, huff! Vi bruker device reference! :) 

(Address vil forsvinne i HS4, sier ryktene.)

Lenke til kommentar
Del på andre sider

C# script i HomeSeer er ikke noe du vil gjøre. De har lagt inn en gammel versjon som gjør at mye av det som fungerer i C# slik vi er vant til ikke fungerer i C# script. Jeg har prøvd og jeg fant ut at det er enklere å lære seg vb.net. Som @Moskus påpeker så er ikke forskjellen så veldig stor. 

Lenke til kommentar
Del på andre sider

Jeg ville ikke ventet med tanke på at de ikke har valgt å oppdatere C# script engine i HS3. Jeg antar at det blir samme eventuelt at de bare kutter det ut i HS4. Jeg antar at en script-engine er noe man må betale for når det skal inn i software og da blir det ofte at man prioriterer kun en. Og de fleste i HomeSeer ser ut til å bruke vb.net når de lager software. Mulig de kommer til å skifte over til C#, men jeg tror de beholder VB.Net til scripting. Skifter de det over til C# så kommer det til å bli masse hyling.

 

I tillegg har man funnet en minnelekkasje i C# script for HomeSeer

Not many people write scripts in C# for HS3 which is probably why you are not seeing other posts on the subject. To make matters worse, a user has indentified a potential memory leak when running C# scripts.

https://forums.homeseer.com/forum/developer-support/scripts-plug-ins-development-and-libraries/hs3-scripting/95787-c-scripting-at-the-end-of-my-rope?p=969770#post969770

 

Nesten ingen bruker c# script så du vil få endel feil veldig få kan hjelpe deg med. Går du for VB script så har du her ett veldig kompetent forum som hjelper deg i løpet av minutter.

Ikke vent, start nå! ?

 

  • Like 1
Lenke til kommentar
Del på andre sider

Jeg scripter som kjent lett i VB.NET. Men selv jeg kunne ønske meg bedre C# støtte på sikt, og jeg tror nok det er noe de faktisk må løse på sikt, enten de vil eller ei.

 

Grunnen til at de har så god støtte for VB.NET er jo selvfølgelig historisk. Da HS1.0 kom, støttet de VBscript, i HS2 kunne man bruke både VBscript og VB.NET (heldigvis), strengt tatt kan man det i HS3 også, men nå har de fleste begynt å bruke .NET.

Lenke til kommentar
Del på andre sider

Jeg har begynt litt som smått nå, og føler jeg blir smågal!

Forstår godt hvorfor folk anbefaler VB istedet for C#. En del av frustrasjonen består av at i C#  så tvinges man til å oppgi hele namespace til klasser...

CAPIControl capiobj ; = Det liker den IKKE...

HomeSeerAPI.CAPI.CAPIControl capiobj ; Dette er akseptert.

Problemet er jo at dokumentasjonen er jo helt fatalt elendig. Dette står jo ikke oppført for noen av klassene i dokumentasjonen, så vidt jeg ser...

 

Uansett, så er jeg som smått igang.

Første mål er å lære seg å lese av verdier til devicer, og skrive enkelte ON, OFF og dim verdier til devicer.

 

Med det så lurer jeg litt på CAPIGetSingleControl. Hva i alle dager gjør de forskjellige boolean argumentene? alle kjører true i arg2, deretter varierer det litt på de 2 siste...

Lenke til kommentar
Del på andre sider

56 minutter siden, Squirrel skrev:

Med det så lurer jeg litt på CAPIGetSingleControl. Hva i alle dager gjør de forskjellige boolean argumentene? alle kjører true i arg2, deretter varierer det litt på de 2 siste...

 

image.png

dvRef er device IDen.

SingleRangeEntry er litt vrient å forklare med mindre du har sett på en dimmer-device. "On" og "Off" er "single range". Dim er multirange, fordi den spenner fra 1 til 99.

"Label" er den kommandoen du søker etter.

ExcactCase sier seg selv, forskjell om du søker på "on" eller "On".

Contains like så. Er den true, får du f.eks. treff på "Off" hvis du søker etter "ff", men ikke hvis denne er false.

 

https://homeseer.com/support/homeseer/HS3/HS3Help.pdf

Lenke til kommentar
Del på andre sider

Ah, takk for god avklaring!

 

Noen påstander/spørsmål:

1) Returnerer CAPIGetSingleControl et ferdig CAPIControl objekt som inneholder de "nye" innstillingene (on/off) og som kan endres på manuelt før det sendes inn med CAPIControlHandler?

2) Eller er objektet som CAPI-GSC returnerer, et bestemt objekt som er spesifikt for kun en bestemt handling?

3) Hvis 2 er rett, returnerer CAPIGetControl et array med objekter for alle mulige handlinger man kan gjøre på den devicen? Også plukker man ut det objektet man vil som svarer til den endringen man vil gjøre, og kjører det med CAPIControlHandler?

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.