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

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    354

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.6k

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

Webseite auslesen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
4 Beiträge 3 Kommentatoren 1.2k Aufrufe 1 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.
  • M Offline
    M Offline
    MarcoH
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    ich habe zwar zu dem Thema schon einige Einträge hier gefunden, komme aber leider noch nicht wirklich damit klar. Ich muss dazu sagen, dass ich recht neu bin (sowohl im Umgang mit IOBroker, als auch mit JS). Bisher konnte ich mich mit lesen und "learning by dooing"ganz gut "durchwurschteln", aber bei diesem Thema bin ich echt am verzweifeln.

    Folgendes Problem:

    Ich lese die Daten meiner Heizung über eine Weboberfläche aus. Das Ganze sieht folgenermaßen aus:

    Aufruf:

    <hostname><nummer>Der Quelltext dazu (mit nummer=8700):

    ! ```
    `<title>BSB-LAN Web</title>
    ! <center>
    ! # BSB-LAN Web
    ! </center>

    ! Heizungsfunktionen DS18B20-Sensoren DHT22-Sensoren Anzeige Logdatei
    Konfiguration URL-Befehle HowTo FAQ
    !

    |
    8700 Diagnose Verbraucher - Aussentemperatur: 1.0 °C

    ` mit dem RegEx

    ~~[code]~~8700 .*:[ \t]+([-]?[\d\.]+)[/code]
    kann ich den Wert ohne Probleme abfragen. (getestet auf https://regex101.com)

    ! Ich weiß, das es einen Parser Adapter gibt (mit dem es auch funktioniert die Werte auszulesen), allerdings wäre das ziemlich viel Tipparbeit und nicht wirklich dynamisch.
    ! Ich habe folgendes vor:
    ! Array mit abzufragenden Nummern
    ! --> dynamische Adressen erzeugen
    ! --> dynamische RegEx erzeugen
    ! --> State anlegen (mit ausgelesenen Namen)
    ! Das sollte ja theoretisch möglich sein. Die Frage ist jetzt nur: Wie komme ich per Javascript an den Wert, d.h., wie wende ich den RegEx Ausdruck richtig an?
    ! Was mir während des schreibens noch aufgefallen ist:
    ! bei manchen Abfragen wird mein RegEx nicht so recht funktionieren.
    ! Bsp
    ! Nummer 8000 ergibt:
    ! >! [spoiler]`[code]
    ! <title>BSB-LAN Web</title>
    ! <center>
    ! # BSB-LAN Web
    ! </center>

    ! Heizungsfunktionen DS18B20-Sensoren DHT22-Sensoren Anzeige Logdatei
    Konfiguration URL-Befehle HowTo FAQ
    !

    |
    8000 Status - Status Heizkreis 1: 114 - Heizbetrieb Komfort
    |
    <select id="value1"><option value="0">---</option>
    <option value="3">Wächter angesprochen</option>
    <option value="4">Handbetrieb aktiv</option>
    <option value="17">Nachlauf aktiv</option>
    <option value="22">Anlagenfrostschutz aktiv</option>
    <option value="23">Frostschutz aktiv</option>
    <option value="24">Aus</option>
    <option value="56">Überhitzschutz aktiv</option>
    <option value="101">Raumfrostschutz aktiv</option>
    <option value="102">Estrichfunktion aktiv</option>
    <option value="103">Eingeschränkt, Kesselschutz</option>
    <option value="104">Eingeschränkt, TWW-Vorrang</option>
    <option value="105">Eingeschränkt, Puffer</option>
    <option value="106">Heizbetrieb eingeschränkt</option>
    <option value="107">Zwangsabnahme Puffer</option>
    <option value="108">Zwangsabnahme TWW</option>
    <option value="109">Zwangsabnahme Erzeuger</option>
    <option value="110">Zwangsabnahme</option>
    <option value="111">Einschaltopt + Schnellaufheiz</option>
    <option value="112">Einschaltoptimierung</option>
    <option value="113">Schnellaufheizung</option>
    <option value="114" selected="">Heizbetrieb Komfort</option>
    <option value="115">Ausschaltoptimierung</option>
    <option value="116">Heizbetrieb Reduziert</option>
    <option value="117">Vorlauffrostschutz aktiv</option>
    <option value="118">Sommerbetrieb</option>
    <option value="119">Tages-Eco aktiv</option>
    <option value="120">Absenkung Reduziert</option>
    <option value="121">Absenkung Frostschutz</option>
    <option value="122">Raumtemp’begrenzung</option></select> | |` Aber das ist dann glaube die nächste Baustelle, die Werte abzufragen würde für den Anfang erstmal genügen.

    ! Meine bisherigen Bemühungen hatten als Basis diesen Code:
    ! >! [spoiler]~~[code]~~var request=require("request"); var url="http://192.168.1.102/8700"; const regex= "8700 .*:[ \t]+([-]?[\d\.]+)"; ! function Test(){ request(url, function(err, stat, body) { // var dataArr = body.match(RegEX); //???????????????????????????? }); } Test();[/code][/spoiler]
    Allerding komme ich damit nicht weiter.
    ! Wäre schön, wenn mir hier jemand auf die Sprünge helfen würde.
    ! Gruß
    ! Marco[/i][/i][/code][/spoiler][/i][/i]

    1 Antwort Letzte Antwort
    0
    • wendy2702W Online
      wendy2702W Online
      wendy2702
      schrieb am zuletzt editiert von
      #2

      Blöde Frage, stellt die Heizung die Daten nur per Webseite zur Verfügung?

      Bitte keine Fragen per PN, die gehören ins Forum!

      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

      1 Antwort Letzte Antwort
      0
      • M Offline
        M Offline
        MarcoH
        schrieb am zuletzt editiert von
        #3

        Hallo Wendy,

        die Heizung gibt von sich aus gar nichts aus. Findige Nutzer haben mit Hilfe eines Arduinos und eines selbstgebauten Adapters das Gerät dazu überreden können ;) . Das Projekt habe ich achgebaut und kann damit auf die Heizung zugreifen - über html.

        Ich habe mir inzwischen schon ein Script zurechtgebastelt, was eigentlich recht gut funktioniert. Sicherlich ist das nicht ganz sauber programmiert, aber Hauptsache es läuft. Für meine ersten Gehversuche mit Javascript und RegEx bin ich eigentlich ganz zufrieden.

        So habe ich es jetzt gelöst (Das Array lässt sich beliebig ändern):

        var posArr=[700,710,720,721,8000,8003,8007,8009,8308,8310,8311,8312,8331,8333,8390,8510,8530,8700,8741,8744,8830,8831,8832,8950,8951];
        var url="http://192.168.1.102/" + posArr.join("/");
        
        start();
        function start() {
            var request = require('request');
            request(url, function (err, resp, body) {
                if (body) {
                    posArr.forEach(function(pos) { 
                        var regexWert=new RegExp(pos + " .*:[ \\t]+([-]?[\\d\.]+.)+"); 
                        var regexName =new RegExp(pos + ".*-  (.*?):");                                           
                        var regexUnit =new RegExp(pos + ".*:[ ]+[-]?[\\d\.*]+[- ]+(.*)");  
                        var mWert = body.match(regexWert);
                        var mName = body.match(regexName);
                        var mUnit = body.match(regexUnit);
                        mName[1]= mName[1].replace(/\./g,"_");
                        mName[1]="Heizung_Werte."+mName[1].replace(/ /g,"_");
                        mWert[1]=parseFloat(mWert[1]);
                        if (mWert && mWert.length > 1) {
                            createState(mName[1], 0, {read: true, write: true, def:"",   unit:mUnit[1]}); //, unit:mUnit[1]
                            setState(mName[1], mWert[1],true);
                        } else {
                            console.log("Kann " + pos + " nicht zuordnen");
                        }
                    });
                } else {
                      console.warn(pos + '   NOOO response: ' + err);
                }
            });
        }
        
         schedule("* */5 * * *", start);
        

        Der Quelltext der Abfrage sieht folgendermaßen aus:

        ! ```
        `<title>BSB-LAN Web</title>
        ! <center>
        ! # BSB-LAN Web
        ! </center>

        ! Heizungsfunktionen DS18B20-Sensoren DHT22-Sensoren Anzeige Logdatei
        Konfiguration URL-Befehle HowTo FAQ
        !

        |
        700 Heizkreis 1 - Betriebsart: 3 - Komfort
        |
        <select id="value1"><option value="0">Schutzbetrieb</option>
        <option value="1">Automatik</option>
        <option value="2">Reduziert</option>
        <option value="3" selected="">Komfort</option></select> | |

        ! |
        710 Heizkreis 1 - Komfortsollwert: 21.5 °C
        |
        | |
        ! |
        720 Heizkreis 1 - Kennlinie Steilheit: 0.34
        |
        | |
        ! |
        721 Heizkreis 1 - Kennlinie Verschiebung: 0.5 °C
        |
        | |
        ! |
        8000 Status - Status Heizkreis 1: 114 - Heizbetrieb Komfort
        |
        <select id="value1"><option value="0">---</option>
        <option value="3">Wächter angesprochen</option>
        <option value="4">Handbetrieb aktiv</option>
        <option value="17">Nachlauf aktiv</option>
        <option value="22">Anlagenfrostschutz aktiv</option>
        <option value="23">Frostschutz aktiv</option>
        <option value="24">Aus</option>
        <option value="56">Überhitzschutz aktiv</option>
        <option value="101">Raumfrostschutz aktiv</option>
        <option value="102">Estrichfunktion aktiv</option>
        <option value="103">Eingeschränkt, Kesselschutz</option>
        <option value="104">Eingeschränkt, TWW-Vorrang</option>
        <option value="105">Eingeschränkt, Puffer</option>
        <option value="106">Heizbetrieb eingeschränkt</option>
        <option value="107">Zwangsabnahme Puffer</option>
        <option value="108">Zwangsabnahme TWW</option>
        <option value="109">Zwangsabnahme Erzeuger</option>
        <option value="110">Zwangsabnahme</option>
        <option value="111">Einschaltopt + Schnellaufheiz</option>
        <option value="112">Einschaltoptimierung</option>
        <option value="113">Schnellaufheizung</option>
        <option value="114" selected="">Heizbetrieb Komfort</option>
        <option value="115">Ausschaltoptimierung</option>
        <option value="116">Heizbetrieb Reduziert</option>
        <option value="117">Vorlauffrostschutz aktiv</option>
        <option value="118">Sommerbetrieb</option>
        <option value="119">Tages-Eco aktiv</option>
        <option value="120">Absenkung Reduziert</option>
        <option value="121">Absenkung Frostschutz</option>
        <option value="122">Raumtemp’begrenzung</option></select> | |
        ! |
        8003 Status - Status Trinkwasser: 99 - Geladen, Nenntemperatur
        |
        <select id="value1"><option value="0">---</option>
        <option value="3">Wächter angesprochen</option>
        <option value="4">Handbetrieb aktiv</option>
        <option value="17">Nachlauf aktiv</option>
        <option value="24">Frostschutz aktiv</option>
        <option value="25">Aus</option>
        <option value="53">Rückkühlung aktiv</option>
        <option value="66">Ladung Elektroeinsatz</option>
        <option value="67">Zwangsladung aktiv</option>
        <option value="69">Ladung aktiv</option>
        <option value="70">Geladen, Max Speichertemp</option>
        <option value="71">Geladen, Max Ladetemp</option>
        <option value="75">Geladen</option>
        <option value="77">Rückkühlung via Kollektor</option>
        <option value="78">Rückkühlung via Erz / Hk's</option>
        <option value="79">Entladeschutz aktiv</option>
        <option value="80">Ladezeitbegrenzung aktiv</option>
        <option value="81">Ladung gesperrt</option>
        <option value="82">Ladesperre aktiv</option>
        <option value="83">Zwang, Max Speichertemp</option>
        <option value="84">Zwang, Max Ladetemperatur</option>
        <option value="85">Zwang, Legionellensollwert</option>
        <option value="86">Zwang, Nennsollwert</option>
        <option value="87">Ladung Elektro, Leg’sollwert</option>
        <option value="88">Ladung Elektro, Nennsollwert</option>
        <option value="89">Ladung Elektro, Red’sollwert</option>
        <option value="90">Ladung Elektro, Fros’sollwert</option>
        <option value="91">Elektroeinsatz freigegeben</option>
        <option value="92">Push, Legionellensollwert</option>
        <option value="93">Push, Nennsollwert</option>
        <option value="94">Push aktiv</option>
        <option value="95">Ladung, Legionellensollwert</option>
        <option value="96">Ladung, Nennsollwert</option>
        <option value="97">Ladung, Reduziertsollwert</option>
        <option value="98">Geladen, Legio’temperatur</option>
        <option value="99" selected="">Geladen, Nenntemperatur</option>
        <option value="100">Geladen, Reduz’temperatur</option>
        <option value="199">Zapfbetrieb</option>
        <option value="200">Bereit</option>
        <option value="201">Bereitschaftsladung</option></select> | |
        ! |
        8007 Status - Status Solar: 58 - Ladung Trinkwasser
        |
        <select id="value1"><option value="0">---</option>
        <option value="4">Handbetrieb aktiv</option>
        <option value="2">Störung</option>
        <option value="52">Kollektorfrostschutz aktiv</option>
        <option value="53">Rückkühlung aktiv</option>
        <option value="54">Max Speichertemp erreicht</option>
        <option value="55">Verdampfungsschutz aktiv</option>
        <option value="56">Überhitzschutz aktiv</option>
        <option value="57">Max Ladetemp erreicht</option>
        <option value="58" selected="">Ladung Trinkwasser</option>
        <option value="59">Ladung Pufferspeicher</option>
        <option value="60">Ladung Schwimmbad</option>
        <option value="61">Min Ladetemp nicht erreicht</option>
        <option value="62">Temp’differenz ungenügend</option>
        <option value="63">Einstrahlung ungenügend</option>
        <option value="151">Lad'ng TWW + Puffer + Sch'bad</option>
        <option value="152">Ladung Trinkwasser + Puffer</option>
        <option value="153">Ladung Trinkwasser + Sch'bad</option>
        <option value="154">Ladung Puffer + Schwimmbad</option></select> | |
        ! |
        8009 Status - Status Brenner: 216 - Standby
        |
        <select id="value1"><option value="0">?---</option>
        <option value="1">?Störstellung</option>
        <option value="2">?Startverhinderung</option>
        <option value="4">In Betrieb</option>
        <option value="18">In Betrieb</option>
        <option value="214">?Sicherheitszeit</option>
        <option value="218">?Vorlüften</option>
        <option value="215">?Inbetriebsetzung</option>
        <option value="216" selected="">Standby</option>
        <option value="9">??Außerbetriebsetzung</option>
        <option value="217">?Heimlauf</option>
        <option value="219">?Nachlüften</option></select> | |
        ! |
        8308 Diagnose Erzeuger - Drehzahl Kesselpumpe: 35 %
        |
        | |
        ! |
        8310 Diagnose Erzeuger - Kesseltemperatur: 29.1 °C
        |
        | |
        ! |
        8311 Diagnose Erzeuger - Kesselsollwert: 31.0 °C
        |
        | |
        ! |
        8312 Diagnose Erzeuger - Kesselschaltpunkt: 27.0 °C
        |
        | |
        ! |
        8331 Diagnose Erzeuger - Startzähler 1.Stufe: 26889
        |
        | |
        ! |
        8333 Diagnose Erzeuger - Startzähler 2.Stufe: 26886
        |
        | |
        ! |
        8390 Diagnose Erzeuger - Phasennummer: 4
        |
        | |
        ! |
        8510 Diagnose Erzeuger - Kollektortemperatur 1: 54.8 °C
        |
        | |
        ! |
        8530 Diagnose Erzeuger - Betrstunden Solarertrag: 2276 h | | | ! | 8700 Diagnose Verbraucher - Aussentemperatur: -1.3 °C | | | ! | 8741 Diagnose Verbraucher - Raumsollwert 1: 21.5 °C | | | ! | 8744 Diagnose Verbraucher - Vorlaufsollwert 1: 31.0 °C | | | ! | 8830 Diagnose Verbraucher - Trinkwassertemperatur 1: 46.0 °C | | | ! | 8831 Diagnose Verbraucher - Trinkwassersollwert: 45.0 °C | | | ! | 8832 Diagnose Verbraucher - Trinkwassertemperatur 2: 46.0 °C | | | ! | 8950 Diagnose Verbraucher - Schienenvorlauftemperatur: 29.1 °C | | | ! | 8951 Diagnose Verbraucher - Schienenvorlaufsollwert: 31.0 °C | | | Mein nächstes Projekt wird jetzt die Einbindung meiner KWL, die auch nicht netzwerkfähig ist.
        ! Gruß Marco[/i][/i]

        1 Antwort Letzte Antwort
        0
        • H Offline
          H Offline
          hacki11
          schrieb am zuletzt editiert von
          #4

          Falls noch relevant, hier ein Adapter für bsb_lan:
          https://forum.iobroker.net/topic/25406/aufruf-bsb_lan-adapter-brötje-etc
          https://github.com/hacki11/ioBroker.bsblan

          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

          347

          Online

          32.5k

          Benutzer

          81.8k

          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