Navigation

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

    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

    B
    • Profile
    • Following 0
    • Followers 0
    • Topics 30
    • Posts 174
    • Best 14
    • Groups 3

    bloop

    @bloop

    Starter

    16
    Reputation
    33
    Profile views
    174
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    bloop Follow
    Developer Pro Starter

    Best posts made by bloop

    • RE: TTS mit HomePod

      @m-a-hueb
      Tut mir leid war die letzten Tage unterwegs.
      Die Datenpunkte hab ich mir selbst angelegt und dann via Yahka als Switch in Homekit eingebunden. Eine Apple Automation schaltet mir diese dann auch wie gewünscht.

      Anbei der Code, allerdings einfach nur Copy-Paste wird nicht funktionieren.

      <xml xmlns="https://developers.google.com/blockly/xml">
        <block type="on_ext" id="!y7`@#n+=[(Q-|EZ;8:k" x="-462" y="-37">
          <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
          <field name="CONDITION">ne</field>
          <field name="ACK_CONDITION"></field>
          <value name="OID0">
            <shadow type="field_oid" id="E2j7B1.^p9*9kUYNS8JD">
              <field name="oid">0_userdata.0.Systeme.Texttospeech_trigger</field>
            </shadow>
          </value>
          <statement name="STATEMENT">
            <block type="controls_if" id="?Kz$y7OooLMA[T=9ec:i">
              <value name="IF0">
                <block type="logic_operation" id="uW%b3T*~vjac-vF1`0U:" inline="false">
                  <field name="OP">AND</field>
                  <value name="A">
                    <block type="logic_compare" id="X(r4^B.9Z6z`HvQ2mS/)">
                      <field name="OP">EQ</field>
                      <value name="A">
                        <block type="on_source" id="a_=XQTw%mE`j0~b[281@">
                          <field name="ATTR">state.val</field>
                        </block>
                      </value>
                      <value name="B">
                        <block type="logic_boolean" id="gsEPr=I=t37K^/,3$t{P">
                          <field name="BOOL">TRUE</field>
                        </block>
                      </value>
                    </block>
                  </value>
                  <value name="B">
                    <block type="logic_compare" id="c2/ei6.)HTg{28ZVy.7u">
                      <field name="OP">EQ</field>
                      <value name="A">
                        <block type="get_value" id="4T%LB;d0ufy99Z;9WBm]">
                          <field name="ATTR">val</field>
                          <field name="OID">0_userdata.0.Systeme.Homepod_Kombi</field>
                        </block>
                      </value>
                      <value name="B">
                        <block type="logic_boolean" id="Bjt!xC{s0pIjRAA%ev*f">
                          <field name="BOOL">TRUE</field>
                        </block>
                      </value>
                    </block>
                  </value>
                </block>
              </value>
              <statement name="DO0">
                <block type="control" id="oS[.L`.v*Yb?tgy+F[?D">
                  <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                  <field name="OID">0_userdata.0.Systeme.Homepod_Kombi</field>
                  <field name="WITH_DELAY">FALSE</field>
                  <value name="VALUE">
                    <block type="logic_boolean" id="Y]1u):1=|XOpZ+z0YEQf">
                      <field name="BOOL">FALSE</field>
                    </block>
                  </value>
                  <next>
                    <block type="control" id="mI!;M#SkwR/S/ufPILg[">
                      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                      <field name="OID">hass.0.entities.input_text.input_text.set_value</field>
                      <field name="WITH_DELAY">TRUE</field>
                      <field name="DELAY_MS">1000</field>
                      <field name="UNIT">ms</field>
                      <field name="CLEAR_RUNNING">FALSE</field>
                      <value name="VALUE">
                        <block type="get_value" id="o6fHE{B,Z/^-QX-/Q{a(">
                          <field name="ATTR">val</field>
                          <field name="OID">0_userdata.0.Systeme.Texttospeech_Homepod</field>
                        </block>
                      </value>
                      <next>
                        <block type="control" id="frMwj@LQ?1jneZ.Ylk=B">
                          <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                          <field name="OID">0_userdata.0.Systeme.Texttospeech_trigger</field>
                          <field name="WITH_DELAY">TRUE</field>
                          <field name="DELAY_MS">200</field>
                          <field name="UNIT">ms</field>
                          <field name="CLEAR_RUNNING">FALSE</field>
                          <value name="VALUE">
                            <block type="logic_boolean" id="s2FpT!=MKY0ucbzGduQ7">
                              <field name="BOOL">FALSE</field>
                            </block>
                          </value>
                        </block>
                      </next>
                    </block>
                  </next>
                </block>
              </statement>
            </block>
          </statement>
          <next>
            <block type="on_ext" id="-YgM}_6QHq6cR~hxK^R=">
              <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
              <field name="CONDITION">ne</field>
              <field name="ACK_CONDITION"></field>
              <value name="OID0">
                <shadow type="field_oid" id="iEX^m6b^f)UGZz,7II7x">
                  <field name="oid">hass.0.entities.media_player.kuche.state</field>
                </shadow>
              </value>
              <statement name="STATEMENT">
                <block type="controls_if" id="*,Dxpg4A;S3D8{PbFFKg">
                  <value name="IF0">
                    <block type="logic_operation" id="M}*}(:*vuTGYPP5=91]=" inline="false">
                      <field name="OP">AND</field>
                      <value name="A">
                        <block type="logic_operation" id="T%TbC|K#lG{)rm8^WYB," inline="false">
                          <field name="OP">AND</field>
                          <value name="A">
                            <block type="logic_compare" id="`[NCzpH4:sJ4z/Q~HDj0">
                              <field name="OP">EQ</field>
                              <value name="A">
                                <block type="on_source" id="Dg4}0`clexDWj$qK]dEI">
                                  <field name="ATTR">state.val</field>
                                </block>
                              </value>
                              <value name="B">
                                <block type="text" id="=80c_.3*SbRub2plUoH=">
                                  <field name="TEXT">paused</field>
                                </block>
                              </value>
                            </block>
                          </value>
                          <value name="B">
                            <block type="logic_compare" id="wnP:[q-t{pYYFJz%Vkr}">
                              <field name="OP">EQ</field>
                              <value name="A">
                                <block type="get_value" id="8Yka^Nc.gWs(h):7.#O*">
                                  <field name="ATTR">val</field>
                                  <field name="OID">shelly.0.SHSW-25#68C63AF96046#1.Relay0.Switch</field>
                                </block>
                              </value>
                              <value name="B">
                                <block type="logic_boolean" id="`#NJMJt)L.~@8?9xQ/``">
                                  <field name="BOOL">TRUE</field>
                                </block>
                              </value>
                            </block>
                          </value>
                        </block>
                      </value>
                      <value name="B">
                        <block type="logic_compare" id="=)K1ORztIb+Ce![0TxB0">
                          <field name="OP">EQ</field>
                          <value name="A">
                            <block type="get_value" id="#5#OkW9gRp|qq2@)28(~">
                              <field name="ATTR">val</field>
                              <field name="OID">0_userdata.0.Systeme.Homepod_Kombi</field>
                            </block>
                          </value>
                          <value name="B">
                            <block type="logic_boolean" id=";l~[#SE-:K:Qi62]S.mG">
                              <field name="BOOL">FALSE</field>
                            </block>
                          </value>
                        </block>
                      </value>
                    </block>
                  </value>
                  <statement name="DO0">
                    <block type="control" id="UMhmY2hoO^]u`8RF-7P]">
                      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                      <field name="OID">0_userdata.0.Systeme.Homepod_Kombi</field>
                      <field name="WITH_DELAY">FALSE</field>
                      <value name="VALUE">
                        <block type="logic_boolean" id="9cTiMX*-[lXWXGuJ7b#e">
                          <field name="BOOL">TRUE</field>
                        </block>
                      </value>
                    </block>
                  </statement>
                </block>
              </statement>
            </block>
          </next>
        </block>
      </xml>
      
      posted in Cloud Dienste
      B
      bloop
    • InfluxDB alten Datenmüll löschen

      Liebe Community,

      In den letzten Jahren hat sich mein SmartHome stetig weiterentwickelt – Geräte wurden entfernt, ersetzt oder ergänzt. Dadurch hat sich in meiner InfluxDB zunehmend „Datenmüll“ angesammelt, dessen manuelle Bereinigung mir zu mühsam war.

      Um nicht jede Measurement einzeln abfragen zu müssen, habe ich ein kleines Skript geschrieben, dass die Datenbank nach Bedarf bereinigt.

      https://github.com/bloop16/influxdb_v2_measurement_clean_Skript

      Voraussetzungen:
      InfluxDB 2.x (aktuell getestet mit Version 2.7.11)
      ioBroker InfluxDB-Adapter

      Funktionsweise:
      Schritt 1: Das Skript erstellt eine Liste aller vorhandenen Measurements.
      Schritt 2: Es prüft, welche Measurements in den letzten x Tagen beschrieben wurden.
      Schritt 3: Ihr erhaltet eine Übersicht über aktive und inaktive Measurements.
      Schritt 4: Ihr könnt auswählen, ob bestimmte Measurements gelöscht werden sollen.

      Das Skript ist nicht perfekt, aber es erfüllt seinen Zweck.

      P.S.: Ich habe festgestellt, dass ich irgendwann ein Measurement erstellt habe, das JSON-Daten speichert. Dieses konnte nicht korrekt eingelesen werden, was kurzfristig zu einer hohen Systemauslastung führte und die Auflistung der restlichen Measurements beeinträchtigte. Nachdem ich dieses „korruptes“ Measurement manuell gelöscht hatte, lief das Skript wieder einwandfrei.

      Ich stehe noch am Anfang meiner Skript-Entwicklung, daher freue ich mich über Verbesserungsvorschläge!

      Viel Spaß damit!

      posted in InfluxDB
      B
      bloop
    • RE: LoRaWAN MakerFab Bewässerungssensor

      @oxident
      Nicht unbedingt!
      Wenn in in deiner Region bereits ein Gateway vorhanden ist wird dieses verwendet.
      Auf TTN kannst du vorab checken ob die Region abgedeckt ist.

      posted in Praktische Anwendungen (Showcase)
      B
      bloop
    • Papierkorb für gelöschte Skripts

      Guten Abend,

      Leider ist es mir nun ein, zwei mal passiert dass ich Skript, Rules oder Blockly`s unabsichtlich gelöscht habe... Die Knöpfe liegen sehr nahe beieinander...
      Sehr ärgerlich da ich dann entweder das Skript neu schreiben musste oder das Backup von letzter Nacht zurück gespielt habe.

      Könnte man nicht darüber nachdenken Skripts über einen gewissen Zeitraum in ein "Papierkorb" zu legen und erst nach x Tagen endgültig zu löschen?

      Herzlichen Dank!

      posted in Skripten / Logik
      B
      bloop
    • RE: TTS mit HomePod

      @wildbill 👍 In Home Assistent funktionierts. Danke nochmal!
      Jetzt habe ich einen Weg gefunden um die Wiedergabe nach TTS wieder fortzusetzen.

      Vorab: Ich höre in meinem HomePod Verbund meist lediglich Radio. Damit die auch alle schön Synchron laufen habe ich mir eine Automation angelegt welche mir bei umlegen eines Fiktiven Schalters alle Pods startet. Dieser wird zb. unter anderem durch einschalten des Lichtes eingeschaltet. So sind die Pods nicht direkt ans Licht gekoppelt und lassen sich entsprechend der unterschiedlichen Umständen Ein / Ausschalten.

      Mit folgendem Blockly starten die Pods wieder nach der TTS Wiedergabe:
      51452e11-5994-44b7-8393-497e826f2dea-image.png

      LG

      posted in Cloud Dienste
      B
      bloop
    • RE: Test Adapter AI Toolbox v0.1.3 GitHub/Latest

      @oxident
      Ich fahre mit Ollama ebenfalls sehr gut! Funktioniert im Adapter leider noch nicht. Auf GitHub habe ich bereits ein Feature Request für Ollama angefragt. Es wird scheinbar bereits daran gearbeitet.
      Leider reagiert der Großteil der Community gegenüber AI use cases sehr abweisend - anders als bei HA…
      Ich denke ebenfalls das es hierfür noch zu früh ist und noch keiner der großen Streamer etwas bahnbrechendes dazu veröffentlicht hat.
      Ich verwende meine AI aktuell lediglich um regelmässige Benachrichtigungen Kreativer zu gestalten und trainiere meine AI mit Bildern der Kameras um irgendwann zu Personen, Tieren usw. korrekte Namen zuweisen zu können. Als Nächstes möchte ich meine AI mit Datenpunkten usw. trainieren. Alles Lokal versteht sich.
      Was sind eure use cases denn so?

      posted in Tester
      B
      bloop
    • RE: WiZ Steckdosen Adapter

      Ich hab etwas gegoogelt, konnte aber nicht viel finden.
      Die WiZ Geräte gehören zur Signify Gruppe. Auch hierzu findet man kaum Informationen.
      Anscheinend sind die Dinger ähnlich verschlüsselt wie die Tuya Geräte.
      Ich hab mich noch nicht getraut den Stecker auseinander zu nehmen und zu gucken was für ein Chip eingebaut ist.
      Falls es sich um einen ESP8622 handelt lässt sich da bestimmt was ordentliches drauf spielen.
      Ich bin echt überrascht wieviel unterschiedliche Systeme eigentlich schon auf dem Markt sind und jeder versucht sein eigenes Süppchen zu kochen.
      Hab das ding auch nur gekauft weils für 9,- im Schnäppchenkorb lag. Jetzt weis ich auch warum 😬

      posted in ioBroker Allgemein
      B
      bloop
    • LoRaWAN MakerFab Bewässerungssensor

      Liebe Community,

      Ich würde gerne meine gesammelte Erfahrung mit den Bodenfeuchtigkeitssensoren von MakerFab mit euch teilen.
      Ziel dieses Projektes war es die Sensoren für meine Bewässerungsanlage zu verwenden und in den sprinkelcontrol Adapter einzubinden. Die zu bewässernden Pflanzen stehen leider außerhalb der Reichweite meines Netzwerkes. Wodurch ich mich auf die Suche nach einer möglichen Alternative gemacht habe. Für mich ergab sich so ein etwas holpriger Einstieg in die LoRaWAN Welt.

      LoRa Bodenfeuchtigkeitssensoren V3 Kostenpunkt €19,90
      2023-06-02 23.31.03.jpg
      Ich hab mich für die Sensoren entschieden, da ich ansonsten leider nichts ähnliches in dieser Preisklasse finden konnte.
      Allerdings sind die Sensoren nicht LoRaWAN fähig und für den Betrieb mit einem selbst gebauten Lora Gateway gedacht. Diese Mühe wollte ich mir eigentlich sparen. So habe ich mich auf die Suche nach einer Möglichkeit zur Integration ins LoRaWAN Netzwerk TTN (TheTingsNetwork) gemacht. Die Verarbeitung der Sensoren ist recht ok, Sie sind über die gesamte Platinenfläche und den Sensor mit einem Lack überzogen. Nur das Gehäuse lässt etwas zu wünschen übrig.

      Tip: Ich habe mich leider bei der Wahl der Sensoren etwas vergriffen, in der Zwischenzeit gibt es bereits Sensoren die LoRaWan unterstützen.So könnte das Flashen der Firmware nicht nötig sein. LoRaWan Sensoren

      Wichtige Links:
      USB-Serial Converter: CP2104

      Anleitung: Makerfabs Soil Moisture Sensor v3
      Firmware: LORAWAN SOIL MOISTURE SENSOR (Die 3 Files weiter unten im Blog)

      Arduino IDE: Download

      Erfahrungen:

      • Das Aufspielen des Sketch hat mir große Schwierigkeiten gemacht. Es müssen genau die richtigen Version von Biblioteken in Arduino IDE installiert werden. Welche hierfür benötigt werden ist in der Anleitung angegeben. Ebenso muss in der Konfigurationsdatei von MCCI LoRaWAN Library folgender Code eingegeben werden um die richtige Region der Library einzustellen. Ansonsten erhaltet ihr immer die Nachricht das der Sketch zu groß ist und nicht auf den Sensor geflashed werden kann.
      #define CFG_eu868 1
      //define CFG_us915 1
      //#define CFG_au915 1
      //#define CFG_as923 1
      // #define LMIC_COUNTRY_CODE LMIC_COUNTRY_CODE_JP	/* for as923-JP */
      //#define CFG_kr920 1
      //#define CFG_in866 1
      #define CFG_sx1276_radio 1
      //#define LMIC_USE_INTERRUPTS
      
      #define DISABLE_PING
      #define DISABLE_BEACONS
      #define LMIC_DEBUG_LEVEL 0
      #define USE_IDEETRON_AES
      
      • Nachdem ich verstanden habe was in dem Sketch angegeben und gemeint ist, hat das eintragen der EUI aus TTN erstaunlich gut funktioniert. Hier ist lediglich zu beachten, dass diese auch im richtigen Format eingetragen werden. In TTN lassen sich die aber direkt im passenden Format anzeigen und kopieren.
      // This EUI must be in little-endian format, so least-significant-byte
      // first. When copying an EUI from ttnctl output, this means to reverse
      // the bytes. For TTN issued EUIs the last bytes should be 0xD5, 0xB3,
      // 0x70.
      // APPEUI can be left with ceros
      static const u1_t PROGMEM APPEUI[8]={ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 };
      void os_getArtEui (u1_t* buf) { memcpy_P(buf, APPEUI, 8);}
      
      // This should also be in little endian format, see above.
      static const u1_t PROGMEM DEVEUI[8]={ TTN_DEVEUI };
      void os_getDevEui (u1_t* buf) { memcpy_P(buf, DEVEUI, 8);}
      
      // This key should be in big endian format (or, since it is not really a
      // number but a block of memory, endianness does not really apply). In
      // practice, a key taken from ttnctl can be copied as-is.
      static const u1_t PROGMEM APPKEY[16] = { TTN_APPKEY };
      void os_getDevKey (u1_t* buf) {  memcpy_P(buf, APPKEY, 16);}
      
      
      • Leider hat mir das Flashen immer wieder Schwierigkeiten gemacht, worauf hin ich den Bootloader der Sensoren mit einem Arduino Nano neu programmiert habe. Entsprechende Anleitungen lassen sich leicht finden. Hierfür habe ich den Lack auf den 6 Pins abgekratzt und Kabel angelötet und mit dem Nano verbunden. Aufpassen das beim Flashen des Arduino Nano der Sensor nicht angeschlossen ist.

      • Nachdem ich die Sensoren dann endlich im TTN angezeigt bekommen habe, musste ich noch den Payload Formater passend konfigurieren. Dieser ist bei Device unter Payload formatters / Uplink / Custom Javascript formatter einzutragen.

      // TTNV3 Payload Formatter Uplink V0.1
      function decodeUplink(input) {
      
      if ((input.fPort > 0) && (input.fPort < 223))
      {
        var decodedTemp = 0;
        var decodedHumi = 0;
        var decodedBatt = 0;
      
      // seperate raw data from payload
        var rawSoil = input.bytes[0] + input.bytes[1] * 256;
        var rawTemp = input.bytes[2] + input.bytes[3] * 256;
        var rawHumi = input.bytes[4] + input.bytes[5] * 256;
        var rawBatt = input.bytes[6] + input.bytes[7] * 256;
      
      // decode raw data to values
        decodedTemp = sflt162f(rawTemp) * 100; // value calculated to range -1..x..+1 by dividing /100
        decodedHumi =  sflt162f(rawHumi) * 100; // value calculated to range -1..x..+1 by dividing /100
        if (rawBatt !== 0) decodedBatt =   rawBatt / 1000; // batterie voltage ist transmitted in mV, recalculate in V
      
      // definition of the decimal places
        decodedTemp = decodedTemp.toFixed(2);
        decodedHumi = decodedHumi.toFixed(2);
        decodedBatt = decodedBatt.toFixed(2);
      
      // return values
        return {
          data: {
            Feuchtigkeit: rawSoil,
            Temperatur: decodedTemp,
            Luftfeuchtigkeit: decodedHumi,
            Batterie: decodedBatt
                },
          warnings: [],
          errors: []
        };
      }
      else {
          return {
            data: {},
            warnings: [],
            errors: ["Invalid data received"]
          };
        
      }
      }
      
      function sflt162f(rawSflt16)
      	{
      	// rawSflt16 is the 2-byte number decoded from wherever;
      	// it's in range 0..0xFFFF
      	// bit 15 is the sign bit
      	// bits 14..11 are the exponent
      	// bits 10..0 are the the mantissa. Unlike IEEE format, 
      	// 	the msb is transmitted; this means that numbers
      	//	might not be normalized, but makes coding for
      	//	underflow easier.
      	// As with IEEE format, negative zero is possible, so
      	// we special-case that in hopes that JavaScript will
      	// also cooperate.
      	//
      	// The result is a number in the open interval (-1.0, 1.0);
      	// 
      	
      	// throw away high bits for repeatability.
      	rawSflt16 &= 0xFFFF;
      
      	// special case minus zero:
      	if (rawSflt16 == 0x8000)
      		return -0.0;
      
      	// extract the sign.
      	var sSign = ((rawSflt16 & 0x8000) !== 0) ? -1 : 1;
      	
      	// extract the exponent
      	var exp1 = (rawSflt16 >> 11) & 0xF;
      
      	// extract the "mantissa" (the fractional part)
      	var mant1 = (rawSflt16 & 0x7FF) / 2048.0;
      
      	// convert back to a floating point number. We hope 
      	// that Math.pow(2, k) is handled efficiently by
      	// the JS interpreter! If this is time critical code,
      	// you can replace by a suitable shift and divide.
      	var f_unscaled = sSign * mant1 * Math.pow(2, exp1 - 15);
      
      	return f_unscaled;
      	}
      
      • Der nächste Schritt das übertragen zu iobroker per MQTT ging ganz leicht. Hierfür eine neue Instanz anlegen und die unter Integrations / MQTT angegebenen Verbindungskonfigurationen eingeben.

      • So habe ich es endlich geschafft die Sensordaten in den iobroker zu integrieren. Diese werden als JSON an einen Datenpunkt geschickt. Mit folgendem Skript lasse ich mir diese in Datenpunkte ablegen.

      const soilup = "mqtt.1.v3.030374@ttn.devices.eui-70b3d57ed005e017.up";
      const path = '0_userdata.0.Bewässerung.eui-70b3d57ed005e017';
      const idBat = '0_userdata.0.Bewässerung.eui-70b3d57ed005e017.Batterie';
      const idMoist = '0_userdata.0.Bewässerung.eui-70b3d57ed005e017.Feuchtigkeit';
      const idAir = '0_userdata.0.Bewässerung.eui-70b3d57ed005e017.Luftfeuchtigkeit';
      const idTemp = '0_userdata.0.Bewässerung.eui-70b3d57ed005e017.Temperatur';
      
      if(!existsState(idBat)) { // Datenpunkte erzeugen
          createState(idBat, '0', {type: 'number', unit: 'V'});
          createState(idMoist, '0', {type: 'number', unit: '%'});
          createState(idAir, '0', {type: 'number', unit: 'rF'});
          createState(idTemp, '0', {type: 'number', unit: '°C'});
      };
      
      on(soilup, function(dp) { // triggert bei Wertänderung
          let obj = JSON.parse(dp.state.val).uplink_message.decoded_payload;
          setState(idBat, obj.Batterie, true);
          setState(idMoist, parseFloat(obj.Feuchtigkeit), true);
          setState(idAir, parseFloat(obj.Luftfeuchtigkeit), true);
          setState(idTemp, parseFloat(obj.Temperatur), true);
      });
      

      2b0741fa-2e08-45cd-8351-15e0f30a1988-image.png

      Ich hoffe ich kann jedem der auf eine ähnliche Idee kommt mit meinen Tipps etwas helfen!

      posted in Praktische Anwendungen (Showcase)
      B
      bloop
    • SourceAnalytics to Json

      Hallo,

      Um mir die Datenpunkte des SourceAnalytics Adapter in meiner VIS per Json Tabelle anzeigen zu lassen hab ich mir ein Blockly gebaut. Leider konnte ich nichts verwendbares im Forum finden und habe mich somit selbst an die Arbeit gemacht.
      Ich sehe mich selbst noch als Anfänger und habe versucht das ganze möglichst übersichtlich zu gestalten.

      Funktion:
      Blockly liest bei einer Änderung der Datenpunkte von Sourceanalytics die Monate bzw. Tage welche hinterlegt werden ein und gibt diese als JSON Tabelle an einen vorab eingestellten Datenpunkt weiter.
      Die erst Eingabe ist nicht automatisiert und muss noch von Hand vorgenommen werden.

      Was haltet ihr davon? Verbesserungsvorschläge?

      Danke fürs Feedback!

      blockly.png

      Leider ist das Skript länger als 10000 Zeichen und ich muss es als .txt anhängen
      statistik.txt

      posted in Blockly
      B
      bloop
    • RE: Yahka Heizung Temperatur ändern

      @ticaki
      Das ist gut zu wissen! Dann scheint es auch Geräte zu geben bei denen diese Auflistung nicht stimmt. Ich hatte das Problem bei einem anderen Gerät.

      posted in ioBroker Allgemein
      B
      bloop

    Latest posts made by bloop

    • RE: Vorschlag: RAG System für die Doku

      Passt jetzt nicht ganz hier her, aber ich habe etwas ähnliches in den letzten Tagen für die ioBroker Datenpunkte umgesetzt.

      Das ganze ist noch in einem absoluten Beta Stadium aber der Grundfunktion funktioniert.

      Verwendet habe ich dafür ein local laufendes LLM mit Ollama welches abhängig vom verwendeten Model relativ Ressourcen schonend läuft.

      iobroker2ollama

      Sobald ich hierfür einen herausragenden usecase finde, erstelle ich einen passenden Beitrag dazu. Aktuell wird mehr schlecht als recht über AI Anwendungsmöglichkeiten argumentiert.

      Ich sehe mich nicht als Entwickler und das Code Schreiben zählt nicht zu meine. Kernkompetenzen. Aber AI macht vieles möglich 😉

      posted in Dokumentations-Support
      B
      bloop
    • RE: Test Adapter AI Toolbox v0.1.3 GitHub/Latest

      @oxident
      Ich fahre mit Ollama ebenfalls sehr gut! Funktioniert im Adapter leider noch nicht. Auf GitHub habe ich bereits ein Feature Request für Ollama angefragt. Es wird scheinbar bereits daran gearbeitet.
      Leider reagiert der Großteil der Community gegenüber AI use cases sehr abweisend - anders als bei HA…
      Ich denke ebenfalls das es hierfür noch zu früh ist und noch keiner der großen Streamer etwas bahnbrechendes dazu veröffentlicht hat.
      Ich verwende meine AI aktuell lediglich um regelmässige Benachrichtigungen Kreativer zu gestalten und trainiere meine AI mit Bildern der Kameras um irgendwann zu Personen, Tieren usw. korrekte Namen zuweisen zu können. Als Nächstes möchte ich meine AI mit Datenpunkten usw. trainieren. Alles Lokal versteht sich.
      Was sind eure use cases denn so?

      posted in Tester
      B
      bloop
    • RE: 10 Ideen generative KI im Smart Home einsetzen

      Hier scheint doch recht wenig Interesse an dem Thema zu sein.

      Zu Punkt 6:
      Da ich bereits seit längerem IoBroker mit Redis betreibe kam mir der Gedanke ob es nicht möglich wäre damit Trainingsdaten für eine Lokale KI zur Verfügung zu stellen?
      Gemeinsam mit dem Skripts müssten sich dann daraus nach einigen Tagen Trainingszeit auch Vorschläge für Automationen erstellen lassen.
      Denkt ihr das wäre umsetzbar? Leider findet sich dazu noch nicht besonders viel im Netz.

      posted in Off Topic
      B
      bloop
    • RE: 10 Ideen generative KI im Smart Home einsetzen

      @jey-cee Herzlichen Dank!
      Irgend jemanden da draußen hat bestimmt interesse an der Umsetzung jeder einzelnen Idee.
      Ich spiele mich aktuell etwas mit Ollama und deren einzelnen Modele. Und auch hier stelle ich immer wieder fest, das die Prompts sehr gezielt gesetzt werden müssen.

      Speziell im Punkt 6 sehe ich sehr großes Potential bei ioBroker!
      Leider konnte ich den AI Assistant Adapter noch nicht mit einer Lokalen KI testen. Ollama wird noch nicht supported. Daten meines Hauses an eine externe KI weiterleiten möchte ich nicht.

      posted in Off Topic
      B
      bloop
    • RE: 10 Ideen generative KI im Smart Home einsetzen

      @hans_999 Soll nur als Beispiel dienen. Eigentlich aber nur eine Frage der zur Verfügung gestellter Daten.
      Sohn hat schritte gemacht - könnte man durch bereitstellen der Bilderdatenbank vom Handy (wird ja bei den meisten auch extern gespeichert) realisieren.
      Bastelkeller geht bereits jetzt mit ESPPresence und/oder zb. Stromverbrauch.

      posted in Off Topic
      B
      bloop
    • 10 Ideen generative KI im Smart Home einsetzen

      Liebe Community,

      Die Ideen kommen nicht von mir sondern vom Podcast Smart Home Maker.
      https://open.spotify.com/show/7l1lPjD13rTSuexyM1NvW7?si=f51e716709c648bd
      Der Herausgeber verwendet in seinem Smart Home Home Assistent.
      Alle diese Ideen sind doch bestimmt auch in ioBroker umsetzbar.
      Der Beitrag soll zur Diskussion und Lösungsfindung anregen:

      1. Guten Morgen Nachricht
      Guten Morgen Nachricht mit, Wetter, Terminen, Politik und Wirtschaft, ist Auto geladen, gibt es besondere Verkehrsstörungen, usw.
      Als Text oder Sprachnachricht

      2. Lustige Benachrichtigungen
      Sich bei jeder Benachrichtigung über Telegramm oder Pushover generierte Benachrichtigungen senden lassen.
      Waschmaschine fertig, Briefkasten, Geschirrspüler usw.
      Dies konnte ich bereits mit Ollama und ein paar Skripts mit ioBroker umsetzen. Hat für etwas Verwirrung im Haus gesorgt. 😅 👍

      3. Bilder der Überwachungskameras beschreiben lassen
      Damit würden sich nicht nur Bilder beschreiben lassen, sondern könnte auch verlegte Dinge von der KI finden lassen. z.b. "Wo ist mein Laptop?". Oder Lebewesen im Garten erkennen usw.

      4. Geschichten Erzählen
      Gute Nacht Geschichten für die Kinder generieren lassen. Jeder kennt bestimmt die Situation das einem irgendwann die Ideen ausgehen. Hier könnte man die Lieblingsfiguren, Situationen usw. generierten lassen. Entweder als gesamte Geschichte oder in Stichworten. Würde sich auch mit einer "Guten Nacht" Automation für die Kinder verbinden lassen.
      Wer es noch weitertreiben möchte könnte die Geschichte auch über einen Smart Speaker mit der generierten eigenen Stimme wiedergeben zu lassen.

      5. individuelle Bilder
      Mit Ki Bilder generieren welche in einem Digitalen Bilderrahmen oder ähnlichem dargestellt werden.
      Wenn man zb. weiß wer den Raum betritt und welche Kunst Vorlieben derjenige hat, könnte man ein Bild mit Informationen aus dem ioBrocker (Wetter, Termine, Zustände, Jahreszeit usw.) im individuellen Stile erstellen lassen.!

      6. Automationen
      Mit KI neue Automationsideen vorschlagen lassen.
      Durch bereitstellen unterschiedlicher Datenpunkte könnte man eine KI damit beauftragen dir zb. 1x Wöchentlich eine neue Automation vorzuschlagen und dir diese Direkt als Skript zur Verfügung zu stellen.

      7. Rückblendung auf den gesamten Tag
      Täglich eine Zusammenfassung was den heute im Haus passiert ist.
      Anomalien zu anderen Tagen zusammengefasst.
      Wasserverbrauch, Strom Produktion usw.

      8. Kochen
      Mit KI Rezeptvorschläge bereitstellen lassen.
      Wer zb. bereits jetzt eine Vorratsliste in seinem Smart Home verwaltet, hätte so die Möglichkeit sich Individuelle Rezepte vorschlagen zu lassen. Weiters könnte die KI auch notwendige Lebensmittel auf die Einkaufsliste packen.

      9. Musik
      Abhängig von Anwesenheit, Scene, Helligkeit, Musikgeschmack, usw. Musik generieren lassen und abspielen.

      10. Wochen-, Monatsrückschau
      Erweitert Idee Nummer 7, mit weiteren durch externen Quellen hinzugefügten Informationen lässt sich auch ein Rückblick über die letzte Woche oder Monat anzeigen.zb.: Tochter hatte Aufführung im Kindergarten, Sohn hat erste Schritte gemacht, Lieblingssong der Familie, Familie war zum 5mal im Zoo, Papa war 3std im Bastelkeller... Dies könnte man Lokal ablegen und in Zukunft darauf zugreifen.

      Was haltet ihr von diesen Ideen, hat jemand bereits etwas mit ioBroker umgesetzt?

      Die Lustigen Benachrichtigungen konnte ich bereits umsetzen und arbeite aktuell an der Bildanalyse meiner Kameras.

      posted in Off Topic
      B
      bloop
    • RE: EIN Skript aus Backup zurückspielen

      In eigener Sache:
      Ging mir gleich deshalb:
      https://forum.iobroker.net/topic/80638/javaskripts-versionierung-und-backup-skript/11

      posted in ioBroker Allgemein
      B
      bloop
    • RE: InfluxDB alten Datenmüll löschen

      @da_woody
      Für die InfluxDB 1.x wurde einst ein Tool geschrieben mit dem sich die Datenpunkte visualisieren lassen.
      Macht das ganze auch schon einfacher.

      https://github.com/CymaticLabs/InfluxDBStudio?tab=readme-ov-file

      posted in InfluxDB
      B
      bloop
    • InfluxDB alten Datenmüll löschen

      Liebe Community,

      In den letzten Jahren hat sich mein SmartHome stetig weiterentwickelt – Geräte wurden entfernt, ersetzt oder ergänzt. Dadurch hat sich in meiner InfluxDB zunehmend „Datenmüll“ angesammelt, dessen manuelle Bereinigung mir zu mühsam war.

      Um nicht jede Measurement einzeln abfragen zu müssen, habe ich ein kleines Skript geschrieben, dass die Datenbank nach Bedarf bereinigt.

      https://github.com/bloop16/influxdb_v2_measurement_clean_Skript

      Voraussetzungen:
      InfluxDB 2.x (aktuell getestet mit Version 2.7.11)
      ioBroker InfluxDB-Adapter

      Funktionsweise:
      Schritt 1: Das Skript erstellt eine Liste aller vorhandenen Measurements.
      Schritt 2: Es prüft, welche Measurements in den letzten x Tagen beschrieben wurden.
      Schritt 3: Ihr erhaltet eine Übersicht über aktive und inaktive Measurements.
      Schritt 4: Ihr könnt auswählen, ob bestimmte Measurements gelöscht werden sollen.

      Das Skript ist nicht perfekt, aber es erfüllt seinen Zweck.

      P.S.: Ich habe festgestellt, dass ich irgendwann ein Measurement erstellt habe, das JSON-Daten speichert. Dieses konnte nicht korrekt eingelesen werden, was kurzfristig zu einer hohen Systemauslastung führte und die Auflistung der restlichen Measurements beeinträchtigte. Nachdem ich dieses „korruptes“ Measurement manuell gelöscht hatte, lief das Skript wieder einwandfrei.

      Ich stehe noch am Anfang meiner Skript-Entwicklung, daher freue ich mich über Verbesserungsvorschläge!

      Viel Spaß damit!

      posted in InfluxDB
      B
      bloop
    • RE: JavaSkripts - Versionierung und BackUp Skript

      @unterstedter
      Erledigt! v1.1.0

      posted in Skripten / Logik
      B
      bloop
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo