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

HSv

Medlemmer
  • Innlegg

    155
  • Ble med

  • Besøkte siden sist

  • Dager vunnet

    1

Innlegg skrevet av HSv

  1. 31 minutter siden, Vitellius skrev:

    De har sendt meg en firmware hvor grensen er satt til 100w

    Det er jo gode nyheter ?
    Det er likevel besynderlig at de insinuerer at det har med HomeSeer å gjøre. Og det forklarer jo heller ikke hvorfor parameter 21/22 ikke ser ut til å fungere som dokumentasjonen antyder.

    Men uansett - dersom den nye FW fungerer som du har blitt fortalt, så skal det fungere for min del ?

     

  2. Jeg fikk montert min første HeatIT Z-TRM2fx i går - og i dag har jeg sendt denne mailen til [email protected] :

     

    Sitat

     

    Hi,

     
    I have just had a HEATIT Z-TRM2fx installed, and now it keeps spamming my log with data - as shown in the attached screenshot.
     
    Firmware 3.4
    Parameter 21 is set to decimal 900
    Parameter 22 is set to decimal 10
    Borth floor- and external sensor are connected.
     
    As long as the thermostat is off / not heating it keeps logging every 15 mins. as it should, but as soon as it starts heating it sends data every few seconds.
    Except for the logging part (and a bit of hazzle to get it properly included) - it seems to work fine.
     
    What can I do to get it to send less data, and avoid spamming my Z-Wave network?
     
    I have two other devices ready to be installed, but I am reluctant to do that untill I get a fix for this.
     
    I am actively following the forum on www.hjemmeautomasjon.no, so I know there are a number of people with a variety of smarthubs reporting about the same issue.
    (And besides - I guess the sending of data is determined by the node itself, so the type of Hub should be irrelevant.)

     

     
     
     
    Jeg fikk da iallefall svar 
    Sitat

     

    Hi,

    Thank you for the report. We will look into this issue.

     

     

  3. Er det noen som bruker BLBackup på Linux? Jeg har kjørt det en stund og hadde heldigvis backup  i går da jeg gikk på en smell... ?
    Men da jeg skulle kjøre restore så ser jeg at alt av permissions og owner ikke blir tatt vare på. Kanskje ikke så mye å si, men ikke spesielt kjekt heller.

     

    Så da skrev jeg heller et par script selv - ett i vb.net som startes av en event i HS, og dette starter igjen et Perl-script som kjører selv backupen. ( Savner Perl/Python-script rett i HS... ? )

     

    Eller gjør BLBackup  noe mer? Som å stoppe logging el. for å unngå inconsistent backups?

  4. Jeg kan forøvrig også legge til at jeg lenge sleit med z-wave nettet. Min UZB sto rett i min Hometroller Linux box, som igjen står ugunstig plassert i TV-benken (Antar det er all mulig slags støy der...) Jeg kjøpte en 3 meter USB-kabel, og nå henger UZB'en oppe i en plante - 1.5 meter over gulvet og fri for hindringer. Og nu går alt så meget bedre ?
    Dette fungerte så bra at jeg gjorde det samme med min RFXcom-box, og nå har jeg heller ikke problemer med denne med mottak fra temperatur-sensorer.

    • Like 1
  5. 6 minutter siden, Armas skrev:

    Kan jeg starte fra scratch med ny inkludering av alle noder,  uten at alle eventer i HS må settes opp på nytt?

    Når du ekskluderer/inkluderer noder så vil de få ny RefID, og dermed bli oppfattet som helt nye noder - og må derfor legges inn i eventer helt på nytt.
    Men det er mulig det kan gå an å få lurt det til på et vis med "Replace Node" - det har jeg ikke testet.

    • Thanks 1
  6. Jeg har tre stykker som ligger og venter på meg på posten - de skal monteres neste uke. De ble kjøpt på tilbud for noen uker siden hos en gigantisk norsk el-butikk, og de går raskt i retur om de trøbler det til for meg.

  7. Poenget er at du kan overstyre alt. Du kan enkelt få nattsenking, skru den av når du skal på ferie, samkjøre med andre varmekilder etc.
    Du kan også bruke hvilken som helst temperatursensor til å styre den, ikke bare en som sitter inne i selve ovnen.

     

    Og så er det jo dyrere, mer som kan gå åt skogen - og  mye mer gøy :D

  8. Aeotec Multisensor 6 har fungert bra for min del i noen år, men det er litt hensyn å ta.
    Det er en stor fordel om du greier å unngå å ha de på batteri, iallefall om de står et sted hvor det er mye bevegelse.
    De kan ikke stå ute i vær og vind. Den ene min står oppunder taket i et vindfang, den andre står oppe under en terrasse, og det fungerer fint. Men de tåler ikke vann rett på, så da jeg skulle høytrykkspyle huset så tok den ene kvelden. Begge gangene...
    Unngå at de står med sol direkte på. Jeg har mistanke om at direkte sol har tatt knekken på en slik at den ikke detekterer bevegelse lenger.

  9. Jeg kan si meg enig i problemene med den innebygde romføleren. Den gjorde det svært vanskelig å ha kontroll på disse termostatene - i tillegg var det umulig å ha noen tiltro til temperaturen som sto på displayet.
    "Du altså - nå er det bare 17 grader i stua! - Jeg fryser"
    "Nei nå skal du høre - det er egentlig 21 grader, men kompensasjonen i den interne romføleren..."

    Jeg satte på en ekstern romføler, og alt ble så mye enklere ?

  10. Min versjon brukes til å beregne både innendørs og utendørs temperatur - derfor vil du finne variabler "Indoor...." og "Outdoor..."
    Du trenger ikke bruke begge, siden de blir kalt med forskjellige input parameter.

    Advarsel:
    dette er ikke helt plug&play, men jeg har forsøkt å gjøre det litt brukervennlig iallefall. Det kreves at du vet hvordan du legger inn et script, og litt om hvordan du editerer det for å tilpasses ditt bruk. Det er testet på Linux, og ikke forsøkt kjørt på Windows.

     

    Du kan først lage ett virtuelt device som du får gjennomsnittstemperaturen skrevet ut til. (Du kan gjerne lage to - ett for Standard avviket også, dersom du ønsker det - men det er ikke nødvendig) Det er forsåvidt ikke påkrevd å ha noe "out-device" - i så fall skrives det bare ut i loggen.

     

     

    Sett son "Status Only Device" (ikke påkrevd - bare for å unngå å få "kontroller-knapper")

    virtualTemp3.JPG.1b0b563715af47bc7272d0ec36332faf.JPG

     

    Noter deg "Reference ID" - dette skal du legge inn i scriptet

    virtualTemp4.JPG.5dd0424c2690d2184a2dd1a8e6d89ce1.JPG

     

    Formatere output.

    virtualTemp5.JPG.c172f40c933f36608cb0e2050e026554.JPG

     

     

    Og slik startes scriptet - knock yourself out med andre triggere om du vil ?

    virtualTemp2.JPG.8ffd3aa7e10c7b467b23f25769032166.JPG

     

     

    Spoiler
    
    ' TempAverager.vb, v. 1.2
    ' Input param: location, as defined further down the script.
    ' In this example location can be "indoor" or "outdoor"
    '   HSv, Feb. 2019
    
    
    Public module GlobalVars
      public shared infoLog  as boolean = true      ' Log whats happening...?
      public shared warnLog  as boolean = true      ' Log warnings...? (you really should!)
      public shared debugLog as boolean = false     ' Log a bit more...?
    end module
    
    public sub Main(ByVal _params as Object)
      ' Enter the device ref. for the sensors you want to use,
      ' and enter a calibration value if needed:
      '     '0'   means the thermometer is ~correct
      '     '-1'  means it seems to show 1 deg more than the actual temperature
      '     '0.5' means it seems to show half a deg less than the actual temperature
      ' The script demands that you enter the parameters, one for each sensor, even if it is zero.
      ' On a general note - be careful to use calibrations, unless you are quite sure it is valid.
      ' After all - this script is meant to average out several un-certain values :-)
    
      dim location as string = _params.Tostring
    
      dim Sensor() as integer       ' ref ID for temp. sensors, as found in HomeSeer
      dim Calibr() as integer       ' Calibration for each sensor.
      dim devAvg   as integer       ' ref ID for Average tenp dev. (0 means don't save to any device)
      dim devStdev as integer       ' ref ID for StDev (0 means don't save to any device)
      dim LogID    as string        ' Identifier for the log
      dim oldish   as integer       ' mins - how old before we only let it count half? (0 means use all data)
      dim tooOld   as integer       ' mins - how old before we scrap the data? (0 means use all data)
    
      ' When input parameter = "indoor"A (i.e. location is "indoor")
      dim IndoorSensor()  as integer = {  85,   80, 739, 745, 742, 754, 704, 940}
      dim IndoorCalibr()  as integer = {-0.7, -0.5,   0,   0,   0,   0,   0,   0}
      dim IndoordevAvg    as integer = 951
      dim IndoordevStdev  as integer = 0
      dim IndoorLogID     as string  = "Indoor Temp"
      dim Indooroldish    as integer = 60
      dim IndoortooOld    as integer = 120
    
      ' When input parameter = "outdoor"
      dim OutdoorSensor() as integer = { 874, 494, 748}
      dim OutdoorCalibr() as integer = {   0,   0,   0}
      dim OutdoordevAvg   as integer = 978
      dim OutdoordevStdev as integer = 0
      dim OutdoorLogID    as string  = "Outdoor Temp"
      dim Outdooroldish   as integer = 60
      dim OutdoortooOld   as integer = 120
    
      select case location
        case "indoor"
          Sensor   = IndoorSensor
          Calibr   = IndoorCalibr
          devAvg   = IndoordevAvg
          devStdev = IndoordevStdev
          LogID    = IndoorLogID
          oldish   = Indooroldish
          tooOld   = IndoortooOld
        case "outdoor"
          Sensor   = OutdoorSensor
          Calibr   = OutdoorCalibr
          devAvg   = OutdoordevAvg
          devStdev = OutdoordevStdev
          LogID    = OutdoorLogID
          oldish   = Outdooroldish
          tooOld   = OutdoortooOld
        case else
          Logging("Temp. averager", "warn", "Location '" & location & "' does not exist")
          exit sub
      end select
    
            ' Info:  85  = Living room thermostat
            '        80  = Hallway thermostat
            '       739  = Sensor 433 Stue 1 Temp.
            '       745  = Sensor 433 Stue 2 Temp.
            '       742  = Sensor 433 Kjøkken Temp.
            '       754  = Living room Couch/TV Sensor
            '       704  = Kitchen sensor
            '       940  = Bookshelf sensor
    
            '       874  = Backyard sensor
            '       494  = Entrance sensor
            '       748  = Sensor 433 Back yard
            '      1019  = WeatherXML, St. Johannes
    
    
    
    ' ---------------------------------------------------
    '  There should not be anything to change below here
    ' ---------------------------------------------------
    
      ' Negative time...? You ain't Cristopher Lloyd!
      ' ...or more than i year(ish)...? - I consider that "all sensors at all times"
      if (oldish < 0) orelse (oldish > 530000) then oldish = 0
      if (tooOld < 0) orelse (tooOld > 530000) then tooOld = 0
      if (oldish > tooOld) andalso (tooOld > 0) then oldish = tooOld
    
      ' A few declarations
      dim numSensors       as integer = Sensor.GetLength(0)
      dim Temp(numSensors) as decimal
      dim LastUpd          as DateTime
      dim deviceName       as string
      dim averageTemp      as decimal = -1
      dim StandardDev      as decimal = -1
      dim sumTemp          as decimal
      dim sumDeviation     as decimal
      dim samples          as decimal
    
      ' Collect data
      ' --------------------------------------------------------------
    
      ' Loop through all the sensors
      for i as integer = 0 to (numSensors - 1)
        if hs.DeviceExistsRef(Sensor(i)) then
          Temp(i)     = hs.DeviceValueEx(Sensor(i)) + Calibr(i)             ' DeviceValueEx gives me the decimal value :-)
          dim currentTemp as string   = Temp(i).ToString
          dim LastUpd     as DateTime = hs.DeviceLastChangeRef(Sensor(i))   ' What time was the dev. last updated?
          dim timeDiff    as TimeSpan = (Date.Now - LastUpd)                ' ...how long ago is that?
          dim addonText   as string
    
          ' Prettify the timediff - i.e. remove everything after the last ".", which are millisecs
          dim myts       as string = timeDiff.ToString
          dim timestring as string = myts.Substring(0, myts.LastIndexOf("."))
    
          ' Check if it is too long since the device-value was updated
          if (timeDiff.TotalSeconds > tooOld*60) andalso (tooOld > 0) then                  ' Too old? - junk it!
            addonText = "Age: " & timestring & " > " & tooOld & " min. - Disqualified"
            Temp(i) = -1000
          else if (timeDiff.TotalSeconds > oldish*60) andalso (oldish > 0) then             ' Almost too old?
            addonText = "Age: " & timestring & " > " & oldish & " min. - half weight"
            sumTemp += (Temp(i) / 2)
            samples += 0.5
          else                                                                              ' Not old at all :-)
            addonText = "Age: " & timestring
            sumTemp += Temp(i)
            samples += 1
          end if
    
          ' Do we want detailed logging...?
          deviceName = hs.GetDeviceByRef(Sensor(i)).name(hs)
          Logging(LogID, "debug", "Device " & Sensor(i) & ", " & deviceName & ": " & currentTemp & "°C - " & addonText)
        else
          Logging(LogID, "warn", "Device " & Sensor(i) & " does not exist")
        end if
      next
    
      ' Data in 'da house - lets do the math and show what we got!
      ' --------------------------------------------------------------
    
      ' Avearege - do we have any data to calculate it?
      if samples > 0 then
        ' Average temperature (with 2 decimals)
        ' but don't write it to the device yet, as we want to calculate StDev first
        averageTemp = Math.Round((sumTemp / samples), 2)
    
        ' Do some calculations for the StDev.
        dim counter as integer = 0
        for i as integer = 0 to (numSensors - 1)
          if Temp(i) > -1000 then
            sumDeviation += (Temp(i) - averageTemp)^2
            counter += 1
          end if
        next
    
        ' Standard deviation - but only if there is any data
        if counter > 0 then
        ' Standard deviation (with two decimals)
          StandardDev = Math.Round(Math.Sqrt(sumDeviation / counter), 2)
          ' write the standard deviation to the StDev device - if we have one defined and it exists
          if devStdev = 0 then
            Logging(LogID, "debug", "No device defined for StDev")
          else
            if (not hs.DeviceExistsRef(devStdev)) then
              Logging(LogID, "warn", "StDev device " & devStdev & " does not exist")
            else
              hs.SetDeviceValueByRef(devStdev, CStr(StandardDev), True)
            end if
          end if
        else
          Logging(LogID, "warn", "Not enough valid data to calculate StDev")
        end if
    
        ' Write average to the device - if there is an existing device defined.
        ' (... now that we also have the StDev and can make a proper deviceString)
        dim devString as string = averageTemp & "°C (StDev: " & StandardDev & "°C - " & samples & " samples)"
        if devAvg = 0 then
          Logging(LogID, "warn", "No device defined for average temp")
        else
          if (not hs.DeviceExistsRef(devAvg)) then
            Logging(LogID, "warn", "Avg.temp device " & devAvg & " does not exist")
          else
    
            hs.SetDeviceValueByRef(devAvg, CStr(averageTemp), True)
            hs.SetDevicestring(devAvg, CStr(devString), True)
          end if
        end if
    
        ' Do we want any logging?
        Logging(LogID, "debug", "Sum: " & sumTemp & " - Samples: " & samples )
        Logging(LogID, "info", devString)
      else
        Logging(LogID, "warn", "Not enough valid data to calculate average temp")
      end if
    
    end sub
    
    ' Routine for writing to the log
    Sub Logging(ByVal LogID as string, ByVal msgType as String, ByVal msg as string)
      dim msgComplete as string
      dim writetolog as boolean = false
    
      select case msgType
        case  "info"
          if GlobalVars.infoLog then
            msgComplete = "Info: " & msg
            writetolog = true
          end if
    
        case  "debug"
          if GlobalVars.debugLog then
            msgComplete = "Debug: " & msg
            writetolog = true
          end if
    
        case  "warn"
          if GlobalVars.warnLog then
            msgComplete = "Warning: " & msg
            writetolog = true
          end if
    
        case else
          msgComplete = "Msgtype '" & msgType & "' undefined"
          writetolog = true
      end select
    
      if writetolog then hs.Writelog (LogID, msgComplete)
    
    end sub
    
    ' That's all folks!
    

     

     

    Til slutt må du editere scriptet, slik at du bruker de Ref. ID som gjelder for dine sensorer. Du kan bruke så mange eller så få du vil - du bare forlenger/forkorter array'ene som det passer.

    Du kan også legge inn andre verdier for når du vil tillegge sensoren halv vekt, og for når du vil forkaste verdien.

    Jeg håper dette kan være til hjelp for noen, og at beskrivelsen/forklaringen min ikke er helt på bærtur. Koden er helt sikkert ikke optimal, men det får stå sin prøve. Utregningen av standardavvik er heller ikke helt korrekt, men "riktig nok" for mitt bruk.

     

    For ordens skyld - jeg bruker ikke noe device for standardavvik, og derfor er refID der satt til null. Om du ønske, så lager du en device og legger inn refID i stedet for null.

     

    • Like 3
  11. Jeg sliter med det samme - jeg har åpen løsning med stue, gang og kjøkken og jeg mener jeg har 8 sensorer tilsammen som gir meg temperatur. Jeg endte med å skrive et script som gir meg en snitt-temperatur av disse, og som også tar hensyn til om noen av de går offline eller har for gamle verdier.
    Jeg bruker det samme scriptet for utetemperatur - der har jeg vel tre sensorer på forskjellige sider av huset.

    Scriptet skriver til to virtuelle devicer i HomeSeer, som igjen kan brukes som input til andre ting.

     

    virtualTemp.JPG.a66a6dd595ca16fca33a3e46029105d3.JPG

     

    Dersom det er noen interesse for det kan jeg se om jeg ikke får lagt ut scriptet her.

    • Like 3
  12. Velkommen ?

    Jeg har tre stykker av den første (Z-TRM), og har hatt de noen år. Jeg har helt frem til nå brukt den med den interne romføleren, men har slitt ganske mye med at den er veldig unøyaktig. De har nok ikke greid å kompensere skikkelig for varmeutviklingen inne i termostaten.
    For et par uker siden så kjøpte jeg derfor eksterne romfølere, og det er en helt ny verden. Nå holder de romtemperaturen i stue og gang veldig nøyaktig.
    På badet derimot har jeg ikke ekstra romføler, i og med at der bruker jeg kun gulvføleren til å styre temperaturen. Jeg vet ikke om det er godt nok for alle, men for min del så fungerer den perfekt.

    Jeg skulle svært gjerne hatt den med måling av strømforbruk, men siden jeg også har sett at noen sliter litt med de, så avventer jeg litt med innkjøp av de. Men om jeg ikke hadde hatt noe og skulle gå til førstegangsinnkjøp, så hadde jeg nok gått for Z-TRM2fx og satset på at ting går i orden.

  13. 56 minutter siden, Moskus skrev:

    Det lar seg ikke avbryte.

    Godt poeng - om solskinnsuret starter, og jeg står med en gang og skrur lyset på fullt med veggbryteren (eller forteller Alexa at jeg skal sove lenger...) så vil jeg jo at scriptet skal stoppe!
    Ny versjon kommer om ikke lenge ?

  14. 4 timer siden, Moskus skrev:

    Legg inn koden i posten din. Det er enklere å legge inn scripts med copy/paste enn å måtte kopiere en fil til riktig sted. :)

    Nailed it! ?

    • Like 1
  15. Jeg satt og kikket på det - ser at du legger inn som skjult tekst - ser mye penere ut.
    Så da er spørsmålet - hvordan legger jeg koden inn i posten på en elegant måte...?

     

     

    Det kan nok generere en del trafikk. Om du ikke endrer på det så vil det maks sende 4 kommandoer pr. sec.
    Men om du endrer Waittime i scriptet til f.eks 1000, så vil den sende kun hvert sekund, og justere for det.

    I.e. om du har Waittime på 250, og dimmer fra 0 til 16 på 4 sec, så sender den 4 ganger pr sec i step på 1%
    Om du endrere Waitime til 1000, så vil den sende hvert sec, i step på 4%

    Om du vil bruke det til gradvis å øke lyset på soverommet, så vil du kanskje bare øke med step på 1% hvert 30 sekund eller så, og da er det jo ikke mye trafikk - da sendes jo kommando bare hvert 30 sec ?

×
×
  • 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.