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. Daten aus einer Website mit Javascript

NEWS

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

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

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

Daten aus einer Website mit Javascript

Geplant Angeheftet Gesperrt Verschoben JavaScript
138 Beiträge 16 Kommentatoren 25.2k Aufrufe 5 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.
  • S Offline
    S Offline
    Sebbo
    schrieb am zuletzt editiert von
    #1

    Hallo,

    ich habe seit neuestem eine Grünbeck SC18 Enthärtungsanlage. Diese hat eine Weboberfläche bei der einige interessanten Daten zu sehen sind.

    Diese würde ich gerne auslesen. Z.b. mit Node Red. Leider habe ich keine Ahnung wie ich an die Daten kommen soll.

    Vielleicht kann mir jemand den entscheidenden Tipp geben.

    LG Sebbo

    1 Antwort Letzte Antwort
    0
    • Lenny.CBL Offline
      Lenny.CBL Offline
      Lenny.CB
      Most Active
      schrieb am zuletzt editiert von
      #2

      ich glaube das Script hier macht in etwa was du sucht.

      http://forum.iobroker.net/viewtopic.php … age#p25319

      Muss halt angepasst werden. pix weiß hier aber sicher besser Bescheid. :D

      1 Antwort Letzte Antwort
      0
      • S Offline
        S Offline
        Sebbo
        schrieb am zuletzt editiert von
        #3

        Danke für deine Antwort… Aber ich glaube das funktioniert mit meiner Website nicht. Die lädt irgenwie .js seiten. Kann da irgendwie nicht draus schlau werden. Ich kann vielleicht mal die 4 Seiten anhängen, wenn gewünscht.

        LG Sebbo

        1 Antwort Letzte Antwort
        0
        • Lenny.CBL Offline
          Lenny.CBL Offline
          Lenny.CB
          Most Active
          schrieb am zuletzt editiert von
          #4

          @Sebbo:

          Ich kann vielleicht mal die 4 Seiten anhängen, wenn gewünscht. `
          Beispiele sind nie verkehrt… :D

          1 Antwort Letzte Antwort
          0
          • S Offline
            S Offline
            Sebbo
            schrieb am zuletzt editiert von
            #5

            Okay, hier mal die .js die ich gefunden habe.

            :D
            478_gruenbeck.js
            478_spin.js
            478_var.js

            1 Antwort Letzte Antwort
            0
            • M Offline
              M Offline
              MistyReblaus
              schrieb am zuletzt editiert von
              #6

              Schau mal hier (http://forum.iobroker.net/viewtopic.php?f=30&t=4395 ) Ich hatte letztens eine ähnliche Frage nur für einen Stromzähler und dessen Weboberfläche. Dein Post get anscheinend laut Code an die Adresse

              xmlreq.open("POST", "mux_http", true);
              

              Vorher muss aber anscheinend noch die URL zusammengebaut werden

              xmlreq.setRequestHeader("Content-length", params.length);
              

              Diese sind laut Code

              id="+getCookie("id")+"&show=D_Y_6|D_Y_7|D_C_1_1~",1);
              

              Der Cookie scheint für Standardabfragen aber sehr einfach zu sein:

              setCookie("id",parseInt( Math.random() * ( (9999+1) - 1000 )));
              

              Mit den Informationen solltest Du einen Call machen können nach dem Artikel oben und den genannten Parametern. Je nachdem wie die Informationen zurückkommen, mußt Du dann nur noch das Resultat parsen.

              Grüße, Jens

              1 Antwort Letzte Antwort
              0
              • F Offline
                F Offline
                fruehwi
                schrieb am zuletzt editiert von
                #7

                Hallo zusammen,

                momentan nutze ich noch CCU.IO, aber ich den nächsten Wochen wollte ich auch auf ioBroker umsteigen…

                Seit zwei Wochen haben wir auch eine SC18 von Grünbeck und ich möchte die Daten auslesen.

                Anbei noch ein paar Zusatz Infos:

                Das auslesen der Daten geschieht per Post-Requests.

                Mit HttpRequester sende ich folgende Anfrage

                POST http://192.168.1.1/mux_http 
                Content-Length: 69
                Content-type: application/x-www-form-urlencoded
                id=951&show=D_A_1_2|D_A_3_1|D_Y_1|D_Y_5|~
                
                

                Und erhalte folgende Rückmeldung

                <data>`ok`<d_a_1_2>0.20</d_a_1_2> <d_a_3_1>6</d_a_3_1><d_y_1>32</d_y_1><d_y_5>0</d_y_5></data>
                
                

                D_A_1_2 = Restkapazität

                D_A_3_1 = Letzte Regeneration

                D_Y_1 = Wasserverbrauch Gestern

                D_Y_5 = Aktueller Regenerationsschritt

                Leider bin ich auch noch nicht weiter gekommen.

                Sebbo hast du schon eine Lösung?

                Grüße,

                Thomas

                1 Antwort Letzte Antwort
                0
                • F Offline
                  F Offline
                  fruehwi
                  schrieb am zuletzt editiert von
                  #8

                  Hallo zusammen,

                  Für die CCU gibt es mittlerweile eine Lösung.

                  https://homematic-forum.de/forum/viewto … 41#p356849

                  Grüße,

                  Fruehwi

                  1 Antwort Letzte Antwort
                  0
                  • H Offline
                    H Offline
                    hiasii12
                    schrieb am zuletzt editiert von
                    #9

                    Hallo Leute,

                    Da bei mir die vorhergehenden Lösungen nicht funktionierten hier mein Code der durch sehr viel Testen entstanden ist.

                    Mein Lösungsweg führt über die RegEx Funktion da ich es nicht geschafft habe einen XML Response zu erhalten.

                    // StateMaschine

                    ! ````
                    var i
                    ! // Wasserverbrauch
                    var path = 'Messwerte.0.SC18.Wasserverbrauch.';
                    ! for ( i = 1; i < 15; i++ ) {
                    if (i<10)var id = path + 'D_Y_2_0' + i;
                    else var id = path + 'D_Y_2_' + i ;
                    ! var obj = {};
                    obj.type = 'state';
                    obj.common = {};
                    obj.common.name = 'Wasserverbrauch vor ' + i + ' Tagen' ;
                    obj.common.type = 'number';
                    obj.common.role = 'number';
                    obj.common.desc = 'Wasserverbrauch vor ' + i + ' Tagen';
                    obj.common.read = true;
                    obj.common.write = true;
                    obj.common.def = 0;
                    obj.common.min = 0;
                    obj.common.unit = 'Liter';

                    setObject(id, obj, function(err) {
                        if(err) log('Cannot write object: ' + err);
                        else setState(id, obj.common.def);
                    });
                    

                    ! }
                    ! // Regenerationen
                    var path = 'Messwerte.0.SC18.Regenerationen.';

                    for ( i = 1; i < 15; i++ ) {
                    if (i<10)var id = path + 'D_Y_4_0' + i;
                    else var id = path + 'D_Y_4_' + i ;

                    ! var obj = {};
                    obj.type = 'state';
                    obj.common = {};
                    obj.common.name = 'Zeitpunkt Regenereation ' + i + ' vor aktueller';
                    obj.common.type = 'string';
                    obj.common.role = 'string';
                    obj.common.desc = 'Zeitpunkt Regenereation ' + i + ' vor aktueller';
                    obj.common.read = true;
                    obj.common.write = true;
                    obj.common.def = 0;
                    obj.common.min = 0;
                    obj.common.unit = '';

                    setObject(id, obj, function(err) {
                        if(err) log('Cannot write object: ' + err);
                        else setState(id, obj.common.def);
                    });
                    

                    ! }
                    ! // Allgemeine Felder
                    var path = 'Messwerte.0.SC18.Allgemein.';
                    ! var id = path + 'D_C_4_2';
                    var obj = {};
                    obj.type = 'state';
                    obj.common = {};
                    obj.common.name = 'Uhrzeit' ;
                    obj.common.type = 'string';
                    obj.common.role = 'string';
                    obj.common.desc = 'Uhrzeit';
                    obj.common.read = true;
                    obj.common.write = true;
                    obj.common.def = 0;
                    obj.common.min = 0;
                    obj.common.unit = 'Uhr';

                    setObject(id, obj, function(err) {
                        if(err) log('Cannot write object: ' + err);
                        else setState(id, obj.common.def);
                    });
                    
                      var id = path + 'D_C_5_1';
                    var obj = {};
                    obj.type = 'state';
                    obj.common = {};
                    obj.common.name = 'Ansprechverhalten' ;
                    obj.common.type = 'number';
                    obj.common.role = 'number';
                    obj.common.desc = 'Ansprechverhalten';
                    obj.common.read = true;
                    obj.common.write = true;
                    obj.common.def = 0;
                    obj.common.min = 0;
                    obj.common.unit = '';
                    
                    setObject(id, obj, function(err) {
                        if(err) log('Cannot write object: ' + err);
                        else setState(id, obj.common.def);
                    });
                    
                          var id = path + 'D_C_4_1';
                    var obj = {};
                    obj.type = 'state';
                    obj.common = {};
                    obj.common.name = 'Regenerationszeitpunkt' ;
                    obj.common.type = 'number';
                    obj.common.role = 'number';
                    obj.common.desc = 'Regenerationszeitpunkt 0= Auto 1= Fest';
                    obj.common.read = true;
                    obj.common.write = true;
                    obj.common.def = 0;
                    obj.common.min = 0;
                    obj.common.unit = '';
                    
                    setObject(id, obj, function(err) {
                        if(err) log('Cannot write object: ' + err);
                        else setState(id, obj.common.def);
                    });
                    
                    var id = path + 'D_C_4_3';
                    var obj = {};
                    obj.type = 'state';
                    obj.common = {};
                    obj.common.name = 'Startzeit Regeneration' ;
                    obj.common.type = 'string';
                    obj.common.role = 'string';
                    obj.common.desc = 'Startzeit Regeneration';
                    obj.common.read = true;
                    obj.common.write = true;
                    obj.common.def = 0;
                    obj.common.min = 0;
                    obj.common.unit = 'Uhr';
                    
                    setObject(id, obj, function(err) {
                        if(err) log('Cannot write object: ' + err);
                        else setState(id, obj.common.def);
                    });
                    
                    var id = path + 'D_C_7_1';
                    var obj = {};
                    obj.type = 'state';
                    obj.common = {};
                    obj.common.name = 'Soll Service Intervalldauer' ;
                    obj.common.type = 'number';
                    obj.common.role = 'number';
                    obj.common.desc = 'Soll Service Intervalldauer';
                    obj.common.read = true;
                    obj.common.write = true;
                    obj.common.def = 0;
                    obj.common.min = 0;
                    obj.common.unit = 'Tage';
                    
                    setObject(id, obj, function(err) {
                        if(err) log('Cannot write object: ' + err);
                        else setState(id, obj.common.def);
                    });
                    
                    var id = path + 'D_A_2_2';
                    var obj = {};
                    obj.type = 'state';
                    obj.common = {};
                    obj.common.name = 'Tage bis zur nächsten Wartung' ;
                    obj.common.type = 'number';
                    obj.common.role = 'number';
                    obj.common.desc = 'Tage bis zur nächsten Wartung';
                    obj.common.read = true;
                    obj.common.write = true;
                    obj.common.def = 0;
                    obj.common.min = 0;
                    obj.common.unit = 'Tage';
                    
                    setObject(id, obj, function(err) {
                        if(err) log('Cannot write object: ' + err);
                        else setState(id, obj.common.def);
                    });
                    
                    var id = path + 'D_Y_5';
                    var obj = {};
                    obj.type = 'state';
                    obj.common = {};
                    obj.common.name = 'Aktueller Regenerationsschritt 0= keine Regeneration 1= Soletank füllen 2= Besalzen 3= Verdrängen 4= Rückspülen 5= Erstfiltrat' ;
                    obj.common.type = 'number';
                    obj.common.role = 'number';
                    obj.common.desc = 'Aktueller Regenerationsschritt 0= keine Regeneration 1= Soletank füllen 2= Besalzen 3= Verdrängen 4= Rückspülen 5= Erstfiltrat';
                    obj.common.read = true;
                    obj.common.write = true;
                    obj.common.def = 0;
                    obj.common.min = 0;
                    obj.common.unit = '';
                    
                    setObject(id, obj, function(err) {
                        if(err) log('Cannot write object: ' + err);
                        else setState(id, obj.common.def);
                    });
                    
                    var id = path + 'D_Y_7';
                    var obj = {};
                    obj.type = 'state';
                    obj.common = {};
                    obj.common.name = 'Inbetriebnahme-Datum' ;
                    obj.common.type = 'string';
                    obj.common.role = 'string';
                    obj.common.desc = 'Inbetriebnahme-Datum';
                    obj.common.read = true;
                    obj.common.write = true;
                    obj.common.def = 0;
                    obj.common.min = 0;
                    obj.common.unit = '';
                    
                    setObject(id, obj, function(err) {
                        if(err) log('Cannot write object: ' + err);
                        else setState(id, obj.common.def);
                    });
                    
                    var id = path + 'D_Y_8_11';
                    var obj = {};
                    obj.type = 'state';
                    obj.common = {};
                    obj.common.name = 'Ergebnis letzter E-Mail Versand 0=keine Mail versandt 1=Mail erfolgreich versandt 2=Benutzerdaten fehlerhaft 3= kein Internetzugang/Server nicht bereit' ;
                    obj.common.type = 'number';
                    obj.common.role = 'number';
                    obj.common.desc = 'Ergebnis letzter E-Mail Versand 0=keine Mail versandt 1=Mail erfolgreich versandt 2=Benutzerdaten fehlerhaft 3= kein Internetzugang/Server nicht bereit';
                    obj.common.read = true;
                    obj.common.write = true;
                    obj.common.def = 0;
                    obj.common.min = 0;
                    obj.common.unit = '';
                    
                    setObject(id, obj, function(err) {
                        if(err) log('Cannot write object: ' + err);
                        else setState(id, obj.common.def);
                    });
                    
                    var id = path + 'D_Y_10_1';
                    var obj = {};
                    obj.type = 'state';
                    obj.common = {};
                    obj.common.name = 'Aktuelle Restkapazität Austauscher' ;
                    obj.common.type = 'number';
                    obj.common.role = 'number';
                    obj.common.desc = 'Aktuelle Restkapazität Austauscher';
                    obj.common.read = true;
                    obj.common.write = true;
                    obj.common.def = 0;
                    obj.common.min = 0;
                    obj.common.unit = '%';
                    
                    setObject(id, obj, function(err) {
                        if(err) log('Cannot write object: ' + err);
                        else setState(id, obj.common.def);
                    });
                    
                    var id = path + 'D_Y_13';
                    var obj = {};
                    obj.type = 'state';
                    obj.common = {};
                    obj.common.name = '0= Austauscher gestört/in Regeneration 1= Austauscher in Betrieb' ;
                    obj.common.type = 'number';
                    obj.common.role = 'number';
                    obj.common.desc = '0= Austauscher gestört/in Regeneration 1= Austauscher in Betrieb';
                    obj.common.read = true;
                    obj.common.write = true;
                    obj.common.def = 0;
                    obj.common.min = 0;
                    obj.common.unit = '';
                    
                    setObject(id, obj, function(err) {
                        if(err) log('Cannot write object: ' + err);
                        else setState(id, obj.common.def);
                    });
                    
                    var id = path + 'D_Y_14';
                    var obj = {};
                    obj.type = 'state';
                    obj.common = {};
                    obj.common.name = 'Voraussichtliche nächste Regeneration' ;
                    obj.common.type = 'string';
                    obj.common.role = 'string';
                    obj.common.desc = 'Voraussichtliche nächste Regeneration';
                    obj.common.read = true;
                    obj.common.write = true;
                    obj.common.def = 0;
                    obj.common.min = 0;
                    obj.common.unit = '';
                    
                    setObject(id, obj, function(err) {
                        if(err) log('Cannot write object: ' + err);
                        else setState(id, obj.common.def);
                    });
                    

                    //region D_B_1 Regeneration
                    var id = path + 'D_B_1';
                    var obj = {};
                    obj.type = 'state';
                    obj.common = {};
                    obj.common.name = 'Regeneration aktiv' ;
                    obj.common.type = 'number';
                    obj.common.role = 'number';
                    obj.common.desc = 'Regeneration aktiv';
                    obj.common.read = true;
                    obj.common.write = true;
                    obj.common.def = 0;
                    obj.common.min = 0;
                    obj.common.unit = '';

                    setObject(id, obj, function(err) {
                        if(err) log('Cannot write object: ' + err);
                        else setState(id, obj.common.def);
                    });
                    

                    // Aktualwerte
                    var path = 'Messwerte.0.SC18.Aktualwerte.';

                    ! //region D_A_1_1
                    var id = path + 'D_A_1_1';
                    var obj = {};
                    obj.type = 'state';
                    obj.common = {};
                    obj.common.name = 'Aktueller Durchfluss' ;
                    obj.common.type = 'number';
                    obj.common.role = 'number';
                    obj.common.desc = 'Aktueller Durchfluss';
                    obj.common.read = true;
                    obj.common.write = true;
                    obj.common.def = 0;
                    obj.common.min = 0;
                    obj.common.unit = 'm³/h';

                    setObject(id, obj, function(err) {
                        if(err) log('Cannot write object: ' + err);
                        else setState(id, obj.common.def);
                    });
                    

                    //endregion D_A_1_1

                    ! //region D_A_1_2
                    ! var id = path + 'D_A_1_2';
                    var obj = {};
                    obj.type = 'state';
                    obj.common = {};
                    obj.common.name = 'Restkapazität' ;
                    obj.common.type = 'number';
                    obj.common.role = 'number';
                    obj.common.desc = 'Restkapazität';
                    obj.common.read = true;
                    obj.common.write = true;
                    obj.common.def = 0;
                    obj.common.min = 0;
                    obj.common.unit = 'm³*°dH';

                    setObject(id, obj, function(err) {
                        if(err) log('Cannot write object: ' + err);
                        else setState(id, obj.common.def);
                    });
                    

                    //endregion

                    //region D_A_1_3
                    var id = path + 'D_A_1_3';
                    var obj = {};
                    obj.type = 'state';
                    obj.common = {};
                    obj.common.name = 'Kapazitätszahl' ;
                    obj.common.type = 'number';
                    obj.common.role = 'number';
                    obj.common.desc = 'Kapazitätszahl';
                    obj.common.read = true;
                    obj.common.write = true;
                    obj.common.def = 0;
                    obj.common.min = 0;
                    obj.common.unit = 'm³*°dH';

                    setObject(id, obj, function(err) {
                        if(err) log('Cannot write object: ' + err);
                        else setState(id, obj.common.def);
                    });
                    

                    ! //endregion
                    ! //region D_A_2_1
                    ! var id = path + 'D_A_2_1';
                    var obj = {};
                    obj.type = 'state';
                    obj.common = {};
                    obj.common.name = 'Restzeit/-menge Reg.Schritt' ;
                    obj.common.type = 'number';
                    obj.common.role = 'number';
                    obj.common.desc = 'Restzeit/-menge Reg.Schritt';
                    obj.common.read = true;
                    obj.common.write = true;
                    obj.common.def = 0;
                    obj.common.min = 0;
                    obj.common.unit = 'l oder min';

                    setObject(id, obj, function(err) {
                        if(err) log('Cannot write object: ' + err);
                        else setState(id, obj.common.def);
                    });
                    

                    ! //endregion
                    ! //region D_A_3_1
                    ! var id = path + 'D_A_3_1';
                    var obj = {};
                    obj.type = 'state';
                    obj.common = {};
                    obj.common.name = 'Letzte Regeneration' ;
                    obj.common.type = 'string';
                    obj.common.role = 'string';
                    obj.common.desc = 'Letzte Regeneration vor x h';
                    obj.common.read = true;
                    obj.common.write = true;
                    obj.common.def = 0;
                    obj.common.min = 0;
                    obj.common.unit = 'h';

                    setObject(id, obj, function(err) {
                        if(err) log('Cannot write object: ' + err);
                        else setState(id, obj.common.def);
                    });
                    

                    //endregion

                    ! //region D_A_3_2

                    var id = path + 'D_A_3_2';
                    var obj = {};
                    obj.type = 'state';
                    obj.common = {};
                    obj.common.name = 'Letzte Regeneration Über' ;
                    obj.common.type = 'number';
                    obj.common.role = 'number';
                    obj.common.desc = 'Letzte Regeneration Über';
                    obj.common.read = true;
                    obj.common.write = true;
                    obj.common.def = 0;
                    obj.common.min = 0;
                    obj.common.unit = '%';
                    
                    setObject(id, obj, function(err) {
                        if(err) log('Cannot write object: ' + err);
                        else setState(id, obj.common.def);
                    });
                    

                    //endregion

                    ! ````

                    // Logger

                    ! ````
                    // Wichtige Daten hier anpassen
                    // V1.0: Erstellung
                    // V1.1: Header mit Konstanten hinzu;
                    // Verbindungsüberwachung hinzu;
                    // V1.2: Datum auslesen entfernt
                    // Sommer/Winterzeit auslesen entfernt
                    ! // Hier IP Adresse der Anlage eintragen
                    var constIP = "192.168.0.132"
                    // Hier Namen der State Variable eintragen wenn Verbindung über Ping Adapter geprüft werden soll
                    // Wenn kein Ping Adapter verwendet werden soll dan True eintragen
                    var statePingAdapter = 'ping.0.matthias-SS15HT.192_168_0_132'/192 168 0 132/
                    // Hier Abfragezyklus in Sekunden eintragen
                    var constTick = 5
                    ! var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
                    ! var parser = require('xmldom').DOMParser;
                    ! var xhr = new XMLHttpRequest();
                    var requestNumber = 1 ;
                    ! xhr.onload = function () { };
                    xhr.onerror = function () { };
                    ! var varInterval = setInterval(Interval, constTick * 1000 );
                    ! function Interval() {
                    ! var conection = getState(statePingAdapter)
                    //console.log(co.val);
                    if (conection.val)
                    {
                    ! xhr.open("POST","http://" + constIP + "/mux_http");
                    xhr.setRequestHeader("Content-type", "application/json");
                    xhr.responseType = "document";
                    ! switch(requestNumber) {
                    case 1:
                    //console.log('Request ' + requestNumber + ' ausgeführt');
                    xhr.send("id=8871&show=D_Y_2_1|D_Y_2_2|D_Y_2_3|D_Y_2_4|D_Y_2_5|D_Y_2_6|D_Y_2_7|D_Y_2_8|D_Y_2_9|D_Y_2_10|D_Y_2_11|D_Y_2_12|D_Y_2_13|D_Y_2_14~");
                    xhr.onreadystatechange = function()
                    {
                    if (xhr.readyState==4)
                    {
                    if (xhr.status == 200)
                    {
                    if (xhr.responseText)
                    {
                    var str = xhr.responseText;

                                    const regex = /<data>`([^\<]+)<\/code><d_y_2_1>([^\<]+)<\/D_Y_2_1><d_y_2_2>([^\<]+)<\/D_Y_2_2><d_y_2_3>([^\<]+)<\/D_Y_2_3><d_y_2_4>([^\<]+)<\/D_Y_2_4><d_y_2_5>([^\<]+)<\/D_Y_2_5><d_y_2_6>([^\<]+)<\/D_Y_2_6><d_y_2_7>([^\<]+)<\/D_Y_2_7><d_y_2_8>([^\<]+)<\/D_Y_2_8><d_y_2_9>([^\<]+)<\/D_Y_2_9><d_y_2_10>([^\<]+)<\/D_Y_2_10><d_y_2_11>([^\<]+)<\/D_Y_2_11><d_y_2_12>([^\<]+)<\/D_Y_2_12><d_y_2_13>([^\<]+)<\/D_Y_2_13><d_y_2_14>([^\<]+)<\/D_Y_2_14><\/data>/;
                                    const subst = regex.exec(str);
                    
                                        if (subst)
                                        {
                                            for ( i = 1; i < 15; i++ ) {
                                                i1 = i + 1;
                                                if (i < 10)
                                                setState("Messwerte.0.SC18.Wasserverbrauch.D_Y_2_0" + i , parseInt(subst[i1]) );
                                                else
                                                setState("Messwerte.0.SC18.Wasserverbrauch.D_Y_2_" + i , parseInt(subst[i1]) );
                                            }
                    
                                        }
                                        requestNumber = 2;
                                    }
                                }
                    		}
                    };
                    break;
                    case 2:
                    //console.log('Request ' + requestNumber + ' ausgeführt');
                    xhr.send("id=8871&show=D_C_4_1|D_C_4_2|D_C_4_3|D_C_5_1|D_C_7_1~");
                    xhr.onreadystatechange = function()
                    {
                    	if (xhr.readyState==4)
                    	{
                    		if (xhr.status == 200)
                    		{
                    			if (xhr.responseText)
                    			{
                    			    var str = xhr.responseText;
                    
                                    const regex = /<data>`([^\<]+)<\/code><d_c_4_1>([^\<]+)<\/D_C_4_1><d_c_4_2>([^\<]+)<\/D_C_4_2><d_c_4_3>([^\<]+)<\/D_C_4_3><d_c_5_1>([^\<]+)<\/D_C_5_1><d_c_7_1>([^\<]+)<\/D_C_7_1><\/data>/;
                                    const subst = regex.exec(str);
                    
                                        if (subst)
                                        {
                                                setState("Messwerte.0.SC18.Allgemein.D_C_4_1" , parseInt(subst[2]) );
                                                setState("Messwerte.0.SC18.Allgemein.D_C_4_2" , subst[3] );
                                                setState("Messwerte.0.SC18.Allgemein.D_C_4_3" , subst[4] );
                                                setState("Messwerte.0.SC18.Allgemein.D_C_5_1" , parseInt(subst[5]) );
                                                setState("Messwerte.0.SC18.Allgemein.D_C_7_1" , parseInt(subst[6]) );                  
                                        }
                                        requestNumber = 3;
                                    }
                                }
                    		}
                    };
                    break;
                    case 3:
                    //console.log('Request ' + requestNumber + ' ausgeführt');
                    xhr.send("id=8871&show=D_Y_4_1|D_Y_4_2|D_Y_4_3|D_Y_4_4|D_Y_4_5|D_Y_4_6|D_Y_4_7|D_Y_4_8|D_Y_4_9|D_Y_4_10|D_Y_4_11|D_Y_4_12|D_Y_4_13|D_Y_4_14~");
                    xhr.onreadystatechange = function()
                    {
                    	if (xhr.readyState==4)
                    	{
                    		if (xhr.status == 200)
                    		{
                    			if (xhr.responseText)
                    			{
                    			    var str = xhr.responseText;
                    
                                    const regex = /<data>`([^\<]+)<\/code><d_y_4_1>([^\<]+)<\/D_Y_4_1><d_y_4_2>([^\<]+)<\/D_Y_4_2><d_y_4_3>([^\<]+)<\/D_Y_4_3><d_y_4_4>([^\<]+)<\/D_Y_4_4><d_y_4_5>([^\<]+)<\/D_Y_4_5><d_y_4_6>([^\<]+)<\/D_Y_4_6><d_y_4_7>([^\<]+)<\/D_Y_4_7><d_y_4_8>([^\<]+)<\/D_Y_4_8><d_y_4_9>([^\<]+)<\/D_Y_4_9><d_y_4_10>([^\<]+)<\/D_Y_4_10><d_y_4_11>([^\<]+)<\/D_Y_4_11><d_y_4_12>([^\<]+)<\/D_Y_4_12><d_y_4_13>([^\<]+)<\/D_Y_4_13><d_y_4_14>([^\<]+)<\/D_Y_4_14><\/data>/;
                                    const subst = regex.exec(str);
                    
                                        if (subst)
                                        {
                                            for ( i = 1; i < 15; i++ ) {
                                                i1 = i + 1;
                                                if (i < 10)
                                                setState("Messwerte.0.SC18.Regenerationen.D_Y_4_0" + i , subst[i1] );
                                                else
                                                setState("Messwerte.0.SC18.Regenerationen.D_Y_4_" + i , subst[i1] );
                                            }
                                        requestNumber = 4;
                                        }
                                    }
                                }
                    		}
                    };
                    break;
                    case 4:
                    //console.log('Request ' + requestNumber + ' ausgeführt');
                    xhr.send("id=8871&show=D_Y_5|D_Y_7|D_Y_8_11|D_Y_10_1|D_Y_13|D_Y_14|D_B_1|D_C_5_1~");
                    xhr.onreadystatechange = function()
                    {
                    	if (xhr.readyState==4)
                    	{
                    		if (xhr.status == 200)
                    		{
                    			if (xhr.responseText)
                    			{
                    			    var str = xhr.responseText;
                    
                                    const regex = /<data>`([^\<]+)<\/code><d_y_5>([^\<]+)<\/D_Y_5><d_y_7>([^\<]+)<\/D_Y_7><d_y_8_11>([^\<]+)<\/D_Y_8_11><d_y_10_1>([^\<]+)<\/D_Y_10_1><d_y_13>([^\<]+)<\/D_Y_13><d_y_14>([^\<]+)<\/D_Y_14><d_b_1>([^\<]+)<\/D_B_1><d_c_5_1>([^\<]+)<\/D_C_5_1><\/data>/;
                                    const subst = regex.exec(str);
                    
                                        if (subst)
                                        {
                                                setState("Messwerte.0.SC18.Allgemein.D_Y_5" , parseInt(subst[2]) );
                                                setState("Messwerte.0.SC18.Allgemein.D_Y_7" , subst[3] );
                                                setState("Messwerte.0.SC18.Allgemein.D_Y_8_11" , parseInt(subst[4]) );
                                                setState("Messwerte.0.SC18.Allgemein.D_Y_10_1" , parseInt(subst[5]) );
                                                setState("Messwerte.0.SC18.Allgemein.D_Y_13" , parseInt(subst[6]) );
                                                setState("Messwerte.0.SC18.Allgemein.D_Y_14" , subst[7] );
                                                setState("Messwerte.0.SC18.Allgemein.D_B_1" , parseInt(subst[8]) );
                                                setState("Messwerte.0.SC18.Allgemein.D_C_5_1" , parseInt(subst[9]) );
                                        }
                                        requestNumber = 5;
                                    }
                                }
                    		}
                    };
                    break;
                    
                    case 5:
                    //console.log('Request ' + requestNumber + ' ausgeführt');
                    xhr.send("id=8871&show=D_A_1_1|D_A_1_2|D_A_1_3|D_A_2_1|D_A_3_1|D_A_3_2~");
                    xhr.onreadystatechange = function()
                    {
                    	if (xhr.readyState==4)
                    	{
                    		if (xhr.status == 200)
                    		{
                    			if (xhr.responseText)
                    			{
                    			    var str = xhr.responseText;
                    
                                    const regex = /<data>`([^\<]+)<\/code><d_a_1_1>([^\<]+)<\/D_A_1_1><d_a_1_2>([^\<]+)<\/D_A_1_2><d_a_1_3>([^\<]+)<\/D_A_1_3><d_a_2_1>([^\<]+)<\/D_A_2_1><d_a_3_1>([^\<]+)<\/D_A_3_1><d_a_3_2>([^\<]+)<\/D_A_3_2><\/data>/;
                                    const subst = regex.exec(str);
                    
                                        if (subst)
                                        {
                                                setState("Messwerte.0.SC18.Aktualwerte.D_A_1_1" , parseFloat(subst[2]) );
                                                setState("Messwerte.0.SC18.Aktualwerte.D_A_1_2" , parseFloat(subst[3]) );
                                                setState("Messwerte.0.SC18.Aktualwerte.D_A_1_3" , parseFloat(subst[4]) );
                                                setState("Messwerte.0.SC18.Aktualwerte.D_A_2_1" , parseInt(subst[5]) );
                                                setState("Messwerte.0.SC18.Aktualwerte.D_A_3_1" , subst[6] );
                                                setState("Messwerte.0.SC18.Aktualwerte.D_A_3_2" , parseInt(subst[7]) );
                                        }
                                        requestNumber = 1;
                                    }
                                }
                    		}
                    };
                    

                    }
                    }
                    }</d_a_3_2></d_a_3_1></d_a_2_1></d_a_1_3></d_a_1_2></d_a_1_1></data></d_c_5_1></d_b_1></d_y_14></d_y_13></d_y_10_1></d_y_8_11></d_y_7></d_y_5></data></d_y_4_14></d_y_4_13></d_y_4_12></d_y_4_11></d_y_4_10></d_y_4_9></d_y_4_8></d_y_4_7></d_y_4_6></d_y_4_5></d_y_4_4></d_y_4_3></d_y_4_2></d_y_4_1></data></d_c_7_1></d_c_5_1></d_c_4_3></d_c_4_2></d_c_4_1></data></d_y_2_14></d_y_2_13></d_y_2_12></d_y_2_11></d_y_2_10></d_y_2_9></d_y_2_8></d_y_2_7></d_y_2_6></d_y_2_5></d_y_2_4></d_y_2_3></d_y_2_2></d_y_2_1>`</data>
                    ```` ``Folgende zusätzliche NPM Module sind bei mir hinzugefügt:

                    xmlhttprequest,xml,jquery,xml2js,xmldom,regex

                    Folgende Adapter sollten aktiv sein:

                    Parser

                    Ping

                    Vlt. Hilft das jemanden. :D``

                    smartboartS 1 Antwort Letzte Antwort
                    0
                    • R Offline
                      R Offline
                      radiorichter
                      schrieb am zuletzt editiert von
                      #10

                      Hey hiasii12,

                      ich habe heut auch eine Grünbeck SC18 erhalten und gleich dein Skript getestet.

                      Habe die IP Adresse eingetragen, leider kommen folgende Fehler im LOG:

                      javascript.0 2018-10-24 20:44:49.250 error at Object.Interval (script.js.common.logger:16:5)

                      javascript.0 2018-10-24 20:44:49.249 error at setRequestHeader (/opt/iobroker/node_modules/iobroker.javascript/node_modules/xmlhttprequest/lib/XMLHttpRequest.js:201:13)

                      javascript.0 2018-10-24 20:44:49.248 error Error in callback: Error: INVALID_STATE_ERR: send flag is true

                      javascript.0 2018-10-24 20:44:46.246 error at Object.Interval (script.js.common.logger:16:5)

                      javascript.0 2018-10-24 20:44:46.246 error at setRequestHeader (/opt/iobroker/node_modules/iobroker.javascript/node_modules/xmlhttprequest/lib/XMLHttpRequest.js:201:13)

                      javascript.0 2018-10-24 20:44:46.244 error Error in callback: Error: INVALID_STATE_ERR: send flag is true

                      Ordnerstruktur wird erstellt, doch ist alles leer bei den Werten.

                      Was mache ich falsch?

                      1 Antwort Letzte Antwort
                      0
                      • H Offline
                        H Offline
                        hiasii12
                        schrieb am zuletzt editiert von
                        #11

                        Hast du die betreffenden NPM Module aktiviert?

                        1 Antwort Letzte Antwort
                        0
                        • R Offline
                          R Offline
                          radiorichter
                          schrieb am zuletzt editiert von
                          #12

                          Ja, hab die hier alles in den Javascript Adapter eingetragen

                          xmlhttprequest,xml,jquery,xml2js,xmldom,regex

                          Gesendet von meinem BND-L21 mit Tapatalk

                          1 Antwort Letzte Antwort
                          0
                          • R Offline
                            R Offline
                            radiorichter
                            schrieb am zuletzt editiert von
                            #13

                            so, nun läufts ;) hatte versehentlich in der IP Adresse einen / zu viel…

                            Datenpunkte werden nun fleisig befüllt, doch leider kommen noch ein Fehler... sollte vermutlich nicht sein oder?

                            21:09:35.687 [info] javascript.0 script.js.common.logger: Request 2 ausgeführt

                            21:09:37.688 [warn] javascript.0 at Interval.xhr.onreadystatechange (script.js.common.logger:72:33)

                            21:09:37.690 [warn] javascript.0 at Interval.xhr.onreadystatechange (script.js.common.logger:74:33)

                            21:09:38.691 [info] javascript.0 script.js.common.logger: Request 3 ausgeführt

                            21:09:41.694 [error] javascript.0 at Object.Interval (script.js.common.logger:16:5)

                            21:09:44.696 [info] javascript.0 script.js.common.logger: Request 3 ausgeführt

                            21:09:47.700 [info] javascript.0 script.js.common.logger: Request 4 ausgeführt

                            21:09:50.702 [info] javascript.0 script.js.common.logger: Request 5 ausgeführt

                            21:09:53.709 [error] javascript.0 at Object.Interval (script.js.common.logger:16:5)

                            21:09:56.711 [info] javascript.0 script.js.common.logger: Request 5 ausgeführt

                            21:09:59.715 [error] javascript.0 at Object.Interval (script.js.common.logger:16:5)

                            21:10:02.718 [info] javascript.0 script.js.common.logger: Request 5 ausgeführt

                            21:10:05.723 [info] javascript.0 script.js.common.logger: Request 1 ausgeführt

                            21:10:08.729 [error] javascript.0 at Object.Interval (script.js.common.logger:16:5)

                            21:10:11.731 [info] javascript.0 script.js.common.logger: Request 1 ausgeführt

                            1 Antwort Letzte Antwort
                            0
                            • R Offline
                              R Offline
                              radiorichter
                              schrieb am zuletzt editiert von
                              #14

                              leider kenne ich mich mit javascript bisher noch gar nicht aus…

                              was bedeutet den der fehler?

                              16:20:07.535 [error] javascript.0 at Object.Interval (script.js.common.logger:16:5)

                              bzw im log steht folgendes:

                              javascript.0 2018-10-28 17:09:38.484 error at Object.Interval (script.js.common.logger:16:5)

                              javascript.0 2018-10-28 17:09:38.484 error at setRequestHeader (/opt/iobroker/node_modules/iobroker.javascript/node_modules/xmlhttprequest/lib/XMLHttpRequest.js:201:13)

                              javascript.0 2018-10-28 17:09:38.483 error Error in callback: Error: INVALID_STATE_ERR: send flag is true

                              1 Antwort Letzte Antwort
                              0
                              • B Offline
                                B Offline
                                Breiti1234
                                schrieb am zuletzt editiert von
                                #15

                                Hallo Leute,

                                ich habe auch eine Grünbeck SC18.

                                Leider verstehe ich ioBroker zur Zeit so mal gar nicht….. :cry:

                                Wie seid ihr vorgegangen um die Daten final im Viewer zu sehen? (Grünbeck SC18)

                                welches Widget und was wo eingetragen?

                                1 Antwort Letzte Antwort
                                0
                                • thorsten78T Offline
                                  thorsten78T Offline
                                  thorsten78
                                  schrieb am zuletzt editiert von
                                  #16

                                  Hey Hallo,

                                  kann mir jemand genau erklären wo in iobroker ich das alles eingeben muss ?

                                  Habe auch eine Grünbeck und bin Anfänger.

                                  Vielen Dank

                                  @hiasii12:

                                  Hallo Leute,

                                  Da bei mir die vorhergehenden Lösungen nicht funktionierten hier mein Code der durch sehr viel Testen entstanden ist.

                                  Mein Lösungsweg führt über die RegEx Funktion da ich es nicht geschafft habe einen XML Response zu erhalten.

                                  // StateMaschine

                                  ! ````
                                  // Wasserverbrauch
                                  var path = 'Messwerte.0.SC18.Wasserverbrauch.';
                                  ! for ( i = 1; i < 15; i++ ) {
                                  if (i<10)var id = path + 'D_Y_2_0' + i;
                                  else var id = path + 'D_Y_2_' + i ;
                                  ! var obj = {};
                                  obj.type = 'state';
                                  obj.common = {};
                                  obj.common.name = 'Wasserverbrauch vor ' + i + ' Tagen' ;
                                  obj.common.type = 'number';
                                  obj.common.role = 'number';
                                  obj.common.desc = 'Wasserverbrauch vor ' + i + ' Tagen';
                                  obj.common.read = true;
                                  obj.common.write = true;
                                  obj.common.def = 0;
                                  obj.common.min = 0;
                                  obj.common.unit = 'Liter';

                                  setObject(id, obj, function(err) {
                                      if(err) log('Cannot write object: ' + err);
                                      else setState(id, obj.common.def);
                                  });
                                  

                                  ! }
                                  ! // Regenerationen
                                  var path = 'Messwerte.0.SC18.Regenerationen.';

                                  for ( i = 1; i < 15; i++ ) {
                                  if (i<10)var id = path + 'D_Y_4_0' + i;
                                  else var id = path + 'D_Y_4_' + i ;

                                  ! var obj = {};
                                  obj.type = 'state';
                                  obj.common = {};
                                  obj.common.name = 'Prozentsatz Regenereation ' + i + 'vor aktueller';
                                  obj.common.type = 'string';
                                  obj.common.role = 'string';
                                  obj.common.desc = 'Prozentsatz Regenereation ' + i + 'vor aktueller';
                                  obj.common.read = true;
                                  obj.common.write = true;
                                  obj.common.def = 0;
                                  obj.common.min = 0;
                                  obj.common.unit = '';

                                  setObject(id, obj, function(err) {
                                      if(err) log('Cannot write object: ' + err);
                                      else setState(id, obj.common.def);
                                  });
                                  

                                  ! }
                                  ! // Allgemeine Felder
                                  var path = 'Messwerte.0.SC18.Allgemein.';
                                  ! var id = path + 'D_C_4_2';
                                  var obj = {};
                                  obj.type = 'state';
                                  obj.common = {};
                                  obj.common.name = 'Uhrzeit' ;
                                  obj.common.type = 'string';
                                  obj.common.role = 'string';
                                  obj.common.desc = 'Uhrzeit';
                                  obj.common.read = true;
                                  obj.common.write = true;
                                  obj.common.def = 0;
                                  obj.common.min = 0;
                                  obj.common.unit = 'Uhr';

                                  setObject(id, obj, function(err) {
                                      if(err) log('Cannot write object: ' + err);
                                      else setState(id, obj.common.def);
                                  });
                                  
                                    var id = path + 'D_C_5_1';
                                  var obj = {};
                                  obj.type = 'state';
                                  obj.common = {};
                                  obj.common.name = 'Ansprechverhalten' ;
                                  obj.common.type = 'number';
                                  obj.common.role = 'number';
                                  obj.common.desc = 'Ansprechverhalten';
                                  obj.common.read = true;
                                  obj.common.write = true;
                                  obj.common.def = 0;
                                  obj.common.min = 0;
                                  obj.common.unit = '';
                                  
                                  setObject(id, obj, function(err) {
                                      if(err) log('Cannot write object: ' + err);
                                      else setState(id, obj.common.def);
                                  });
                                  
                                        var id = path + 'D_C_5_2';
                                  var obj = {};
                                  obj.type = 'state';
                                  obj.common = {};
                                  obj.common.name = 'Datum' ;
                                  obj.common.type = 'String';
                                  obj.common.role = 'String';
                                  obj.common.desc = 'Datum';
                                  obj.common.read = true;
                                  obj.common.write = true;
                                  obj.common.def = 0;
                                  obj.common.min = 0;
                                  obj.common.unit = '';
                                  
                                  setObject(id, obj, function(err) {
                                      if(err) log('Cannot write object: ' + err);
                                      else setState(id, obj.common.def);
                                  });
                                  
                                        var id = path + 'D_C_5_3';
                                  var obj = {};
                                  obj.type = 'state';
                                  obj.common = {};
                                  obj.common.name = 'Sommer/Winterzeit' ;
                                  obj.common.type = 'number';
                                  obj.common.role = 'number';
                                  obj.common.desc = 'Sommer/Winterzeit';
                                  obj.common.read = true;
                                  obj.common.write = true;
                                  obj.common.def = 0;
                                  obj.common.min = 0;
                                  obj.common.unit = '';
                                  
                                  setObject(id, obj, function(err) {
                                      if(err) log('Cannot write object: ' + err);
                                      else setState(id, obj.common.def);
                                  });
                                  
                                        var id = path + 'D_F_1';
                                  var obj = {};
                                  obj.type = 'state';
                                  obj.common = {};
                                  obj.common.name = 'Regenerationszeitpunkt' ;
                                  obj.common.type = 'number';
                                  obj.common.role = 'number';
                                  obj.common.desc = 'Regenerationszeitpunkt 0= Auto 1= Fest';
                                  obj.common.read = true;
                                  obj.common.write = true;
                                  obj.common.def = 0;
                                  obj.common.min = 0;
                                  obj.common.unit = '';
                                  
                                  setObject(id, obj, function(err) {
                                      if(err) log('Cannot write object: ' + err);
                                      else setState(id, obj.common.def);
                                  });
                                  
                                  
                                  var id = path + 'D_C_4_3';
                                  var obj = {};
                                  obj.type = 'state';
                                  obj.common = {};
                                  obj.common.name = 'Startzeit Regeneration' ;
                                  obj.common.type = 'string';
                                  obj.common.role = 'string';
                                  obj.common.desc = 'Startzeit Regeneration';
                                  obj.common.read = true;
                                  obj.common.write = true;
                                  obj.common.def = 0;
                                  obj.common.min = 0;
                                  obj.common.unit = 'Uhr';
                                  
                                  setObject(id, obj, function(err) {
                                      if(err) log('Cannot write object: ' + err);
                                      else setState(id, obj.common.def);
                                  });
                                  
                                  var id = path + 'D_C_7_1';
                                  var obj = {};
                                  obj.type = 'state';
                                  obj.common = {};
                                  obj.common.name = 'Soll Service Intervalldauer' ;
                                  obj.common.type = 'number';
                                  obj.common.role = 'number';
                                  obj.common.desc = 'Soll Service Intervalldauer';
                                  obj.common.read = true;
                                  obj.common.write = true;
                                  obj.common.def = 0;
                                  obj.common.min = 0;
                                  obj.common.unit = 'Tage';
                                  
                                  setObject(id, obj, function(err) {
                                      if(err) log('Cannot write object: ' + err);
                                      else setState(id, obj.common.def);
                                  });
                                  
                                  var id = path + 'D_A_2_2';
                                  var obj = {};
                                  obj.type = 'state';
                                  obj.common = {};
                                  obj.common.name = 'Tage bis zur nächsten Wartung' ;
                                  obj.common.type = 'number';
                                  obj.common.role = 'number';
                                  obj.common.desc = 'Tage bis zur nächsten Wartung';
                                  obj.common.read = true;
                                  obj.common.write = true;
                                  obj.common.def = 0;
                                  obj.common.min = 0;
                                  obj.common.unit = 'Tage';
                                  
                                  setObject(id, obj, function(err) {
                                      if(err) log('Cannot write object: ' + err);
                                      else setState(id, obj.common.def);
                                  });
                                  
                                  var id = path + 'D_Y_5';
                                  var obj = {};
                                  obj.type = 'state';
                                  obj.common = {};
                                  obj.common.name = 'Aktueller Regenerationsschritt 0= keine Regeneration 1= Soletank füllen 2= Besalzen 3= Verdrängen 4= Rückspülen 5= Erstfiltrat' ;
                                  obj.common.type = 'number';
                                  obj.common.role = 'number';
                                  obj.common.desc = 'Aktueller Regenerationsschritt 0= keine Regeneration 1= Soletank füllen 2= Besalzen 3= Verdrängen 4= Rückspülen 5= Erstfiltrat';
                                  obj.common.read = true;
                                  obj.common.write = true;
                                  obj.common.def = 0;
                                  obj.common.min = 0;
                                  obj.common.unit = '';
                                  
                                  setObject(id, obj, function(err) {
                                      if(err) log('Cannot write object: ' + err);
                                      else setState(id, obj.common.def);
                                  });
                                  
                                  var id = path + 'D_Y_7';
                                  var obj = {};
                                  obj.type = 'state';
                                  obj.common = {};
                                  obj.common.name = 'Inbetriebnahme-Datum' ;
                                  obj.common.type = 'string';
                                  obj.common.role = 'string';
                                  obj.common.desc = 'Inbetriebnahme-Datum';
                                  obj.common.read = true;
                                  obj.common.write = true;
                                  obj.common.def = 0;
                                  obj.common.min = 0;
                                  obj.common.unit = '';
                                  
                                  setObject(id, obj, function(err) {
                                      if(err) log('Cannot write object: ' + err);
                                      else setState(id, obj.common.def);
                                  });
                                  
                                  var id = path + 'D_Y_8_11';
                                  var obj = {};
                                  obj.type = 'state';
                                  obj.common = {};
                                  obj.common.name = 'Ergebnis letzter E-Mail Versand 0=keine Mail versandt 1=Mail erfolgreich versandt 2=Benutzerdaten fehlerhaft 3= kein Internetzugang/Server nicht bereit' ;
                                  obj.common.type = 'number';
                                  obj.common.role = 'number';
                                  obj.common.desc = 'Ergebnis letzter E-Mail Versand 0=keine Mail versandt 1=Mail erfolgreich versandt 2=Benutzerdaten fehlerhaft 3= kein Internetzugang/Server nicht bereit';
                                  obj.common.read = true;
                                  obj.common.write = true;
                                  obj.common.def = 0;
                                  obj.common.min = 0;
                                  obj.common.unit = '';
                                  
                                  setObject(id, obj, function(err) {
                                      if(err) log('Cannot write object: ' + err);
                                      else setState(id, obj.common.def);
                                  });
                                  
                                  var id = path + 'D_Y_10_1';
                                  var obj = {};
                                  obj.type = 'state';
                                  obj.common = {};
                                  obj.common.name = 'Aktuelle Restkapazität Austauscher' ;
                                  obj.common.type = 'number';
                                  obj.common.role = 'number';
                                  obj.common.desc = 'Aktuelle Restkapazität Austauscher';
                                  obj.common.read = true;
                                  obj.common.write = true;
                                  obj.common.def = 0;
                                  obj.common.min = 0;
                                  obj.common.unit = '%';
                                  
                                  setObject(id, obj, function(err) {
                                      if(err) log('Cannot write object: ' + err);
                                      else setState(id, obj.common.def);
                                  });
                                  
                                  var id = path + 'D_Y_13';
                                  var obj = {};
                                  obj.type = 'state';
                                  obj.common = {};
                                  obj.common.name = '0= Austauscher gestört/in Regeneration 1= Austauscher in Betrieb' ;
                                  obj.common.type = 'number';
                                  obj.common.role = 'number';
                                  obj.common.desc = '0= Austauscher gestört/in Regeneration 1= Austauscher in Betrieb';
                                  obj.common.read = true;
                                  obj.common.write = true;
                                  obj.common.def = 0;
                                  obj.common.min = 0;
                                  obj.common.unit = '';
                                  
                                  setObject(id, obj, function(err) {
                                      if(err) log('Cannot write object: ' + err);
                                      else setState(id, obj.common.def);
                                  });
                                  
                                  var id = path + 'D_Y_14';
                                  var obj = {};
                                  obj.type = 'state';
                                  obj.common = {};
                                  obj.common.name = 'Voraussichtliche nächste Regeneration' ;
                                  obj.common.type = 'string';
                                  obj.common.role = 'string';
                                  obj.common.desc = 'Voraussichtliche nächste Regeneration';
                                  obj.common.read = true;
                                  obj.common.write = true;
                                  obj.common.def = 0;
                                  obj.common.min = 0;
                                  obj.common.unit = '';
                                  
                                  setObject(id, obj, function(err) {
                                      if(err) log('Cannot write object: ' + err);
                                      else setState(id, obj.common.def);
                                  });
                                  

                                  //region D_B_1 Regeneration
                                  var id = path + 'D_B_1';
                                  var obj = {};
                                  obj.type = 'state';
                                  obj.common = {};
                                  obj.common.name = 'Regeneration aktiv' ;
                                  obj.common.type = 'number';
                                  obj.common.role = 'number';
                                  obj.common.desc = 'Regeneration aktiv';
                                  obj.common.read = true;
                                  obj.common.write = true;
                                  obj.common.def = 0;
                                  obj.common.min = 0;
                                  obj.common.unit = '';

                                  setObject(id, obj, function(err) {
                                      if(err) log('Cannot write object: ' + err);
                                      else setState(id, obj.common.def);
                                  });
                                  

                                  // Aktualwerte
                                  var path = 'Messwerte.0.SC18.Aktualwerte.';

                                  ! //region D_A_1_1
                                  var id = path + 'D_A_1_1';
                                  var obj = {};
                                  obj.type = 'state';
                                  obj.common = {};
                                  obj.common.name = 'Aktueller Durchfluss' ;
                                  obj.common.type = 'number';
                                  obj.common.role = 'number';
                                  obj.common.desc = 'Aktueller Durchfluss';
                                  obj.common.read = true;
                                  obj.common.write = true;
                                  obj.common.def = 0;
                                  obj.common.min = 0;
                                  obj.common.unit = 'm³/h';

                                  setObject(id, obj, function(err) {
                                      if(err) log('Cannot write object: ' + err);
                                      else setState(id, obj.common.def);
                                  });
                                  

                                  //endregion D_A_1_1

                                  ! //region D_A_1_2
                                  ! var id = path + 'D_A_1_2';
                                  var obj = {};
                                  obj.type = 'state';
                                  obj.common = {};
                                  obj.common.name = 'Restkapazität' ;
                                  obj.common.type = 'number';
                                  obj.common.role = 'number';
                                  obj.common.desc = 'Restkapazität';
                                  obj.common.read = true;
                                  obj.common.write = true;
                                  obj.common.def = 0;
                                  obj.common.min = 0;
                                  obj.common.unit = 'm³*°dH';

                                  setObject(id, obj, function(err) {
                                      if(err) log('Cannot write object: ' + err);
                                      else setState(id, obj.common.def);
                                  });
                                  

                                  //endregion

                                  //region D_A_1_3
                                  var id = path + 'D_A_1_3';
                                  var obj = {};
                                  obj.type = 'state';
                                  obj.common = {};
                                  obj.common.name = 'Kapazitätszahl' ;
                                  obj.common.type = 'number';
                                  obj.common.role = 'number';
                                  obj.common.desc = 'Kapazitätszahl';
                                  obj.common.read = true;
                                  obj.common.write = true;
                                  obj.common.def = 0;
                                  obj.common.min = 0;
                                  obj.common.unit = 'm³*°dH';

                                  setObject(id, obj, function(err) {
                                      if(err) log('Cannot write object: ' + err);
                                      else setState(id, obj.common.def);
                                  });
                                  

                                  ! //endregion
                                  ! //region D_A_2_1
                                  ! var id = path + 'D_A_2_1';
                                  var obj = {};
                                  obj.type = 'state';
                                  obj.common = {};
                                  obj.common.name = 'Restzeit/-menge Reg.Schritt' ;
                                  obj.common.type = 'number';
                                  obj.common.role = 'number';
                                  obj.common.desc = 'Restzeit/-menge Reg.Schritt';
                                  obj.common.read = true;
                                  obj.common.write = true;
                                  obj.common.def = 0;
                                  obj.common.min = 0;
                                  obj.common.unit = 'l oder min';

                                  setObject(id, obj, function(err) {
                                      if(err) log('Cannot write object: ' + err);
                                      else setState(id, obj.common.def);
                                  });
                                  

                                  ! //endregion
                                  ! //region D_A_3_1
                                  ! var id = path + 'D_A_3_1';
                                  var obj = {};
                                  obj.type = 'state';
                                  obj.common = {};
                                  obj.common.name = 'Letzte Regeneration' ;
                                  obj.common.type = 'string';
                                  obj.common.role = 'string';
                                  obj.common.desc = 'Letzte Regeneration vor x h';
                                  obj.common.read = true;
                                  obj.common.write = true;
                                  obj.common.def = 0;
                                  obj.common.min = 0;
                                  obj.common.unit = 'h';

                                  setObject(id, obj, function(err) {
                                      if(err) log('Cannot write object: ' + err);
                                      else setState(id, obj.common.def);
                                  });
                                  

                                  //endregion

                                  ! //region D_A_3_2

                                  var id = path + 'D_A_3_2';
                                  var obj = {};
                                  obj.type = 'state';
                                  obj.common = {};
                                  obj.common.name = 'Letzte Regeneration Über' ;
                                  obj.common.type = 'number';
                                  obj.common.role = 'number';
                                  obj.common.desc = 'Letzte Regeneration Über';
                                  obj.common.read = true;
                                  obj.common.write = true;
                                  obj.common.def = 0;
                                  obj.common.min = 0;
                                  obj.common.unit = '%';
                                  
                                  setObject(id, obj, function(err) {
                                      if(err) log('Cannot write object: ' + err);
                                      else setState(id, obj.common.def);
                                  });
                                  

                                  //endregion

                                  ! ````

                                  // Logger

                                  ! ````
                                  var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
                                  ! var parser = require('xmldom').DOMParser;
                                  ! var xhr = new XMLHttpRequest();
                                  var requestNumber = 1 ;
                                  ! xhr.onload = function () { };
                                  xhr.onerror = function () { };
                                  ! var varInterval = setInterval(Interval, 3000);
                                  ! function Interval() {

                                  xhr.open("POST","http://[IP-der-Anlage-Einfügen]/mux_http");
                                  xhr.setRequestHeader("Content-type", "application/json");
                                  xhr.responseType = "document";

                                  ! switch(requestNumber) {
                                  case 1:
                                  console.log('Request ' + requestNumber + ' ausgeführt');
                                  xhr.send("id=8871&show=D_Y_2_1|D_Y_2_2|D_Y_2_3|D_Y_2_4|D_Y_2_5|D_Y_2_6|D_Y_2_7|D_Y_2_8|D_Y_2_9|D_Y_2_10|D_Y_2_11|D_Y_2_12|D_Y_2_13|D_Y_2_14~");
                                  xhr.onreadystatechange = function()
                                  {
                                  if (xhr.readyState==4)
                                  {
                                  if (xhr.status == 200)
                                  {
                                  if (xhr.responseText)
                                  {
                                  var str = xhr.responseText;

                                                  const regex = /<data>`([^\<]+)<\/code><d_y_2_1>([^\<]+)<\/D_Y_2_1><d_y_2_2>([^\<]+)<\/D_Y_2_2><d_y_2_3>([^\<]+)<\/D_Y_2_3><d_y_2_4>([^\<]+)<\/D_Y_2_4><d_y_2_5>([^\<]+)<\/D_Y_2_5><d_y_2_6>([^\<]+)<\/D_Y_2_6><d_y_2_7>([^\<]+)<\/D_Y_2_7><d_y_2_8>([^\<]+)<\/D_Y_2_8><d_y_2_9>([^\<]+)<\/D_Y_2_9><d_y_2_10>([^\<]+)<\/D_Y_2_10><d_y_2_11>([^\<]+)<\/D_Y_2_11><d_y_2_12>([^\<]+)<\/D_Y_2_12><d_y_2_13>([^\<]+)<\/D_Y_2_13><d_y_2_14>([^\<]+)<\/D_Y_2_14><\/data>/;
                                                  const subst = regex.exec(str);
                                  
                                                      if (subst)
                                                      {
                                                          for ( i = 1; i < 15; i++ ) {
                                                              i1 = i + 1;
                                                              if (i < 10)
                                                              setState("Messwerte.0.SC18.Wasserverbrauch.D_Y_2_0" + i , parseInt(subst[i1]) );
                                                              else
                                                              setState("Messwerte.0.SC18.Wasserverbrauch.D_Y_2_" + i , parseInt(subst[i1]) );
                                                          }
                                                      
                                                      }
                                                      requestNumber = 2;
                                                  }
                                              }
                                  		}
                                  };
                                  break;
                                  case 2:
                                  console.log('Request ' + requestNumber + ' ausgeführt');
                                  xhr.send("id=8871&show=D_C_4_2|D_C_5_2|D_C_5_3|D_C_4_1|D_C_4_3|D_C_5_1|D_C_7_1~");
                                  xhr.onreadystatechange = function()
                                  {
                                  	if (xhr.readyState==4)
                                  	{
                                  		if (xhr.status == 200)
                                  		{
                                  			if (xhr.responseText)
                                  			{
                                  			    var str = xhr.responseText;
                                  			    
                                                  const regex = /<data>`([^\<]+)<\/code><d_c_4_2>([^\<]+)<\/D_C_4_2><d_c_5_2>([^\<]+)<\/D_C_5_2><d_c_5_3>([^\<]+)<\/D_C_5_3><d_c_4_1>([^\<]+)<\/D_C_4_1><d_c_4_3>([^\<]+)<\/D_C_4_3><d_c_5_1>([^\<]+)<\/D_C_5_1><d_c_7_1>([^\<]+)<\/D_C_7_1><\/data>/;
                                                  const subst = regex.exec(str);
                                  
                                                      if (subst)
                                                      {
                                                              setState("Messwerte.0.SC18.Allgemein.D_C_4_2" , subst[2] );
                                                              setState("Messwerte.0.SC18.Allgemein.D_C_5_2" , subst[3] );
                                                              setState("Messwerte.0.SC18.Allgemein.D_C_5_3" , parseInt(subst[4]) );
                                                              setState("Messwerte.0.SC18.Allgemein.D_C_4_1" , parseInt(subst[5]) );
                                                              setState("Messwerte.0.SC18.Allgemein.D_C_4_3" , subst[6] );
                                                              setState("Messwerte.0.SC18.Allgemein.D_C_5_1" , parseInt(subst[7]) );
                                                              setState("Messwerte.0.SC18.Allgemein.D_C_7_1" , parseInt(subst[8]) );
                                  

                                  !

                                                      }
                                                      requestNumber = 3;
                                                  }
                                              }
                                  		}
                                  };
                                  break;
                                  case 3:
                                  console.log('Request ' + requestNumber + ' ausgeführt');
                                  xhr.send("id=8871&show=D_Y_4_1|D_Y_4_2|D_Y_4_3|D_Y_4_4|D_Y_4_5|D_Y_4_6|D_Y_4_7|D_Y_4_8|D_Y_4_9|D_Y_4_10|D_Y_4_11|D_Y_4_12|D_Y_4_13|D_Y_4_14~");
                                  xhr.onreadystatechange = function()
                                  {
                                  	if (xhr.readyState==4)
                                  	{
                                  		if (xhr.status == 200)
                                  		{
                                  			if (xhr.responseText)
                                  			{
                                  			    var str = xhr.responseText;
                                  			    
                                                  const regex = /<data>`([^\<]+)<\/code><d_y_4_1>([^\<]+)<\/D_Y_4_1><d_y_4_2>([^\<]+)<\/D_Y_4_2><d_y_4_3>([^\<]+)<\/D_Y_4_3><d_y_4_4>([^\<]+)<\/D_Y_4_4><d_y_4_5>([^\<]+)<\/D_Y_4_5><d_y_4_6>([^\<]+)<\/D_Y_4_6><d_y_4_7>([^\<]+)<\/D_Y_4_7><d_y_4_8>([^\<]+)<\/D_Y_4_8><d_y_4_9>([^\<]+)<\/D_Y_4_9><d_y_4_10>([^\<]+)<\/D_Y_4_10><d_y_4_11>([^\<]+)<\/D_Y_4_11><d_y_4_12>([^\<]+)<\/D_Y_4_12><d_y_4_13>([^\<]+)<\/D_Y_4_13><d_y_4_14>([^\<]+)<\/D_Y_4_14><\/data>/;
                                                  const subst = regex.exec(str);
                                  
                                                      if (subst)
                                                      {
                                                          for ( i = 1; i < 15; i++ ) {
                                                              i1 = i + 1;
                                                              if (i < 10)
                                                              setState("Messwerte.0.SC18.Regenerationen.D_Y_4_0" + i , subst[i1] );
                                                              else
                                                              setState("Messwerte.0.SC18.Regenerationen.D_Y_4_" + i , subst[i1] );
                                                          }
                                                      requestNumber = 4;
                                                      }
                                                  }
                                              }
                                  		}
                                  };
                                  break;
                                  case 4:
                                  console.log('Request ' + requestNumber + ' ausgeführt');
                                  xhr.send("id=8871&show=D_Y_5|D_Y_7|D_Y_8_11|D_Y_10_1|D_Y_13|D_Y_14|D_B_1|D_C_5_1|D_F_1~");
                                  xhr.onreadystatechange = function()
                                  {
                                  	if (xhr.readyState==4)
                                  	{
                                  		if (xhr.status == 200)
                                  		{
                                  			if (xhr.responseText)
                                  			{
                                  			    var str = xhr.responseText;
                                  			    
                                                  const regex = /<data>`([^\<]+)<\/code><d_y_5>([^\<]+)<\/D_Y_5><d_y_7>([^\<]+)<\/D_Y_7><d_y_8_11>([^\<]+)<\/D_Y_8_11><d_y_10_1>([^\<]+)<\/D_Y_10_1><d_y_13>([^\<]+)<\/D_Y_13><d_y_14>([^\<]+)<\/D_Y_14><d_b_1>([^\<]+)<\/D_B_1><d_c_5_1>([^\<]+)<\/D_C_5_1><\/data>/;
                                                  const subst = regex.exec(str);
                                  
                                                      if (subst)
                                                      {
                                                              setState("Messwerte.0.SC18.Allgemein.D_Y_5" , parseInt(subst[2]) );
                                                              setState("Messwerte.0.SC18.Allgemein.D_Y_7" , subst[3] );
                                                              setState("Messwerte.0.SC18.Allgemein.D_Y_8_11" , parseInt(subst[4]) );
                                                              setState("Messwerte.0.SC18.Allgemein.D_Y_10_1" , parseInt(subst[5]) );
                                                              setState("Messwerte.0.SC18.Allgemein.D_Y_13" , parseInt(subst[6]) );
                                                              setState("Messwerte.0.SC18.Allgemein.D_Y_14" , subst[7] );
                                                              setState("Messwerte.0.SC18.Allgemein.D_B_1" , parseInt(subst[8]) );
                                                              setState("Messwerte.0.SC18.Allgemein.D_C_5_1" , parseInt(subst[9]) );
                                                      }
                                                      requestNumber = 5;
                                                  }
                                              }
                                  		}
                                  };
                                  break;
                                  
                                  case 5:
                                  console.log('Request ' + requestNumber + ' ausgeführt');
                                  xhr.send("id=8871&show=D_A_1_1|D_A_1_2|D_A_1_3|D_A_2_1|D_A_3_1|D_A_3_2~");
                                  xhr.onreadystatechange = function()
                                  {
                                  	if (xhr.readyState==4)
                                  	{
                                  		if (xhr.status == 200)
                                  		{
                                  			if (xhr.responseText)
                                  			{
                                  			    var str = xhr.responseText;
                                  			    
                                                  const regex = /<data>`([^\<]+)<\/code><d_a_1_1>([^\<]+)<\/D_A_1_1><d_a_1_2>([^\<]+)<\/D_A_1_2><d_a_1_3>([^\<]+)<\/D_A_1_3><d_a_2_1>([^\<]+)<\/D_A_2_1><d_a_3_1>([^\<]+)<\/D_A_3_1><d_a_3_2>([^\<]+)<\/D_A_3_2><\/data>/;
                                                  const subst = regex.exec(str);
                                  
                                                      if (subst)
                                                      {
                                                              setState("Messwerte.0.SC18.Aktualwerte.D_A_1_1" , parseFloat(subst[2]) );
                                                              setState("Messwerte.0.SC18.Aktualwerte.D_A_1_2" , parseFloat(subst[3]) );
                                                              setState("Messwerte.0.SC18.Aktualwerte.D_A_1_3" , parseFloat(subst[4]) );
                                                              setState("Messwerte.0.SC18.Aktualwerte.D_A_2_1" , parseInt(subst[5]) );
                                                              setState("Messwerte.0.SC18.Aktualwerte.D_A_3_1" , subst[6] );
                                                              setState("Messwerte.0.SC18.Aktualwerte.D_A_3_2" , parseInt(subst[7]) );
                                                      }
                                                      requestNumber = 1;
                                                  }
                                              }
                                  		}
                                  };
                                  

                                  }

                                  !
                                  !

                                  }</d_a_3_2></d_a_3_1></d_a_2_1></d_a_1_3></d_a_1_2></d_a_1_1></data></d_c_5_1></d_b_1></d_y_14></d_y_13></d_y_10_1></d_y_8_11></d_y_7></d_y_5></data></d_y_4_14></d_y_4_13></d_y_4_12></d_y_4_11></d_y_4_10></d_y_4_9></d_y_4_8></d_y_4_7></d_y_4_6></d_y_4_5></d_y_4_4></d_y_4_3></d_y_4_2></d_y_4_1></data></d_c_7_1></d_c_5_1></d_c_4_3></d_c_4_1></d_c_5_3></d_c_5_2></d_c_4_2></data></d_y_2_14></d_y_2_13></d_y_2_12></d_y_2_11></d_y_2_10></d_y_2_9></d_y_2_8></d_y_2_7></d_y_2_6></d_y_2_5></d_y_2_4></d_y_2_3></d_y_2_2></d_y_2_1>`</data>
                                  ```` ``Folgende zusätzliche NPM Module sind bei mir hinzugefügt:

                                  xmlhttprequest,xml,jquery,xml2js,xmldom,regex

                                  Vlt. Hilft das jemanden. :D`` `

                                  1 Antwort Letzte Antwort
                                  0
                                  • H Offline
                                    H Offline
                                    hiasii12
                                    schrieb am zuletzt editiert von
                                    #17

                                    Ich werde Versuchen sobald ich etwas Zeit finde hier eine Bebilderte Anleitung zu erstellen.

                                    1 Antwort Letzte Antwort
                                    0
                                    • B Offline
                                      B Offline
                                      Breiti1234
                                      schrieb am zuletzt editiert von
                                      #18

                                      Das wäre schön, Danke

                                      1 Antwort Letzte Antwort
                                      0
                                      • B Offline
                                        B Offline
                                        Breiti1234
                                        schrieb am zuletzt editiert von
                                        #19

                                        OK ich habe es hinbekommen, (jipiehhhh)

                                        Ich versuche es auchmal für andere zu erklären:

                                        es braucht die Adapter:

                                        -Javascript

                                        -Parser

                                        im Javascript müssen bei als zusätzliche NPM

                                        Module:

                                        xmlhttprequest,xml,jquery,xml2js,xmldom,regex

                                        eingetragen werden.

                                        Bild1

                                        Dann 2 Javascripte anlegen,

                                        Script 1 der Text aus StateMaschine , siehe Post oben.

                                        Script 2 der Text aus Logger, siehe Post oben.

                                        ACHTUNG, anlegen der Scripte bei Namen "ohne Gruppe"

                                        Bild 2

                                        Script 1 legt die Datenpunkte an

                                        Script 2 holt die Daten.

                                        Schon tauchen die Punkte bei Objekten auf (sollten sie zumindest)

                                        Bild 3

                                        Jetzt im Vis Editor ein "Value" Widget einfügen und bei ID den gewünschten Wert (hier Wasserverbrauch gestern) auswählen fertig!

                                        Bild 4

                                        sollte ich etwas vergessen haben bitte ich die Profis es nachzutragen.
                                        9876_java2.jpg
                                        9876_java.jpg
                                        9876_datendarstellen.jpg
                                        9876_objekt.jpg

                                        1 Antwort Letzte Antwort
                                        0
                                        • H Offline
                                          H Offline
                                          hiasii12
                                          schrieb am zuletzt editiert von
                                          #20

                                          Passt genau so.

                                          Dann spar ich mir die Anleitung.

                                          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

                                          840

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          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