NEWS
[Frage] Adapterentwicklung Anleitung für Einsteiger
-
Hallo und guten Abend,
auch auf die Gefahr und Angst hin sofort gesteinigt und aus dem Forum geworfen zu werden möchte ich mal was kundtun.
Wie ich jetzt schon mehrfach "glücklicherweise" erfahren habe, tummeln sich hier im Forum wirklich talentierte Scripter herum. Einige Scripte sind eine wahrliche Bereicherung und würden einen tollen und nützlichen Adapter abgeben. Ich habe aber auch von mehreren erfahren, dass sie sich scheuen vor der Adapterentwicklung. Vielleicht gibts ja den einen oder anderen hier, der mal ein einfaches HowTo hier oder woanders ablegt um ein einfaches Script in einen lauffähigen Adapter zu verwandeln.
Wirklich schade um einige Scripts.
So jetzt druff auf Marcolotti.
-
Hallo, welche Skripte meinst du denn?
-
Hey,
ich denke auch das man das ja am Beispiel von 1-2 relevanten Skripten mal gemeinsam diskutieren kann was nötig wäre um das zu tun. Dann wird man sehen ob es Sinn macht.
Für interessierte (und die die auf dem HM-Usertreffen sind) kann ich nur meinen Vortrag "Entwicklung eines eigenen ioBroker-Adapters "Schritt-für-Schritt" am Samstag 15 Uhr empfehlen < Werbung Off ;-)) >.
In wieweit ein Skript geeignet ist ist immer so eine Sache.
Je komplexer die Konfiguration ist desto aufwändiger ist der Teil der Adapterentwicklung der sich um die Adapter-Konfiguration dreht.
Wenn es aber eine einfache Konfiguration ist dann ist das kein großes Thema und man kann sich auf die echte Logik konzentrieren.
-
Moin,
Für interessierte (und die die auf dem HM-Usertreffen sind) kann ich nur meinen Vortrag "Entwicklung eines eigenen ioBroker-Adapters "Schritt-für-Schritt" am Samstag 15 Uhr empfehlen < Werbung Off ;-)) >. `
da bin ich doch glatt dabeiWenn es aber eine einfache Konfiguration ist dann ist das kein großes Thema und man kann sich auf die echte Logik konzentrieren. `
Ich könnte mir vorstellen, dass das Raumklima-Skript durchaus interessant sein könnte.Es müssen "nur" die zu berücksichtigten Sensoren (Temp. und Luftfeuchte) angegeben werden.
Das wäre was, woran ich de Adapter-Erstellung gerne lernen würde. Habe mich da bisher noch nicht rangetraut …
Gruß,
Eric
-
Ich könnte mir vorstellen, dass das Raumklima-Skript durchaus interessant sein könnte. `
Haste mal nen Link zum aktuellen Skript ?!
-
Danke! Ich finde mich mittlerweise halbwegs zurecht. Habe mir die Bausteine aus anderen Adaptern und dem Forum zusammengesucht. Was mir aber in der Doku ein bisschen fehlt, ist so eine Art "Best Practise" mit Minimalbeispielen zur Adapterentwicklung:
Wie starte ich
=> Adapter-Template
=> Empfohlene Einstellungen in (io-)package.json
Konfiguration (ganz großes Fragezeichen)
=> Wo kommt adapterspezifische Konfiguration hin?
===> Wie lese ich die im Adapter aus?
===> Wie greife ich darauf in admin.html zu (lesen/schreiben)?
=> Wo kommt anwendungsspezifische Konfiguration (Temperaturprofil von Räumen/ etc.) hin?
===> Wie lese ich die im Adapter aus?
===> Wie schreibe ich die im Adapter?
Sonstiges
=> Wie gehe ich am besten mit States um? Subscriben und buffern im Adapter oder immer frisch lesen via getState?
=> Beispiele für immer wiederkehrende Patterns bei der Entwicklung (z.b. Objektlisten beobachten). Wofür mache ich das und wie am besten?
[…]
-
Haste mal nen Link zum aktuellen Skript ?! `
Hier ist er Link zum Thread (das aktuelle Script ist im ersten Posting mit drin) ==> http://forum.iobroker.net/viewtopic.php?f=21&t=2645Ich schaue aber heute Abend nochmal zu Hause nach, ob es noch eine aktuellere Version (auf meinem Rechner) gibt. Viel geändert hat sich da aber nicht mehr - die Grundfunktion ist gleich.
Gruß,
Eric
-
Danke! Ich finde mich mittlerweise halbwegs zurecht. Habe mir die Bausteine aus anderen Adaptern und dem Forum zusammengesucht. Was mir aber in der Doku ein bisschen fehlt, ist so eine Art "Best Practise" mit Minimalbeispielen zur Adapterentwicklung: `
Dann lasst uns das gemeinsam erstellen!
Wie starte ich
=> Adapter-Template
=> Empfohlene Einstellungen in (io-)package.json `
Versuche ich grob in meinem Vortrag abzudecken. Mal schauen wie weit ich komme, weil die haben m,einen Slot auf 30 Mins gekürzt, aber kann ja als Grundlage dienenKonfiguration (ganz großes Fragezeichen)
=> Wo kommt adapterspezifische Konfiguration hin?
===> Wie lese ich die im Adapter aus?
===> Wie greife ich darauf in admin.html zu (lesen/schreiben)? `
Adapter: adapter.config.*Ja, Admin ist das interessante. An Sich muss man ja nicht viel tun weil das admin.html das schon macht. Es gibt zwei Stellen wo man was tun muss …
Versuche ich im Vortrag mit reinzunehmen.
=> Wo kommt anwendungsspezifische Konfiguration (Temperaturprofil von Räumen/ etc.) hin?
===> Wie lese ich die im Adapter aus?
===> Wie schreibe ich die im Adapter? `
Wenn es Statist ist: Adapterkonfig, wenn es dynamisch während der Laufzeit geändert werden soll: States.
Objekte anlegen, setState, getState ist im Vortrag mit drin.
Aber die meisten Dinge sind im iobroker.template wenigstens angeteasert und drin … also eine Grundlagekönnte da sein. Auch wenn ein bissl mehr "Prosa" garantiert hilft
Sonstiges
=> Wie gehe ich am besten mit States um? Subscriben und buffern im Adapter oder immer frisch lesen via getState?
=> Beispiele für immer wiederkehrende Patterns bei der Entwicklung (z.b. Objektlisten beobachten). Wofür mache ich das und wie am besten?
[…] `
1.) Das ist jetzt "Geschmackssache"Ich persönlich denke das aus Last&Performancegründen lokales caching sinn macht da der minimale RAM Verbrauch gegen den Performancegewinn gewinnt. Alle states die man nur selbst als Adapter kontrolliert (also nur der Adapter schreiben darf) muss auch nicht subscriben. In Adaptern ist getState in jedem Fall asynchron, das heisst je nachdem wie viele Daten man braucht kann auch das caching alles sehr vereinfachen.
2.) Was meinst Du damit?
-
> Beispiele für immer wiederkehrende Patterns bei der Entwicklung
Ein Beispiel wäre der zwave-Adapter, der liest beim Start die Objektliste aus:adapter.objects.getObjectList({ startkey: adapter.namespace + '.', endkey: adapter.namespace + '.\u9999', [...]
Das machen diverse andere Adapter auch, scheint also eine vernünftige Vorgehensweise zu sein. In der Doku hab ich dazu nur gefunden "experts only".
–
Btw, danke für die Antworten. Einiges davon ist mir inzwischen klar, sollte aber in die Grundlagendoku, denn das sucht man anfangs. Und selbst wenn es keine eindeutige Weisheit gibt (wie beim State-Handling), ist es interessant 1-2 Ansätze demonstriert zu bekommen.
Noch was:
Wenn man aus der JS-Adapter-Ecke kommt, macht createState unerwartet was anderes (und hat auch ne andere Signatur). Korrekt scheint zu sein, per setObject ein Objekt mit common.role="state" anzulegen, das anschließend per setState beschrieben werden kann. Habe ich auch nur in einem Entwicklerthread hier im Forum gefunden.
> Adapterkonfiguration / adapter.config.*
Die https://github.com/ioBroker/ioBroker/wiki/Adapter-Development-Documentation liefert hierzu zwei Punkte:
` > config - native part of adapter settingscommon - common part of adapter settings `
Was der Zweck ist, wird allerdings nicht klar. Das meinte ich mit "best practise / was kommt wo hin?"Was mache ich als Adapter-Entwickler mit .config und .common? Macht es Sinn, bzw. ist es möglich aus dem laufenden Adapter in diese Objekte zu schreiben?
Allgemein ist die Doku recht technisch gehalten, was als Nachschlagewerk sicher gut ist. Zum "warm werden" mit der Adapter-Entwicklung müsste es allerdings anwendungsbezogener sein. Typische Aufgaben im Lebenszyklus einer Adapter-Entwicklung ansprechen und Lösungen aufzeigen.
Wie sind bestimmte Dinge gedacht? Wie sollten sie benutzt werden?
-
Ganz interessante Beiträge! !! Würde mir gerne anhören was du auf dem treffen sagst. Leider muss ich arbeiten. Das wäre genau das was ich brauche! Ich würde so gerne einen Adapter machen aber ich brauche Hilfe. Wie schon gesagt wo kommt was hin usw. Ein Workshop wäre toll. Auch wenn nur über das Internet aber das würde mich sicherlich sehr viel weiter bringen. Per Skype o.ä alle mal zusammensetzen die daran Interesse haben und einer der es kann
Gesendet von meinem SM-G928F mit Tapatalk
-
Versuche ich grob in meinem Vortrag abzudecken. Mal schauen wie weit ich komme, weil die haben m,einen Slot auf 30 Mins gekürzt, aber kann ja als Grundlage dienen
`
Wird es eine Aufzeichnung geben? -
Ich fände es besser, wenn es hier oder an anderer Stelle etwas gibt, was jeder nachlesen und sich anschauen kann. Ich bin am 6.5. auch anwesend aber viele andere können es nicht sein.
Gruß Marco
-
Es wird definitiv eine ausführliche Doku auf der Website geben!
im Moment liegt diese https://github.com/ioBroker/ioBroker/wi … umentation noch auf Github.
Wenn ihr mitmacht kann diese nach euren Wünschen und Anforderungen angepasst werden und später in die neue Website einfließen.
Gruß
Rainer
-
Schon klar. Lasst hier sammeln, das kann bestimmt einen Platz auf der neuen Webseite bekommen …
-
Guide for Developers :?
Ich habe teilweise mehrere Sachen die ich gerne als Adapter umsetzen würde. Leider scheitert es an meinem Können.
In HTM bekomme ich es ggf noch hin allerdings ist das hier für mich etwas völlig anderes.
Ich würde es begrüßen wenn einer der es kann und Lust dazu hat ggf. mal am Wocheende einen Workshop über das Internet macht.
Was haltet ihr davon?
-
Bist Du Anfang Mai in Kassel beim HM-Usertreffen? Da gibts nen Vortrag und ggf Zeit drumrum …
-
das ist es ja. da kann ich nicht.
-
Ich stelle den Vortrag danach zur Verfügung und dann schauen wir mal was wir machen können
-
Es wird definitiv eine ausführliche Doku auf der Website geben!
im Moment liegt diese https://github.com/ioBroker/ioBroker/wi … umentation noch auf Github. `
Unter folgendem Link habe ich gute Informationen gefunden, die mit zur Adapter-Entwicklung gehören.
Und auch irgendwie verlinkt werden sollten. Ich bin nur per Zufall drüber gestolpert :?
Gruß
DeepCore
-
Unter folgendem Link habe ich gute Informationen gefunden, die mit zur Adapter-Entwicklung gehören. `
Da sollte der Link von mir auch hingehen, warum der sich jetzt verbogen hat weiß ich auch nichtWahrscheinlich habe ich da zu oberflächlich gesucht :oops:
Sorry,
Rainer