Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. (gelöst) Verständnisfrage

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    (gelöst) Verständnisfrage

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      mcfly11111 last edited by mcfly11111

      Hallo,
      meine Kenntnisse in Javascript halten sich in Grenzen. Meine Scripte habe ich mir überwiegend aus Schnipseln gebastelt und auf meine Bedürfnisse angepasst. Ein Script allerdings, mit dem ich insgesamt 5 Funksteckdosen steuere, verstehe ich nicht.


      const Client = require('ssh2').Client;

      on({id: 'javascript.0.steckdosen.steckdose_1'}, function (obj) {
      if (getState("javascript.0.steckdosen.steckdose_1").val == 1)
      {
      execein1();
      } else {
      execaus1();
      }
      })
      on({id: 'javascript.0.steckdosen.steckdose_2'}, function (obj) {
      if (getState("javascript.0.steckdosen.steckdose_2").val == 1)
      {
      execein2();
      } else {
      execaus2();
      }
      })
      on({id: 'javascript.0.steckdosen.steckdose_3'}, function (obj) {
      if (getState("javascript.0.steckdosen.steckdose_3").val == 1)
      {
      execein3();
      } else {
      execaus3();
      }
      })
      on({id: 'javascript.0.steckdosen.steckdose_4'}, function (obj) {
      if (getState("javascript.0.steckdosen.steckdose_4").val == 1)
      {
      execein4();
      } else {
      execaus4();
      }
      })
      on({id: 'javascript.0.steckdosen.steckdose_5'}, function (obj) {
      if (getState("javascript.0.steckdosen.steckdose_5").val == 1)
      {
      execein5();
      } else {
      execaus5();
      }
      })
      function execein1() {
      var conn = new Client();
      conn.on('ready', function() {
      conn.exec('/bin/send 00001 1 1', function(err, stream) {
      if (err) throw err;
      stream.on('close', function(code, signal) {
      conn.end();
      }).on('data', function(data) {
      log('Ausgabe: ' + data);
      }).stderr.on('data', function(data) {
      log('Fehler: ' + data);
      });
      });
      }).connect({
      host: '10.100.10.12', // IP des RPi
      port: 22,
      username: 'root',
      password: 'root'
      });
      }
      function execaus1() {
      var conn = new Client();
      conn.on('ready', function() {
      conn.exec('/bin/send 00001 1 0', function(err, stream) {
      if (err) throw err;
      stream.on('close', function(code, signal) {
      conn.end();
      }).on('data', function(data) {
      log('Ausgabe: ' + data);
      }).stderr.on('data', function(data) {
      log('Fehler: ' + data);
      });
      });
      }).connect({
      host: '10.100.10.12', // IP des RPi
      port: 22,
      username: 'root',
      password: 'root'
      });
      }
      function execein2() {
      var conn = new Client();
      conn.on('ready', function() {
      conn.exec('/bin/send 00001 2 1', function(err, stream) {
      if (err) throw err;
      stream.on('close', function(code, signal) {
      conn.end();
      }).on('data', function(data) {
      log('Ausgabe: ' + data);
      }).stderr.on('data', function(data) {
      log('Fehler: ' + data);
      });
      });
      }).connect({
      host: '10.100.10.12', // IP des RPi
      port: 22,
      username: 'root',
      password: 'root'
      });
      }
      function execaus2() {
      var conn = new Client();
      conn.on('ready', function() {
      conn.exec('/bin/send 00001 2 0', function(err, stream) {
      if (err) throw err;
      stream.on('close', function(code, signal) {
      conn.end();
      }).on('data', function(data) {
      log('Ausgabe: ' + data);
      }).stderr.on('data', function(data) {
      log('Fehler: ' + data);
      });
      });
      }).connect({
      host: '10.100.10.12', // IP des RPi
      port: 22,
      username: 'root',
      password: 'root'
      });
      }
      function execein3() {
      var conn = new Client();
      conn.on('ready', function() {
      conn.exec('/bin/send 00001 3 1', function(err, stream) {
      if (err) throw err;
      stream.on('close', function(code, signal) {
      conn.end();
      }).on('data', function(data) {
      log('Ausgabe: ' + data);
      }).stderr.on('data', function(data) {
      log('Fehler: ' + data);
      });
      });
      }).connect({
      host: '10.100.10.12', // IP des RPi
      port: 22,
      username: 'root',
      password: 'root'
      });
      }
      function execaus3() {
      var conn = new Client();
      conn.on('ready', function() {
      conn.exec('/bin/send 00001 3 0', function(err, stream) {
      if (err) throw err;
      stream.on('close', function(code, signal) {
      conn.end();
      }).on('data', function(data) {
      log('Ausgabe: ' + data);
      }).stderr.on('data', function(data) {
      log('Fehler: ' + data);
      });
      });
      }).connect({
      host: '10.100.10.12', // IP des RPi
      port: 22,
      username: 'root',
      password: 'root'
      });
      }
      function execein4() {
      var conn = new Client();
      conn.on('ready', function() {
      conn.exec('/bin/send 00001 4 1', function(err, stream) {
      if (err) throw err;
      stream.on('close', function(code, signal) {
      conn.end();
      }).on('data', function(data) {
      log('Ausgabe: ' + data);
      }).stderr.on('data', function(data) {
      log('Fehler: ' + data);
      });
      });
      }).connect({
      host: '10.100.10.12', // IP des RPi
      port: 22,
      username: 'root',
      password: 'root'
      });
      }
      function execaus4() {
      var conn = new Client();
      conn.on('ready', function() {
      conn.exec('/bin/send 00001 4 0', function(err, stream) {
      if (err) throw err;
      stream.on('close', function(code, signal) {
      conn.end();
      }).on('data', function(data) {
      log('Ausgabe: ' + data);
      }).stderr.on('data', function(data) {
      log('Fehler: ' + data);
      });
      });
      }).connect({
      host: '10.100.10.12', // IP des RPi
      port: 22,
      username: 'root',
      password: 'root'
      });
      }
      function execein5() {
      var conn = new Client();
      conn.on('ready', function() {
      conn.exec('/bin/send 00001 5 1', function(err, stream) {
      if (err) throw err;
      stream.on('close', function(code, signal) {
      conn.end();
      }).on('data', function(data) {
      log('Ausgabe: ' + data);
      }).stderr.on('data', function(data) {
      log('Fehler: ' + data);
      });
      });
      }).connect({
      host: '10.100.10.12', // IP des RPi
      port: 22,
      username: 'root',
      password: 'root'
      });
      }
      function execaus5() {
      var conn = new Client();
      conn.on('ready', function() {
      conn.exec('/bin/send 00001 5 0', function(err, stream) {
      if (err) throw err;
      stream.on('close', function(code, signal) {
      conn.end();
      }).on('data', function(data) {
      log('Ausgabe: ' + data);
      }).stderr.on('data', function(data) {
      log('Fehler: ' + data);
      });
      });
      }).connect({
      host: '10.100.10.12', // IP des RPi
      port: 22,
      username: 'root',
      password: 'root'
      });
      }


      Für die Steckdosen habe ich 5 Datenpunkte angelegt. Steckdosen 1-4 werden in VIS mit basic - Bulb on/off gesteuert und funktionieren auch.
      Steckdose 5 steuere ich über Blockly mit einem Timer, geht auch.
      Was ich allerdings nicht verstehe, Steckdose 1, 3, und 4 liefern in den Objekten 0/1, 2 und 5 jedoch true/false. Die einzelnen Blöcke im Script habe ich mit copy/paste angelegt und sind identisch.
      Sicherlich könnte man das Script vereinfachen, dies übersteigt aber mein Können und für mich ist wichtig, dass es funktioniert.
      Für die Zukunft würde mich schon interessieren, woher diese unterschiedlichen states kommen.
      steckdosen.png

      Vielen Dank im Voraus

      A 1 Reply Last reply Reply Quote 0
      • A
        Adnim @mcfly11111 last edited by

        @mcfly11111 sagte in Verständnisfrage:

        sername: 'root',
        password: 'root'

        passwort ist aber einfach 🕵️‍♂️

        womit hast du den die Datenpunkte angelegt? die müssen boolean sein? aber java übersetzt auch immer 0-1 ->an-aus

        1 Reply Last reply Reply Quote 0
        • C
          charakterkopf last edited by

          Hi 🙂

          Neben den Datenpunkt kannst du ja den Datentyp des States einstellen:
          Stift Symbol drücken- > Und dann unter Art

          Logikwert (True, False)
          oder
          Zahl (0,1,2,.......)

          auswählen.

          Wenn du beim erstellen der Datenpunkte z.B. Gemischt ausgewählt hast verändert sich der Datenpunkt.

          Du schreibst per Script 0/1 rein. Bulb aber true, false. Dank der interpretation von Iobroker 0=false und 1 = true funktioniert es.

          1 Reply Last reply Reply Quote 0
          • M
            mcfly11111 last edited by

            Hi,
            war das Wochenende nicht zu Hause.
            Die Datenpunkte habe ich per script angelegt.


            createState('steckdosen.steckdose_1', 0, { type: 'number' });
            createState('steckdosen.steckdose_2', 0, { type: 'number' });
            createState('steckdosen.steckdose_3', 0, { type: 'number' });
            createState('steckdosen.steckdose_4', 0, { type: 'number' });
            createState('steckdosen.steckdose_5', 0, { type: 'number' });

            Geändert hab ich die auch schon, Zahl oder Logikwert. Sind jedenfalls immer identisch. Bisher keine Änderung.
            Jetzt sämtliche steckdosen-DP in den Objekten gelöscht und per script, wie oben, neu angelegt. Alle DP zeigen jetzt 0/1! Warum das vorher anders war, wird mir aber dennoch ein Rätsel bleiben.
            Das Passwort wird noch geändert. Stammt noch vom setup und ist einfacher einzugeben.

            Danke

            1 Reply Last reply Reply Quote 0
            • First post
              Last post

            Support us

            ioBroker
            Community Adapters
            Donate

            818
            Online

            31.9k
            Users

            80.1k
            Topics

            1.3m
            Posts

            3
            4
            320
            Loading More Posts
            • Oldest to Newest
            • Newest to Oldest
            • Most Votes
            Reply
            • Reply as topic
            Log in to reply
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
            The ioBroker Community 2014-2023
            logo