Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Error/Bug
  4. [Done] Snips.ai - mqtt und JSON parsen - iobroker Absturz

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.9k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    911

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

[Done] Snips.ai - mqtt und JSON parsen - iobroker Absturz

Geplant Angeheftet Gesperrt Verschoben Error/Bug
snipsmqttabsturzhermes
2 Beiträge 2 Kommentatoren 451 Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • B Online
    B Online
    badsnoopy667
    schrieb am zuletzt editiert von badsnoopy667
    #1

    Update, auch wenn snips mittlerweile nicht mehr weiterentwickelt wird:
    Das Problem war, das snips über mqtt auch den kompletten Audioverkehr bereitstellt. Das wusste ich nicht und der iobroker hat auf das komplette "Hermes" Topic subscribed. Das war dann ein "bisschen" viel Traffic für den Raspberry. ;)
    Man darf nur auf folgende Topics subscriben:
    hermes/asr/#,hermes/nlu/#,hermes/tts/#,hermes/dialogueManager/#
    Dann geht's


    Original Post:

    Hallo Zusammen!

    Ich habe hier ein Problem mit dem ich nicht mehr weiter komme, aber Ihr könnt mir bestimmt helfen! Iobroker friert mir immer ein wenn ich den mqtt Adapter installiere und per Javascript ein JSON parsen möchte. Ich frag mich ob das an Überlastung des Pi liegt oder ob ich ne falsche Abfrage mache, die die Kiste überlastet.

    Ich habe iobroker auf einem Pi 3B installiert, also 1GB RAM. Ich nutze recht viele Adapter, der Speicher ist also ziemlich voll, aktuell sind noch 100-200 MB frei. In der aktuellen Konfiguration läuft aber alles noch recht flüssig.

    Jetzt wollte ich aber snips.ai anbinden, das ist ein Sprachassistent wie Alexa, allerdings offline, ohne Cloud Anbindung. Snips läuft auf einem zweiten Pi und schickt nach erkanntem Sprachbefehl ein JSON mit dem bereits in einzelne Teile zerlegten Satz per MQTT. Dieses JSON habe ich dann mittels MQTT Adapter abgegriffen und es wird automatisch in ein Objekt geschrieben. Wenn dieses Objekt aktualisiert wird, soll der Javascript Adapter das JSON parsen, und den zerlegten Text in einzelne Objekte ablegen. Klappt auch soweit ganz gut. Zumindest ein paar Minuten lang.

    Danach wird iobroker und der gesamte PI immer langsamer und dann hängt sich iobroker auf (im admin drehen sich dann nur noch bunte Kreise und irgendwann ist der admin gar nicht mehr erreichbar).

    Dann hilft auch kein Neustart mehr, ich muss dann ein Backup einspielen ohne den MQTT Adapter und ohne das Script.

    Dinge die mir aufgefallen sind:

    Nach Installation des MQTT Adapters fahren alle Rollläden wie wild hoch und runter. Anscheinend werden die Javascripte auch per MQTT verschickt (?) jedenfalls taucht in der Objektstruktur vom MQTT Adapter wieder ein Unterpunkt „javascript“ auf mit allen (oder zumindest einigen) meiner Skripte. Hab den MQTT Adapter dann auf das Topic „mqtt.0.hermes/#“ beschränkt, dann hören die Rollläden wieder auf Mist zu machen, hat mich aber gewundert.

    Der PI ist über putty auch nur noch extrem langsam zu erreichen. Unter Linux „top“ eingegeben sieht man, dass der iobroker-jscontroller teilweise 200% CPU Last erzeugt und ~30% Ram braucht. Wie gesagt, admin ist dann nicht mehr erreichbar.

    Hier das Skript das ich verwende um das JSON in Objekte zu schreiben: (Hab ich mir aus dem Internet besorgt und etwas angepasst.

    on({id: 'mqtt.0.hermes.nlu.intentParsed', change: "any"}, function (obj) {
            var room
            var brightness
            var device
    
       //der try ist wichtig das der adapter nicht abschmiert bei einem fehler, hiermit pasen wird die json in ein object
       try {obj = JSON.parse(getState('mqtt.0.hermes.nlu.intentParsed').val);
       } catch (e) {
               console.error('Cannot parse: ' + getState('mqtt.0.hermes.nlu.intentParsed').val);
               return;
        }
    
       room = obj.id;
       brightness = obj.intent.intentName;
       device = obj.slots[0].value.value;
    
      setState('javascript.0.eigene_variablen.snips.Licht.room', (room));
      setState('javascript.0.eigene_variablen.snips.Licht.brightness', (brightness));
      setState('javascript.0.eigene_variablen.snips.Licht.device', (device));
      // setState('javascript.0.eigene_variablen.snips.Licht.Lichtstaerke', (Lichtstaerke));
    
    });
    
    

    Ein Beispiel JSON hab ich leider gerade nicht, hab den PI ja wieder zurückgesetzt auf den alten Stand. Das JSON ist aber ein "normales" JSON das unter anderem die Werte für room, brightness, device innerhalb eines Arrays übergibt.

    Überlege jetzt, ob ich mit iobroker vom PI auf einen NUC mit Proxmox umziehen muss wegen mangelnder Performance oder ob ich einen Fehler gemacht habe.

    Vielen Dank für eure Hilfe!

    1 Antwort Letzte Antwort
    0
    • apollon77A Offline
      apollon77A Offline
      apollon77
      schrieb am zuletzt editiert von
      #2

      Habe zwar gerade zu deiner wirklichen Frage keine Idee aber ein Kommentar zu deinem Skript: wenn du in der trigger Funktion auf den neuen Wert den getriggerten States zugreifen willst bitte obj.state.val nutzen anstelle getState. Sonst kann es sein das du nicht den neuen Wert bekommst.

      JavaScript kannst du auf debug stellen, dann siehst du mehr was dein JavaScript tut und ggf MQTT Adapter auf debug.

      Gesendet vom Handy …

      Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

      • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
      • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
      1 Antwort Letzte Antwort
      0
      Antworten
      • In einem neuen Thema antworten
      Anmelden zum Antworten
      • Älteste zuerst
      • Neuste zuerst
      • Meiste Stimmen


      Support us

      ioBroker
      Community Adapters
      Donate

      783

      Online

      32.6k

      Benutzer

      82.2k

      Themen

      1.3m

      Beiträge
      Community
      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
      ioBroker Community 2014-2025
      logo
      • Anmelden

      • Du hast noch kein Konto? Registrieren

      • Anmelden oder registrieren, um zu suchen
      • Erster Beitrag
        Letzter Beitrag
      0
      • Home
      • Aktuell
      • Tags
      • Ungelesen 0
      • Kategorien
      • Unreplied
      • Beliebt
      • GitHub
      • Docu
      • Hilfe