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

strips

Medlemmer
  • Innlegg

    96
  • Ble med

  • Besøkte siden sist

Hjemmeautomasjon

  • System
    HomeSeer

Nylige profilbesøk

Blokken for nylige besøkende er slått av og vises ikke for andre medlemmer.

strips sine prestasjoner

Portåpner

Portåpner (7/16)

  • Samarbeidspartner
  • Første innlegg
  • Reagerer godt
  • Samtalestarter
  • Uke én ferdig

Nylige merker

13

Nettsamfunnsomdømme

  1. Nok en tråd om backup av z-wave men et kjapt søk ga meg lite. Uansett et viktig tema. Er det skjedd noe nyutvikling eller noen nye produkter som tillater full backup/restore av en z-wave-pinne. Helst i Linux via kommandolinje eller scriptbart på en eller annen måte. Så lenge man kan kjøre automasjonssystemene i containere er det lett å ha en full (identisk) kopi av hele systemet som kan spinnes opp hvis noe galt skulle skje. Da er det bare Z-wave-pinnen som ikke har noen form for automatisk redundans. Aeotec har jo sin backup-software men det er Windows-programvare og er GUI-styrt. Eller har det kommandolinje? Noen som har kjørt denne programvaren i Linux med Wine eller annen software? Har ikke lyst å bruke en egen windows-lisens bare for dette.
  2. Hvis du har en 10m patchekabel og Pulse for hånden kan du bare koble til ved måleren og bruke telefonen som hotspot. Jeg kommer til å gjøre som deg en eller annen dag. Men om det bli neste uke eller neste måned vet jeg ikke. Kan ikke fatte at det ikke skal gå. Hvis måler ikke klarer å levere nok strøm så kobler du bare til den medfølgende mikro-usb-laderen.
  3. 10m er ikke stort. M-Bus-standarden skal kunne gå flere km med kabel. Så er neppe strømtrekket til en Pulse noe å tenkte på med 10m. Det er vel bare å teste.
  4. De gjør samme jobben men Nest-serien er nyere og vet ikke om det kommer mer og bedre funksjonalitet. Jeg ville tippe Google Home har bedre lyd en Nest Mini men Nest Mini skal ha fått bedre lyd en forgjengeren Google Home Mini. Jeg kan ikke se noen grunn til at du ikke kan bruke flere Google Home-enheter på Homeseer. Skal gå fint å blande. Du kan forsåvidt teste integrasjonen på telefonen først om du har Android. Usikker på Iphone.
  5. Hei, Jeg har lyst å kjøpe en haug av disse å bytte alle Fibaro/Qubino-dimmerene mine. WAF er ikke på topp med vippebrytere og impuls-fjærer. Ser at Z-Dim kan styre andre Z-dim men blir litt usikker når jeg leser dok om de kan styre andre dimmere som krever Multi Level. Det står at Z-Dim bruker Basic Set mellom flere Z-Dim. At den krever N-leder (3-wire) er helt innafor for min del selv om det er litt synd. Det begrenser noen muligheter. Må nok kjøpe en å teste litt først men det er vel andre her som har rukket å teste litt. Fungerer assosiasjon mot andre dimmere som Fibaro og Qubino? Stian
  6. Anbefaler ikke å ta backup med restore til en fungerende enhet. Det er en risiko at det ikke funger. Kjøp en ekstra dongle og forsøk restore til den. Så har du originalen å falle tilbake på hvis du har en del enheter du ikke ønsker å miste.
  7. Som @Moskus sier må du trykke på Update-knappen for å hente dem fra enheten. Til info er de kun lagret på selve enheten og de blir normalt ikke persistert i Homeseer. Men enheten må være våken. En enhet koblet til permanent strøm er alltid våken og der kan man bare klikke Update når man vil. Batteri-enheter har litt forskjellige måter å holde seg våkne. Les manualen. Feks. tror jeg det var Fibaro multisensor som sier en ting i manualen men synes ikke det alltid funket. Så her kan det være lurt å prøve seg litt frem i tillegg. Ha enheten så nære som Z-Wave-dongla som mulig. Det kan funke på avstand men er de på batteri er det ingen grunn til å ikke ta den med til dongla. Hvis alt går at skogen, resett/fjern enhet fra nettverket og legg til på nytt. De fleste enheter oppretter selv en assosiasjon til kontroller.
  8. Har tenkt litt mer. Ulempen med å legge på en ny ID før man persisterer er hvis man glemmer en verdi eller gjør feil så blir det lagret feil. Hvis man likevel skal ha en mapping så er det bedre å gjøre den etter persisteringen. Jeg kjenner jeg nærmer meg en Oracle Database ? Kanskje å skyte spurv med kanon men det er i hvert fell noe jeg kan. Så kan man alltids bytte ut en SQL-database med noe annet uten for mye styr senere. Er litt for enkelt å falle tilbake på det man kan. Lærer ikke like mye av det.
  9. Haha, det er en vei jeg ikke ønsker å gå. Hvis man kunne scripte 95% av den løsningen... Jeg kan ikke influxdb godt nok men lurer på å dra dette inn i en relasjonsdatabase. Der er det en lek i parken å lage en mappingtabell for enhetene. Så flytter jeg hele problemstillingen. Men en relasjonsdatabase trenger en ok datamodell. Er her influxdb er genialt. Bare dytte ting inn og så har du det der Jeg bruker et vb-script som dumper samtlige enheter ut til influxdb. En mulighet er å ha en fil med mapping til ønskede navn/ID. Ganske lett med en JSON-fil.
  10. Jeg har begynt å logge ALT til influxdb for å kunne grafe litt i Grafana. Nå benytter jeg Reference ID på enheten for å identifisere den. Den er egentlig litt dum å bruke da den blir byttet ut hvis jeg legger til en enhet på nytt. Hva er det beste / smarteste å bruke. Ideelt sett skulle jeg gjerne hatt ett felt man kan selv redigere men gjerne kan være forhåndsutfylt. De feltene jeg kan se er Reference ID - ikke aktuell da den ikke kan endres Device Name - absolutt ett alternativ hvis jeg klarer å bli enig med meg selv om en fast standard og alle må ha unike navn. Her er jeg i konflikt mellom å ha et kort og enkelt navn og langd beskrivende navn men unikt. Code - En mulighet. Er det mulig å endre denne på alle type enheter (utenom enheter som bruker dette som intern-adressering). Address - Igjen en mulighet men tipper noen type enheter benytter denne å lagre sin ID. Ser nå at Z-Wave får populert Code og Address. Usikker på om det var sånn før og men tipper det kom med siste beta Z-wave-plugin. De fjerner z-wave-databasen og har alle instillinger sammen med enheten. Så de utgår. Da står jeg kun igjen med Device name.
  11. Takker for tips @Moskus og @Guahtdim Enig at det er penere og kjappere med en if (debug) men etter hvet som de vokste ble det sånn. Så er det veldig praktisk å bare lime inn en linje og endre teksten. Så det er med overlegg one-linere. Mulig det hadde blitt mer oversiktlig med sub-rutiner. Men for et så lite script er det lite vits. VB.Net er kun noe jeg tar i fordi jeg må. Skulle helst gjort dette i C# og øvd meg på det men er så få eksempler på C#-kode for Homeseer. Ellers hjelper det å bruke Visual Studio med tenScripting for debugging.
  12. Akkurat ferdig testet et script for å styre vår Systemair SAVE VTR 300 via Modbus. Det er nok tråder om Modbus her at jeg gidder å snakke om det nå Scriptet leser to Netatmo innemoduler sin Co2, temp og relativ fuktighet. Ut i fra disse verdiene så settes aggregatet i auto som standard, crowded (party) eller refresh (boost) basert på noen grensetall. Takk til @Moskus og @Hillmar for formel for absolutt fuktighet Forenklede regler Brannalarm: TODO Hvis trykkvakt eller spesialmodus (kjøkkenhette, vedovn, sentralstøvsuger) er aktivert skal vi ikke endre noe. Hvis stue eller bad har for høy Co2 så øker luftmegden først til Crowded så Boost. Hvis bad har høyere absolutt fuktighet en stuen med en viss margin så økes luftmengden til Boost Hvis ingen av regelene over treffer eller Co2 er under en terskel så sett til Auto. For å bruke scriptet må du endre alle variablene i toppen som begynner med dev. Det er 3 regel-blokker lengre nede som dekker mitt behov og kan dupliseres for flere rom eller fjernes hvis man ikke har nok sensorer. Class VentilatorControl Public Sub Main(ByVal Parms As Object) Dim Debug As Boolean = True Dim logName As String = "VentilatorControl" Console.WriteLine("Started: " & logName) If Debug Then hs.WriteLog(logName, "Started") Dim fireAlarm As Boolean = False ' for the future when I get a fire alarm integrated Dim devBath1_RH As Integer = 820 ' netatmo bad innemodul Dim devBath1_T As Integer = 817 ' netatmo bad innemodul Dim devBath1_Co2 As Integer = 821 ' netatmo bad innemodul Dim devLivingRoom1_RH As Integer = 788 ' netatmo stue hovedmodul Dim devLivingRoom1_T As Integer = 783 ' netatmo stue hovedmodul Dim devLivingRoom1_Co2 As Integer = 787 ' netatmo stue hovedmodul Dim devVentModeGet As Integer = 774 ' systemair Modbus Dim devVentModeSet As Integer = 773 ' systemair Modbus Dim valueLivingRoom1_T As Double = hs.DeviceValueEx(devLivingRoom1_T) Dim valueLivingRoom1_Co2 As Integer = hs.DeviceValue(devLivingRoom1_Co2) Dim valueLivingRoom1_RH As Double = hs.DeviceValueEx(devLivingRoom1_RH) Dim valueLivingRoom1_AH As Double = AbsHumidity(valueLivingRoom1_RH, valueLivingRoom1_T) Dim valueBath1_T As Double = hs.DeviceValueEx(devBath1_T) Dim valueBath1_Co2 As Integer = hs.DeviceValue(devBath1_Co2) Dim valueBath1_RH As Double = hs.DeviceValueEx(devBath1_RH) Dim valueBath1_AH As Double = AbsHumidity(valueBath1_RH, valueBath1_T) Dim humidDeltaBath1 As Double = Math.Round(valueBath1_AH / valueLivingRoom1_AH, 2) Dim valueVentModeGet As Integer = hs.DeviceValue(devVentModeGet) Dim ventModeGetCodeArray(12) As String ventModeGetCodeArray(0) = "Auto" ventModeGetCodeArray(1) = "Manual" ventModeGetCodeArray(2) = "Crowded" ventModeGetCodeArray(3) = "Refresh" ventModeGetCodeArray(4) = "Fireplace" ventModeGetCodeArray(5) = "Away" ventModeGetCodeArray(6) = "Holiday" ventModeGetCodeArray(7) = "Cooker Hood" ventModeGetCodeArray(8) = "Vacuum Cleaner" ventModeGetCodeArray(9) = "CDI1" ventModeGetCodeArray(10) = "CDI2" ventModeGetCodeArray(11) = "CDI3" ventModeGetCodeArray(12) = "PressureGuard" Dim ventModeSetCodeArray(7) As String ventModeSetCodeArray(0) = "None" ventModeSetCodeArray(1) = "Auto" ventModeSetCodeArray(2) = "Manual" ventModeSetCodeArray(3) = "Crowded" ventModeSetCodeArray(4) = "Refresh" ventModeSetCodeArray(5) = "Fireplace" ventModeSetCodeArray(6) = "Away" ventModeSetCodeArray(7) = "Holiday" ' Co2 threshold levels have a severity of 3 levels Dim co2ThresholdNormal As Integer = 550 ' less than Dim co2ThresholdHigh As Integer = 700 ' higher than Dim co2ThresholdMax As Integer = 900 ' higher than ' relative humididy threshold levels have a severity of 2 levels Dim humidDeltaThresholdNormal As Double = 1.1 ' less than Dim humidDeltaThresholdHigh As Double = 1.4 ' hihger than If Debug Then hs.WriteLog(logName, "valueLivingRoom1_T: " & valueLivingRoom1_T) If Debug Then hs.WriteLog(logName, "valueLivingRoom1_Co2: " & valueLivingRoom1_Co2) If Debug Then hs.WriteLog(logName, "valueLivingRoom1_RH: " & valueLivingRoom1_RH) If Debug Then hs.WriteLog(logName, "valueLivingRoom1_AH: " & valueLivingRoom1_AH) If Debug Then hs.WriteLog(logName, "valueBath1_T: " & valueBath1_T) If Debug Then hs.WriteLog(logName, "valueBath1_Co2: " & valueBath1_Co2) If Debug Then hs.WriteLog(logName, "valueBath1_RH: " & valueBath1_RH) If Debug Then hs.WriteLog(logName, "valueBath1_AH: " & valueBath1_AH) If Debug Then hs.WriteLog(logName, "humidDeltaBath1: " & humidDeltaBath1) If Debug Then hs.WriteLog(logName, "Current Ventilator Mode: " & ventModeGetCodeArray(valueVentModeGet)) If Debug Then hs.WriteLog(logName, "co2ThresholdNormal: " & co2ThresholdNormal) If Debug Then hs.WriteLog(logName, "co2ThresholdHigh: " & co2ThresholdHigh) If Debug Then hs.WriteLog(logName, "co2ThresholdMax: " & co2ThresholdMax) ' assign index from ventModeSetCodeArray Dim normalVentilatorGetMode As Integer = Array.IndexOf(ventModeGetCodeArray, "Auto") Dim normalVentilatorSetMode As Integer = Array.IndexOf(ventModeSetCodeArray, "Auto") Dim highVentilatorGetMode As Integer = Array.IndexOf(ventModeGetCodeArray, "Crowded") Dim highVentilatorSetMode As Integer = Array.IndexOf(ventModeSetCodeArray, "Crowded") Dim maxVentilatorGetMode As Integer = Array.IndexOf(ventModeGetCodeArray, "Refresh") Dim maxVentilatorSetMode As Integer = Array.IndexOf(ventModeSetCodeArray, "Refresh") Dim ventilatorSetLevel As Integer Dim ventilatorSetModeArray(3) As String ventilatorSetModeArray(1) = "Auto" ventilatorSetModeArray(2) = "Crowded" ventilatorSetModeArray(3) = "Refresh" If (fireAlarm) Then ' If fire alarm is true we stop ventilator or set it to minimum ' TODO identify best setting to disable the ventilator ' set mode manual ' set manual fan level to hs.WriteLog(logName, "Firealarm not implemented. Ventilator is in " & ventModeGetCodeArray(valueVentModeGet) & " mode.") ElseIf (valueVentModeGet >= Array.IndexOf(ventModeGetCodeArray, "Cooker Hood")) Then ' If ventilator is in get mode 7 (Cooker Hood) or higher we do nothing because the system is not in balance hs.WriteLog(logName, "Ventilator is in " & ventModeGetCodeArray(valueVentModeGet) & " mode, we do nothing!") Else ' Always start with normal as default level ventilatorSetLevel = 1 ' Co2 in living room 1 If (valueLivingRoom1_Co2 > co2ThresholdMax) And (ventilatorSetLevel < 3) Then ventilatorSetLevel = 3 If Debug Then hs.WriteLog(logName, "If (valueLivingRoom1_Co2 > co2ThresholdMax) And (ventilatorSetLevel < 3) Then, setting ventilatorSetMode to " & ventilatorSetLevel) ElseIf (valueLivingRoom1_Co2 > co2ThresholdHigh) And (ventilatorSetLevel < 2) Then ventilatorSetLevel = 2 If Debug Then hs.WriteLog(logName, "ElseIf (valueLivingRoom1_Co2 > co2ThresholdHigh) And (ventilatorSetLevel < 2) Then, setting ventilatorSetMode to " & ventilatorSetLevel) ElseIf (valueLivingRoom1_Co2 <= co2ThresholdNormal) And (ventilatorSetLevel = 1) Then If Debug Then hs.WriteLog(logName, "ElseIf (valueLivingRoom1_Co2 <= co2ThresholdNormal) And (ventilatorSetLevel = 1) Then, ventilatorSetLevel = 1") End If ' Co2 in bath 1 If (valueBath1_Co2 > co2ThresholdMax) And (ventilatorSetLevel < 3) Then ventilatorSetLevel = 3 If Debug Then hs.WriteLog(logName, "If (valueBath1_Co2 > co2ThresholdMax) And (ventilatorSetLevel < 3) Then, setting ventilatorSetMode to " & ventilatorSetLevel) ElseIf (valueBath1_Co2 > co2ThresholdHigh) And (ventilatorSetLevel < 2) Then ventilatorSetLevel = 2 If Debug Then hs.WriteLog(logName, "ElseIf (valueBath1_Co2 > co2ThresholdHigh) And (ventilatorSetLevel < 2) Then, setting ventilatorSetMode to " & ventilatorSetLevel) ElseIf (valueBath1_Co2 <= co2ThresholdNormal) And (ventilatorSetLevel = 1) Then If Debug Then hs.WriteLog(logName, "ElseIf (valueBath1_Co2 <= co2ThresholdNormal) And (ventilatorSetLevel = 1) Then, ventilatorSetLevel = 1") End If ' humidity in bath 1 If (humidDeltaBath1 > humidDeltaThresholdHigh) And (ventilatorSetLevel < 3) Then ventilatorSetLevel = 3 If Debug Then hs.WriteLog(logName, "If (humidDeltaBath1 > humidDeltaThresholdHigh) And (ventilatorSetLevel < 3) Then, setting ventilatorSetMode to " & ventilatorSetLevel) ElseIf (humidDeltaBath1 <= humidDeltaThresholdNormal) And (ventilatorSetLevel = 1) Then If Debug Then hs.WriteLog(logName, "ElseIf (humidDeltaBath1 <= humidDeltaThresholdNormal) And (ventilatorSetLevel = 1) Then, ventilatorSetLevel = 1") End If ' If the current ventilator mode is at the same mode/level we want to set then we do not have to do anything If (ventModeGetCodeArray(valueVentModeGet) = ventilatorSetModeArray(ventilatorSetLevel)) Then If Debug Then hs.WriteLog(logName, "ventModeGetCodeArray(valueVentModeGet) = " & ventModeGetCodeArray(valueVentModeGet)) If Debug Then hs.WriteLog(logName, "ventilatorSetModeArray(ventilatorSetLevel) = " & ventilatorSetModeArray(ventilatorSetLevel)) If Debug Then hs.WriteLog(logName, "If (ventModeGetCodeArray(valueVentModeGet) [" & ventModeGetCodeArray(valueVentModeGet) & "] = ventilatorSetModeArray(ventilatorSetLevel)[" & ventilatorSetModeArray(ventilatorSetLevel) & "] ) Then, no changes in ventilatorSetMode") Else ' Set ventilator device devVentModeSet to index of ventModeSetCodeArray where value is ventilatorSetLevel translated thru ventModeSetCodeArray If Debug Then hs.WriteLog(logName, "If Not (ventModeGetCodeArray(valueVentModeGet) [" & ventModeGetCodeArray(valueVentModeGet) & "] = ventilatorSetModeArray(ventilatorSetLevel)[" & ventilatorSetModeArray(ventilatorSetLevel) & "] ) Then, set ventilator to " & ventilatorSetModeArray(ventilatorSetLevel)) If Debug Then hs.WriteLog(logName, "ventilatorSetLevel = " & ventilatorSetLevel) If Debug Then hs.WriteLog(logName, "ventilatorSetModeArray(ventilatorSetLevel) = " & ventilatorSetModeArray(ventilatorSetLevel)) If Debug Then hs.WriteLog(logName, "before set devVentModeSet to " & Array.IndexOf(ventModeSetCodeArray, ventilatorSetModeArray(ventilatorSetLevel))) If Debug Then hs.WriteLog(logName, "hs.CAPIControlHandler(hs.CAPIGetSingleControl(" & devVentModeSet & ", True, " & ventilatorSetModeArray(ventilatorSetLevel) & ", False, False))") hs.CAPIControlHandler(hs.CAPIGetSingleControl(devVentModeSet, True, ventilatorSetModeArray(ventilatorSetLevel), False, False)) hs.WriteLog(logName, "set devVentModeSet to " & Array.IndexOf(ventModeSetCodeArray, ventilatorSetModeArray(ventilatorSetLevel))) End If End If End Sub Function AbsHumidity(ByVal relHumidity As Double, ByVal temp As Double) As Double ' Formula found here: ' https://www.hjemmeautomasjon.no/forums/topic/5896-konvertere-fra-relativ-til-absolutt-luftfuktighet/?do=findComment&comment=68448 AbsHumidity = Math.Round(6.112 * Math.E ^ ((17.67 * temp) / (temp + 243.5)) * relHumidity * 2.1674 / (273.15 + temp), 2) End Function End Class
  13. @Hillmar, Jeg savner at du poster formelen du implementerte i Homeseer Oppdatert: Glem det! Ser nå at @Moskus postet tidligere. Antar det er denne du endte opp med?
  14. Er det noen endringer i nettet siden det fungerte bra? Nye enheter, fjernet noe, flyttet på en enhet? Noe som har mistet strømmen og ramlet ut av mesh?
  15. Mener jeg fikk samme ID mellom to Z-stick.
×
×
  • 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.