Gå til innhold
GO_Nilsen

script til garasjeportåpner

Anbefalte innlegg

Hei,

 

Ønsker å bruke fibaroen til å styre garasjeport. Jeg trenger da et rele som kan pulse. Har kjøpt en fibaro relè switch. som er koblet til inngangen

på garasjeport åpneren. Er det noen som kan hjelpe meg å lage en virtual device, som har en knapp. Den knappen gir en puls på f.eks. 1sek.

Samme pulsen kjører port opp å ned.

 

Fin om noen kan hjelpe meg her =)

 

 

 

 

Del dette innlegget


Lenke til innlegg
Del på andre sider

Hvis du skal ha 1 sek puls, så trenger du ikke scripting, da kan du gjøre det i et event. :)

 

Kort fortalt hadde jeg gjort dette:

  1. Laget en virtuell device med der du konfigurerer "Åpne" som en "Status" (ihht HS-skolen del 6)
  2. Lag et Event med "Device Set to" som trigger, og velg den virtuelle devicen du nettopp laget. "Åpne" skal da velges som verdi.
  3. Action 1: Fibaro relé til "On"
  4. Action 2: Wait for 1 second
  5. Action 3: Fibaro relé til "Off"

 

Ferdig. :) 

Del dette innlegget


Lenke til innlegg
Del på andre sider

har  lagd en virtuial device.  Men er det noen måter å få brukt den i en scene? den kommer liksom ikke opp under device i menyen for scenes.

Del dette innlegget


Lenke til innlegg
Del på andre sider

Beklager, kan ikke nok om Home Center for å vite det. Burde jo dukket opp der, med mindre du ser på Z-wave spesifikke scener (men det tviler jeg på).

Del dette innlegget


Lenke til innlegg
Del på andre sider
10 minutter siden, GO_Nilsen skrev:

noen som vet når HomeSeer kommer på tilbud? =)

 

Sannsynligvis halv pris i mai. :) 

  • Like 1

Del dette innlegget


