GĂ„ til innhold
  • Bli medlem
StĂžtt hjemmeautomasjon! đŸ„‡đŸ„ˆđŸ„‰

Anbefalte innlegg

Skrevet

NÄ som adax sitt api er Äpent, og siden vi har reine pluginfabrikken her pÄ forumet.  - Er det noen som vil ta fatt pÄ dette?

Jeg har dessverre ikke kunnskapen nok til Ä fÄ gjort det selv. 

 

Kan bistÄ med adax konto og tilgang til denne om noen vil se pÄ det.

Skrevet
57 minutter siden, Gjelsvik skrev:

Er det noen som vil ta fatt pÄ dette?

Ikke fÞr de fÄr den lokale APIen pÄ plass, iallfall. Orker ikke styre med flere skylÞsninger hvis jeg kan slippe...

Skrevet

Jeg vil helst ha/eie tingene selv for Ä gjÞre plugin prosjekter. 

Og det gÄr fort 10-20 timer i ren kodetid pÄ Ä lage ett slikt prosjekt selv om jeg nÄ har mye jeg kan "kopiere inn" fra andre prosjekter. 

Skrevet
22 hours ago, Guahtdim said:

Jeg vil helst ha/eie tingene selv for Ä gjÞre plugin prosjekter. 

Og det gÄr fort 10-20 timer i ren kodetid pÄ Ä lage ett slikt prosjekt selv om jeg nÄ har mye jeg kan "kopiere inn" fra andre prosjekter. 

SkjÞnner at det er lettere Ä ha tilgang til produktet fysisk. Kan sende deg en ovn om du vil jeg. 

 

Begynte pÄ utvikling av plugins for et par Är siden selv. Men fant aldri ut hvor man skriver 'call-back' altsÄ der du styrer devicene du lager via kontrollknapper i homeseer. 

 

Andre veien fikk jeg til. AltsÄ spÞrre api om enheter, lage Devices i hs, og sÄ spÞrre apiet om verdiene de forskjellige enhetene har. 

  • Like 2
Skrevet
PĂ„ 12.9.2020 den 10.55, Gjelsvik skrev:

Men fant aldri ut hvor man skriver 'call-back' altsÄ der du styrer devicene du lager via kontrollknapper i homeseer. 

SetIOMulti() :) 

Skrevet
20 hours ago, Moskus said:

SetIOMulti() :) 

 

NĂ„ er vi litt utenfor topic her, men la oss ta et tenkt tilfelle.

 

Hvor "skriver" jeg koden/funksjonene som hver kontrollknapp skal trigge.

la oss si at jeg har to childdevicer, en for hver varmeovn. Disse har jeg  mulighet til Ä sette temperatur pÄ.

 

Apiet kan vi tenke oss er noe slik som dette "http://server/api/temp?id=1234&temp=23,5"

 

Hvor i koden tar jeg med meg deviceID inn i funkjonen som setter temperaturen mot apiet til adax? Denne deviceid er da ikke homeseer sin, men en man fÄr nÄr man poller apiet. Den bÞr jo lagres pÄ devicen i et skjult felt eller noe.

 

 

Skrevet
31 minutter siden, Gjelsvik skrev:

NĂ„ er vi litt utenfor topic her, men la oss ta et tenkt tilfelle.

Vi er vel bang smack on topic. ;)

 

31 minutter siden, Gjelsvik skrev:

Hvor "skriver" jeg koden/funksjonene som hver kontrollknapp skal trigge.

la oss si at jeg har to childdevicer, en for hver varmeovn. Disse har jeg  mulighet til Ä sette temperatur pÄ.

 

Apiet kan vi tenke oss er noe slik som dette "http://server/api/temp?id=1234&temp=23,5"

 

Hvor i koden tar jeg med meg deviceID inn i funkjonen som setter temperaturen mot apiet til adax? Denne deviceid er da ikke homeseer sin, men en man fÄr nÄr man poller apiet. Den bÞr jo lagres pÄ devicen i et skjult felt eller noe.

Jeg hadde delt det opp i forskjellige klasser for Ä hÄndtere det, men det er SetIOMulti() som hÄndterer alle knappetrykker pÄ devicer som tilhÞrer plugin'en.

 

Du fÄr sendt en deviceRef og en kommando, og bruker da dette videre. Hvordan du hÄndterer det er opp til deg. Her er SetIOMulti() fra TibberSeer:

 

