Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. Kontostand in VIS - Ideen dazu

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Kontostand in VIS - Ideen dazu

    This topic has been deleted. Only users with topic management privileges can see it.
    • Chaot
      Chaot last edited by

      Ok, das funktioniert scheinbar nicht.

      Zumindest bekomme ich das so nicht zum laufen.

      Ich werde mal ein wenig weiter tüfteln

      1 Reply Last reply Reply Quote 0
      • Jey Cee
        Jey Cee Developer last edited by

        Hast du geschaut ob deine Bank fin TS unterstützt?

        Ich hab das schon mal zum laufen gebracht, dann aber nicht mehr weiter damit gearbeitet.

        Ich schau morgen mal nach dem Skript.

        Gesendet von meinem m8 mit Tapatalk

        1 Reply Last reply Reply Quote 0
        • Jey Cee
          Jey Cee Developer last edited by

          Hier das Skript:

          var FinTSClient = require("open-fin-ts-js-client");
          // 1\. Definition der Bankenliste - Echte URLs sind hier http://www.hbci-zka.de/institute/institut_auswahl.htm erhältlich. 
          var bankenliste = {
                  '12345678':{'blz':12345678,'url':"https://hbci11.fiducia.de/cgi-bin/hbciservlet"},
                  "undefined":{'url':""}
          };
          // 2\. FinTSClient anlegen 
          // BLZ: 12345678 
          // Kunden-ID/Benutzerkennung: test1 
          // PIN: 1234 
          // Bankenliste siehe oben 
          var client = new FinTSClient(12345678,"ID/Benutzerkennung","Passwort/PIN",bankenliste);
          // 3\. Verbindung aufbauen 
          client.EstablishConnection(function(error){
                      if(error){
                          console.log("Fehler: "+error);
                      }else{
                          console.log("Erfolgreich Verbunden");
                          // 4\. Kontoumsätze für das 1\. Konto(client.konten[0]) laden 
                          client.MsgGetSaldo(client.konten[1].sepa_data,function(error2,rMsg,data){
                              if(error){
                                  console.log("Fehler beim laden der Umsätze: "+error2);
                              }else{
                                  // Alles gut 
                                  // 4\. Umsätze darstellen 
                                  console.log(data.saldo.value);
                                  // 5\. Verbindung beenden 
                                  client.MsgEndDialog(function(error,recvMsg2){
                                      // 6\. Secure Daten im Objekt aus dem Ram löschen 
                                      client.closeSecure();
                                      console.log("ENDE");
                                  });
                              }
                          });
                      }
                  });
          
          
          1 Reply Last reply Reply Quote 0
          • Chaot
            Chaot last edited by

            Irgendwie scheint das bei mir mit der Nutzerkennung nicht richtig zu funktionieren:

            https://www.comdirect.de/pbl/service/su … o?faqId=99

            Das Script gibt dann einen Wert direkt aus den ich wo sehe?

            Wäre es möglich den in einen Datenpunkt zu schreiben? Ich vermute das ich das irgendwo hinter Punkt 4 einarbeiten muss.

            1 Reply Last reply Reply Quote 0
            • Jey Cee
              Jey Cee Developer last edited by

              @Chaot:

              Irgendwie scheint das bei mir mit der Nutzerkennung nicht richtig zu funktionieren:

              https://www.comdirect.de/pbl/service/su … o?faqId=99 ` Leider kann ich dir da nicht weiter helfen, schlechte/keine Fehleberschreibung.

              @Chaot:

              Das Script gibt dann einen Wert direkt aus den ich wo sehe? ` Im Log, ersetze "console.log" durch "setState" mit der Objekt ID in die du es schreiben willst.

              Ich seh gerade das ich nicht das erste Konto sondern das zweite abgefragt hab, du musst folgenden Zeile verwenden:

              // 4\. Kontoumsätze für das 1\. Konto(client.konten[0]) laden 
                              client.MsgGetSaldo(client.konten[0].sepa_data,function(error2,rMsg,data){
              
              1 Reply Last reply Reply Quote 0
              • Chaot
                Chaot last edited by

                Ok, danke bisher für deine Hilfe.

                Ich bekomme jetzt die Daten in einen Datenpunkt geschrieben.

                Aber offensichtlich ist das die gesamte Buchungsübersicht (Kontoauszug) der letzten 90 Tage.

                Ich denke jetzt muss ich noch tüfteln um den Kontostand alleine zu extrahieren.

                Edit:

                Sorry,

                ich hatte noch Teile des alten scripts drin und nicht umgeschrieben.

                Jetzt scheint es zu funktionieren.

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

                  So,

                  ich bekomme jetzt folgende Liste

                  {"desc":"Girokonto","cur":"EUR","saldo":{"soll_haben":"H","buchungsdatum":"2018-09-30T19:22:06.000Z","currency":"EUR","value":xxxx.11},"saldo_vorgemerkt":null,"credit_line":null,"avail_amount":null,"used_amount":null,"overdraft":null,"booking_date":null,"faelligkeit_date":null}
                  

                  Jetzt geht es an die Auswertung.

                  Mir schwebt ein Button vor der beim Drücken das Script startet und dann den Wert aus "soll_haben" und "Value" anzeigt.

                  Hat jemand eine Idee zur weiteren Vorgehensweise?

                  Als Schalter für das Script kann ich ja vermutlich das Objekt unter "javascrip.0.scriptEnabled.XXXX"verwenden. Wenn ich das auf True oder False setze wird doch das Script geschaltet wenn ich das richtig verstehe, oder?

                  Bei der Tabelle brauche ich wirklich Hilfe, weil ich ehrlich gesagt noch nie mit einer JSON Tabelle gearbeitet habe. Wie wäre da das passende Vorgehen? Oder lässt sich das auch in einem Widget direkt darstellen?

                  Bitte verzeiht meine vielleicht blöden Fragen, aber ich habe das nie gelernt und bringe mir das seit längerem selber bei.

                  1 Reply Last reply Reply Quote 0
                  • Jey Cee
                    Jey Cee Developer last edited by

                    @Chaot:

                    Bitte verzeiht meine vielleicht blöden Fragen, aber ich habe das nie gelernt und bringe mir das seit längerem selber bei. ` Kein Stress ich lerne das schon seit 3 Jahren in Eigenregie, das dauert einfach.

                    Wenn du mein Skript 1:1 übernommen hast solltest du direkt das Saldo, also den Kontostand bekommen.

                    @Chaot:

                    s Schalter für das Script kann ich ja vermutlich das Objekt unter "javascrip.0.scriptEnabled.XXXX"verwenden. Wenn ich das auf True oder False setze wird doch das Script geschaltet wenn ich das richtig verstehe, oder? ` Vollkommen richtig.

                    @Chaot:

                    Bei der Tabelle brauche ich wirklich Hilfe, weil ich ehrlich gesagt noch nie mit einer JSON Tabelle gearbeitet habe. Wie wäre da das passende Vorgehen? Oder lässt sich das auch in einem Widget direkt darstellen? ` Bei VIS kann ich dir nicht weiterhelfen, aber bei JSON schon.

                     let meinJSON = {"desc":"Girokonto","cur":"EUR","saldo":{"soll_haben":"H","buchungsdatum":"2018-09-30T19:22:06.000Z","currency":"EUR","value":xxxx.11},"saldo_vorgemerkt":null,"credit_line":null,"avail_amount":null,"used_amount":null,"overdraft":null,"booking_date":null,"faelligkeit_date":null};
                     log(meinJSON['desc']); //liefert den Wert von desc in diesem Fall Girokonto
                    

                    EDIT: Ich hab damit angefangen das ganze in einen Adapter zu Gießen.

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

                      Danke

                      Du meinst dann so:

                      let meinJSON = {"desc":"Girokonto","cur":"EUR","saldo":{"soll_haben":"H","buchungsdatum":"2018-09-30T19:22:06.000Z","currency":"EUR","value":xxxx.11},"saldo_vorgemerkt":null,"credit_line":null,"avail_amount":null,"used_amount":null,"overdraft":null,"booking_date":null,"faelligkeit_date":null};
                       log(meinJSON['soll_haben']); 
                      log(meinJSON['value'])
                      

                      Wie kann ich die Werte weiter verwenden?

                      In einen Datenpunkt schreiben?

                      Hast du da einen Ansatz wie das gehen würde?

                      Leider ist der ioBroker nicht das Einzige Projekt. Ich arbeite mich zeitgleich in Abisco ein.

                      So langsam werde ich zu alt für den Sch… 😉

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

                        @Jey Cee:

                        EDIT: Ich hab damit angefangen das ganze in einen Adapter zu Gießen. `

                        Oha! Das wäre ja eine perfekte Lösung.

                        1 Reply Last reply Reply Quote 0
                        • Jey Cee
                          Jey Cee Developer last edited by

                          Ob das eine Perfekte Lösung wird weiss ich nicht, aber es soll eine brauchbare werden.

                          Das ist meine Wochenaufgabe 😉

                          Zu deinem Thema: Leg dir Objekte an und schreib dann die Werte mit setState dort rein, dann kannst du sie Global verwenden.

                          Gesendet von meinem m8 mit Tapatalk

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

                            Das Script sieht bisher so aus:

                            var FinTSClient = require("open-fin-ts-js-client");
                            var state = "javascript.0.Allgemein.Kontostand"/*Kontostand*/;
                            var count = "javascript.0.Allgemein.KontoSumme"/*KontoSumme*/;
                            var pre = "javascript.0.Allgemein.KontoS_H"/*KontoS_H*/;
                            // 1\. Definition der Bankenliste - Echte URLs sind hier http://www.hbci-zka.de/institute/institut_auswahl.htm erhältlich.
                            
                            var bankenliste = {
                                    '20041155':{'blz':20041155,'url':"https://fints.comdirect.de/fints"},
                                    "undefined":{'url':""}
                            };
                            // 2\. FinTSClient anlegen
                            // BLZ: xxxxxxxx
                            // Kunden-ID/Benutzerkennung: xxxxxxxx
                            // PIN: xxxxxxxx
                            // Bankenliste siehe oben
                            var client = new FinTSClient(xxxxxxxx,"xxxxxxxx","xxxxxxxx",bankenliste);
                            // 3\. Verbindung aufbauen
                            client.EstablishConnection(function(error){
                                        if(error){
                                            console.log("Fehler: "+error);
                                        }else{
                                            console.log("Erfolgreich Verbunden");
                                            // 4\. Kontoumsätze für das 1\. Konto(client.konten[0]) laden 
                                            client.MsgGetSaldo(client.konten[0].sepa_data,function(error2,rMsg,data){
                                                if(error){
                                                    console.log("Fehler beim laden der Umsätze: "+error2);
                                                }else{
                                                    // Alles gut
                                                    // 4\. Umsätze darstellen
                                                    setState(state,JSON.stringify(data));
                                                    setState(count,['value'])
                                                    setState(pre ,['soll_haben'])
                                                    // 5\. Verbindung beenden
                                                    client.MsgEndDialog(function(error,recvMsg2){
                                                        // 6\. Secure Daten im Objekt aus dem Ram löschen
                                                        client.closeSecure();
                                                        console.log("ENDE");
                                                    });
                                                }
                                            });
                                        }
                                    });
                            

                            Allerdings werden die beiden Datenpunkte nicht gefüllt. Muss ich den noch irgendwie anders abgreifen?

                            1 Reply Last reply Reply Quote 0
                            • Jey Cee
                              Jey Cee Developer last edited by

                              Count und pre?

                              Da fehlt doch dein JSON.

                              data['value']

                              Gesendet von meinem m8 mit Tapatalk

                              1 Reply Last reply Reply Quote 0
                              • P
                                PrinzEisenherz1 last edited by

                                Hi Jey Cee

                                Hab mal versucht Deine Änderung ins Script von Chaot einzufügen aber irgendwie klappt das nicht

                                var FinTSClient = require("open-fin-ts-js-client");
                                var state = "javascript.0.Allgemein.Kontostand"/*Kontostand*/;
                                var count = "javascript.0.Allgemein.KontoSumme"/*KontoSumme*/;
                                var pre = "javascript.0.Allgemein.KontoS_H"/*KontoS_H*/;
                                // 1\. Definition der Bankenliste - Echte URLs sind hier http://www.hbci-zka.de/institute/institut_auswahl.htm erhältlich.
                                
                                var bankenliste = {
                                        '74261024':{'blz':74261024,'url':"https://hbci11.fiducia.de/cgi-bin/hbciservlet"},
                                        "undefined":{'url':""}
                                };
                                // 2\. FinTSClient anlegen
                                // BLZ: xxxxxxxx
                                // Kunden-ID/Benutzerkennung: xxxxxxxx
                                // PIN: xxxxxxxx
                                // Bankenliste siehe oben
                                var client = new FinTSClient(xxxxxxxx,"xxxxxxxx","xxxxxxxx",bankenliste);
                                // 3\. Verbindung aufbauen
                                client.EstablishConnection(function(error){
                                            if(error){
                                                console.log("Fehler: "+error);
                                            }else{
                                                console.log("Erfolgreich Verbunden");
                                                // 4\. Kontoumsätze für das 1\. Konto(client.konten[0]) laden 
                                                client.MsgGetSaldo(client.konten[0].sepa_data,function(error2,rMsg,data){
                                                    if(error){
                                                        console.log("Fehler beim laden der Umsätze: "+error2);
                                                    }else{
                                                        // Alles gut
                                                        // 4\. Umsätze darstellen
                                                        setState(state,JSON.stringify(data));
                                                        setState(count,JSON.data['value']);
                                                        setState(pre ,JSON.data['soll_haben']);
                                                        // 5\. Verbindung beenden
                                                        client.MsgEndDialog(function(error,recvMsg2){
                                                            // 6\. Secure Daten im Objekt aus dem Ram löschen
                                                            client.closeSecure();
                                                            console.log("ENDE");
                                                        });
                                                    }
                                                });
                                            }
                                        });
                                
                                

                                Da bekomme ich dann für die beiden Zeilen Fehler im Log.

                                Ich will eigentlich aus folgendem String ( erzeugt durch JSON.stringify(data) )

                                {"desc":"Kontokorrent","cur":"EUR","saldo":{"soll_haben":"H","buchungsdatum":null,"currency":"EUR","value":xxxxxxxx},"saldo_vorgemerkt":null,"credit_line":null,"avail_amount":null,"used_amount":null,"overdraft":null,"booking_date":null,"faelligkeit_date":null}
                                

                                das soll_haben und value extrahieren und in einen Datenpunkt schreiben.

                                Kannst de mir da vielleicht weiterhelfen?

                                Gruß

                                Johnny

                                1 Reply Last reply Reply Quote 0
                                • Jey Cee
                                  Jey Cee Developer last edited by

                                  Wäre bedeutend einfacher zu helfen wenn du mir sagst welche Fehler angezeigt werden.

                                  Gesendet von meinem m8 mit Tapatalk

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

                                    Ich vermute mal das das extrahieren der Werte nicht klappt:

                                     // 4\. Umsätze darstellen
                                                            setState(state,JSON.stringify(data));
                                                            setState(stand,JSON.parse["value"]);
                                                            setState(vorz ,JSON.parse["soll_haben"]);
                                    
                                    

                                    Ich komme ehrlich gesagt auch nicht weiter, aber mit meiner Erkältung funktioniert das Hirn nicht so richtig.

                                    1 Reply Last reply Reply Quote 0
                                    • P
                                      PrinzEisenherz1 last edited by

                                      Konnte es mittlerweile selber lösen

                                      Hier mal mein Script

                                      /* Script zum ermitteln Kontostand */
                                      
                                      function CreateStates(){
                                      createState('javascript.0.Allgemein.Kontostand-JSON', {read: true, write: true, name: 'GiroKonto - Kontostand JSON-String', desc: 'GiroKonto - Kontostand JSON-String'});
                                      createState('javascript.0.Allgemein.KontoStand', {read: true, write: true, name: 'GiroKonto - Kontostand', desc: 'GiroKonto - Kontostand', unit: '€'});
                                      createState('javascript.0.Allgemein.KontoS_H', {read: true, write: true, name: 'GiroKonto - Kontostand - Soll Haben', desc: 'GiroKonto - Kontostand - Soll Haben'});
                                      }
                                      
                                      //CreateStates(); /* Zum erstmaligem Erstellen der Objekte auskommentieren */
                                      
                                      var logging = false; /* logging aktivieren = true, deaktivieren = false */
                                      
                                      var FinTSClient = require("open-fin-ts-js-client");
                                      var state = "javascript.0.Allgemein.Kontostand-JSON"/*Kontostand im JSON-Format*/;
                                      var count = "javascript.0.Allgemein.KontoStand"/*Kontostand Summe*/;
                                      var pre = "javascript.0.Allgemein.KontoS_H"/*Kontostandvorzeichen Soll oder Haben*/;
                                      
                                      // 1\. Definition der Bankenliste - Echte URLs sind hier http://www.hbci-zka.de/institute/institut_auswahl.htm erhältlich.
                                      
                                      var bankenliste = {
                                              '74261024':{'blz':74261024,'url':"https://hbci11.fiducia.de/cgi-bin/hbciservlet"},
                                              "undefined":{'url':""}
                                      };
                                      // 2\. FinTSClient anlegen
                                      // BLZ: xxxxxxxx
                                      // Kunden-ID/Benutzerkennung: xxxxxxxx
                                      // PIN: xxxxxxxx
                                      // Bankenliste siehe oben
                                      var client = new FinTSClient(xxxxxxxx,"xxxxxxx","xxxxxxx",bankenliste);
                                      // 3\. Verbindung aufbauen
                                      client.EstablishConnection(function(error){
                                                  if(error){
                                                          if (logging) log("Fehler: "+error);
                                                  }else{
                                                          if (logging) log("Erfolgreich Verbunden");
                                                      // 4\. Kontoumsätze für das 1\. Konto(client.konten[0]) laden 
                                                      client.MsgGetSaldo(client.konten[0].sepa_data,function(error2,rMsg,data){
                                                          if(error){
                                                          if (logging) log("Fehler beim laden der Umsätze: "+error2);
                                                          }else{
                                                              // Alles gut
                                                              // 4\. Umsätze darstellen
                                                              var myJSON = JSON.stringify(data);
                                                              var obj = JSON.parse(myJSON);
                                                              var KtoS_H = obj.saldo.soll_haben;
                                                              var KtoSumme = obj.saldo.value;
                                      
                                                          if (logging) log('Kontostand: ' + KtoS_H + ' - '+ KtoSumme + ' € ');
                                      
                                                              setState(state,myJSON);
                                                              setState(count,KtoSumme);
                                                              setState(pre,KtoS_H);
                                                              // 5\. Verbindung beenden
                                                              client.MsgEndDialog(function(error,recvMsg2){
                                                                  // 6\. Secure Daten im Objekt aus dem Ram löschen
                                                                  client.closeSecure();
                                                          if (logging) log("ENDE");
                                                              });
                                                          }
                                                      });
                                                  }
                                              });
                                      

                                      Gruß

                                      Johnny

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

                                        Ganz herzlichen Dank.

                                        So funktioniert bei mir das Script auch.

                                        1 Reply Last reply Reply Quote 0
                                        • P
                                          PrinzEisenherz1 last edited by

                                          Das freut mich das es bei dir jetzt auch klappt.

                                          Jetzt muss ich mal kucken wie ich es umbauen kann das ich 4 Konten abrufen kann.

                                          Gruß Johnny

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

                                            Hast du schon eine Idee das in Vis einzubauen?

                                            Mein aktuelles Problem ist das Script an sich. Wenn ich das starte läuft es ja dauernd. Der Kontostand wird einmal abgefragt und dann sollte das Script wieder ausgehen.

                                            Derzeit nutze ich ein On/Off Widget um das Script aus der VIS zu steuern.

                                            Aber langfristig werde ich mir wohl eine schönere Lösung einfallen lassen müssen.

                                            Wenn ich wieder fit bin werde ich mal das Basteln etwas intensivieren.

                                            Zu mehreren Konten:

                                            Ich hätte jetzt mal so spontan ab

                                            // 2\. FinTSClient anlegen
                                            

                                            den ganzen folgende Block wiederholt mit eben den Daten des nächsten Kontos.

                                            Bei mehreren Banken sollte dann auch die Bankenliste erweitert werden.

                                            Ich werde mal bei mir versuchen (drei Konten bei einer Bank) den Abruf

                                            // 4\. Kontoumsätze für das 1\. Konto(client.konten[0]) laden 
                                                            client.MsgGetSaldo(client.konten[0].sepa_data,function(error2,rMsg,data){
                                            

                                            auf das nächste Konto zu erweitern:

                                            // 4\. Kontoumsätze für das 1\. Konto(client.konten[1]) laden 
                                                            client.MsgGetSaldo(client.konten[1].sepa_data,function(error2,rMsg,data){
                                            
                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            857
                                            Online

                                            31.9k
                                            Users

                                            80.3k
                                            Topics

                                            1.3m
                                            Posts

                                            7
                                            30
                                            3954
                                            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