Navigation

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

    NEWS

    • ioBroker goes Matter ... Matter Adapter in Stable

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    K
    • Profile
    • Following 0
    • Followers 0
    • Topics 5
    • Posts 42
    • Best 2
    • Groups 1

    kuumaur

    @kuumaur

    2
    Reputation
    7
    Profile views
    42
    Posts
    0
    Followers
    0
    Following
    Joined Last Online
    Location Near Oldenburg

    kuumaur Follow
    Starter

    Best posts made by kuumaur

    • RE: Rhasspy Offline Sprachsteuerung

      @packelend
      Viele Schritte ist immer relativ.
      Kommt darauf an, was Du bereits bei Dir am Laufen hast.

      • Rhasspy ist i.d.R. als Docker Container im Einsatz
      • Mqtt Broker als Container
      • deine IOBroker Instanz
      • Mqtt Client Adapter
      • Mqtt Hermes/# abonieren
      • Rhasspy-Satelliten bauen
        so weit, so gut.
        Die "richtige" Arbeit fängt nun an.
      • Intents im Rhasspy einrichten (Licht an/aus, Mülltonne-Kalender, etc.)
      • JScript im IOBroker schreiben oder fertiges JScript abwandeln

      Rhasspy läuft bei mir seit >2 Jahren ohne (techn.) Probleme.
      Aus meiner Sicht leiden alle Voice-Assistenten an dem gleichen Problem, dass die Mikrofonperformance in lauten Umgebungen (Wohnzimmer, Küche, etc.) stark schwankend ist. Das könnte man aus meiner Sicht als Resume bezeichnen. Die Rhasspy Community sieht es ähnlich. Ohne gute Audio-Codecs ist das Nutzungserlebnis stark schwankend.
      Ich habe 4 Satelliten im Einsatz, alle mit unterschiedlichen Mikrophonen. Kein Satellit kann wirklich bei lauteren Umgebungen überzeugen. Würde ich zu Amazon oder Google etc. wechseln? Nein, auf keinen Fall. Im Alltag kristallisieren sich die Intents heraus, die am nützlichsten sind. Diese habe ich dann optimiert und ein akzeptables Niveau gefunden.

      posted in Off Topic
      K
      kuumaur
    • RE: Rhasspy Offline Sprachsteuerung

      @packelend
      Richtmikro in der Küche = Boya BY-MM1 (Ok mit Unterhaltung oder Radio oder Geschirrspüler, nicht ok Dunstabzug)
      Respeaker-2/Raspberry ZeroW im Büro (Ok, bin alleine im Büro und Radio ist leise)
      Respeaker-4 im Wintergarten (mmmh, so la la in allen Bereichen)
      Lavalier Omnidirektional mini Mikro im Wohnzimmer (Ok wenn der Fernseher in Zimmerlautstärke ist)
      Im Test befinden sich noch MAX9814 Mikrofonverstärker.
      Wie geschrieben, fehlen eigentlich passende Codecs. Der Respeaker-4 ist eigentlich perfekt, wenn es passende codecs gäbe.
      Ach ja, in der Pipeline ist noch ein Jabra 410/510 Konferenzmikro ...

      posted in Off Topic
      K
      kuumaur

    Latest posts made by kuumaur

    • RE: Frigate Adapter für ioBroker

      Moin,
      ich bin von meinem eigenen Script für Frigate auf diesen Adapter umgestiegen.
      Der Adapter funktioniert gut für meine Zwecke, vielen Dank für die Arbeit.
      In der Vergangenheit hatte ich die Benachrichtigung via E-Mail "schaltbar" gestaltet.
      Wenn ich also zu Hause bin, benötige ich keine E-Mail-Benachrichtigungen, wenn ich das Haus verlasse aber schon.
      Wie könnte ich das mit diesem Adapter bewerkstelligen?
      Danke für einen Hinweis.
      -Kuumaur

      posted in Tester
      K
      kuumaur
    • RE: Blockly mit Funktion einer Warteschlange

      @paul53 Vielen Dank für deine Unterstützung. Ich werde versuchen dein Beispiel zu verstehen.

      posted in Blockly
      K
      kuumaur
    • RE: Blockly mit Funktion einer Warteschlange

      Nee, bei mir klingelt nichts.
      Ich habe ein Object
      0_userdata.0.Custom_Var_NabaztagQueue
      als Array angelegt
      Wie schreibe ich nun Werte da rein und wie lösche ich die wieder? Ich stehe auf dem Schlauch. Ist wahrscheinlich ganz einfach und ich sehe den Wald vor lauter Bäumen nicht!
      Das List-Item in Blockly ist scheinbar nicht dafür einsetzbar.
      Ich denke, dass ich mal wieder Starthilfe benötige. Hast Du @paul53 eine Dokumentationquelle für mich?

      posted in Blockly
      K
      kuumaur
    • RE: Blockly mit Funktion einer Warteschlange

      @paul53
      Mega schnelle Antwort 👍
      Ich versuche mich mal an deiner Idee....

      posted in Blockly
      K
      kuumaur
    • Blockly mit Funktion einer Warteschlange

      Moin Leute,
      ich habe die Tage einiges an meinen Scripten im IOB optimiert.
      Ein Ergebnis der Änderungen ist, dass ich nun ein zentrale Script zum Versenden von Messages habe.
      Das ist ein globales Script und wird von allen Scripts verwendet, die etwas versenden möchten.
      (E-Mail, Matrix, Pushover, Web-Requests)
      Nun habe ich identifiziert, dass die Web-Requests in meinem globalen Script nur alle 60+ Sekunden aufgerufen werden dürfen.
      Mein erster Gedanke war, einen Timeout einzubauen. Das hat den Nachteil, dass dann jedes mal ein neuer Timeout gestartet wird, und ich immer noch nicht sicher sagen kann, ob der Web-Request innerhalb oder außerhalb des gültigen Zeitfensters war. Die Idee ist also, die Aufrufe in eine Queue zu parken und mit einem 60sec. Intervall abarbeiten.
      Hat das schon mal jemand gemacht? Ist Blockly dazu überhaupt in der Lage?
      Danke und Gruß

      posted in Blockly
      K
      kuumaur
    • RE: Mit einem Blockly Script ein Blockly Script aufrufen[gelöst]

      @paul53 said in Mit einem Blockly Script ein Blockly Script ausrufen:
      Yes, you made my Sunday.
      Danke und Gruß

      posted in Blockly
      K
      kuumaur
    • RE: Mit einem Blockly Script ein Blockly Script aufrufen[gelöst]

      @paul53 Vielen Dank für die schnelle Antwort.
      Kannst Du das etwas näher erläutern, oder mir eine Dokumentationsquelle nennen?
      Den Global Folder habe ich sichtbar gemacht durch das Aktivieren der Expertenansicht.
      Wie lautet die Javascript function zum Aufrufen der Blockly Scripte?
      Danke und Gruß

      posted in Blockly
      K
      kuumaur
    • Mit einem Blockly Script ein Blockly Script aufrufen[gelöst]

      Moin,
      ich mache gerade eine Inventur meiner Script im IOB.
      Mir ist aufgefallen, dass ich viele ähnliche Functions in meinen Blockly Scripten verwende.
      Nun suche ich eine Möglichkeit, die (nahezu) identischen Functions in ein eigenes Blockly script auszulagern.
      Es gibt den Block "other script". Mir erscheint das aber nicht als valide Lösung, oder ich habe den Block falsch verstanden.

      Frage: Kann man irgendwie aus einem Blockly Script ein anderes Blockly Script aufrufen und Parameter übergeben?
      Hat jemand schon so etwas Ähnliches gelöst?

      Bin für Ideen und Vorschläge dankbar.
      Gruß und schönen Sonntag

      posted in Blockly
      K
      kuumaur
    • RE: Cannot extract Blockly code! Meldung

      @fredf Vielen Dank für den Tipp, auch wenn es schon länger her ist. Auf die Idee, mit einem fehlenden Adapter, währe ich nicht so schnell gekommen.

      posted in Error/Bug
      K
      kuumaur
    • RE: JS-MQTT DP eines Bildes (JFIF) in Datei schreiben (jpg)

      @coyote @SidM
      Mit dieser Version bin ich fast zufrieden. Die E-Mails kommen noch doppelt an, ohne dass ich den Grund erkenne.

      var fs = require('fs');
      var dest_path = '/var/lib/iobroker_files/';
      var whole_path = '';
      
      function extractEventData(message) {
          const parsedMessage = JSON.parse(message);
          let extractedJSON = {};
          extractedJSON.eventtype = parsedMessage.type;
          extractedJSON.beforecamera = parsedMessage.before.camera;
          extractedJSON.beforelabel = parsedMessage.before.label;
      	extractedJSON.beforeid = parsedMessage.before.id;
          extractedJSON.beforecurrentzones = parsedMessage.before.current_zones;
          extractedJSON.beforeenteredzones = parsedMessage.before.entered_zones;
          extractedJSON.beforeframetime = parsedMessage.before.frame_time;
          extractedJSON.beforesnapshottime = parsedMessage.before.snapshot_time;
      
          extractedJSON.aftercamera = parsedMessage.after.camera;
          extractedJSON.afterlabel = parsedMessage.after.label;
          extractedJSON.aftersnapshot_time = parsedMessage.after.snapshot_time;
      	extractedJSON.afterid = parsedMessage.after.id;
          
          //extractedJSON.before.entered_zones {};
          //parsedMessage.before.entered_zones.forEach(zone => {
          //    extractedJSON.before.entered_zones[zone.ZoneName] = zone.value.value;
          //});
          return extractedJSON;
      }
      
      on({id: [].concat(['mqtt.0.frigate.events']), change: "ne" }, function (obj) {
          var value = obj.state.val;
          var oldValue = obj.oldState.val;
          const extractedJSON = extractEventData(obj.state.val);
          const beforecamera = extractedJSON.beforecamera;
          const beforelabel = extractedJSON.beforelabel;
          const beforeid = extractedJSON.beforeid;
          const beforeframetime = extractedJSON.beforeframetime;
          const beforesnapshottime = extractedJSON.beforesnapshottime;
      
          const aftercamera = extractedJSON.aftercamera;
          const afterlabel = extractedJSON.afterlabel;
          const aftersnapshot_time = extractedJSON.aftersnapshot_time;
          const afterid = extractedJSON.afterid;
          const eventtype = extractedJSON.eventtype;
          //var data = getState('mqtt.0.frigate.carport.person.snapshot').val;
          if (eventtype == 'update') {console.log('Script: Status_cctv Event: | '+eventtype+' | '+beforecamera+' | '+beforeid+' | '+beforelabel+' | '+beforeframetime+' | '+beforesnapshottime);}
          if (eventtype == 'new') {console.log('Script: Status_cctv Event: | '+eventtype+' | '+beforecamera+' | '+beforeid+' | '+beforelabel+' | '+beforeframetime+' | '+beforesnapshottime);}
          if (eventtype == 'end') {
          exec('wget -O '+dest_path+beforeid+'.jpg http://cctv-prod.fritz.box:5000/api/events/'+beforeid+'/snapshot.jpg');
          exec('wget -O '+dest_path+beforecamera+'-'+beforeid+'.jpg http://cctv-prod.fritz.box:5000/clips/'+beforecamera+'-'+beforeid+'.jpg');
      
          //getBinaryState(idPic, async function (err, data){
          //    fs.writeFile('test.jpg', data, function (err) {
          //        if(err) log('Fehler!');
          //    });                
          //});
          
          whole_path = dest_path;
          whole_path += beforecamera;
          whole_path += '-';
          whole_path += beforeid;
          whole_path += '.jpg';
          
          //fs.writeFile(whole_path, data, (err) => {if (err) throw err;console.log('File written ' + whole_path);});
          
          sendTo("email", "send", {
              text: (['Script: Status_cctv Event: '+eventtype,'\n','Label:'+beforelabel,'\n','Camera:'+beforecamera,'\n','Eventtype:'+eventtype,'\n','Frame Time:'+beforeframetime,'\n','Snapshot Time:'+beforesnapshottime].join('')),
              to: 'john@doe.cc',
              subject: 'Script: Status_cctv Event: '+eventtype+' Camera:'+beforecamera+' Label:'+beforelabel+' v9',
              attachments:[
                  {path: dest_path+beforecamera+'-'+beforeid+'.jpg', cid: "file1"}
                  //{path: dest_path+beforeid+'.jpg', cid: "file2"},
                  ]
          });
          console.log('Script: Status_cctv Event: | '+eventtype+' | '+beforecamera+' | '+beforeid+' | '+beforelabel+' | '+beforeframetime+' | '+beforesnapshottime);
          exec('/usr/bin/rm -f '+dest_path+beforecamera+'-'+beforeid+'.jpg');
          exec('/usr/bin/rm -f '+dest_path+beforeid+'.jpg');
          
          //sendTo("pushover.0", "send", {
          //    message: 'Script: Status_cctv Event: changed',
          //    sound: ""
          //});
      
          }
      });
      
      posted in JavaScript
      K
      kuumaur
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo