Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. EBus - Adapter oder alternative Anbindung möglich?

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    EBus - Adapter oder alternative Anbindung möglich?

    This topic has been deleted. Only users with topic management privileges can see it.
    • Lenny.CB
      Lenny.CB Most Active last edited by

      @Hoich:

      Das einzige was mir fehlt ist die Verbindung ebusd <-> iobroker , aber ich denke das sollte einfach zu implementieren sein. `
      wenns fertig ist, will ich das auch gern nutzen.

      Ich stelle mich bei so etwas zu dusselig an. Habe es bis dato auch noch nicht hinbekommen einen Adapter zu bauen.

      1 Reply Last reply Reply Quote 0
      • H
        Hoich last edited by

        Hier noch die versprochenen Bilder (in low-res, damit's auch fix lädt).

        An die Vaillant VRC430 hab ich ein 2-adriges Kabel (0.75mm^2) gezogen und an die rote Klemme angeschlossen:

        1700_img_1992.jpg

        Im nächsten Raum ist ein Raspberry Pi mit der Platine aus dem FHEM-Forum (oder hier: http://www.fhemwiki.de/wiki/EBUS ), die ich ein ein kleines selbstgedrucktes Gehäuse gesetzt hab um Kurzschlüsse zu vermeiden:

        1700_img_2005.jpg

        Auf dem RPi läuft dann der ebusd, den ich lokal mit ebusctl lesen/schreiben kann, oder der auch via Telnet von außen erreichbar ist. An Befehlen sind denke ich die Befehle "find", "read" und "listen" interessant (wenn ich erstmal nur lesend zugreifen will). Hier mal so meine naive Vorstellung wie man an die Daten von iobroker aus kommt:

        Mitfind -fbekomme ich alle Felder angezeigt, die vorhanden sind, die könnten also alle an iobroker exportiert werden. Die meisten werden aber erst durch aktives Lesen über den Bus gefüllt, weil nicht gebroadcastet. Mitread WaterPressurekann ich dann die Felder mit Werten über den eBus ergänzen (wenn ich z.B. den Wasserdruck haben will). Wenn man dann alles Statische hat, müsste````
        listen

        
        So denke ich mir sollte man von iobroker aus auf den RPi zugreifen können. Trickreich ist für mich jetzt dann wie sich das alles mit node.js machen lässt. Falls es schon ein gutes Adapterbeispiel hierfür gäbe in das nur noch die Syntax rein muss, her damit :)
        1 Reply Last reply Reply Quote 0
        • Lenny.CB
          Lenny.CB Most Active last edited by

          schaut doch schon mal vielversprechend aus…
          @Hoich:

          Falls es schon ein gutes Adapterbeispiel hierfür gäbe in das nur noch die Syntax rein muss, her damit 🙂 `
          es gibt doch auf dem GIT nen Adapter-Template.

          https://github.com/ioBroker/ioBroker.template

          :shock: Aber frage mich bitte nicht wie das geht. Habe keine Ahnung vom Adapterbau… :shock:

          1 Reply Last reply Reply Quote 0
          • a200
            a200 last edited by

            Wow, es ist als könntet ihr meine Gedanken lesen.

            Da ich gerade mit dem Auslesen und Auswerten meines Stromzählers fertig geworden bin, habe ich an meine Vaillant Heizung gedacht. Eine interessante Beschreibung habe ich hier http://www.karrais.de/ebusd/doku_vwmon_ebusd.pdf gefunden.

            Hardware:

            einerseits finde ich den eBus-USB Kotroller https://www.eservice-online.de/shop/ebu … oppler-usb sehr gelungen. Den es auch als seriell und eth gibt. Allerdings ist das Teil recht teuer. Andererseits will ich versuchen noch eine Platine zu bekommen um alles selber zu löten. (AUFRUF: Falls einer noch eine Platine rumliegen hat, dann würde ich sie gerne ankaufen)

            Werte auslesen:

            Auslesen wäre wohl nicht so schwer. Könnte man so ähnlich wie bei dem Stromzähler machen. Mit shell-scripten Werte auslesen und in Deite schreiben. Danach die Werte in Datenpunkte importieren.

            Werte schreiben:

            muss man schauen. Vielleicht kann man es mit vwmon http://baublog.ozerov.de/waermepumpe/vw … ermepumpe/ was anfangen.

            Auf die Hoffnung demnächst meine Heizung über ioBroker steuern zu können!

            euer a200.

            1 Reply Last reply Reply Quote 0
            • S
              simpixo last edited by

              @a200:

              Wow, es ist als könntet ihr meine Gedanken lesen.

              Da ich gerade mit dem Auslesen und Auswerten meines Stromzählers fertig geworden bin, habe ich an meine Vaillant Heizung…. `

              Wie liest du den deinen Stromzähler aus!?

              Ich frage nur denn Ich lese meinen Gas und Stromzähler mit Volkszähler aus! Jetzt muss ich nämlich eine Möglichkeit finden um die Werte in IOBROKER zu bekommen

              Also zB den Momentanen Verbrauch, den Tagesverbrauch usw.

              Gruß

              Adrian

              Gesendet von iPhone mit Tapatalk

              1 Reply Last reply Reply Quote 0
              • a200
                a200 last edited by

                @simpixo:

                @a200:

                Wow, es ist als könntet ihr meine Gedanken lesen.

                Da ich gerade mit dem Auslesen und Auswerten meines Stromzählers fertig geworden bin, habe ich an meine Vaillant Heizung…. `

                Wie liest du den deinen Stromzähler aus!?

                Ich frage nur denn Ich lese meinen Gas und Stromzähler mit Volkszähler aus! Jetzt muss ich nämlich eine Möglichkeit finden um die Werte in IOBROKER zu bekommen

                Also zB den Momentanen Verbrauch, den Tagesverbrauch usw.

                Gruß

                Adrian

                Gesendet von iPhone mit Tapatalk `
                Ich nutze auch den Volkszähler.

                dazu habe ich kleines script geschrieben der mir minütlich den Status des Zählers ausgibt.

                also: Momentane Last + Gesamtverbrauch diese Wert lese ich per Javascript in ioBroker ein. Dazu habe ich weitere scripte angelegt, die mir den stündlichen, täglichen, wöchentlichen und monatlichen Wert berechnen und per history-adapter speichern.

                dadurch kann ich schöne Statistiken erstellen.

                Melde dich, wenn du die scripte haben willst.
                1597_bild_2.jpg
                1597_bild_3.jpg

                1 Reply Last reply Reply Quote 0
                • S
                  simpixo last edited by

                  Ahh über die Scripte würde ich mich riesig freuen! Bin da noch nIcht so bewandert was Scripte erstellen angeht [emoji12][emoji23]

                  Ich danke dir schon im Vorfeld dafür [emoji1360]

                  Gesendet von iPhone mit Tapatalk

                  1 Reply Last reply Reply Quote 0
                  • a200
                    a200 last edited by

                    @simpixo:

                    Ahh über die Scripte würde ich mich riesig freuen! Bin da noch nIcht so bewandert was Scripte erstellen angeht [emoji12][emoji23]

                    Ich danke dir schon im Vorfeld dafür [emoji1360]

                    Gesendet von iPhone mit Tapatalk `

                    Habe meine Antwort nach http://forum.iobroker.net/viewtopic.php?f=21&t=4363 ausgelagert.

                    Lg a200

                    1 Reply Last reply Reply Quote 0
                    • H
                      Hoich last edited by

                      Kurzer Zwischenstand: Ich kann mich mittlerweile via Javascript zum ebusd verbinden und Kommandos absetzen. Das Parsen der Antworten ist noch etwas aufwendig, und ich brauch wohl noch etwas, aber zumindest habe ich schon die ersten Infos vom ebusd (der mit der Vaillant VRC430 verbunden ist) zu ibroker transferiert 😄

                      Derzeit habe ich die Befehle 'info' und 'find' implementiert, ich denke es ist sinnvoll viele kleine Skripte zu machen um die dann regelmäßig je nach Bedarf aufzurufen. Hier der info-Code schonmal als Teaser:

                      `var root = 'eBus';   // root of state inside 'javascript.0'
                      var host = 'pi1';    // set to your host running ebusd
                      var port = 8888;     // default ebusd port
                      
                      var net = require('net');
                      
                      log('trying');
                      
                      var req = 'info';
                      
                      createState('eBus');
                      
                      var run=1;
                      function parse(data) {
                          log("run: " + run);
                          var arr = data.toString().split(/\r?\n/);
                          for(var i = 0; i <arr.length; i++)/{/var/line="arr[i];" fields="line.split('\:" ');/if(fields.length="">1) {
                                log('Field=' + fields[0] + " Value=" + fields[1]);
                                fields[0] = fields[0].replace(' ','_');
                                if(run==1) {
                                    createState('eBus' + '.' + fields[0], fields[1]);
                                } else if (run==2) {
                                    var subfields = fields[1].split(', ');
                                    var tmp = subfields[0].split('#');
                                    var master = tmp[1];
                                    createState('eBus' + '.' + master);
                                    if(/^scanned/.test(subfields[1])) {
                                        tmp = subfields[1].replace('scanned \"', '');
                                        tmp = tmp.replace('\"', '');
                                        tmp = tmp.split(';');
                                        for(var j=0; j <tmp.length;j++) {/var/subfields2="tmp[j].split('=');" createstate('ebus'/+/'.'/master/subfields2[0],/subfields2[1]);/}/else/log('not/enough/fields:/'/line);/run++;/client="new" net.socket();/client.connect(port,/host,/function()/log('connected/to/ebusd/on/host/':'/port);/client.write(req/'\n');/});/databuf/;/client.on('data',/function(data)/prev="0," next;/datastr="data.toString();" while/((next="datastr.indexOf('\n\n'," prev))="">-1) {
                          databuf += datastr.substring(prev, next);
                          parse(databuf);
                          databuf = '';
                          prev = next + 1;
                        }
                        databuf += datastr.substring(prev);
                        client.write('quit\n');
                      });
                      
                      client.on('close', function() {
                      	log('Connection to ebusd closed');
                      });</tmp.length;j++)></arr.length;>` 
                      
                      Den find-Befehl schiebe ich nach, sobald er stabil ist :)
                      
                      Hoich[/i]
                      
                      1 Reply Last reply Reply Quote 0
                      • S
                        simpixo last edited by

                        Geilomat…. [emoji1360] ich warte immer noch auf den serial/ USB Adapter [emoji30] bis jetzt wurde dieser nämlich nicht geliefert!

                        Aber bei der Entwicklungsgeschwindigkeit seid ihr schon fertig bis ich den Adapter erhalte [emoji23][emoji6]

                        Gesendet von iPhone mit Tapatalk Pro

                        1 Reply Last reply Reply Quote 0
                        • a200
                          a200 last edited by

                          @simpixo:

                          Geilomat…. [emoji1360] ich warte immer noch auf den serial/ USB Adapter [emoji30] bis jetzt wurde dieser nämlich nicht geliefert! `
                          moin,

                          ich habe das hier: https://www.amazon.de/tinxi-FT232RL-Con … B01C2P9GD2 gekauft. wird sofort geliefert. Allerdings habe ich noch keine Zeit zum Löten gehabt.

                          Was hast du denn bestellt?

                          1 Reply Last reply Reply Quote 0
                          • Samson71
                            Samson71 Global Moderator last edited by

                            @simpixo:

                            ich warte immer noch auf den serial/ USB Adapter `
                            Arduino Leonardo braucht den nicht. Hat USB an Bord. Da hängt meine EBUS-Platine dran und der Leonardo per USB an der CCU2.

                            1 Reply Last reply Reply Quote 0
                            • S
                              smiling_Jack last edited by

                              Hallo

                              ich habe seit gestern jetzt auch eine neue Heitzung (Wolf) ich habe zwar auch ein ISM8i und nutze den Wolf adapter 😉

                              Aber ich habe mir auch schon das:

                              https://www.eservice-online.de/shop/ebu … r-ethernet

                              angeschaut.

                              wen jemand noch ne gute Hardware Idee hat am besten Ebus zu Lan dann kann ich da bestimmt schnell nen unniversal Adapter machen.

                              1 Reply Last reply Reply Quote 0
                              • S
                                simpixo last edited by

                                Was spricht gegen ebus zur Usb!? [emoji6]

                                Ist das schwieriger zum umsetzen!?

                                Gruß

                                Adrian

                                Gesendet von iPhone mit Tapatalk Pro

                                1 Reply Last reply Reply Quote 0
                                • a200
                                  a200 last edited by

                                  @simpixo:

                                  Was spricht gegen ebus zur Usb!? [emoji6]

                                  Ist das schwieriger zum umsetzen!? `

                                  Eher nicht! Wurde auch hier mehrfach besprochen:

                                  https://wiki.fhem.de/wiki/EBUS

                                  https://forum.fhem.de/index.php/topic,46098.630.html

                                  Bin dabei es umzusetzen. Es wird noch ca. 1-2 Wochen dauern bis ich dazu komme, aber dann werde ich mich gerne melden und berichten.

                                  a200.

                                  1 Reply Last reply Reply Quote 0
                                  • S
                                    smiling_Jack last edited by

                                    @a200:

                                    @simpixo:

                                    Bin dabei es umzusetzen. Es wird noch ca. 1-2 Wochen dauern bis ich dazu komme, aber dann werde ich mich gerne melden und berichten.

                                    Da ich im Moment noch zuviele andere Projekte habe würde ich mich freuen wenn du da was schönes machst. Wenn du Hilfe brauchst daraus einen Adapter zu machen helfe ich dir gerne.

                                    1 Reply Last reply Reply Quote 0
                                    • a200
                                      a200 last edited by

                                      @smiling_Jack:

                                      @a200:

                                      @simpixo:

                                      Wenn du Hilfe brauchst daraus einen Adapter zu machen helfe ich dir gerne. `

                                      Gerne! Ich komme auf dich zu!

                                      1 Reply Last reply Reply Quote 0
                                      • H
                                        Hoich last edited by

                                        Ich habe ja noch eine "find"-Routine versprochen. Hier ist mein derzeitiges Zwischenergebnis, ich weiss noch nicht ob ich noch mehr dran machen will.

                                        Was das Skript macht ist im Prinzip ein "find -f" an ebusd zu senden, was alle Objekte zurückliefert inklusive Format, Einheit, Beschreibung, etc. Danach lese ich dann alle Felder vom ebusd um jeden iobroker-Zustand mit den Werten zu füllen die über den eBus abgefragt werden können. Vieles davon ist bei mir leer oder sonstwie etwas sinnlos, aber es sind auch einige Perlen an Information von meiner Vaillant-Therme dabei 🙂

                                        Was jetzt eigentlich noch fehlt ist ein Weg wie man bestimmte Werte pollt oder bei Veränderung bekommt. Schöner wäre es das gleich in einen richtigen Adapter zu packen, aber dazu bin ich im Moment noch zu unerfahren und mein persönlicher Fokus geht erstmal zu einer Visualisierung meines Heims.

                                        ! ```
                                        `// ebusd find script
                                        var root = 'eBus'; // root of state inside 'javascript.0'
                                        var host = 'pi1'; // set to your host running ebusd
                                        var port = 8888; // default ebusd port
                                        ! var net = require('net');
                                        var fieldsToRead = [];
                                        ! log('trying');

                                        var req = 'find -f';

                                        ! createState('eBus');
                                        ! var run=1;
                                        var lastFieldRequested='';
                                        var closing=0;
                                        ! function parse(data) {
                                        //log("run: " + run);
                                        if(run == 1)
                                        {
                                        var arr = data.toString().split(/\r?\n/);
                                        for(var i = 0; i <arr.length; i++)/{/var/line="arr[i];" idx="0;" tmp="line.split(',');" if(tmp.length="">7) {
                                        var numfields = 0;
                                        var TYPE = tmp[0];
                                        var CIRCUIT = tmp[1];
                                        var NAME = tmp[2];
                                        var COMMENT = tmp[3];
                                        var QQ = tmp[4];
                                        var ZZ = tmp[5];
                                        var PDSB = tmp[6];
                                        var ID = tmp[7];
                                        log("* TYPE:" + TYPE + " CIRCUIT:" + CIRCUIT + " NAME:" + NAME +
                                        " COMMENT:" + COMMENT + " QQ:" + QQ + " ZZ:" + ZZ +
                                        " PDSB:" + PDSB + " ID:" + ID);
                                        while(tmp.length > (7 + ((numfields+1)*6)))
                                        {
                                        idx = 8 + (numfields)6;
                                        var FIELD = tmp[idx];
                                        var PART = tmp[idx+1];
                                        var DATATYPE = tmp[idx+2];
                                        var DIVIDER = tmp[idx+3];
                                        var UNIT = tmp[idx+4];
                                        var COMMENT_F = tmp[idx+5];
                                        log("
                                        * FIELD:" + FIELD + " PART:" + PART + " DATATYPE:" + DATATYPE +
                                        " DIVIDER:" + DIVIDER + " UNIT:" + UNIT + " COMMENT:" + COMMENT_F);
                                        if(FIELD === '')
                                        createState('eBus' + '.' + CIRCUIT + '.' + NAME, undefined, {name: COMMENT, unit: UNIT, desc: COMMENT});
                                        else
                                        createState('eBus' + '.' + CIRCUIT + '.' + NAME + '.' + FIELD, undefined, {name: COMMENT_F, unit: UNIT, desc: COMMENT});
                                        fieldsToRead.push(CIRCUIT + ',' + NAME + ',' + FIELD);
                                        numfields++;
                                        }

                                         //       } else {
                                                    //log("odd line: " + line, 'warn');
                                                }
                                            }
                                            if(fieldsToRead.length > 0) {
                                                var tmp2 = fieldsToRead.shift();
                                                var tmp3 = tmp2.split(',');
                                                var CIRCUIT = tmp3[0];
                                                var NAME = tmp3[1];
                                                var FIELD = tmp3[2];
                                                if(FIELD === '')
                                                    req = "read -c " + CIRCUIT + ' ' + NAME;
                                                else
                                                    req = "read -c " + CIRCUIT + ' ' + NAME+ ' ' + FIELD;
                                                log('Sending: ' + req);
                                                lastFieldRequested = tmp2;
                                                client.write(req+'\n');
                                            }
                                        } else {
                                            var arr = data.toString().split(/\r?\n/);
                                            if(arr.length == 2) {
                                            //for(var i = 0; i <arr.length; i++)/{/var/line="arr[1];" log("new/for/"/+/lastfieldrequested/+":/line);/tmp3="lastFieldRequested.split(',');" circuit="tmp3[0];" name="tmp3[1];" field="tmp3[2];" if(field="==" '')/setstate('ebus'/'.'/name,/else/field,/;/}/if(fieldstoread.length="">0) {
                                                var tmp2 = fieldsToRead.shift();
                                                var tmp3 = tmp2.split(',');
                                                var CIRCUIT = tmp3[0];
                                                var NAME = tmp3[1];
                                                var FIELD = tmp3[2];
                                                if(FIELD === '')
                                                    req = "read -c " + CIRCUIT + ' ' + NAME;
                                                else
                                                    req = "read -c " + CIRCUIT + ' ' + NAME+ ' ' + FIELD;
                                                log('Sending: ' + req);
                                                lastFieldRequested = tmp2;
                                                client.write(req+'\n');
                                            }
                                        }
                                        run++;
                                        if(fieldsToRead.length == 0 && lastFieldRequested === '') {
                                            closing = 1;
                                            log('Sending: quit');
                                            client.write('quit\n');
                                        }
                                        

                                        }

                                        ! var client = new net.Socket();
                                        client.connect(port, host, function() {
                                        log('Connected to ebusd on ' + host + ':' + port);
                                        client.write(req + '\n');
                                        });
                                        ! var databuf = '';
                                        client.on('data', function(data) {
                                        var prev = 0, next;
                                        var datastr = data.toString();
                                        while ((next = datastr.indexOf('\n\n', prev)) > -1) {
                                        databuf += datastr.substring(prev, next);
                                        parse(databuf);
                                        databuf = '';
                                        prev = next + 1;
                                        }
                                        databuf += datastr.substring(prev);
                                        // client.write('quit\n');
                                        });
                                        ! client.on('close', function() {
                                        log('Connection to ebusd closed');
                                        });
                                        ! client.on('error', function() {
                                        log('Error');
                                        });
                                        ! client.on('end', function() {
                                        log('End');
                                        });</arr.length;></arr.length;>` [/i]

                                        1 Reply Last reply Reply Quote 0
                                        • S
                                          smiling_Jack last edited by

                                          Kleine frage kann ich die ebus Interface Platine irgendwo kaufen ? oder hat noch jemand eine über ?

                                          1 Reply Last reply Reply Quote 0
                                          • a200
                                            a200 last edited by

                                            Such mal unter wiki.fhem.de nach ebus. Dann ganz unten findest du links zum Forum. Morgen kann ich dir die Mail des Verkäufers schicken.

                                            LG, a200.

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            1.1k
                                            Online

                                            31.6k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            9
                                            47
                                            15772
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo