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

Hjelp til script som fungerer i Windows, men feiler i Linux


bio

Anbefalte innlegg

Hei.

Til info så har jeg null peiling på scripting eller koding, jeg er en copy/paster :)

 

Prøver å få til et script som skal liste kalender eventer til en virtuell device gjennom Blade sin BLGData plugin, slik at jeg kan liste dette i HStouch.

Har postet dette på HS forumet også, men ikke fått svar.

 

image.png.19492256539c90dbbcd0b8212b99cbf9.png

 

Får følgende feil:

 

image.png.a770c5f711a333427590ef6d6885e22b.png

 

Googler på harde livet, og endrer småting uten at jeg får det til å virke.

Takk på forhånd.

 

Lenke til kommentar
Del på andre sider

sub Main(ByVal Parms As Object)
    Dim ParmArray() as String
    ParmArray = Parms.tostring.split(",")
    Dim tDevice = ParmArray(0)
    Dim tCalendar = ParmArray(1)
    Dim tDays = cint(ParmArray(2))
    Dim allEvents As Object()
        Dim myemail as string="[email protected]"
        Dim msg as string = ""

        allEvents = hs.PluginFunction("BLGData", "", "GetCalendarEventsForXDays", new Object(){myemail,tCalendar,tdays})
        msg="<table>"
    For Each ev As Object In allEvents
           msg = msg & "<tr><td> " & ev.StartTime & " - " & ev.Name & "." & "</td></tr>"
    Next
        msg=msg & "</table>"
        if msg="" then msg="No Events Scheduled"
        hs.SetDeviceString(tDevice, msg.Trim, true)
End Sub

 

Endret av bio
Lenke til kommentar
Del på andre sider

9 minutter siden, Moskus skrev:

Hvis du fjerner dette:


    For Each ev As Object In allEvents
           msg = msg & "<tr><td> " & ev.StartTime & " - " & ev.Name & "." & "</td></tr>"
    Next

... går det bedre da? 

 

Nei, får eksakt samme feilmelding(er).

 

Takk for at du hjelper til!

Lenke til kommentar
Del på andre sider

1 minutt siden, ZoRaC skrev:

Må ikke disse skrives slik?


ParmArray() = params.ToString.Split(",")
Dim tDevice As Integer = ParmArray(0)
Dim tCalendar As String = ParmArray(1)
Dim tDays As Integer = cint(ParmArray(2))

 

 

Får denne feilen:

 

image.png.130347a588b238beddd2f825357883fd.png

 

Ved å endre til kode:

sub Main(ByVal Parms As Object)
    Dim ParmArray() as String
    ParmArray() = Parms.tostring.split(",")
    Dim tDevice As Integer = ParmArray(0)
    Dim tCalendar As String = ParmArray(1)
    Dim tDays As Integer = cint(ParmArray(2))
    Dim allEvents As Object()
        Dim myemail as string="[email protected]"
        Dim msg as string = ""

        allEvents = hs.PluginFunction("BLGData", "", "GetCalendarEventsForXDays", new Object(){myemail,tCalendar,tdays})
        msg="<table>"
        For Each ev As Object In allEvents
        msg = msg & "<tr><td> " & ev.StartTime & " - " & ev.Name & "." & "</td></tr>"
    Next
        msg=msg & "</table>"
        if msg="" then msg="No Events Scheduled"
        hs.SetDeviceString(tDevice, msg.Trim, true)
End Sub

eller kode uten linjene @Moskus nevnte:

 

sub Main(ByVal Parms As Object)
    Dim ParmArray() as String
    ParmArray() = Parms.tostring.split(",")
    Dim tDevice As Integer = ParmArray(0)
    Dim tCalendar As String = ParmArray(1)
    Dim tDays As Integer = cint(ParmArray(2))
    Dim allEvents As Object()
        Dim myemail as string="[email protected]"
        Dim msg as string = ""

        allEvents = hs.PluginFunction("BLGData", "", "GetCalendarEventsForXDays", new Object(){myemail,tCalendar,tdays})
        msg="<table>"
        msg=msg & "</table>"
        if msg="" then msg="No Events Scheduled"
        hs.SetDeviceString(tDevice, msg.Trim, true)
End Sub

 

 

Lenke til kommentar
Del på andre sider

3 minutter siden, Guahtdim skrev:

Muligens så må du også endre allEvents til System.Object[]

 


Dim allEvents() As Object

 

Men nå bare tror jeg. Vb er så veldig tilgivende på mange områder når det kommer til variabeltyper. Derfor foretrekker jeg C#. 

 

Feilmelding:

 

