Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Daten aus einer URL in eine Variable schreiben

NEWS

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.8k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.0k

Daten aus einer URL in eine Variable schreiben

Scheduled Pinned Locked Moved Skripten / Logik
28 Posts 11 Posters 5.1k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S Offline
    S Offline
    stoepselinho
    wrote on last edited by
    #1

    hallo,

    ich würde gerne von der URL http://192.168.xxx.xxx/pc.js?min zwei Daten in eine Variable schreiben.

    sieht dann so bei mir aus: (ein kleiner Auszug) davon möchte ich z.b. die 623 und die erste 0 nach dem | in eine Variable schreiben. Die Zahlen können auch Mal vierstellig werden. Hat da jemand eine Idee?

    m[mi++]="28.01.17 18:20:00|623;0;8368|0;0;0;6275;0;0"

    m[mi++]="28.01.17 18:15:00|623;0;8317|0;0;0;6275;0;0"

    m[mi++]="28.01.17 18:10:00|652;0;8265|0;0;0;6275;0;0"

    1 Reply Last reply
    0
    • paul53P Offline
      paul53P Offline
      paul53
      wrote on last edited by
      #2

      Das sind keine Daten, sondern es ist Javascript Code.

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      1 Reply Last reply
      0
      • S Offline
        S Offline
        stoepselinho
        wrote on last edited by
        #3

        Dann hätte ich gerne den Code in eine Variable

        1 Reply Last reply
        0
        • a200A Offline
          a200A Offline
          a200
          wrote on last edited by
          #4

          Sind es immer drei Zeilen?

          ich würde das in etwa so machen:

          var url = "http://192.168.xxx.xxx/pc.js?min";

          my $html = qx{curl –silent $url};

          var zeile html[html.length - 1];

          var FeldArray = zeile.split('|');

          var mitteArray = FeldArray[2].split(';');

          var rechtsArray = FeldArray[3].split(';');

          var a = parseInt(mitteArray[1]);

          var b = parseInt(rechtsArray[1]);

          In der Variable a sollte "623" als Integer stehen

          In der Variable b sollte "0" als Integer stehen

          Alles ungeprüft. aber so in etwa sollte es gehen.

          IoBroker auf QNAP TS-451, Raspi und NUC

          1 Reply Last reply
          0
          • S Offline
            S Offline
            stoepselinho
            wrote on last edited by
            #5

            Es sind deutlich mehr als drei Zeilen. In den ersten Zeilen steht allgemeines zu Anlagen Größe und so.

            1 Reply Last reply
            0
            • a200A Offline
              a200A Offline
              a200
              wrote on last edited by
              #6

              @stoepselinho:

              Es sind deutlich mehr als drei Zeilen. In den ersten Zeilen steht allgemeines zu Anlagen Größe und so. `

              Was willst du denn genau ausgelesen bekommen?

              IoBroker auf QNAP TS-451, Raspi und NUC

              1 Reply Last reply
              0
              • apollon77A Online
                apollon77A Online
                apollon77
                wrote on last edited by
                #7

                hey,

                Es gibt den neuen "Parser"-Adapter … der kann regelmäßig URLs abholen und dort per Regex parsen

                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 Reply Last reply
                0
                • S Offline
                  S Offline
                  stoepselinho
                  wrote on last edited by
                  #8

                  Hinter der IP steckt mein PV Datenlogger und ich will mir den aktuellen Ertrag und den aktuellen Verbrauch vom Haus in einer Variablen speichern um es mit vis darzustellen

                  1 Reply Last reply
                  0
                  • P Offline
                    P Offline
                    pix
                    wrote on last edited by
                    #9

                    Hallo,

                    mit diesem Ausdruck (nicht greedy) kannst du die Zahlen aus der erste Zeile rausfischen:

                    (?<=[|])[0-9]*(?=[;])
                    

                    Der Ausdruck sucht Zahlenkombinationen, denen ein "|" vorausgeht und ein ";" folgt.

                    Das ganze in den parser-Adapter kopiert sollte funktionieren.
                    261_bildschirmfoto_2017-01-30_um_13.04.07.png

                    Jetzt wird alle 300.000 ms oder 5min der Ausdruck gesucht und in den Datenpunkt parser.0.solar geschrieben.

                    Kann sein, dass der Typ number noch Probleme macht und natürlich solltest du den URL noch komplettieren.

                    Kann es selbst natürlich nicht ausprobieren 😄

                    Gruß

                    Pix

                    ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                    1 Reply Last reply
                    0
                    • S Offline
                      S Offline
                      stoepselinho
                      wrote on last edited by
                      #10

                      Werd ich heute Abend mal ausprobieren. Muss ich die richtige Zeile irgendwo angeben?

                      Speichert der dann beide Werte in einer Variablen ab?

                      1 Reply Last reply
                      0
                      • P Offline
                        P Offline
                        pix
                        wrote on last edited by
                        #11

                        Nein, er speichert pro Zeile in den Einstellungen des parser-Adapters nur einen Wert. Da musst du noch eine Zeile anfügen.

                        Du kannst auch diesen Ausdruck nehmen:

                        [0-9]*(?=[;])
                        ````für jede Zahl vor einem Semikolon nicht gierig, also nur beim ersten Vorkommen (nur der rote Wert).
                        
                        m[mi++]="28.01.17 18:20:00|623;0;8368|0;0;0;6275;0;0"
                        
                        m[mi++]="28.01.17 18:15:00|623;0;8317|0;0;0;6275;0;0"
                        
                        m[mi++]="28.01.17 18:10:00|652;0;8265|0;0;0;6275;0;0"
                        
                        Welche Werte brauchst du? Ist mir immer noch nicht klar. Kannst du das auch mal den Farben markieren?
                        
                        Gruß
                        
                        Pix

                        ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                        1 Reply Last reply
                        0
                        • S Offline
                          S Offline
                          stoepselinho
                          wrote on last edited by
                          #12

                          Hallo,

                          der erste Rote wert müsste der aktuelle Verbrauch sein und der zweite der aktuelle Ertrag.

                          m[mi++]="30.01.17 19:15:00|568;0;6100|0;0;0;309;0;0"

                          1 Reply Last reply
                          0
                          • S Offline
                            S Offline
                            stoepselinho
                            wrote on last edited by
                            #13

                            keine Idee wie man an den zweiten Wert kommt?

                            1 Reply Last reply
                            0
                            • M Offline
                              M Offline
                              moebius
                              wrote on last edited by
                              #14

                              mit node-red zB:````
                              [{"id":"d622dd6c.13e18","type":"tab","label":"Flow 6"},{"id":"abca901f.329ba","type":"inject","z":"d622dd6c.13e18","name":"","topic":"","payload":"m[mi++]="28.01.17 18:20:00|623;0;8368|0;0;0;6275;0;0"","payloadType":"str","repeat":"","crontab":"","once":false,"x":123,"y":61,"wires":[["a8676829.f6bd48"]]},{"id":"a8676829.f6bd48","type":"split","z":"d622dd6c.13e18","name":"","splt":"|","x":263,"y":112,"wires":[["dd824334.af6fc"]]},{"id":"d54f3a3c.30d558","type":"split","z":"d622dd6c.13e18","name":"","splt":";","x":561,"y":199,"wires":[["fcd7879b.764f28"]]},{"id":"1bca33e3.e423fc","type":"debug","z":"d622dd6c.13e18","name":"","active":true,"console":"false","complete":"true","x":859,"y":264,"wires":[]},{"id":"dd824334.af6fc","type":"switch","z":"d622dd6c.13e18","name":"","property":"parts.index","propertyType":"msg","rules":[{"t":"gt","v":"0","vt":"num"}],"checkall":"true","outputs":1,"x":419,"y":152,"wires":[["d54f3a3c.30d558"]]},{"id":"fcd7879b.764f28","type":"switch","z":"d622dd6c.13e18","name":"","property":"parts.index","propertyType":"msg","rules":[{"t":"eq","v":"0","vt":"num"}],"checkall":"true","outputs":1,"x":713,"y":237,"wires":[["1bca33e3.e423fc"]]}]

                              Du müsstest noch inject durch den http request ersetzen.
                              [1803_clipboard02.jpg](/assets/uploads/files/1803_clipboard02.jpg)
                              1 Reply Last reply
                              0
                              • BluefoxB Offline
                                BluefoxB Offline
                                Bluefox
                                wrote on last edited by
                                #15
                                var text = 'm[mi++]="28.01.17 18:20:00|623;0;8368|0;0;0;6275;0;0"\n';
                                text += 'm[mi++]="28.01.17 18:15:00|623;0;8317|0;0;0;6275;0;0"\n';
                                text += 'm[mi++]="28.01.17 18:10:00|652;0;8265|0;0;0;6275;0;0"\n';
                                
                                var m = text.match(/\|(\d+);/g);
                                console.log(JSON.stringify(m));
                                console.log(m[0].substring(1, m[0].length - 1) + ' - ' + m[1].substring(1, m[1].length - 1));
                                

                                URL kann man so bekommen:

                                var request = require('request');
                                createState('myState1', {unit: 'W', type: 'number'});
                                createState('myState2', {unit: 'W', type: 'number'});
                                request('http://google.com', function (err, resp, body) {
                                	if (body) {
                                		var m = text.match(/\|(\d+);/g);
                                		if (m && m.length > 1) {
                                		       setState('myState1', parseInt(m[0].substring(1, m[0].length - 1) , 10), true);
                                		       setState('myState2', parseInt(m[1].substring(1, m[1].length - 1) , 10), true);
                                		}
                                	} else {
                                		console.warn('NO response: ' + err);
                                	}
                                });
                                
                                
                                1 Reply Last reply
                                0
                                • S Offline
                                  S Offline
                                  stoepselinho
                                  wrote on last edited by
                                  #16

                                  @moebius:

                                  mit node-red zB:````
                                  [{"id":"d622dd6c.13e18","type":"tab","label":"Flow 6"},{"id":"abca901f.329ba","type":"inject","z":"d622dd6c.13e18","name":"","topic":"","payload":"m[mi++]="28.01.17 18:20:00|623;0;8368|0;0;0;6275;0;0"","payloadType":"str","repeat":"","crontab":"","once":false,"x":123,"y":61,"wires":[["a8676829.f6bd48"]]},{"id":"a8676829.f6bd48","type":"split","z":"d622dd6c.13e18","name":"","splt":"|","x":263,"y":112,"wires":[["dd824334.af6fc"]]},{"id":"d54f3a3c.30d558","type":"split","z":"d622dd6c.13e18","name":"","splt":";","x":561,"y":199,"wires":[["fcd7879b.764f28"]]},{"id":"1bca33e3.e423fc","type":"debug","z":"d622dd6c.13e18","name":"","active":true,"console":"false","complete":"true","x":859,"y":264,"wires":[]},{"id":"dd824334.af6fc","type":"switch","z":"d622dd6c.13e18","name":"","property":"parts.index","propertyType":"msg","rules":[{"t":"gt","v":"0","vt":"num"}],"checkall":"true","outputs":1,"x":419,"y":152,"wires":[["d54f3a3c.30d558"]]},{"id":"fcd7879b.764f28","type":"switch","z":"d622dd6c.13e18","name":"","property":"parts.index","propertyType":"msg","rules":[{"t":"eq","v":"0","vt":"num"}],"checkall":"true","outputs":1,"x":713,"y":237,"wires":[["1bca33e3.e423fc"]]}]

                                  Du müsstest noch inject durch den http request ersetzen. `  
                                  

                                  hab das versucht, bekomm das irgendwie nicht hin. wie genau funktioniert das denn mit dem node-red? angezeigt wird es mir aber wo wird es denn gespeichert

                                  1 Reply Last reply
                                  0
                                  • M Offline
                                    M Offline
                                    moebius
                                    wrote on last edited by
                                    #17

                                    Was genau hast du versucht? Was genau hat nicht funktioniert?

                                    Wenn du was mit node-red machen willst, schau dir bitte doch mal die schöne Hilfe die Homoran geschrieben hat an:

                                    http://www.iobroker.net/?page_id=4284&lang=de

                                    Da steht auch drin, wie du Werte von node-red wieder in iobroker speichern kannst.

                                    1 Reply Last reply
                                    0
                                    • P Offline
                                      P Offline
                                      pix
                                      wrote on last edited by
                                      #18

                                      Für den zweiten Wert nimmst du diesen Ausdruck (vorausgesetzt, der Wert 6275 bleibt immer gleich; könnte aber auch ohne 6275 gehen)

                                      [0-9]*(?=;0;0;6275)
                                      

                                      https://regex101.com/r/QFGi6C/1

                                      Sorry, hatte den Thread schon wieder vergessen.

                                      Pix

                                      EDIT: Also in http://forum.iobroker.net/viewtopic.php?f=21&t=5039&p=51250#p50343 ist der grüne Wert (0) gemeint

                                      ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                                      1 Reply Last reply
                                      0
                                      • S Offline
                                        S Offline
                                        stoepselinho
                                        wrote on last edited by
                                        #19

                                        das scheint nicht zu klappen,

                                        die werte sind nur 0 wenn die anlage nicht läuft. Jetzt sieht die Zeile so aus:

                                        m[mi++]="04.02.17 12:50:00|462;0;3636|665;463;258;3218;405;406"

                                        mit dem Code so funktionierts

                                        [0-9]*(?=;*[0-9]*;*[0-9]*;*[0-9]*;*[0-9]*;*[0-9]*;*[0-9]")
                                        
                                        1 Reply Last reply
                                        0
                                        • P Offline
                                          P Offline
                                          pix
                                          wrote on last edited by
                                          #20

                                          Super gelöst! Danke fürs Feedback.

                                          ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          603

                                          Online

                                          32.4k

                                          Users

                                          81.4k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe