NEWS
Umfrage: "How to" zur ioBroker Entwicklung?
-
Hallo,
wollte mal fragen ob Interesse an einem "How to" zur ioBroker Entwicklungsumgebung besteht. Soll ja keine Liebhaberei sein…
Falls ja, welcher Inhalt?
- Angedacht wäre ein "Kochbuch" mit Screendumps und kurzen Erläuterungen
wie man eine Entwicklungsumgebung für ioBroker und Adapter aufsetzt und debugged.
-
Webstorm bezogen. Ist allerdings nicht free nach 30 Tagen.
-
Ein Beispiel wie man einen ioBroker Adapter entwickelt?
-
Allerdings keine Einführung in Javascript Programmierung, dass würde den Rahmen sprengen.
-
Welche Sprache? Englisch/Deutsch?
-
Wo ablegen? Ich bin eigentlich ein Fan von Wiki und nicht von Word Dokumenten.
-
Könnten jemand auch das "Review" übernehmen?
@Bluefox: Vielleicht machen wir hier die Büchse der Pandora auf…auf alle Fälle werden neue Fragen im Forum auftauchen!
Bin schon auf Euer Feedback gespannt.
Danke
Steve `
Da bin ich nur dafür.Ich habe schon versucht Wiki aufzusetzen:
https://github.com/ioBroker/ioBroker/wiki
Es ist aber auf der erste Seite hängen geblieben.
Anfangen muss man auf jeden Fall mit Englisch (falls möglich), so können auch russische Anwender damit was anfangen.
Danach konnte man auf Deutsch übersetzen.
Folgende Kapitell müssen unbedingt drin sein:
-
- Directory structure:
-
admin
- index.html
xxx.png - optional
www - optional
lib - optional
package.json - mandatory
io-package.json - mandatory
main.js - mandatory (can be xxx.js)
- Naming * ioBroker.xxx (on git), iobroker.xxx for npm in package.json, main.js/xxx.js as start file, name of adapter must be unique and lowercase. - Structure of io-package.json * common - [https://github.com/ioBroker/ioBroker/bl … md#adapter](https://github.com/ioBroker/ioBroker/blob/master/doc/SCHEMA.md#adapter) - common settings for all instances(adapters) native - instance specific settings objects - static objects for all instances of adapter (xxx.object) instanceObjects - static objects for one instance (xxx.0.object) - Short strucutre of package.json with link to full list ([https://docs.npmjs.com/files/package.json](https://docs.npmjs.com/files/package.json)) * ```` { "name": "iobroker.xxx", "version": "0.0.1", "description": "Adapter XXX", "author": "myName<myemail@mail.com>" "homepage": "https://github.com/yourgit/ioBroker.xxx", "readme": "https://github.com/yourgit/ioBroker.xxx/blob/master/README.md", "keywords": ["ioBroker", "xxx"], "repository": { "type": "git", "url": "https://github.com/yourgit/ioBroker.xxx" }, "dependencies": { "myPacket1": "~0.3.1", "myPacket2": "~2.1.0" }, "devDependencies": { "grunt": "~0.4.4", "grunt-replace": "~0.7.6", "grunt-contrib-jshint": "~0.10.0", "grunt-jscs": "~0.6.1", "grunt-http": "~1.4.1", "grunt-contrib-clean": "~0.5.0", "grunt-contrib-compress": "~0.8.0", "grunt-contrib-copy": "~0.5.0", "grunt-exec": "~0.4.5" }, "bugs": { "url": "https://github.com/yourgit/ioBroker.xxx/issues" }, "main": "main.js", "license": "MIT" }</myemail@mail.com> ```` - All fields are mandatory. devDependencies should be inside too. - How to publish on npm (Create account, npm init, npm publish) - Wait with the publish, till the version is really stable. - You cannot publish twice the same version. Increase version number to publish the changes. - How to create own adapter * Take example => rename all example into xxx in all files - Structure of main.js * - __var utils = require(__dirname + '/lib/utils'); // Get common adapter utils__ - mandatory - __var adapter = utils.adapter('example');__ - mandatory - __var myPacket1= require('myPacket1'); // add own module__ - Most important events: ```` adapter.on('objectChange', function (id, obj) { adapter.log.info('objectChange ' + id + ' ' + JSON.stringify(obj)); }); ```` ```` adapter.on('stateChange', function (id, state) { adapter.log.info('stateChange ' + id + ' ' + JSON.stringify(state)); // you can use the ack flag to detect if state is desired or acknowledged if (!state.ack) { adapter.log.info('ack is not set!'); } }); ```` - Entry point. Make all initialisations in main, because befor "ready" there is no configuration. ```` adapter.on('ready', function () { main(); }); ```` - Configuration can be read in adapter.config (it is equal to "naitve" of adapter) - How to read state - How to write state - Difference between ack = true or false - Structure of state (val, akc, ts, lc[, expire, from]) - Logging: console.log, adapter.log.[info, warn, error, debug] - How to create instance * Before published to npm: copy into __ioBroker/node_modules__, go to "admin" and add instance After published at npm: go to ioBroker/ and write "npm install iobroker.xxx –production", go to "admin" and add instance - How to debug * Start ioBroker Add instance of adapter Disable instance of adapter Start WebStorm Create Configuration for Debug with node.js Flags for application: –force, instance, log level (you can start the adapter as "__node xxx.js 1 debug –force__", 1 is instance index (by default 0, debug is log level and –force means ignore "enabled: false" settings) - Best practice … - admin.html
-
Hallo Bluefox,
das sind ja viele gute Ideen…
Ich würde gerne erstmal einfach anfangen und danach erweitern. Es wäre auch prima wenn
wir eine Kommunity Zusammenarbeit hinbekommen, d.h. wenn etwas fehlt, unklar oder falsch
ist kann es jemand es jederzeit korrigieren.
In den einzelnen Schritten (siehe unten) kann man dann gerne auf die notwendigen ioBroker
Details eingehen.
Was hältst du davon?
Installation, setup and first steps with an ioBroker Development Environment
-
Download and install Webstorm on Ubuntu 14.04
-
Download of the newest ioBroker Sourcen and import into a Webstorm Project.
-
Config Webstorm for running and debugging ioBroker
-
Example how to start ioBroker from Webstorm
-
Example how to debug ioBroker from Webstorm
-
Example how to debug ioBroker Adapter from Webstorm.
-
Example how to create the first own Adapter like HMM (Homematic Manager Integration?)
Ich würde dann auf der Wiki Page https://github.com/ioBroker/ioBroker/wiki mal anfangen…
Steve
-
-
Hallo Bluefox,
das sind ja viele gute Ideen…
Ich würde gerne erstmal einfach anfangen und danach erweitern. Es wäre auch prima wenn
wir eine Kommunity Zusammenarbeit hinbekommen, d.h. wenn etwas fehlt, unklar oder falsch
ist kann es jemand es jederzeit korrigieren.
In den einzelnen Schritten (siehe unten) kann man dann gerne auf die notwendigen ioBroker
Details eingehen.
Was hältst du davon?
Installation, setup and first steps with an ioBroker Development Environment
-
Download and install Webstorm on Ubuntu 14.04
-
Download of the newest ioBroker Sourcen and import into a Webstorm Project.
-
Config Webstorm for running and debugging ioBroker
-
Example how to start ioBroker from Webstorm
-
Example how to debug ioBroker from Webstorm
-
Example how to debug ioBroker Adapter from Webstorm.
-
Example how to create the first own Adapter like HMM (Homematic Manager Integration?)
Ich würde dann auf der Wiki Page https://github.com/ioBroker/ioBroker/wiki mal anfangen…
Steve `
Es ist gut. Wir können dann das auf jeden Fall erweitern und sogar als Kapitel für großeres Dokument benutzen.Und github ist super Plattform dafür. Bin sehr gespannt was daraus kommt
-
-
Hallo Bluefox,
also meine erste Github Wiki Page https://github.com/ioBroker/ioBroker/wi … nvironment ist live aber noch nicht komplett. Werden schöne Abendarbeiten werden. Ein Kapitel pro Abend...
Wie gesagt...Feedback erwünscht.
Steve
-
Hallo Ihr Experten,
das klingt sehr, sehr interessant was Ihr hier so vorhabt. Ich würde da eigentlich gerne auch was zur Entwicklung beitragen. Allerdings beherrsche ich zwar ziemlich gut die Programmierung mit VB, VBA, .NET mit VisualStudio sowie Datenbanken und SQL nur eben hatte ich mit Java und der ganzen von Euch genutzten Umgebung noch gar nichts zu tun so dass ich befürchte dass meine Lernkurve zu lange dauert um Euch auch nur in Sichtweite hinterherzuhecheln …
Vielleicht installiere ich mir ja mal einen Webstorm und probiere ob ich mit Hilfe Eurer Anleitung hier weiterkomme...
Gruß Thilo
-
Hallo Ihr Experten,
das klingt sehr, sehr interessant was Ihr hier so vorhabt. Ich würde da eigentlich gerne auch was zur Entwicklung beitragen. Allerdings beherrsche ich zwar ziemlich gut die Programmierung mit VB, VBA, .NET mit VisualStudio sowie Datenbanken und SQL nur eben hatte ich mit Java und der ganzen von Euch genutzten Umgebung noch gar nichts zu tun so dass ich befürchte dass meine Lernkurve zu lange dauert um Euch auch nur in Sichtweite hinterherzuhecheln …
Vielleicht installiere ich mir ja mal einen Webstorm und probiere ob ich mit Hilfe Eurer Anleitung hier weiterkomme...
Gruß Thilo `
Bitte aber JavaScript und nicht Java lernen … Die haben mit einander so viel gemeinsam wie c# und c++.
144_iobroker_website.jpg -
Hallo Thllo,
willkommen an Bord.
Ich denke ein guter Einstieg ist es einfach mal auszuprobieren, soll heissen Webstorm aufsetzen und ioBroker laufen lassen. Um ehrlich zu sein habe ich neue Programmiersprachen immer mit dem symbolischen Debugger an einem konkreten Beispiel gelernt.
Javascript ist eine sehr einfache funktionale Sprache ähnlich VB,perl, C. Die Konzepte die damit realisiert wurden haben es allerdings in sich…Asynchrone Callbacks (AJAX), REST, JSON um nur einige zu nennen. Die Einarbeitung lohnt sich und zum ersten mal haben wir eine Programmiersprache vom Client (Browser) bis zum Server (NodeJS).
BTW, ich habe auch erst mit ioBroker angefangen.
Würde mich über eine Rückmeldung freuen ob du mit der Beschreibung zu Webstorm/ioBroker zurecht kommst.
Steve
-
Wenn ich mit dem Homematic Manager Adapter fertig bin, kann ich mal liefern wie ich den entwickelt habe.
Gesendet von meinem iPhone mit Tapatalk
-
Javascript ist eine sehr einfache funktionale Sprache ähnlich VB,perl, C. Die Konzepte die damit realisiert wurden haben es allerdings in sich…Asynchrone Callbacks (AJAX), REST, JSON um nur einige zu nennen. Die Einarbeitung lohnt sich und zum ersten mal haben wir eine Programmiersprache vom Client (Browser) bis zum Server (NodeJS). `
reizt mich ja! Gibt es da irgendetwas zum einarbeiten? nicht zu flach (..für dummies) aber trotzdem für beginner.
danke
Rainer
-
Hi Rainer, Versteckt,
schau dir doch mal https://github.com/ioBroker/ioBroker/wi … nvironment an. Wie gesagt, am besten lernt man mit einer guten IDE und einem konkreten Beispiel.
Sag' einfach bescheid ob dies für Dich passend ist…oder ob etwas fehlt.
Könnten wir Deine HMM Adapter Entwicklung mit aufnehmen oder noch besser könntest du ein paar Zeilen dazu schreiben? Die Idee ist "Die Einstiegshürde für die Adapter Entwicklung zu senken"
Danke
Steve
-
Hallo,
@Bluefox: Danke für den Hinweis mit Javascript <-> Java.
Wobei mir allgemein das Einarbeiten in eine andere Programmiersprache als solche weniger Sorgen macht als eben das "Drumherum" wie die IDE kennenzulernen, die Möglichkeiten des Debuggings, das Interpretieren von Fehlermeldungen und "unerklärlichen" Effekten und last not least in diesem speziellen Fall das "dranhängen" an ein existierendes, sehr anspruchsvolles Projekt. Obwohl, um nochmal auf die Sprache zurückzukommen, ich eine starke Aversion gegen Programmiersprachen habe die geschweifte Klammern in Massen und Zeilenendezeichen verwenden Das treibt mich regelmäßig zu Wutausbrüchen wenn ich irgend wo mitten im Code so ein dämliches Semikolon vergessen habe und dann eine Fehlermeldung bekomme die alles mögliche aussagt nur eben nicht dass da ein Semikolon fehlt Aber was solls - für meine Arduinos musste ich mich ja auch schon an so eine "schreckliche" Sprache gewöhnen.
Ich werde mir demnächst wenn ich etwas mehr Zeit habe den Webstorm mal installieren und dann weitersehen. Wobei der Webstorm nach der 30-tägigen Testphase ja richtig Geld kostet…
Gruß Thilo
-
Ja klar, der Plan war, meine Schritte bzw. Dateien zu dokumentieren.
Komme aber erst am Wochenende dazu weiter zumachen.
Gesendet von meinem iPhone mit Tapatalk
-
Hallo Steve,
ich möchte erst einmal vorweg ein paar Infos loswerden:
ich habe mich wegen ccu.io erst seit einem Jahr mit Linux, putty, filezilla & Co. beschäftigt.
Meine Kenntnisse da sind schon einmal ziemlich beschränkt, bin jedoch lernwillig.
Programmieren kann ich ein wenig. Ich habe -abgesehen von den Basic-Versuchen vor 30 Jahren- eine etwas komplexere Datenbank mit Paradox umgestezt, was ja im Prinzip auch Basic-ähnlich ist.
Mit Javascript habe ich die ersten und einzigen Kontakte gehabt, als ich mich bei ccu.io in den rpi-Adapter gehackt habe und daraus (mit Bluefox Hilfe!) einen Cubie-Adapter gemacht habe. NIx verstanden, "einfach" die Struktur nachverfolgt und mit copy/paste Änderungen eingebaut.
Mann war ich stolz darauf!
Sowas macht natürlich Lust auf mehr; Seit Bluefox dann noch den node-red Adapter vorstellte will ich mich in JavaScript einarbeiten (und dann noch russisch lernen )
Ich bin da ganz deiner Meinung - sowas klappt am Besten, indem man sich ein "Projekt" vornimmt und das versucht umzusetzen. UNd eine Entwicklungsumgebung wie Webstorm hilft da gewiss. Aber Grundlagen zu Javascript sollte man haben und auch zum Nachschlagen immer greifbar sein (da suche ich noch was!)
Das WIKI sieht Spitze aus, ich glaube damit käme ich klar, wenn… (s.o.)
Wenn ich das richtig gesehen habe wäre Webstorm sogar kostenlos, wenn man nachweist, dass man damit open Source entwickeln will.
Jetzt kommt noch was: bei meinen ganzen Linux-Versuchen min ich mit Ubuntu am wenigsten klar gekommen. Wieso arbeiten in der Entwicklung soviele mit Ubuntu?
Gruß
Rainer
-
Hallo Rainer,
Dein Feedback freud' mich sehr, ich sehe auch wie Du sehr engagiert bist in den anderen Foren!
Webstorm:
Open Source gratis Lizenz wäre klasse, wo hast Du das gesehen?
Ubuntu:
Das ist aus einem Guss, stabil und ist überall verfügbar. Schon allein die Updates mit "apt-get …" sind sehr schön gelöst. Ist auch nicht so überladen wie Red Hat oder Suse. Vertraue mir, die Einarbeitung rentiert sich. Und selbst wenn Du kein Ubuntu für eine ARM/PC Plattform hast...die anderen (Debian) sind sehr ähnlich.
Hast Du ein Ubuntu Device?
Einarbeitung:
Der "Rest" kommt noch…es gibt keinen Zeitdruck, keinen der Druck macht. Ich habe jetzt auch schon 30 Jahre Informatik Erfahrungen und möchte jetzt nicht mehr auf was "Proprietäres" setzen was in 1-2 Jahren keiner mehr kennt. Die Techniken die wie hier einsetzen (HTML5, CSS3, Javascript, AJAX und Community Development) werden bleiben und ausgebaut werden (wenn nicht, heiss ich Meier).
So Kaffeepause vorbei...
Steve
-
Webstorm:
Open Source gratis Lizenz wäre klasse, wo hast Du das gesehen? `
Hier:https://www.jetbrains.com/webstorm/buy/ … PEN_SOURCE
Hast Du ein Ubuntu Device? `
Nein, noch nicht, kann aber mein altes Notebook dafür nutzen.Danke
Rainer
…und was ist mit einem Hand-/Lehrbuch für JavaScript
-
…Handbuch? Also mir haben diese 700 Seiten Javascript Schmöker nicht geholfen, nicht mal als Nachschlagewerk.
Unkonventionell und gut fand ich diese hier, der Stil muss einen aber liegen:
-
Head First: JavaScript-Programmierung-von-Kopf-bis-Fuß
-
Schrödinger-lernt-HTML5-CSS3-JavaScript
Steve
-
-
Hi Rainer, Versteckt,
schau dir doch mal https://github.com/ioBroker/ioBroker/wi … nvironment an. Wie gesagt, am besten lernt man mit einer guten IDE und einem konkreten Beispiel.
Sag' einfach bescheid ob dies für Dich passend ist…oder ob etwas fehlt.
Könnten wir Deine HMM Adapter Entwicklung mit aufnehmen oder noch besser könntest du ein paar Zeilen dazu schreiben? Die Idee ist "Die Einstiegshürde für die Adapter Entwicklung zu senken"
Danke
Steve `
Anfang sieht klasse aus!Habe auch eine paar Korrekturen verpasst.
Nun bin ich bis zum Kapitel "Config Webstorm to run and debug the ioBroker" gekommen.
Ich denke, dass es keinen Sinn gibt iobroker.js zu debuggen. Erstens iobroker.js besteht aus eine Zeile:
require(__dirname + '/lib/setup.js');
Zweitens, das startet nur einen Daemon und beendet sich.
D.h. im Debug mode wird das gar nicht funktionieren.
Ich denke, es ist besser "controller.js" zu nehmen und dann zu erklären, dass in "Run" mode werden alle andere Adapter automatisch mitgestartet und in "Debug-Mode" muss man jeden Adapter selbst starten.
-
Hallo,
Wobei mir allgemein das Einarbeiten in eine andere Programmiersprache als solche weniger Sorgen macht als eben das "Drumherum" wie die IDE kennenzulernen, die Möglichkeiten des Debuggings, das Interpretieren von Fehlermeldungen `
Genau so (Meiner Meinung nach) sieht das Dokument hier aus: -
…und was ist mit einem Hand-/Lehrbuch für JavaScript `
Kennst Du das hier: http://www.w3schools.com/js/default.asp
144_img_20160824_202217_978.jpg -
Danke,
schon ge-bookmark-ed
Gruß
Rainer