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. Skripten / Logik
  4. JavaScript
  5. [gelöst]Datenpunkt erstellen aus respons

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.6k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    848

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

[gelöst]Datenpunkt erstellen aus respons

Geplant Angeheftet Gesperrt Verschoben JavaScript
10 Beiträge 3 Kommentatoren 849 Aufrufe 3 Watching
  • Ä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.
  • F Offline
    F Offline
    fototec
    schrieb am zuletzt editiert von fototec
    #1

    Hallo, ich benötige mal eure Hilfe... Leider hab ich nicht so die Ahnung von javascript und komme nicht weiter. ich hab folgenden Code um ein Relay zu schalten:

    on({id: "javascript.0.KMTronic_!"/*KMTronic 1*/, change: "any"}, function(obj) {
      var request = require('request'),
        username = "123",
        password = "123",
        url = 'http://192.168.178.103:7771/relays.cgi?relay=1',
        auth = "Basic " + new Buffer(username + ":" + password).toString("base64");
     
      request({
            url : url,
            headers : {'Authorization' : auth}
        },
        function (Status, response, body) {
                log('Status: ' + Status);
                log('response: ' + JSON.stringify(response));
                log('body: ' + body);
        }
      );
    });```
    code_text
    

    Im Log wird folgendes ausgegeben:

    javascript.0 2020-10-13 07:58:41.345 info </div>
    javascript.0 2020-10-13 07:58:41.345 info </p>
    javascript.0 2020-10-13 07:58:41.345 info Relay8: Relay8
    javascript.0 2020-10-13 07:58:41.345 info Relay7: Relay7
    javascript.0 2020-10-13 07:58:41.345 info Relay6: Relay6
    javascript.0 2020-10-13 07:58:41.345 info Relay5: Relay5
    javascript.0 2020-10-13 07:58:41.345 info Relay4: Relay4
    javascript.0 2020-10-13 07:58:41.345 info Relay3: Relay3
    javascript.0 2020-10-13 07:58:41.345 info Relay2: Relay2
    javascript.0 2020-10-13 07:58:41.345 info Relay1: lampe1
    javascript.0 2020-10-13 07:58:41.345 info Status: 0 0 0 0 0 0 0 0
    javascript.0 2020-10-13 07:58:41.345 info <p hidden>
    javascript.0 2020-10-13 07:58:41.345 info <div>
    javascript.0 2020-10-13 07:58:41.345 info
    javascript.0 2020-10-13 07:58:41.345 info </div>
    javascript.0 2020-10-13 07:58:41.345 info <font size="5"> Relay8 <span style="color:red">0 </span> </font>
    javascript.0 2020-10-13 07:58:41.345 info <br />
    javascript.0 2020-10-13 07:58:41.345 info <br />
    javascript.0 2020-10-13 07:58:41.345 info <br />
    javascript.0 2020-10-13 07:58:41.345 info <font size="5"> Relay7 <span style="color:red">0 </span> </font>
    javascript.0 2020-10-13 07:58:41.345 info <br />
    javascript.0 2020-10-13 07:58:41.345 info <br />
    javascript.0 2020-10-13 07:58:41.345 info <br />
    javascript.0 2020-10-13 07:58:41.345 info <font size="5"> Relay6 <span style="color:red">0 </span> </font>
    javascript.0 2020-10-13 07:58:41.345 info <br />
    javascript.0 2020-10-13 07:58:41.345 info <br />
    javascript.0 2020-10-13 07:58:41.345 info <br />
    javascript.0 2020-10-13 07:58:41.345 info <font size="5"> Relay5 <span style="color:red">0 </span> </font>
    javascript.0 2020-10-13 07:58:41.345 info <br />
    javascript.0 2020-10-13 07:58:41.345 info <br />
    javascript.0 2020-10-13 07:58:41.345 info <br />
    javascript.0 2020-10-13 07:58:41.345 info <font size="5"> Relay4 <span style="color:red">0 </span> </font>
    javascript.0 2020-10-13 07:58:41.345 info <br />
    javascript.0 2020-10-13 07:58:41.345 info <br />
    javascript.0 2020-10-13 07:58:41.345 info <br />
    javascript.0 2020-10-13 07:58:41.345 info <font size="5"> Relay3 <span style="color:red">0 </span> </font>
    javascript.0 2020-10-13 07:58:41.345 info <br />
    javascript.0 2020-10-13 07:58:41.345 info <br />
    javascript.0 2020-10-13 07:58:41.345 info <br />
    javascript.0 2020-10-13 07:58:41.345 info <font size="5"> Relay2 <span style="color:red">0 </span> </font>
    javascript.0 2020-10-13 07:58:41.345 info <br />
    javascript.0 2020-10-13 07:58:41.345 info <br />
    javascript.0 2020-10-13 07:58:41.345 info <br />
    javascript.0 2020-10-13 07:58:41.345 info <font size="5"> lampe1 <span style="color:red">0 </span> </font>
    javascript.0 2020-10-13 07:58:41.345 info (11485) script.js.KMT.TestKmt_1: body: <div>
    javascript.0 2020-10-13 07:58:41.344 info (11485) script.js.KMT.TestKmt_1: response: {"statusCode":200,"body":"<div>\r\n<font size="5"> lampe1 <span style="color:red">0 </span> </font>\r\n<br />\r\n<br />\r\n<br
    javascript.0 2020-10-13 07:58:41.344 info (11485) script.js.KMT.TestKmt_1: Status: null
    javascript.0 2020-10-13 07:58:37.562 info (11485) script.js.KMT.TestKmt_1: registered 1 subscription and 0 schedules
    javascript.0 2020-10-13 07:58:37.541 info (11485) Start javascript script.js.KMT.TestKmt_1

    Nun zu meinem Problem, ich möchte das der Status bei jedem schalten in einem Datenpunkt geschrieben wird bzw aktualisiert wird. leider hab ich keine Idee dazu. vieleicht kann mir jemand weiter helfen. Danke und liebe Grüße

    UncleSamU 1 Antwort Letzte Antwort
    0
    • F fototec

      Hallo, ich benötige mal eure Hilfe... Leider hab ich nicht so die Ahnung von javascript und komme nicht weiter. ich hab folgenden Code um ein Relay zu schalten:

      on({id: "javascript.0.KMTronic_!"/*KMTronic 1*/, change: "any"}, function(obj) {
        var request = require('request'),
          username = "123",
          password = "123",
          url = 'http://192.168.178.103:7771/relays.cgi?relay=1',
          auth = "Basic " + new Buffer(username + ":" + password).toString("base64");
       
        request({
              url : url,
              headers : {'Authorization' : auth}
          },
          function (Status, response, body) {
                  log('Status: ' + Status);
                  log('response: ' + JSON.stringify(response));
                  log('body: ' + body);
          }
        );
      });```
      code_text
      

      Im Log wird folgendes ausgegeben:

      javascript.0 2020-10-13 07:58:41.345 info </div>
      javascript.0 2020-10-13 07:58:41.345 info </p>
      javascript.0 2020-10-13 07:58:41.345 info Relay8: Relay8
      javascript.0 2020-10-13 07:58:41.345 info Relay7: Relay7
      javascript.0 2020-10-13 07:58:41.345 info Relay6: Relay6
      javascript.0 2020-10-13 07:58:41.345 info Relay5: Relay5
      javascript.0 2020-10-13 07:58:41.345 info Relay4: Relay4
      javascript.0 2020-10-13 07:58:41.345 info Relay3: Relay3
      javascript.0 2020-10-13 07:58:41.345 info Relay2: Relay2
      javascript.0 2020-10-13 07:58:41.345 info Relay1: lampe1
      javascript.0 2020-10-13 07:58:41.345 info Status: 0 0 0 0 0 0 0 0
      javascript.0 2020-10-13 07:58:41.345 info <p hidden>
      javascript.0 2020-10-13 07:58:41.345 info <div>
      javascript.0 2020-10-13 07:58:41.345 info
      javascript.0 2020-10-13 07:58:41.345 info </div>
      javascript.0 2020-10-13 07:58:41.345 info <font size="5"> Relay8 <span style="color:red">0 </span> </font>
      javascript.0 2020-10-13 07:58:41.345 info <br />
      javascript.0 2020-10-13 07:58:41.345 info <br />
      javascript.0 2020-10-13 07:58:41.345 info <br />
      javascript.0 2020-10-13 07:58:41.345 info <font size="5"> Relay7 <span style="color:red">0 </span> </font>
      javascript.0 2020-10-13 07:58:41.345 info <br />
      javascript.0 2020-10-13 07:58:41.345 info <br />
      javascript.0 2020-10-13 07:58:41.345 info <br />
      javascript.0 2020-10-13 07:58:41.345 info <font size="5"> Relay6 <span style="color:red">0 </span> </font>
      javascript.0 2020-10-13 07:58:41.345 info <br />
      javascript.0 2020-10-13 07:58:41.345 info <br />
      javascript.0 2020-10-13 07:58:41.345 info <br />
      javascript.0 2020-10-13 07:58:41.345 info <font size="5"> Relay5 <span style="color:red">0 </span> </font>
      javascript.0 2020-10-13 07:58:41.345 info <br />
      javascript.0 2020-10-13 07:58:41.345 info <br />
      javascript.0 2020-10-13 07:58:41.345 info <br />
      javascript.0 2020-10-13 07:58:41.345 info <font size="5"> Relay4 <span style="color:red">0 </span> </font>
      javascript.0 2020-10-13 07:58:41.345 info <br />
      javascript.0 2020-10-13 07:58:41.345 info <br />
      javascript.0 2020-10-13 07:58:41.345 info <br />
      javascript.0 2020-10-13 07:58:41.345 info <font size="5"> Relay3 <span style="color:red">0 </span> </font>
      javascript.0 2020-10-13 07:58:41.345 info <br />
      javascript.0 2020-10-13 07:58:41.345 info <br />
      javascript.0 2020-10-13 07:58:41.345 info <br />
      javascript.0 2020-10-13 07:58:41.345 info <font size="5"> Relay2 <span style="color:red">0 </span> </font>
      javascript.0 2020-10-13 07:58:41.345 info <br />
      javascript.0 2020-10-13 07:58:41.345 info <br />
      javascript.0 2020-10-13 07:58:41.345 info <br />
      javascript.0 2020-10-13 07:58:41.345 info <font size="5"> lampe1 <span style="color:red">0 </span> </font>
      javascript.0 2020-10-13 07:58:41.345 info (11485) script.js.KMT.TestKmt_1: body: <div>
      javascript.0 2020-10-13 07:58:41.344 info (11485) script.js.KMT.TestKmt_1: response: {"statusCode":200,"body":"<div>\r\n<font size="5"> lampe1 <span style="color:red">0 </span> </font>\r\n<br />\r\n<br />\r\n<br
      javascript.0 2020-10-13 07:58:41.344 info (11485) script.js.KMT.TestKmt_1: Status: null
      javascript.0 2020-10-13 07:58:37.562 info (11485) script.js.KMT.TestKmt_1: registered 1 subscription and 0 schedules
      javascript.0 2020-10-13 07:58:37.541 info (11485) Start javascript script.js.KMT.TestKmt_1

      Nun zu meinem Problem, ich möchte das der Status bei jedem schalten in einem Datenpunkt geschrieben wird bzw aktualisiert wird. leider hab ich keine Idee dazu. vieleicht kann mir jemand weiter helfen. Danke und liebe Grüße

      UncleSamU Offline
      UncleSamU Offline
      UncleSam
      Developer
      schrieb am zuletzt editiert von
      #2

      @fototec Das sieht nicht nach einer API aus, sondern eher nach einer Webpage.

      Was ist das für ein Relais? Wo findet man die Dokumentation dazu?
      Ich nehme an es ist dieses: https://info.kmtronic.com/kmtronic-lan-ethernet-ip-8-channels-web-relay-board.html

      Grundsätzlich sieht das JavaScript nicht falsch aus, aber die URL stimmt wohl nicht. Es müsste eine URL sein, die etwas ausführt, nicht eine URL die etwas anzeigt. Normalerweise geben API URLs XML oder JSON zurück, bei deiner URL ist es aber eine gewöhnliche Webpage.

      Am einfachsten geht es wenn du mit deinem Browser (Chrome oder aktuellster Edge) auf die Seite gehst und F12 drückst). Dann mal "von Hand" die Relais schalten und unter "Netzwerk" schauen, was da für Requests geschickt werden. Wie gesagt: du willst nicht die Seite, die das Relais als HTML darstellt sondern die URL, die aufgerufen wird, wenn du einen der Relais-Knöpfe im Browser drückst.

      Bitte bei Problemen mit meinen Adaptern, Issue auf GitHub erfassen: Loxone | I2C | Luxtronik2
      ♡-lichen Dank an meine Sponsoren

      1 Antwort Letzte Antwort
      0
      • UncleSamU Offline
        UncleSamU Offline
        UncleSam
        Developer
        schrieb am zuletzt editiert von
        #3

        Wenn du's dir übrigens einfach machen willst, installiere in ioBroker Node-Red und benutze den Flow, der KMTronic zur Verfügung stellt:
        https://github.com/kmtronic-ltd/node-red-example/

        Bitte bei Problemen mit meinen Adaptern, Issue auf GitHub erfassen: Loxone | I2C | Luxtronik2
        ♡-lichen Dank an meine Sponsoren

        1 Antwort Letzte Antwort
        0
        • UncleSamU Offline
          UncleSamU Offline
          UncleSam
          Developer
          schrieb am zuletzt editiert von
          #4

          ... und wenn ich mir den Flow so anschaue, dann lautet die URL:
          http://192.168.178.103:7771/FF0x0y wobei x die Relais-Nummer (begonnen mit 1) ist und y das Relais ein (1) oder aus (0) schaltet. Also z.B. http://192.168.178.103:7771/FF0100 schaltet das Relais 1 aus.

          Bitte bei Problemen mit meinen Adaptern, Issue auf GitHub erfassen: Loxone | I2C | Luxtronik2
          ♡-lichen Dank an meine Sponsoren

          1 Antwort Letzte Antwort
          0
          • F Offline
            F Offline
            fototec
            schrieb am zuletzt editiert von
            #5

            Danke für deine Hilfe, du liegst da richtig mit dem :https://info.kmtronic.com/kmtronic-lan-ethernet-ip-8-channels-web-relay-board.html
            Also schalten tut das Relay mit meinem Script, aber ich würde gern das der Status der im Log steht in einen Datenpunkt geschrieben wird.. (javascript.0 2020-10-13 07:58:41.345 info Status: 0 0 0 0 0 0 0 0) dazu hab ich keine Idee..

            1 Antwort Letzte Antwort
            0
            • F Offline
              F Offline
              fototec
              schrieb am zuletzt editiert von
              #6

              Es wird mir ja im Log geschrieben und daher muss es doch einen Weg geben der es in einen Datenpunkt schreibt..

              AsgothianA 1 Antwort Letzte Antwort
              0
              • F fototec

                Es wird mir ja im Log geschrieben und daher muss es doch einen Weg geben der es in einen Datenpunkt schreibt..

                AsgothianA Offline
                AsgothianA Offline
                Asgothian
                Developer
                schrieb am zuletzt editiert von Asgothian
                #7

                @fototec
                Schritt 0: einmal vorweg mit „createState“ die 8 stati anlegen die du später füllen willst.
                Sieht auch: https://www.iobroker.net/docu/index-81.htm?page_id=5809&lang=en#createState

                Schritt 1: regexp erzeugen, welches aus der Variable Status den Zustand der Relais sauber findet. Da dieser aus 8 zahlen, z.bsp.

                0 0 0 0 0 0 0 0
                

                besteht sollte das machbar sein. Zum Testen bietet sich
                https://regex101.com/
                an.

                Schritt 2: aus den 8 zahlen die 8 stati der einzelnen Relais extrahieren.

                Schritt 3: je nach Status die mit „createState“ angelegten Datenpunkte via „setState“ aktualisieren.

                Schritt 4: Erfolg genießen.

                A.

                ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                F 1 Antwort Letzte Antwort
                0
                • AsgothianA Asgothian

                  @fototec
                  Schritt 0: einmal vorweg mit „createState“ die 8 stati anlegen die du später füllen willst.
                  Sieht auch: https://www.iobroker.net/docu/index-81.htm?page_id=5809&lang=en#createState

                  Schritt 1: regexp erzeugen, welches aus der Variable Status den Zustand der Relais sauber findet. Da dieser aus 8 zahlen, z.bsp.

                  0 0 0 0 0 0 0 0
                  

                  besteht sollte das machbar sein. Zum Testen bietet sich
                  https://regex101.com/
                  an.

                  Schritt 2: aus den 8 zahlen die 8 stati der einzelnen Relais extrahieren.

                  Schritt 3: je nach Status die mit „createState“ angelegten Datenpunkte via „setState“ aktualisieren.

                  Schritt 4: Erfolg genießen.

                  A.

                  F Offline
                  F Offline
                  fototec
                  schrieb am zuletzt editiert von
                  #8

                  @Asgothian
                  leider hab ich so garkeine Ahnung von Javascript :( das ist ja mein Problem..

                  UncleSamU 1 Antwort Letzte Antwort
                  0
                  • F fototec

                    @Asgothian
                    leider hab ich so garkeine Ahnung von Javascript :( das ist ja mein Problem..

                    UncleSamU Offline
                    UncleSamU Offline
                    UncleSam
                    Developer
                    schrieb am zuletzt editiert von
                    #9

                    @fototec sagte in Datenpunkt erstellen aus respons:

                    leider hab ich so garkeine Ahnung von Javascript

                    Dann mach es bitte mit Node-Red oder Blockly. Beide benötigen keine Programmier-Erfahrung. Weil JavaScript ist dann dann doch nicht in einer Stunde gelernt (vor allem wenn man ohne Programmierkenntnisse ran geht). Oder such dir Beispiele hier im Forum, wie man States anlegt und beschreibt und kopiere die Sachen zusammen.

                    Wofür brauchst du denn die Datenpunkte?

                    Bitte bei Problemen mit meinen Adaptern, Issue auf GitHub erfassen: Loxone | I2C | Luxtronik2
                    ♡-lichen Dank an meine Sponsoren

                    F 1 Antwort Letzte Antwort
                    0
                    • UncleSamU UncleSam

                      @fototec sagte in Datenpunkt erstellen aus respons:

                      leider hab ich so garkeine Ahnung von Javascript

                      Dann mach es bitte mit Node-Red oder Blockly. Beide benötigen keine Programmier-Erfahrung. Weil JavaScript ist dann dann doch nicht in einer Stunde gelernt (vor allem wenn man ohne Programmierkenntnisse ran geht). Oder such dir Beispiele hier im Forum, wie man States anlegt und beschreibt und kopiere die Sachen zusammen.

                      Wofür brauchst du denn die Datenpunkte?

                      F Offline
                      F Offline
                      fototec
                      schrieb am zuletzt editiert von
                      #10

                      @UncleSam
                      Guten Morgen, und danke an alle die mir bis jetzt schon einiges geschrieben haben,,

                      Die Datenpunkte brauch ich um die Zustände des Relays weiter geben zu können.. mir war klar das es nicht einfach ist und mit Node Red ist es natürlich möglich jedoch ist es wieder ein Adapter mehr ,, trotzdem danke für deine Zeit .

                      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

                      811

                      Online

                      32.6k

                      Benutzer

                      82.1k

                      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