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

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • 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

      @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
                          • P
                            PrinzEisenherz1 last edited by

                            Was du probieren könntest ist ein weiteres Objekt anlegen als Trigger der das Script aktiviert und nach dem Durchlauf lässt du das Script im Script deaktivieren.

                            Ich hoffe du verstehst was ich da meine. Oder ne on Funktion die auf das Trigger Objekt reagiert.

                            Bzgl mehrerer Konten gibt es in der API von open-fin-ts-js-client n Beispiel für async Abgleich.

                            Das könnte evtl was sein. Muss ich mal bei Gelegenheit testen

                            Gruß Johnny

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

                              dank Prinz Eisenherz habe ich die Abfrage auch etwas eleganter gelöst:

                              Ich habe einen Datenpunkt erstellt den ich aus VIS mit einem "Toggle" Button ansteuere.

                              Da bei meinem Script egal ist in welchem Zustand der Datenpunkt verbleibt reicht ein einfaches Umschalten.

                              Damit wird dann das eigentliche Abfragescript für ein paar Sekunden aktiv geschaltet und die Abfrage der Kontostände erfolgt.

                              on({id: 'javascript.0.Allgemein.Abfrage', change: "ne"}, function (obj) {
                                var value = obj.state.val;
                                var oldValue = obj.oldState.val;
                                for (var count = 0; count < 1; count++) {
                                  setState("javascript.0.scriptEnabled.Nachrichten.Kontostand"/*scriptEnabled.Nachrichten.Kontostand*/, true);
                                }
                                setStateDelayed("javascript.0.scriptEnabled.Nachrichten.Kontostand"/*scriptEnabled.Nachrichten.Kontostand*/, false, 10000, false);
                              });
                              

                              Die Abfrage der weiteren Konten bei der gleichen Bank funktioniert soweit. Ein weiteres Konto bei einer anderen Bank ist noch nicht integriert, aber das sehe ich als nicht so wichtig derzeit.

                              1 Reply Last reply Reply Quote 0
                              • D
                                dtp last edited by

                                Auf Ideen kommt ihr.

                                Unser Besuch würde es sicherlich ganz amüsant finden, wenn er die Kontostände auf unserem Wand-Tablet ablesen könnte. 😉

                                Aber mal ehrlich. Dafür gibt es die finanzblick App. Die hat überdies den Vorteil, dass man sehr einfach und schnell die entsprechenden Buchungsvorgänge in das WISO Sparbuch für die Steuererklärung eingebunden bekommt.

                                Aber gut, jeder, wie er mag.

                                Bis dann,

                                Thorsten

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

                                  Naja mein Gedanke war nicht den Kontostand auf dem Tablet anzuzeigen.

                                  Ich erfasse den Heizölstand, Frage den durchschnittlichen Tages Preis ab und hab ein Konto wo nur das Geld fürs Heizöl liegt.

                                  Damit wollte ich die mögliche Menge Heizöl ermitteln die ich bestellen kann.

                                  Gesendet von meinem m8 mit Tapatalk

                                  1 Reply Last reply Reply Quote 0
                                  • D
                                    dtp last edited by

                                    Dein Gedanke war es vielleicht nicht, aber so, wie ich den TO verstanden habe, seiner schon, oder? 8-)

                                    1 Reply Last reply Reply Quote 0
                                    • ?
                                      A Former User last edited by

                                      Ich finde die Idee ganz gut…hatte vorher diesen Thread leider nicht gelesen.

                                      Habe das ganze also mit aqbanking gelöst. So kann ich mir auch die Umsätze direkt an IOBroker pushen.

                                      Vielleicht ja nur als kleinen Tipp, wenn jemand auch mehr Infos benötigt.

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

                                        Ich würde auch nicht meinen Besuchern direkt meinen Kontostand mitteilen 😄

                                        Aus dem Grund habe ich extra fürs Smartphone eine weitere VIS aktiv die diese einfache Abfrage ausführt.

                                        Der Grund ist recht einfach:

                                        Meine Holde ist nicht so ganz mit Technik befreundet. Am Smartphone das Haus bedienen geht mittlerweile, aber ans Onlinebanking oder nur die Kontostandsabfrage traut sie sich nicht. Somit habe ich ihr die Möglichkeit geschaffen den Kontostand zu checken ohne das sie eine weitere App nutzen muss.

                                        Mir ist schon klar das das jetzt vielleicht seltsam klingen mag, aber für mich ist es eben eine praktikable Lösung die sich durch den ioBroker eben angeboten hat. Durch die tatkräftige Hilfe hier habe ich es somit geschafft eine einfache Lösung einzubauen.

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

                                        Support us

                                        ioBroker
                                        Community Adapters
                                        Donate

                                        745
                                        Online

                                        32.0k
                                        Users

                                        80.4k
                                        Topics

                                        1.3m
                                        Posts

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