image.png.1351a2182d413fd9140129d9832c9489.png

 

Med kode:

sub Main(ByVal Parms As Object)
    Dim ParmArray() as String
    ParmArray() = Parms.tostring.split(",")
    Dim tDevice As Integer = ParmArray(0)
    Dim tCalendar As String = ParmArray(1)
    Dim tDays As Integer = cint(ParmArray(2))
    Dim allEvents() As Object()
        Dim myemail as string="[email protected]"
        Dim msg as string = ""

        allEvents = hs.PluginFunction("BLGData", "", "GetCalendarEventsForXDays", new Object(){myemail,tCalendar,tdays})
        msg="<table>"
        msg=msg & "</table>"
        if msg="" then msg="No Events Scheduled"
        hs.SetDeviceString(tDevice, msg.Trim, true)
End Sub

 

image.png

Lenke til kommentar
Del på andre sider

1 minutt siden, Guahtdim skrev:

Du må enten skrive


Dim allEvents() As Object

eller

 


Dim allEvents As Object()

 

Du kan ikke ha () på to steder.

 

Ops :)

 

Får samme feilmelding uavhengig ?

 

Lenke til kommentar
Del på andre sider

B

3 minutter siden, Guahtdim skrev:

Hvilken feilmelding? Fortsatt A variable can't declare array modifiers..... eller en av de andre feilmeldingene?

 

Beklager, en av de andre :)

 

Denne feilmeldingen:

 

image.png.0f54b9cca796fba0cc73b4c731f27690.png

 

Med kode:

 

sub Main(Parms As Object)
    Dim ParmArray() as String
    ParmArray() = Parms.tostring.split(",")
    Dim tDevice As Integer = ParmArray(0)
    Dim tCalendar As String = ParmArray(1)
    Dim tDays As Integer = cint(ParmArray(2))
    Dim allEvents() As Object
        Dim myemail as string="[email protected]"
        Dim msg as string = ""

        allEvents = hs.PluginFunction("BLGData", "", "GetCalendarEventsForXDays", new Object(){myemail,tCalendar,tdays})
        msg="<table>"
        msg=msg & "</table>"
        if msg="" then msg="No Events Scheduled"
        hs.SetDeviceString(tDevice, msg.Trim, true)
End Sub

 

Lenke til kommentar
Del på andre sider

11 minutter siden, Guahtdim skrev:

Da må vi eliminere videre. Fjern linjen som starter med "allEvents= " og se om du fortsatt får feil.

 

 

Litt annen feilmelding:

image.png.7b102732605e15710b2a13f662b64bde.png

 

Med kode:

sub Main(ByVal Parms As Object)
    Dim ParmArray() as String
    ParmArray() = Parms.tostring.split(",")
    Dim tDevice As Integer = ParmArray(0)
    Dim tCalendar As String = ParmArray(1)
    Dim tDays As Integer = cint(ParmArray(2))
    Dim allEvents() As Object
        Dim myemail as string="[email protected]"
        Dim msg as string = ""

        msg="<table>"
        msg=msg & "</table>"
        if msg="" then msg="No Events Scheduled"
        hs.SetDeviceString(tDevice, msg.Trim, true)
End Sub

Og:

 

sub Main(ByVal Parms As Object)
    Dim ParmArray() as String
    ParmArray() = Parms.tostring.split(",")
    Dim tDevice As Integer = ParmArray(0)
    Dim tCalendar As String = ParmArray(1)
    Dim tDays As Integer = cint(ParmArray(2))
    Dim allEvents As Object()
        Dim myemail as string="[email protected]"
        Dim msg as string = ""

        msg="<table>"
        msg=msg & "</table>"
        if msg="" then msg="No Events Scheduled"
        hs.SetDeviceString(tDevice, msg.Trim, true)
End Sub

Og:

image.png.30be73535e49b39748f5b502b6da8f95.png

 

Ved også å fjerne Dim allEvents As linjen, med denne koden:

 

sub Main(ByVal Parms As Object)
    Dim ParmArray() as String
    ParmArray() = Parms.tostring.split(",")
    Dim tDevice As Integer = ParmArray(0)
    Dim tCalendar As String = ParmArray(1)
    Dim tDays As Integer = cint(ParmArray(2))
    Dim myemail as string="[email protected]"
    Dim msg as string = ""

        msg="<table>"
        msg=msg & "</table>"
        if msg="" then msg="No Events Scheduled"
        hs.SetDeviceString(tDevice, msg.Trim, true)
End Sub

 

 

image.png

Endret av bio
Lenke til kommentar
Del på andre sider