Lenke til innlegg
Del på andre sider

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å


  • Lignende innhold

    • Av Guahtdim
      Jeg begynte på dette prosjektet fordi jeg hadde glemt å følge med på trykkmåleren for varmtvann til radiatorene i huset. Rørleggeren som så at det var nesten ikke vann i systemet lurte på om jeg hadde veldig god råd siden jeg risikerte å ødelegge hele systemet.
      Klok av skade så begynte jeg å drodle opp en løsning for å kunne automatisere overvåkningen siden tanken og måleren er i ett rom jeg ikke går ofte inn i (og selv når jeg er der så glemmer jeg å sjekke status).
      Tidligere har jeg laget overvåkning av elektrisitetsmåleren på loftet og jeg begynte med en lignende løsning.
      Foran måleren monterte jeg ett wifi webkamera med ir (jeg gikk for DLink DCS932L, men her er det sikkert mange som fungerer like bra). Dette kameraet kan man sette opp til å sende via ftp. Jeg sender ett bilde til en ftp-server som jeg har på en windowsserver (den magiske serveren som drar alt her i huset). Det tas ett nytt bilde ca hvert 5 minutt og det overskriver det eksisterende bildet siden jeg ikke trenger noe historikk.
       

      "Råbilde"
       
      På serveren har jeg en windows service som følger med på folderen som bildet legges inn i. Ved en ny eller endret jpg-fil begynner denne servicen å jobbe. Jeg bruker her ett gratis bibliotek som heter OpenCv til å undersøke bildet. Jeg har valgt veien via templates, mens en som kan bildebehandling sikkert ville brukt forskjellige andre funksjoner. I første omgang leter jeg igjennom bildet etter selve måleren ved hjelp av en mal og "klipper" ut den hvis jeg finner den.
       

      "Målermal"
       
      Etter litt bildebehandling sitter jeg igjen med.
       

      "Måleren"
       
      Etter dette bruker jeg en mal basert på måler nålen i ønsket posisjon og tester mot utklippet bilde. Jeg roterer malen slik at jeg tester for alle 360 grader. Det "treffet" som har høyest sannsynlighet tas vare på og lagres ned i en database.
       

      "Mal for målernål i ønsket posisjon (rotasjon 0 grader)"
       
      For å få dette over i Homeseer så har windows servicen en liten webserver basert på NancyFx som har kun en side som vises på localhost. Her kommer data som en semikolon separert streng hvor man har datanavn=data. Jeg prøvde å gjøre dette litt bedre med json i starten, men ble stående fast og gikk for en enkel løsning hvor data kommer som en tekststreng. Mulig jeg skal se på dette ved en senere anledning, men det er ingen hast siden dette er noe som kun brukes lokalt på min server.
      CS-scriptet kjøres hvort 20 minutt og henter ut data fra windows service. Veldig enkle greier som henter ut rotasjon i grader, sannsynlighet og bildet det ble tatt fra sin dato/tid og dette legges inn i hardkodede deviceId (virtuelle devicer). (Og man må jo lage seg 3 devicer i Homeseer som skal motta verdiene)
      Jeg har en event som sjekker om rotasjonen er over +/-10 grader. Hvis det skjer så får jeg en melding på sms. 
       

      "Oversikt i Homeseer"
       
      Script for å hente tall fra windows service
       

      I tillegg er det en windows service som er veldig spesifikk for meg.
      Hvis det er interresse så kan jeg prøve å lage noe mer generelt som folk kan leke med.
    • Av Moskus
      Dette scriptet lar deg logge alle bevegelser til en device, slik at det blir enklere å se på web eller HStouch. Bevegelser (eller enhver hendelse) blir da logget slik.
       

       
      MotionLog.vb
      Public Sub Main(ByVal input As Object) Dim logDeviceRef As Integer = 1081 ' Update this Dim currentText As String = hs.DeviceString(logDeviceRef) Dim lines As System.Collections.Generic.List(Of String) If currentText.Contains("<br/>") Then lines = currentText.Split("<br/>").ToList Else lines = currentText.Split("<br>").ToList End If 'Removing empty lines and cleaing up strings For i As Integer = lines.Count - 1 To 0 Step -1 If lines(i).Trim = "" Then lines.RemoveAt(i) If lines(i).Contains("br/>") Then lines(i) = lines(i).Replace("br/>", "") If lines(i).Contains("br>") Then lines(i) = lines(i).Replace("br>", "") Next 'Remove the bottom entry if needed If lines.Count = 10 Then lines.RemoveAt(lines.Count - 1) 'Creating the device text Dim newText As String = Now.Date & " " & Now.ToLongTimeString & " - " & input.ToString If lines.Count > 0 Then newText &= "<br>" If lines.Count > 2 Then For i As Integer = 0 To lines.Count - 2 newText &= lines(i) & "<br>" Next ElseIf lines.Count = 2 Then newText &= lines(0) & "<br>" End If 'Adding the last lines without the HTML break newText &= lines(lines.Count - 1) 'Updating the device string hs.SetDeviceString(logDeviceRef, newText, True) 'hs.TriggerEvent("Restart SisteBeveglse timer") End Sub For hver bevegelsessensor har jeg da et event som blir trigget ved bevegelse (selvfølgelig! ), som i tillegg til å styre lys der det er nødvendig, kjører dette scriptet med sub Main og parameter med navnet på sensoren, som "Kjøkken" eller "Stue".
       
      I tillegg har jeg en timer som he ter "SisteBevegelse", som jeg resetter når dette skjer. Hvis du også vil bruke dette, må du opprette den timeren, lage et Event (som jeg har kalt "Restart SisteBevegelse timer" fordi det ikke finnes kode for å restarte den), og fjerne fnutten foran den nest siste linjen i koden.
       
       
      EDIT: Oppdatert slik at det blir penere i HStouch.  
    • Av Guahtdim
      For å teste meg litt så satte jeg igang med ett script (c#) for å hente badetemperaturer fra yr. Yr legger alle badetemperaturer ut som en xml fil på adressen http://om.yr.no/badetemperatur/badetemperatur.xml
      Jeg har laget en liten scriptsnutt som henter ned xml, plukker ut fylket. Løper igjennom alle temperaturer for fylket og gir ett snitt. Grunnen til at jeg kan ta for hele fylket er at så lenge jeg har fulgt med så har Østfold kun fått varsling for 2 steder og begge er på Jeløya. Og siden det er der jeg bor så tenkte jeg i utgangspunktet å ta snittet. Mulig jeg kommer til å flikke mer på scriptet etterhvert for i tillegg å plukke ut høyeste og laveste.
       
      Hva gjør man for å bruke dette scriptet?
       
      Først lager du en virtual device

       
      Og i den spesifiserer du ett navn, setter den som Status Only Device
       
       
      Setter grafikk hvis det interresserer deg

       
       
      Og til slutt går inn på advanced (jeg er usikker på om ID er laget idet man trykker for ny device eller om du må inn etter at du har lagret første gangen). Det som er viktig her er Reference ID.

       
      Legg til scriptet under i homeseer sin scriptkatalog (hos meg er den å finne i C:\Program Files (x86)\HomeSeer HS3\scripts). Filen må ha endelse/extension .cs. I mitt tilfelle har jeg kalt det YrBadetemperatur.cs som gir full path: C:\Program Files (x86)\HomeSeer HS3\scripts\YrBadetemperatur.cs
      using System; using System.Collections.Generic; using System.IO; using System.IO.Compression; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; using System.Xml; public object Main(object[] Parms) { int virtualDeviceId = 154; //Virtuell device reference id som man har definert for å legge inn tekstverdien fra yr string countyId = "01"; //Hvilket fylke man skal hente inn verdier fra string logName="GuahtdimYrBade";//Her kan man sette inn hva man vil. Det er første kolonne i loggen hs.WriteLog(logName,"Start Yr badetemp" ); System.Net.WebRequest webRequest = System.Net.WebRequest.Create(@"http://om.yr.no/badetemperatur/badetemperatur.xml"); System.IO.Stream content; System.Net.WebResponse response = webRequest.GetResponse(); //Håndtere gzip av content if (((System.Net.HttpWebResponse)response).ContentEncoding =="gzip") { content = new System.IO.Compression.GZipStream(response.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress); } else { content = response.GetResponseStream(); } System.IO.StreamReader reader = new System.IO.StreamReader(content); string strContent = reader.ReadToEnd(); if (strContent.Length > 0) { int startPoint = strContent.IndexOf("\n", StringComparison.InvariantCulture) + 1;//Fjerner første xml linje <?xml version="1.0" encoding="UTF-8"?> strContent = strContent.Substring(startPoint); System.Xml.XmlDocument xmlDocument = new System.Xml.XmlDocument(); xmlDocument.LoadXml(strContent); System.Xml.XmlNode ostfoldNode = xmlDocument.SelectSingleNode("//badetemp/badetemperaturer/county[@id='" + countyId + "']"); if (ostfoldNode != null) { System.Xml.XmlNodeList tempNodes = ostfoldNode.SelectNodes("//county[@id='" + countyId + "']/place/temperature"); if (tempNodes != null) { int totaltTemp = 0; int counter = 0; //Henter inn alle vanntemperaturer for fylket og gjør det mulig å lage snitt foreach (System.Xml.XmlNode tempNode in tempNodes) { System.Xml.XmlAttribute test = tempNode.Attributes["water"]; totaltTemp += int.Parse(test.Value); counter++; } decimal avgTemp =(decimal) (totaltTemp/counter); string badeTempString = "Vanntemperatur Jeløya(snitt): " + avgTemp.ToString("0.0") + "\u00B0C"; hs.SetDeviceString(virtualDeviceId,badeTempString,true); //string stringValue=hs.DeviceString(virtualDeviceId); //hs.WriteLog("From device", stringValue); hs.WriteLog(logName,badeTempString ); } } } hs.WriteLog(logName,"Done" ); return 0; } Etter dette bør du lage en event som tar seg av innhenting av verdier. Jeg har gjort det som bildet under viser

       
      Det er bare å komme med spørsmål og ønsker.
       
    • Av Moskus
      Lar deg sette en vilkårlig device som Root med vilkårlige devicer som Child Devices.
      Parameter: RooTID|child1ID,child2ID,etc
       
      Sub Main(ByVal params As String) Dim lines() As String = params.ToString.Split("|") Dim rootRef As Integer = lines(0) Dim children() As String = lines(1).Split(",") Dim rootDevice As Scheduler.Classes.DeviceClass = hs.GetDeviceByRef(rootRef) rootDevice.Relationship(hs) = HomeSeerAPI.Enums.eRelationship.Parent_Root Dim childDevice As Scheduler.Classes.DeviceClass For Each c As Integer In children childDevice = hs.GetDeviceByRef(c) rootDevice.AssociatedDevice_Add(hs, c) childDevice.Relationship(hs) = HomeSeerAPI.Enums.eRelationship.Child childDevice.AssociatedDevice_Add(hs, rootRef) Next End Sub  
    • Av Moskus
      To scripts som logger verdier til flate tekstfiler, med tidspunktet og verdien eller statusen separert med tab. Kan da enkelt limes inn i f.eks. Excel.
       
      LogValueToFile.vb
      Sub Main(parm As Object) Dim deviceRef As Integer = parm.ToString() Dim out As String = Now.ToShortDateString & " " & Now.ToLongTimeString & vbTab & hs.DeviceValueEx(deviceRef).ToString("f1") Try My.Computer.FileSystem.WriteAllText(hs.GetAppPath & "\Logs\" & deviceRef & ".txt", out & vbNewLine, True) Catch ex As Exception hs.WriteLog("LogValueToFile ERROR", ex.Message) End Try End Sub  
       
      Å hente status kan være verre, for det er flere måter å gjøre det på.
       
      LogStatusToFile.vb
      Sub Main(parm As Object) Dim deviceRef As Integer = parm.ToString() Dim out As String = Now.ToShortDateString & " " & Now.ToLongTimeString & vbTab & GetDeviceString(deviceRef) Try My.Computer.FileSystem.WriteAllText(hs.GetAppPath & "\Logs\" & deviceRef & ".txt", out & vbNewLine, True) Catch ex As Exception hs.WriteLog("LogStatusToFile ERROR", ex.Message) End Try End Sub Function GetDeviceString(ByVal DeviceRef As Integer) As String 'Henter device string fra HS Dim devstring As String = hs.DeviceString(DeviceRef) If devstring <> String.Empty Then Return devstring 'Henter devicestring directe fra CAPI-status, hvis den finnes devstring = hs.CAPIGetStatus(DeviceRef).Status If devstring <> String.Empty Then Return devstring 'Henter devicestring fra CAPI beskrivelse (basert på value) devstring = GetCapiString(DeviceRef) If devstring <> String.Empty Then Return devstring 'Henter devicestring fra device class Dim dev As Scheduler.Classes.DeviceClass = hs.GetDeviceByRef(DeviceRef) devstring = dev.devString(Nothing) If devstring <> String.Empty Then Return devstring Return "String not found for " & DeviceRef & ", value = " & hs.DeviceValueEx(DeviceRef) End Function Function GetCapiString(ByVal DeviceRef As Integer) As String For Each CAPI As HomeSeerAPI.CAPIControl In hs.CAPIGetControl(DeviceRef) If CAPI.ControlValue = hs.DeviceValue(DeviceRef) Then Return CAPI.Label.ToString Next Return String.Empty End Function  
      Kalles med device Ref som parameter.  
×