Gjelsvik Skrevet 11. september 2020 Skrevet 11. september 2020 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. Siter
Moskus Skrevet 11. september 2020 Skrevet 11. september 2020 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... Siter
Guahtdim Skrevet 11. september 2020 Skrevet 11. september 2020 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. Siter
Gjelsvik Skrevet 12. september 2020 Forfatter Skrevet 12. september 2020 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. 2 Siter
Guahtdim Skrevet 12. september 2020 Skrevet 12. september 2020 Sender du en ovn så må jeg sikkert gjøre det 😉 Siter
Moskus Skrevet 13. september 2020 Skrevet 13. september 2020 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() Siter
Gjelsvik Skrevet 14. september 2020 Forfatter Skrevet 14. september 2020 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. Siter
Moskus Skrevet 14. september 2020 Skrevet 14. september 2020 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 Siter
Guahtdim Skrevet 14. september 2020 Skrevet 14. september 2020 (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 14. september 2020 av Guahtdim 1 Siter
Moskus Skrevet 14. september 2020 Skrevet 14. september 2020 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? Siter
Gjelsvik Skrevet 14. september 2020 Forfatter Skrevet 14. september 2020 Får spinne opp visual studio igjen her Men C# eller vb... ?🤓 Siter
Moskus Skrevet 14. september 2020 Skrevet 14. september 2020 Akkurat nå hadde jeg gått for C#, men det spiller egentlig ingen rolle. Siter
Guahtdim Skrevet 14. september 2020 Skrevet 14. september 2020 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? Siter
Moskus Skrevet 14. september 2020 Skrevet 14. september 2020 1 minutt siden, Guahtdim skrev: Fordi Git ikke er så enkelt for deg? Eller fordi du glemte det etter at C# versjonen ble lagt ut? Ja. Og ja. Siter
Gjelsvik Skrevet 14. september 2020 Forfatter Skrevet 14. september 2020 Er eksempelkoden din også et greit utgangspunkt for HS4 plugins? Siter
Guahtdim Skrevet 14. september 2020 Skrevet 14. september 2020 (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 14. september 2020 av Guahtdim Siter
Moskus Skrevet 14. september 2020 Skrevet 14. september 2020 HS3-sampelet kjører som bare juling i HS4. Siter
Anbefalte innlegg
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.