Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. Welche Umgebung für Entwicklung

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    10
    1
    125

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.4k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.3k

Welche Umgebung für Entwicklung

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
6 Beiträge 4 Kommentatoren 924 Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • smoker2604xS Offline
    smoker2604xS Offline
    smoker2604x
    schrieb am zuletzt editiert von
    #1

    Halo zusammen,

    Welche Entwicklerumgebung benutzt ihr um Adapter zu entwickeln?

    Gesendet von meinem HUAWEI VNS-L31 mit Tapatalk

    Liebe Grüße Tobias

    1 Antwort Letzte Antwort
    0
    • apollon77A Offline
      apollon77A Offline
      apollon77
      schrieb am zuletzt editiert von
      #2

      Ich persönlich nutze Atom.io, andere Microsoft vscode und andere noch anderes.

      IDEs die sich erweitern lassen und ne git oder sogar github Integration sind von Vorteil. Ich nutze zb so ein „Remote Sync“ Plugin für Stimmens geänderte files ( vom Laptop) dann auf den Rechner Synct beim speichern auf dem mein Test iobroker läuft.

      Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

      • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
      • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
      1 Antwort Letzte Antwort
      0
      • AlCalzoneA Offline
        AlCalzoneA Offline
        AlCalzone
        Developer
        schrieb am zuletzt editiert von
        #3

        VSCode. Wenn das einmal ordentlich eingerichtet ist, gibts nix einfacheres IMO. Git-Integration, optional Type-Checking, etc…

        Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

        1 Antwort Letzte Antwort
        0
        • D Offline
          D Offline
          DeepCore
          schrieb am zuletzt editiert von
          #4

          Da möchte ich mich mal einhängen … Kämpfe mit den französischen Texten, weil die so sehr vom Kontext abhängig sind :oops:

          @AlCalzone:

          VSCode. Wenn das einmal ordentlich eingerichtet ist, gibts nix einfacheres IMO. Git-Integration, optional Type-Checking, etc… ` Könntest Du mal Deine Einrichtung erläutern? :?

          @apollon77:

          Ich nutze zb so ein „Remote Sync“ Plugin für Stimmens geänderte files ( vom Laptop) dann auf den Rechner Synct beim speichern auf dem mein Test iobroker läuft. ` Genau so etwas möchte ich benutzen, um die Übersetzungen Schritt-für-Schritt auf dem Test-ioBroker nachzuschauen :D

          1 Antwort Letzte Antwort
          0
          • AlCalzoneA Offline
            AlCalzoneA Offline
            AlCalzone
            Developer
            schrieb am zuletzt editiert von
            #5

            @DeepCore:

            @AlCalzone:

            VSCode. Wenn das einmal ordentlich eingerichtet ist, gibts nix einfacheres IMO. Git-Integration, optional Type-Checking, etc… Könntest Du mal Deine Einrichtung erläutern?
            Konsole und Git sind ja von Haus aus drin. Mag zwar nicht jeder, aber ich bin damit einfach am schnellsten.

            Installierte Erweiterungen:

            • Auto Close Tag (für HTML/React)

            • Bookmarks

            • Coverage Gutters + Run on Save (Automatische Test-Coverage-Anzeige wenn package.json entsprechend konfiguriert ist)

            • ESLint (JS-Datei-Prüfung)

            • TSLint (TypeScript-Datei-Prüfung auf stilistische und typische Syntax-Fehler)

            TypeChecking erfordert eine entsprechend konfigurierte tsconfig.json-Datei im Projektordner, siehe https://github.com/ioBroker/ioBroker.cl … onfig.json oder https://github.com/AlCalzone/ioBroker.t ... onfig.json und "typescript" als devDependency. Dann meckert VSCode beim Öffnen von Dateien, wenn es Fehler findet, die über einfache Fehler wie ( vergessen hinausgehen.

            Für Adapter-Aktualisierung auf dem Zielhost hab ich auch ein kleines Skript.

            package.json => scripts:

            "deploy_local": "node --require ts-node/register maintenance/deploy_local.ts",
            

            maintenance/deploy_local.ts sieht so aus:

            ! ````
            // tslint:disable:no-var-requires
            /*
            Allows easier local debugging over SSH.
            Running npm run deploy_local updates remote adapter files
            and restarts the instance
            /
            ! /

            CONFIGURATION:
            - provide a deploy_password.json file in the local dir with contents
            {
            "host": "<hostname>",
            "username": "<username>",
            "password": "<password>"
            }
            - specify which dirs and files should be uploaded
            - specify where the root dir is relative to this script
            */
            const uploadDirs = ["admin", "build"];
            const uploadFiles = ["package.json", "io-package.json", "main.js"];
            const rootDir = "../";
            ! // =========================
            // CAN'T TOUCH THIS
            // =========================
            ! import * as nodeSSH from "node-ssh";
            import * as path from "path";
            ! const localRoot = path.resolve(__dirname, rootDir);
            ! const ioPack = require(path.join(rootDir, "io-package.json"));
            const ADAPTER_NAME = ioPack.common.name;
            ! const ssh = new nodeSSH();
            const sshConfig = require(path.join(_dirname, "deploy_password.json"));
            ! const remoteRoot = /opt/iobroker/node_modules/iobroker.${ADAPTER_NAME};
            ! (async function main() {
            await ssh.connect(sshConfig);
            ! for (const dir of uploadDirs) {
            console.log(cleaning ${dir} dir...);
            await ssh.execCommand(rm -rf ${path.join(remoteRoot, dir)});
            console.log(uploading ${dir} dir...);
            try {
            await ssh.putDirectory(path.join(localRoot, dir), path.join(remoteRoot, dir), {
            recursive: true,
            concurrency: 10,
            validate: (pathname) => {
            const basename = path.basename(pathname);
            if (basename.startsWith("deploy
            ")) return false;
            if (basename.endsWith("Thumbs.db")) return false;
            if (basename.endsWith(".map") && basename.indexOf(".bundle.") === -1) return false;
            if (basename.indexOf(".test.") > -1) return false;
            if (basename === "src") return false;
            return true;
            },
            });
            } catch (e) {
            console.error(e);
            }
            }
            for (const file of uploadFiles) {
            console.log(uploading ${file}...);
            await ssh.putFile(path.join(localRoot, file), path.join(remoteRoot, file));
            }
            ! // update in-mem adapter
            let execResult;
            console.log("updating in-mem adapter");
            execResult = await ssh.execCommand(iobroker upload ${ADAPTER_NAME});
            console.log(execResult.stdout);
            console.log(execResult.stderr);
            if (process.argv.indexOf("--norestart") === -1) {
            execResult = await ssh.execCommand(iobroker restart ${ADAPTER_NAME});
            console.log(execResult.stdout);
            console.log(execResult.stderr);
            }
            ! console.log("done");
            process.exit(0);
            })();</password></username></hostname>

            und erfordert in package.json
            

            "devDependencies": {
            "node-ssh": "^5.0.0",
            "ts-node": "^4.1.0",
            "typescript": "^2.6.2",
            }

            Wenn das Skript konfiguriert ist (siehe Kommentare am Skript-Anfang), reicht ein "npm run deploy_local" und die aktualisierten Adapterdateien werden per SSH auf dem Zielhost hochgeladen und der Adapter dort aktualisiert/neu gestartet.
            
            Für dein Vorhaben musst du vermutlich vorher noch 1-2 Skripte lokal ausführen, um die Übersetzungsdateien umzuwandeln.

            Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

            1 Antwort Letzte Antwort
            0
            • smoker2604xS Offline
              smoker2604xS Offline
              smoker2604x
              schrieb am zuletzt editiert von
              #6

              @AlCalzone:

              @DeepCore:

              @AlCalzone:

              VSCode. Wenn das einmal ordentlich eingerichtet ist, gibts nix einfacheres IMO. Git-Integration, optional Type-Checking, etc… Könntest Du mal Deine Einrichtung erläutern?
              Konsole und Git sind ja von Haus aus drin. Mag zwar nicht jeder, aber ich bin damit einfach am schnellsten.

              Installierte Erweiterungen:

              • Auto Close Tag (für HTML/React)

              • Bookmarks

              • Coverage Gutters + Run on Save (Automatische Test-Coverage-Anzeige wenn package.json entsprechend konfiguriert ist)

              • ESLint (JS-Datei-Prüfung)

              • TSLint (TypeScript-Datei-Prüfung auf stilistische und typische Syntax-Fehler)

              TypeChecking erfordert eine entsprechend konfigurierte tsconfig.json-Datei im Projektordner, siehe https://github.com/ioBroker/ioBroker.cl … onfig.json oder https://github.com/AlCalzone/ioBroker.t ... onfig.json und "typescript" als devDependency. Dann meckert VSCode beim Öffnen von Dateien, wenn es Fehler findet, die über einfache Fehler wie ( vergessen hinausgehen.

              Für Adapter-Aktualisierung auf dem Zielhost hab ich auch ein kleines Skript.

              package.json => scripts:

              "deploy_local": "node --require ts-node/register maintenance/deploy_local.ts",
              

              maintenance/deploy_local.ts sieht so aus:

              ! ````
              // tslint:disable:no-var-requires
              /*
              Allows easier local debugging over SSH.
              Running npm run deploy_local updates remote adapter files
              and restarts the instance
              /
              ! /

              CONFIGURATION:
              - provide a deploy_password.json file in the local dir with contents
              {
              "host": "<hostname>",
              "username": "<username>",
              "password": "<password>"
              }
              - specify which dirs and files should be uploaded
              - specify where the root dir is relative to this script
              */
              const uploadDirs = ["admin", "build"];
              const uploadFiles = ["package.json", "io-package.json", "main.js"];
              const rootDir = "../";
              ! // =========================
              // CAN'T TOUCH THIS
              // =========================
              ! import * as nodeSSH from "node-ssh";
              import * as path from "path";
              ! const localRoot = path.resolve(__dirname, rootDir);
              ! const ioPack = require(path.join(rootDir, "io-package.json"));
              const ADAPTER_NAME = ioPack.common.name;
              ! const ssh = new nodeSSH();
              const sshConfig = require(path.join(_dirname, "deploy_password.json"));
              ! const remoteRoot = /opt/iobroker/node_modules/iobroker.${ADAPTER_NAME};
              ! (async function main() {
              await ssh.connect(sshConfig);
              ! for (const dir of uploadDirs) {
              console.log(cleaning ${dir} dir...);
              await ssh.execCommand(rm -rf ${path.join(remoteRoot, dir)});
              console.log(uploading ${dir} dir...);
              try {
              await ssh.putDirectory(path.join(localRoot, dir), path.join(remoteRoot, dir), {
              recursive: true,
              concurrency: 10,
              validate: (pathname) => {
              const basename = path.basename(pathname);
              if (basename.startsWith("deploy
              ")) return false;
              if (basename.endsWith("Thumbs.db")) return false;
              if (basename.endsWith(".map") && basename.indexOf(".bundle.") === -1) return false;
              if (basename.indexOf(".test.") > -1) return false;
              if (basename === "src") return false;
              return true;
              },
              });
              } catch (e) {
              console.error(e);
              }
              }
              for (const file of uploadFiles) {
              console.log(uploading ${file}...);
              await ssh.putFile(path.join(localRoot, file), path.join(remoteRoot, file));
              }
              ! // update in-mem adapter
              let execResult;
              console.log("updating in-mem adapter");
              execResult = await ssh.execCommand(iobroker upload ${ADAPTER_NAME});
              console.log(execResult.stdout);
              console.log(execResult.stderr);
              if (process.argv.indexOf("--norestart") === -1) {
              execResult = await ssh.execCommand(iobroker restart ${ADAPTER_NAME});
              console.log(execResult.stdout);
              console.log(execResult.stderr);
              }
              ! console.log("done");
              process.exit(0);
              })();</password></username></hostname>

              und erfordert in package.json
              

              "devDependencies": {
              "node-ssh": "^5.0.0",
              "ts-node": "^4.1.0",
              "typescript": "^2.6.2",
              }

              Wenn das Skript konfiguriert ist (siehe Kommentare am Skript-Anfang), reicht ein "npm run deploy_local" und die aktualisierten Adapterdateien werden per SSH auf dem Zielhost hochgeladen und der Adapter dort aktualisiert/neu gestartet.
              
              Für dein Vorhaben musst du vermutlich vorher noch 1-2 Skripte lokal ausführen, um die Übersetzungsdateien umzuwandeln. `  Wau danke werde mir das morgen Mal anschauen
              

              Gesendet von meinem HUAWEI VNS-L31 mit Tapatalk

              Liebe Grüße Tobias

              1 Antwort Letzte Antwort
              0
              Antworten
              • In einem neuen Thema antworten
              Anmelden zum Antworten
              • Älteste zuerst
              • Neuste zuerst
              • Meiste Stimmen


              Support us

              ioBroker
              Community Adapters
              Donate
              FAQ Cloud / IOT
              HowTo: Node.js-Update
              HowTo: Backup/Restore
              Downloads
              BLOG

              371

              Online

              32.5k

              Benutzer

              81.7k

              Themen

              1.3m

              Beiträge
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2025
              logo
              • Anmelden

              • Du hast noch kein Konto? Registrieren

              • Anmelden oder registrieren, um zu suchen
              • Erster Beitrag
                Letzter Beitrag
              0
              • Home
              • Aktuell
              • Tags
              • Ungelesen 0
              • Kategorien
              • Unreplied
              • Beliebt
              • GitHub
              • Docu
              • Hilfe