Mye av teksten ligger i MoskusSample...

    Public Sub SetIOMulti(ByVal colSend As List(Of HomeSeerAPI.CAPI.CAPIControl))
        'Multiple CAPIcontrols might be sent at the same time, so we need to check each one
        For Each CC In colSend
            Log("SetIOMulti triggered, checking CAPI '" & CC.Label & "' on device " & CC.Ref, LogType.Debug)

            'CAPI doesn't magically store the new devicevalue, and I believe there's good reason for that:
            '  The status of the device migth depend on some hardware giving the response that it has received the command,
            '  and perhaps with an other value (indicating a status equal to "Error" or whatever). In that case; send the command,
            '  wait for the answer (in a new thread) and THEN update the device value

            'But here, we just update the value for the device
            hs.SetDeviceValueByRef(CC.Ref, CC.ControlValue, False)

            'Get the device sending the CAPIcontrol
            Dim device As Scheduler.Classes.DeviceClass = hs.GetDeviceByRef(CC.Ref)

            Select Case device.DeviceType_Get(hs).Device_SubType_Description.ToLower
                Case "root_price"
                    Log("Pressing update on price root...", LogType.Debug)
                    Dim ref As Integer = CC.Ref
                    Dim t As New Thread(AddressOf UpdateTibberData)
                    t.Start(ref)

                Case "root_consumption"
                    Log("Pressing update on consumption root...", LogType.Debug)
                    Dim ref As Integer = CC.Ref
                    Dim t As New Thread(AddressOf UpdateTibberData)
                    t.Start(ref)

                Case "root_realtime"
                    Log("Pressing restart on realtime root...", LogType.Debug)
                    Dim ref As Integer = CC.Ref
                    RestartRealtime(ref)
            End Select

        Next
    End Sub

 

Her fra TrÄdfriSeer:

    Public Sub SetIOMulti(ByVal colSend As List(Of HomeSeerAPI.CAPI.CAPIControl))
        'Multiple CAPIcontrols might be sent at the same time, so we need to check each one
        For Each CC In colSend
            Log("SetIOMulti triggered, checking CAPI '" & CC.Label & "' on device " & CC.Ref, LogType.Debug)

            'Get the device sending the CAPIcontrol
            Dim device As Scheduler.Classes.DeviceClass = hs.GetDeviceByRef(CC.Ref)

            Select Case GetTypeFromDevice(device)
                Case "Hub"
                    'There's nothing here

                Case "Bulb"
                    Dim b As TrÄdfriBulb = (From bs In TrÄdfri.Bulbs Where bs.MainDeviceRef = CC.Ref).FirstOrDefault
                    If b IsNot Nothing Then
                        b.SetDimLevelAsync(CC.ControlValue)
                    End If

                Case "Group"
                    Dim g As TrÄdfriGroup = (From bs In TrÄdfri.Groups Where bs.MainDeviceRef = CC.Ref).FirstOrDefault
                    If g IsNot Nothing Then
                        g.SetDimLevelAsync(CC.ControlValue)
                    End If

                Case "Scene"
                    Dim g As TrÄdfriGroup = (From bs In TrÄdfri.Groups Where bs.SceneDeviceRef = CC.Ref).FirstOrDefault
                    If g IsNot Nothing Then
                        g.SetSceneAsync(CC.ControlValue)
                    End If

                Case "ColorTemperature"
                    Dim b As TrÄdfriBulb = (From bs In TrÄdfri.Bulbs Where bs.TemperatureDeviceRef = CC.Ref).FirstOrDefault
                    If b IsNot Nothing Then
                        b.SetColorAsync(CC.ControlValue)
                    End If

                Case "TransitionTime"
                    hs.SetDeviceValueByRef(CC.Ref, Math.Round(CC.ControlValue, 1), True)
            End Select
        Next
    End Sub

 

Skrevet (endret)

Jeg har gjort alle mine plugins i C#

Du kan se pÄ Moskus sine eksempelplugins for Ä fÄ litt oversikt

https://github.com/Moskus/hspi_CsharpSample

 

(og han burde ogsÄ ha lagt ut sin vb-versjon)

 

Slik jeg gjÞr det sÄ pleier jeg Ä lagre ned endel info til PED (Plugin Extra Data) nÄr jeg lager en device. Her ville det f.eks. vÊrt at man kan ha deviceId som en property.

 

NÄr du da fÄr noe inn pÄ IOMulti sÄ er det bl.a. deviceId for enheten som man trykket pÄ (og "controlvalue"). Med dette henter du inn PED data og ut fra dette kan du da begynne Ä kalle mot f.eks. api nÄr du skal endre noe.

 

Edit: Moskus slo meg og hadde ogsÄ mye bedre forklaringer.

Endret av Guahtdim
  • Like 1
Skrevet
55 minutter siden, Guahtdim skrev:

(og han burde ogsÄ ha lagt ut sin vb-versjon)

Oi! Wow, ja det burde jeg. Hvorfor har jeg ikke det?

 

 

Skrevet
39 minutes ago, Moskus said:

Oi! Wow, ja det burde jeg. Hvorfor har jeg ikke det?

Fordi Git ikke er sÄ enkelt for deg? Eller fordi du glemte det etter at C# versjonen ble lagt ut?

Skrevet (endret)
12 minutes ago, Gjelsvik said:

Er eksempelkoden din ogsÄ et greit utgangspunkt for HS4 plugins?

Koden til Moskus er for HS3. Men jeg mener den skal klare Ă„ kjĂžre som legacy-plugin i HS4.

Det er litt variabelt hva som fungerer eller ikke. SÄ langt sÄ virker det som om mine plugins fungerer greit. 

Endret av Guahtdim
  • 1 mĂ„ned senere...

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.