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]Datenpunkt erstellen aus respons

    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]Datenpunkt erstellen aus respons

    This topic has been deleted. Only users with topic management privileges can see it.
    • F
      fototec last edited by 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

      UncleSam 1 Reply Last reply Reply Quote 0
      • UncleSam
        UncleSam Developer @fototec last edited by

        @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.

        1 Reply Last reply Reply Quote 0
        • UncleSam
          UncleSam Developer last edited by

          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/

          1 Reply Last reply Reply Quote 0
          • UncleSam
            UncleSam Developer last edited by

            ... 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.

            1 Reply Last reply Reply Quote 0
            • F
              fototec last edited by

              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 Reply Last reply Reply Quote 0
              • F
                fototec last edited by

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

                Asgothian 1 Reply Last reply Reply Quote 0
                • Asgothian
                  Asgothian Developer @fototec last edited by 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 1 Reply Last reply Reply Quote 0
                  • F
                    fototec @Asgothian last edited by

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

                    UncleSam 1 Reply Last reply Reply Quote 0
                    • UncleSam
                      UncleSam Developer @fototec last edited by

                      @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 1 Reply Last reply Reply Quote 0
                      • F
                        fototec @UncleSam last edited by

                        @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 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        882
                        Online

                        31.9k
                        Users

                        80.2k
                        Topics

                        1.3m
                        Posts

                        3
                        10
                        652
                        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