Hmm, litt usikker her. Nå aner jeg ikke hvor case-sensitiv scriptmodulen er, men du har

sub Main og End Sub

Mulig du må gjøre om sub til Sub

 

Du kan også røske ut nesten alt inne i rutinen for å se om vi kan sette device og ende opp med "No Events Scheduled" i valgt device

 

Sub Main(ByVal Parms As Object)
    
    Dim msg as string = ""

        if msg="" then msg="No Events Scheduled"
        hs.SetDeviceString(2164, msg.Trim, true)
End Sub
Endret av Guahtdim
Lenke til kommentar
Del på andre sider

5 minutter siden, Guahtdim skrev:

Hmm, litt usikker her. Nå aner jeg ikke hvor case-sensitiv scriptmodulen er, men du har

sub Main og End Sub

Mulig du må gjøre om sub til Sub

 

Du kan også røske ut nesten alt inne i rutinen for å se om vi kan sette device og ende opp med "No Events Scheduled" i valgt device

 


Sub Main(ByVal Parms As Object)
    
    Dim msg as string = ""

        if msg="" then msg="No Events Scheduled"
        hs.SetDeviceString(2164, msg.Trim, true)
End Sub

 

Den enkle koden fungerte flott:

image.png.fb936418128663ea35e5063c39451248.png

 

 

Ble mye rot og frem og tilbake her, så jeg endret til koden fra min første post, dvs uten å ta bort noe, og endret til Sub Main:

 

Sub Main(ByVal Parms As Object)
        Dim ParmArray() as String
        ParmArray = Parms.tostring.split(",")
        Dim tDevice = ParmArray(0)
        Dim tCalendar = ParmArray(1)
        Dim tDays = cint(ParmArray(2))
        Dim allEvents As Object()
        Dim myemail as string="[email protected]"
        Dim msg as string = ""

        allEvents = hs.PluginFunction("BLGData", "", "GetCalendarEventsForXDays", new Object(){myemail,tCalendar,tdays})
        msg="<table>"
        For Each ev As Object In allEvents
           msg = msg & "<tr><td> " & ev.StartTime & " - " & ev.Name & "." & "</td></tr>"
        Next
        msg=msg & "</table>"
        if msg="" then msg="No Events Scheduled"
        hs.SetDeviceString(tDevice, msg.Trim, true)
End Sub

Da får jeg kun denne feilmeldingen hvis det hjelper noe.

 

image.png.0fee2ecc979e2e4bdc7caff99e4f2144.png

 

 

Lenke til kommentar
Del på andre sider

Jeg hadde fortsatt med å fjerne mye kode og så legge til litt og litt

 

Ta vekk hele blokken mellom allevents= til og med "</table>"

 

 

Ta vekk alle variabeldeklarasjoner utenom msg (fra Dim ParmArray til og med myemail as string="[email protected]")

 

Kjør og legg så til en og en linje for å se om det fungerer eller om du får noen forskjellige feilmeldinger. 

 

 

Lenke til kommentar
Del på andre sider

15 minutter siden, Guahtdim skrev:

Jeg hadde fortsatt med å fjerne mye kode og så legge til litt og litt

 

Ta vekk hele blokken mellom allevents= til og med "</table>"

 

 

Ta vekk alle variabeldeklarasjoner utenom msg (fra Dim ParmArray til og med myemail as string="[email protected]")

 

Kjør og legg så til en og en linje for å se om det fungerer eller om du får noen forskjellige feilmeldinger. 

 

 

 

Begynte fra toppen å la til alle variabeldeklarasjoner.

Scriptet feilet ikke før jeg la til linjen 

 

allEvents = hs.PluginFunction("BLGData", "", "GetCalendarEventsForXDays", new Object(){myemail,tCalendar,tdays})

 

Denne feiler:

Sub Main(ByVal Parms As Object)
    Dim ParmArray() as String
    ParmArray = Parms.tostring.split(",")
    Dim tDevice = ParmArray(0)
    Dim tCalendar = ParmArray(1)
    Dim tDays = cint(ParmArray(2))
    Dim allEvents As Object()
    Dim myemail as string="[email protected]"
    Dim msg as string = ""

    allEvents = hs.PluginFunction("BLGData", "", "GetCalendarEventsForXDays", new Object(){myemail,tCalendar,tdays})


        if msg="" then msg="No Events Scheduled"
        hs.SetDeviceString(2164, msg.Trim, true)
End Sub

Med:

image.png.b4d8c407716a6868f4340cdc9409f284.png

 

Denne koden feiler ikke og oppdaterer device 2164:

 

