Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. mbe01

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    M
    • Profile
    • Following 0
    • Followers 0
    • Topics 2
    • Posts 30
    • Best 0
    • Groups 1

    mbe01

    @mbe01

    Starter

    0
    Reputation
    6
    Profile views
    30
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    mbe01 Follow
    Starter

    Latest posts made by mbe01

    • RE: Wärmepumpe steuern mit BSB-Lan und tibber

      @paul53 natürlich! 😄

      posted in Einsteigerfragen
      M
      mbe01
    • RE: Wärmepumpe steuern mit BSB-Lan und tibber

      @paul53 langer Arbeitstag ehute gehabt. Ich hab dummerweise das log weggedrückt, aber der hatte einen Fehler ausgespuckt. Ich weiss nicht ob das nochmalirgendwo hinterlegt wird auch wenn ich das auf der GUI das gelöscht hab. Ich such mal.
      Es war irgendwas mit tibberlink.0.Homes."KEY".PricesTomorrow not found oder so.
      EDIT gefunden:

      at processTicksAndRejections (node:internal/process/task_queues:95:5)
      

      javascript.0
      2024-01-02 18:00:00.341 warn at Object.<anonymous> (script.js.common.WP_nachTibber:27:13)
      javascript.0
      2024-01-02 18:00:00.339 warn getState "tibberlink.0.Homes.blabla.PricesToday23.total" not found (3)
      javascript.0
      2024-01-02 18:00:00.339 warn at processTicksAndRejections (node:internal/process/task_queues:95:5)
      javascript.0
      2024-01-02 18:00:00.339 warn at Object.<anonymous> (script.js.common.WP_nachTibber:27:13)
      javascript.0
      2024-01-02 18:00:00.337 warn getState "tibberlink.0.Homes.BLABLA.PricesToday22.total" not found (3)

      posted in Einsteigerfragen
      M
      mbe01
    • RE: Wärmepumpe steuern mit BSB-Lan und tibber

      @paul53 Alles klar, ich hatte das total übersehen. Ich arbeite mit einer niedrigen Auflösung an einem kleinen Notebook.

      posted in Einsteigerfragen
      M
      mbe01
    • RE: Wärmepumpe steuern mit BSB-Lan und tibber

      @paul53 said in Wärmepumpe steuern mit BSB-Lan und tibber:

      bsblan.0.Betriebsart

      Super! Danke dir! Dass das so funktioniert ist ja klasse. Mit blocky muss ich mich mal beschäftigen!
      Das kann ich dann direkt auch mal für die WW Bereitung anwenden. Wobei das nur dann 1x am Tag gemacht werd muss. Das geht recht schnell (30min etwa).
      "WP" müsste dann hier irgendwo rein oder?

      {
        "type": "state",
        "common": {
          "name": "Betriebsart (1000)",
          "type": "number",
          "role": "value",
          "read": true,
          "write": true,
          "unit": "",
          "states": {
            "0": "Schutzbetrieb",
            "1": "Automatik",
            "2": "Reduziert",
            "3": "Komfort",
            "65535": "---"
          }
        },
        "native": {
          "id": "1000",
          "bsb": {
            "name": "Betriebsart",
            "dataType_name": "ENUM",
            "dataType_family": "ENUM",
            "possibleValues": [
              {
                "enumValue": 65535,
                "desc": "---"
              },
              {
                "enumValue": 0,
                "desc": "Schutzbetrieb"
              },
              {
                "enumValue": 1,
                "desc": "Automatik"
              },
              {
                "enumValue": 2,
                "desc": "Reduziert"
              },
              {
                "enumValue": 3,
                "desc": "Komfort"
              }
            ],
            "isswitch": 0,
            "dataType": 1,
            "readonly": 0,
            "readwrite": 0,
            "unit": ""
          }
        },
        "from": "system.adapter.bsblan.0",
        "user": "system.user.admin",
        "ts": 1703425633330,
        "_id": "bsblan.0.Betriebsart_(1000)",
        "acl": {
          "object": 1636,
          "state": 1636,
          "owner": "system.user.admin",
          "ownerGroup": "system.group.administrator"
        }
      }
      
      posted in Einsteigerfragen
      M
      mbe01
    • RE: Wärmepumpe steuern mit BSB-Lan und tibber

      @paul53 ok, hab reloaded und es dann eingefügt. Noch iene kurze Frage. Wo ist "WP" definiert?

      posted in Einsteigerfragen
      M
      mbe01
    • RE: Wärmepumpe steuern mit BSB-Lan und tibber

      @paul53 oh super Sache danke dir das probier ich aus!!

      posted in Einsteigerfragen
      M
      mbe01
    • RE: Wärmepumpe steuern mit BSB-Lan und tibber

      @paul53 ja das ist richtig. Ich dachte nur, dass es vllt einfacher sei, weil ich nicht programmieren kann. Ausserdem wollte ich die Takte reduzieren, da die Heizungsbauer die die damals eingebaut haben ganz schön "sch...." gebaut haben.
      Aber wenn das nicht allzu kompliziert ist, dann kann ich das auch mal mit den billigsten Zeiten ausprobieren und nicht zusammenhängend.

      posted in Einsteigerfragen
      M
      mbe01
    • RE: Wärmepumpe steuern mit BSB-Lan und tibber

      @paul53

      sorry, war heute etwas beschäftigt.
      Tibberlink hab ich ja.
      Ja es sollten zusammenhängende Stunden sein. Das heisst nicht unbedingt, dass die WP dann an ist, sondern nur im Komfort Modus drin ist.
      Es gibt sicherlich intelligentere Lösungen, aber ich dachte das wäre zunächst die einfachere Lösung. Dh sie läuft sicherlich dann keine 6h durch (hängt von der Temp ab), aber das ist in etwa das was ich maximal an WP-Zeit bräuchte um meine Hütte warm zu bekommen. Meine WP ist recht alt, kennt nur on/off und volle Leistung, also es ist keine InverterWP.

      posted in Einsteigerfragen
      M
      mbe01
    • RE: Wärmepumpe steuern mit BSB-Lan und tibber

      Wie zu erwarten war geht natürlich so nicht.

      posted in Einsteigerfragen
      M
      mbe01
    • RE: Wärmepumpe steuern mit BSB-Lan und tibber

      Ich hab mal bisschen rumprobiert und das Skript läuft durch. Ist nur die Frage, ob es "sinnig" ist. Vllt könnte ein Experte drüberlesen und die Fehler aufzeigen.
      Ich sollte noch erwähnen, dass das Skript einen Durchschnittstagespreis aus 6h errechnen soll und während diesen Zeitraums die WP auf Komfort [3] stellen.

      /*
      MIT License - see LICENSE.md 
      Copyright (c) [2020] [Matthias Boettger <mboe78@gmail.com>]
      */
      
      // Get Tibber Data  (Awattar alternative)
      const url = 'https://api.tibber.com/v1-beta/gql'
      const token = "XXX"
      
      function requestData() {
       
          const options = {
              uri: url,
              method: 'POST',
              body: '{"query": "{ viewer { homes { currentSubscription{ priceInfo{ today{ total startsAt } tomorrow{ total startsAt } } } } } }" }',
              headers: {
                  'Authorization': token,
              'Content-Type': 'application/json'
              }
          }
       
          request(options, (error, response, body) => {
              
              if(error) return console.log(error);
       
              if(response.statusCode == 200) {
                  let array = JSON.parse(body).data.viewer.homes[0].currentSubscription.priceInfo.today
                      array = array.concat(JSON.parse(body).data.viewer.homes[0].currentSubscription.priceInfo.tomorrow)
                  var jetzt = new Date(),
                  midn = new Date(
                      jetzt.getFullYear(),
                      jetzt.getMonth(),
                      jetzt.getDate(),
                      0,0,0),
                  diffhr = Math.floor((jetzt.getTime() - midn.getTime())/3600000)
                  for(let i = diffhr; i < array.length; i++) {
                      let a = i-diffhr
                     
      
      let billigsterTagesDurchschnittspreis = Infinity; 
      
      // Setze auf ein hohes Anfangswert
      
      for (let i = 0; i < array.length - 6; i++) {
          let tagesDurchschnittspreisSumme = 0;
      
          // Berechne den Durchschnittspreis über 6 Stunden für den aktuellen Zeitpunkt
          
      for (let j = i; j < i + 6; j++) {
              tagesDurchschnittspreisSumme += Number(array[j].total);
          }
      
          let tagesDurchschnittspreis = tagesDurchschnittspreisSumme / 6;
      
          // Überprüfe, ob der aktuelle Tagesdurchschnittspreis der günstigste ist
         
       if (tagesDurchschnittspreis < billigsterTagesDurchschnittspreis) {
              billigsterTagesDurchschnittspreis = tagesDurchschnittspreis;
              billigsterZeitraum = i;
          }
      }
      
      // Setze die Betriebsart entsprechend des billigsten Zeitraums
      
      const gewuenschterZustand = billigsterZeitraum === diffhr ? 3 : 0;
      setState('bsblan.0.Betriebsart_(1000)', gewuenschterZustand);
      
      
                      createState(stateBaseName + "startTime", "", {
                          read: true,
                          write: true,
                          name: "Gultigkeitsbeginn (Uhrzeit)",
                          type: "string",
                          def: false
                      });
       
                      createState(stateBaseName + "startDate", "", {
                          read: true,
                          write: true,
                          name: "Gultigkeitsbeginn (Datum)",
                          type: "string",
                          def: false
                      });
       
                      createState(stateBaseName + "endTime", "", {
                          read: true,
                          write: true,
                          name: "Gultigkeitsende (Uhrzeit)",
                          type: "string",
                          def: false
                      });
       
                      createState(stateBaseName + "price", 0, {
                          read: true,
                          write: true,
                          name: "Preis",
                          type: "number",
                          def: 0
                      });
       
                      let start = new Date(Date.parse(array[i].startsAt));
                      var options = { hour12: false, hour: '2-digit', minute:'2-digit'};
                      let startTime = start.toLocaleTimeString('de-DE', options);
                      let startDate = start.toLocaleDateString('de-DE');
                       
                      let end = new Date(Date.parse(array[i].startsAt)).getTime()+3600000
                      let endTime = new Date(end).toLocaleTimeString('de-DE', options);
       
                      let mwhprice = array[i].total;
                      let price = Number(mwhprice);
                      //console.log(startTime + ',' + startDate + ',' + startTime + ',' + endTime + ',' + price )
                      
                      setState(stateBaseName + "startTime", startTime);
                      setState(stateBaseName + "startDate", startDate);
                      setState(stateBaseName + "endTime", endTime);
                      setState(stateBaseName + "price", price*100);
                      
                  };
              };
          });
      }
      requestData();
      schedule("0 * * * *", function () {
          requestData();
      });
      
      posted in Einsteigerfragen
      M
      mbe01
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo