Gå til innhold

Kommentar-tråd for scripts til HS3


Anbefalte innlegg

Det kan se ut som om mono ikke støtter "one line parameters".

 

Prøv å erstatte disse to linjene (nesten nederst):

        Public Property deviceRef As Integer
        Public Property deviceValue As Double

... med dette (som altså er den lange, tungvinte måten å skrive properties på).

    Private _deviceRef As Integer
    Public Property DeviceRef() As Integer
        Get
            Return _deviceRef
        End Get
        Set(ByVal value As Integer)
            _deviceRef = value
        End Set
    End Property

    Private _deviceValue As Double
    Public Property DeviceValue() As Double
        Get
            Return _deviceValue
        End Get
        Set(ByVal value As Double)
            _deviceValue = value
        End Set
    End Property
Lenke til kommentar
Videoannonse
Annonse

Hm.  Det ser ut som om det bedrer seg, men ikke helt i mål...

Tusen takk uansett!

Apr-04 14:13:35 	  	Error 	Compiling script /home/pi/HomeSeer/scripts/store_restore.vb: Value of type 'Object' cannot be converted to 'System.String[]'.
Apr-04 14:13:35 	  	Error 	Compiling script /home/pi/HomeSeer/scripts/store_restore.vb: Namespace or type specified in the Imports 'System.Core' doesn't contain any public member or cannot be found. Make sure the namespace or the type is defined and contains at least one public member. Make sure the imported element name doesn't use any aliases.
Apr-04 14:13:29 	  	Event 	Running script in background: /home/pi/HomeSeer/scripts/store_restore.vb("Main")
Apr-04 14:13:29 	  	Event 	Event Trigger "Alerts test"
Apr-04 14:13:29 	  	Event 	Event Alerts test triggered by the event page 'Run' button. 
Lenke til kommentar

Den var snodig, for det er ingen System.String[]-lister der.

 

Kanksje hvis du erstatter den aller øverste linja med:

Sub Main(ByVal not_used() As Object)

Edit:

INI-fila skal dukke opp i /Config mappa, ja.

Endret av Moskus
Lenke til kommentar

Jeg har tidligere testet og modifisert flere skript, og når jeg nå roter i arkivet og tester på nytt, fungerer det fint. Det er nok ikke noe generelt problem. Du husker kanskje SMS-skriptet? Der var det mono som ikke hadde sertfifikater, men det lot seg fikse uten å endre på skriptet.

Jeg kan jo skrive et eget bash-skript, men kjipt at det skal være så trøblete å låne skript på tvers av HS3-installasjoner.

Lenke til kommentar

Jeg har tidligere testet og modifisert flere skript, og når jeg nå roter i arkivet og tester på nytt, fungerer det fint. Det er nok ikke noe generelt problem. Du husker kanskje SMS-skriptet? Der var det mono som ikke hadde sertfifikater, men det lot seg fikse uten å endre på skriptet.

Jeg kan jo skrive et eget bash-skript, men kjipt at det skal være så trøblete å låne skript på tvers av HS3-installasjoner.

Kjørte du Zee eller var det en "plain" HS3 installasjon? På hvilken distro?

 

Jeg har skrevet et digert script som kjører utmerket på Zee1 og Zee2, basert på samme logikk som DeviceState.vb, bare enda større. Kan ikke se hvorfor det ikke skulle fungere.

Lenke til kommentar

Hm. Jeg kan ikke nok om vb til å synse så mye om hvorfor det ikke funker. Alt er plain installasjon av HS3 standard på en pi2 som kjører raspbian Jessie. Jeg har passet på holde pi'en ren, dvs. jeg bruker den ikke til noe annet enn HS3.

 

Jeg har nå skrevet et eget bash-skript inspirert av og som fungerer som ditt DeviceState.vb. Det kjøres med to argumenter $1 : hvilken preset jeg vil ha, og $2: 'store' eller 'restore'. Man kan ha så mange presets man vil, man må bare gi det et navn (i skriptet) og definere devices. Jeg har foreløpig bare dummytestet det, men det ser ut som om det funker fint.

#!/bin/bash

# $1 denotes preset. $2 denotes store/restore

[ "$2" != "store" -a  "$2" != "restore" ] && echo "Script must be run with two arguments. Exiting." && exit

# Declare presets
[ "$1" = "preset1" ] && configfile="/home/pi/scripts/ANY_UNIQUE_NAME.cnf" && devices="660 661 662 663"
[ "$1" = "preset2" ] && configfile="/home/pi/scripts/ANY_UNIQUE_NAME2.cnf" && devices="660 661 662 663"

if [ "$2" = "store" ]
then echo "conf" > ${configfile}
 for device in $( echo ${devices} )
 do eval "status_${device}"=`curl -s "http://localhost/JSON?request=getstatus&ref=${device}" | \
 awk -v FS=',"value":' '{print $2}' |awk -v FS=',' '{print $1}'`
 var=`echo "status_${device}"`
 echo "${device} ${!var}" >> ${configfile}
 done
fi

if [ "$2" = "restore" ]
then
 sed 1d ${configfile} | while read line
 do device=`echo ${line} | awk '{print $1}'`
    state=`echo ${line} | awk '{print $2}'`
 curl -s "http://localhost/JSON?request=controldevicebyvalue&ref=${device}&value=${state}" >/dev/null 2>&1
 done
fi

For de som kjører linux og vil prøve. Lagre skriptet et sted, gjør det kjørbart (chmod ug+x skriptnavn). I HS3, i stedet for 'Run a script', velg 'Run another Program or Process', klikk 'Edit' og velg skriptet. Skriv så inn argument $1 og $2 under 'Enter any command parameters...'. (F.eks. preset1 store)

 

Edit: Fikset en liten typo i skriptet. Nå kan jeg bekrefte at det funker.

Endret av DiderikFrom
Lenke til kommentar

Hm. Jeg kan ikke nok om vb til å synse så mye om hvorfor det ikke funker. Alt er plain installasjon av HS3 standard på en pi2 som kjører raspbian Jessie. Jeg har passet på holde pi'en ren, dvs. jeg bruker den ikke til noe annet enn HS3.

Jeg kan ikke nok om mono på Linux, men finner det besynderlig at det fungerer på andre enheter...

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...