Sub Main(ByVal Parms As Object)
    Dim ParmArray() as String
    ParmArray = Parms.tostring.split(",")
    Dim tDevice = ParmArray(0)
    Dim tCalendar = ParmArray(1)
    Dim tDays = cint(ParmArray(2))
    Dim allEvents As Object()
    Dim myemail as string="[email protected]"
    Dim msg as string = ""



        if msg="" then msg="No Events Scheduled"
        hs.SetDeviceString(2164, msg.Trim, true)
End Sub

 

 

Lenke til kommentar
Del på andre sider

Jeg får følelsen av at feilen ligger i 

 allEvents = hs.PluginFunction("BLGData", "", "GetCalendarEventsForXDays", new Object(){myemail,tCalendar,tdays})

Med andre ord så feiler det på vei inn i plugin hvor du skal spesifisere epost, calender og antall dager. Og da aner jeg ikke hva man skal gjøre for å få det videre....

Lenke til kommentar
Del på andre sider

20 minutter siden, Guahtdim skrev:

Jeg får følelsen av at feilen ligger i 


 allEvents = hs.PluginFunction("BLGData", "", "GetCalendarEventsForXDays", new Object(){myemail,tCalendar,tdays})

Med andre ord så feiler det på vei inn i plugin hvor du skal spesifisere epost, calender og antall dager. Og da aner jeg ikke hva man skal gjøre for å få det videre....

 

Ok, uansett, takk for at du tok deg tid.

Lenke til kommentar
Del på andre sider

31 minutter siden, Guahtdim skrev:

Jeg får følelsen av at feilen ligger i 


 allEvents = hs.PluginFunction("BLGData", "", "GetCalendarEventsForXDays", new Object(){myemail,tCalendar,tdays})

Med andre ord så feiler det på vei inn i plugin hvor du skal spesifisere epost, calender og antall dager. Og da aner jeg ikke hva man skal gjøre for å få det videre....

 

Jeg hadde et lignende problem med en annen Plugin, se svar i HS-forumet:

https://forums.homeseer.com/forum/ultilities-plug-ins/utilities-discussion/device-history-shill/1273859-scripting-linux?p=1273881#post1273881

 

Men, ser jo ut til at syntax hos deg er riktig da...

Hvilken Mono-versjon kjører du?

Lenke til kommentar
Del på andre sider

5 minutter siden, ZoRaC skrev:

 

Jeg hadde et lignende problem med en annen Plugin, se svar i HS-forumet:

https://forums.homeseer.com/forum/ultilities-plug-ins/utilities-discussion/device-history-shill/1273859-scripting-linux?p=1273881#post1273881

 

Men, ser jo ut til at syntax hos deg er riktig da...

Hvilken Mono-versjon kjører du?

 

5.18.0.240

 

Søker og søker på HS forumet, og prøver forskjellige ting uten hjelp.

Det ser ut som dette er en gjenganger i linux i diverse scripts The import 'System.Core' could not be found.

Om det har en sammenheng i scriptet jeg kjører, vet jeg ikke.

 

Akkurat denne plugin funksjonen skal jo være relativt rett frem. Fra BLGData Help:

 

image.thumb.png.1ef8c8fba729cbc86ee01b5d2c934b3c.png

 

Prøver nå uten å inkludere Parm i allEvents linjen, som i hjelpefilen, men det feiler:

 

Sub Main(ByVal Parms As Object)
    Dim ParmArray() as String
    ParmArray = Parms.tostring.split(",")
    Dim tDevice as String = ParmArray(0)
    Dim tCalendar as String = ParmArray(1)
    Dim tDays as Integer = cint(ParmArray(2))
    Dim allEvents As Object()
    Dim myemail as string="[email protected]"
    Dim msg as string = ""

     allEvents = hs.PluginFunction("BLGData", "", "GetCalendarEventsForXDays", new Object(){"[email protected]","Minkalender",2})

        if msg="" then msg="No Events Scheduled"
        hs.SetDeviceString(2164, msg.Trim, true)
End Sub

image.png.1c072d43197741a5fc4ce755eb4a5bd1.png

 

Lenke til kommentar
Del på andre sider

51 minutter siden, bio skrev:

Det ser ut som dette er en gjenganger i linux i diverse scripts The import 'System.Core' could not be found.

Om det har en sammenheng i scriptet jeg kjører, vet jeg ikke.

 

Akkurat denne plugin funksjonen skal jo være relativt rett frem. Fra BLGData Help:

 

Ja, jeg kopierte også et script fra manualen til Device History, men da viste det seg at man på Linux måtte ha med «New Object()» foran for at det skulle virke. Men, hos deg ser jo det riktig ut...

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.