Navigation

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

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    T
    • Profile
    • Following 0
    • Followers 0
    • Topics 2
    • Posts 16
    • Best 0
    • Groups 0

    tapir

    @tapir

    0
    Reputation
    21
    Profile views
    16
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    tapir Follow

    Latest posts made by tapir

    • RE: Zugriff auf Raum

      Hallo,

      vielleicht war der vorige Beitrag etwas unklar formuliert.

      Ich habe das Testskript erweitert und vergleiche jetzt den Datenpunkt enumNames der "on"-Funktion direkt mit dem Datenpunkt der "getObject"-Funktion.

      on({id: id_Dimmer.level, change: "ne", val: 0, logic: "and"}, function(obj)
      {
        console.log("EnumNames mit on: " + obj.enumNames);
      
        var obj2 = getObject(obj.id, '*');
        console.log("EnumNames mit getObject: " + obj2.enumNames);
      });
      

      Auf dem JSAdapter.0 erscheint folgende Ausgabe:
      ` > javascript.0 script.js.02_Test.checkScript.testObj: EnumNames mit on: Dimmer,Licht,OG

      javascript.0 script.js.02_Test.checkScript.testObj: EnumNames mit getObject: Dimmer,Licht,OG Auf dem JSAdapter.1 bleiben die "EnumNames mit on" leider leer :| > javascript.1 script.js.02_Test.checkScript.testObj: EnumNames mit on:

      javascript.1 script.js.02_Test.checkScript.testObj: EnumNames mit getObject: Dimmer,Licht,OG `
      Bei einem anderen Produktivskript bleiben die "EnumNames mit on" meistens auf beiden Adaptern leer. Deshalb glaube ich nicht, dass es ein Instanzen-Problem ist.

      Jedenfalls scheint "getObject" die Daten anders auszulesen, als die "on"-Funktion.

      Könnte mal jemand testen, ob es auf einem anderen System auch auftritt :?:

      posted in Skripten / Logik
      T
      tapir
    • RE: Skript nur einmal am Tag ausführen und dann sperren

      Hallo Rainer,

      ich verstehe Nordlicht sehr gut und finde es super, dass du dir darüber Gedanken machst.

      ioBroker entwickelt sich seit Beginn mit großen Schritten weiter und auch die Doku hat sich durch eure ständige Arbeit wesentlich verbessert.

      Was ihr da leistet, ist bemerkenswert.

      Ein Anfänger kann mit Tutorials im Internet oder mit Literatur JS erlernen, doch bezieht sich das Meiste davon auf Webseiten-Programmierung mit HTML und CSS.

      All das wird in ioBroker auch eingesetzt, aber nur selten auf die gleiche Art und Weise, wie es die Literatur erklärt. Jedenfalls fehlt dem Anfänger hier noch das Transfervermögen. Ich selbst stehe da irgendwo in der Mitte dieser Phase 😉

      Speziell beim JavaScript-Adapter würde ich mir zu den Funktionen noch mehr Details mit Erklärungen wünschen.

      Trotz des gesamten Umfanges sind die einzelnen Beschreibungen extrem kompakt gehalten.

      Es ist vielmehr ein Nachschlagewerk für erfahrene Anwender, als eine Beschreibung für Einsteiger.

      Als Beispiel und zur Erklärung möchte ich die "on"-Funktion nennen, mit deren Parametern ich mich zur Zeit intensiver auseinandersetze.

      Nehmen wir davon mal den ersten Parameter:
      ` > You can use following parameters to specify the trigger:

      parameter______type/value _____description

      –---------------------------------------------------------------------------

      logic___________string__________"and" or "or" logic to combine the conditions (default: "and") `
      Hierzu ergaben sich folgende Fragen:

      1. Lassen sich beliebig viele Parameter verunden bzw. verodern?

      2. Kann "and" mit "or" kombiniert werden? z.B. (Licht1 and Licht2) or (Licht3 and Licht4)

      3. Wenn ja, wie sieht die Syntax dazu aus?

      Wer genug Erfahrung hat, würde die Fragen so beantworten

      1. Es wurden keine Grenzen angegeben, deshalb können beliebig viele Parameter verwendet werden.

      2. Da steht "and" or "or", also geht nur eines von beiden.

      3. Geht nicht, wegen Antwort von Frage 2.

      Als weiteres Beispiel nehme ich einen Ausschnitt aus dem diskutierten Skript von Nordlicht:
      > on({id: bwm, val: true}, function (obj) { // Trigger auslösen Bei val steht In der Beschreibung: New value must be equal to given one.

      Als Anfänger bin ich davon ausgegangen, dass sich ein neuer Wert von einem alten Wert im Wert unterscheiden muss, sonst ist es kein neuer Wert.

      Daher hätte ich erwartet, dass der Trigger nur auslöst, wenn der Wert des bwm von "false" auf "true" wechselt.

      Das tut er sogar, aber er löst auch aus, wenn der "Zeitstempel" des Wertes aktualisiert wird, weil dann der Wert "true" durch ein neues "true" ersetzt wurde.

      Im Skript von Nordlicht hat das keine Auswirkungen, da er noch eine Sperrvariabale verwendet, aber in einem anderen Skript sorgt es erstmal für Verwirrung.

      Zumindest zu dem zweiten Beispiel gab es schon einige Diskussionen, die mit einer etwas umfangreicheren Doku wahrscheinlich nicht entstanden wären.

      Die Doku ist das wichtigste Instrument, um neue User bei den ersten Schritten mit ioBroker zu begleiten und um den Spaß an der Sache aufrechtzuerhalten.

      Ich möchte in Bezug auf den JS-Adapter vorschlagen, die Funktionen in der bestehenden GitHubDoku mit weiterführenden Links zu Detailbeschreibungen zu versehen.

      Die verlinkten Seiten beschreiben dann die gewählte Funktion noch mal genauer (evtl. in Denglisch) und zeigen weitere Beispiele (Codeschnipsel) mit Kommentierung auf.

      Man könnte das mit den Linux Man-Pages vergleichen, die man dann aufruft, wenn die Kurz-Referenz des –help-Parameters nicht ausreicht.

      Grüße

      posted in Skripten / Logik
      T
      tapir
    • RE: Zugriff auf Raum

      @Bluefox:

      Funktion "on" gibt zurück ein Objekt, wo auch "enumNames" dabei sind.

      Folgendes Skript:

      on('javascript.0.yr.0.forecast.html', function(obj) {
          log(JSON.stringify(obj));
      });
      

      Gibt so was zurück:

      {
      	'id': 'javascript.0.yr.0.forecast.html',
      	'newState': {
      		'val': 3,
      		'ts': 1438001975,
      		'ack': false,
      		'lc': 1438001975,
      		'from': 'system.adapter.admin.0'
      	},
      	'oldState': {
      		'val': 2,
      		'ts': 1438001926,
      		'ack': false,
      		'lc': 1438001926,
      		'from': 'system.adapter.admin.0'
      	},
      	'common': {
      		'name': 'yr.0.forecast.html',
      		'role': 'javascript',
      		'type': 'mixed'
      	},
      	'native': {
      		
      	},
      	'name': 'yr.0.forecast.html',
      	'channelId': null,
      	'channelName': null,
      	'deviceId': null,
      	'deviceName': null,
      	'enumIds': ['enum.rooms.küche'],
      	'enumNames': ['Küche']
      }
      

      enumNames, das ist Raum, wo dieses Objekt sich befindet.

      Hast du eher an so was gedacht?

      getEnums('javascript.0.yr.0.forecast.html') => {'enumIds': ['enum.rooms.küche'],	'enumNames': ['Küche']}
      
      ```` `  
      

      Ich beziehe mich hier auf die "on"-Funktion.

      Das funktioniert bei mir nur teilweise und hat ein instabiles Verhalten.

      Nach jeder Änderung/Neustart/Adapterneustart usw. in IO-Broker kann es sein, dass die Enums funktionieren oder nicht.

      Ich habe folgendes Test-Skript, bei dem kann es nach einem Neustart passieren, dass der "funktionierende Adapter" wechselt,

      also z.B. liefert der JavascriptAdapter.0 die Enums und beim JavascriptAdapter.1 bleiben die EnumNames leer (oder umgekehrt).

      `setState("hmxxx.LEVEL".onTime, 5); 
      setState("hmxxx.LEVEL".level, 10);
      
      on({id: "hmxxx.LEVEL", change: "ne"}, function(obj)
      {
        for (var i in obj) {
            console.log(i + " - " + obj[i]);
      }`Das Skript schaltet einen Dimmer ein und nach 5 Sekunden wieder aus.
      
      Es wird beim Ein- und Ausschalten getriggert und im log werden die Datenpunkte zum Objekt angezeigt.
      
      Dieses Skript lieferte bisher eigentlich immer nur die EnumNames auf einer von beiden Instanzen.
      
      Ein anderes Produktivskript funktionierte ab und zu mal auf einer Instanz, aber meistens auf keiner.
      
      Wenn nur eine Instanz installiert ist, geht es oder eben nicht.
      
       ` ~~[quote]~~~~[quote]~~~~[quote]~~bei mir ist auch in der "on" - Variante die Struktur leer: `  ` 
      Hast Du den Raum auch den Datenpunkten und nicht nur den Kanälen zugewiesen ? In Deiner Abbildung sind alle zugewiesenen Objekte vom Typ "channel".
      
      Übrigens muss ich nach einer neuen Zuweisung ioBroker erst neu starten, damit die Zuweisung das gewünschte Ergebnis unter _~~[i]~~enumNames[/i]_ liefert. `  `  `  ` 
      Also, wenn es mal funktioniert, dann geht es bei mir auch mit channels.
      
      Kann da jemand helfen  :|[/i]
      
      posted in Skripten / Logik
      T
      tapir
    • RE: Adapter aktualisieren - TimeOut

      Nicht nur bei einem Update, sondern auch bei einem Restore.

      Ich hatte gestern iobroker komplett entfernt und neu installiert.

      Direkt nach dem Restore des Backups waren die Adapter noch alle da und dann heute plötzlich nicht mehr.

      Jetzt ist es auch nachvollziebar. Danke!

      posted in ioBroker Allgemein
      T
      tapir
    • RE: Adapter aktualisieren - TimeOut

      Genauso, wie auf dem Bild in der Doku.

      Die dritte Quelle fast-online exisitiert aber nach der Installation noch nicht.

      posted in ioBroker Allgemein
      T
      tapir
    • RE: Adapter aktualisieren - TimeOut

      Ok, danke.

      In der Doku scheint der Bezug vom Text auf das Bild nicht ganz vollständig zu sein.

      Bin nicht sicher, sieht aber vertauscht aus:

      ` > Bei der Installation sind folgende Quellen eingetragen:

      default – http://download.iobroker.net/sources-dist.json – Wird täglich um 01:00 am Server generiert. Der Zugriff ist sehr schnell, die Versionsinformationenkönnen jedoch bis zu 24 Stunden alt sein. ` Die Quelle http://download.iobroker.net/sources-dist.json war bei meiner Installation nicht als default eingetragen, bzw. existierte gar nicht.

      Weiter:
      ` > default – http://download.iobroker.net/sources-dist.json – Wird täglich um 01:00 am Server generiert. Der Zugriff ist sehr schnell, die Versionsinformationenkönnen jedoch bis zu 24 Stunden alt sein.

      online – https://raw.githubusercontent.com/ioBro … -dist.json – Repository wird von einer online Quelle generiert. Der Zugriff kann sehr lange dauern, dies ist die aktuellste Quelle

      sources – conf/sources-dist.json – Wird auch automatisch generiert und dauert auch sehr lange aber die Links können veraltet sein (es können manche Adapter fehlen) Müsste doch eigentlich so heißen: > default – conf/sources-dist.json – Wird auch automatisch generiert und dauert auch sehr lange aber die Links können veraltet sein (es können manche Adapter fehlen)

      online – https://raw.githubusercontent.com/ioBro … -dist.json – Repository wird von einer online Quelle generiert. Der Zugriff kann sehr lange dauern, dies ist die aktuellste Quelle

      fast online – http://download.iobroker.net/sources-dist.json – Wird täglich um 01:00 am Server generiert. Der Zugriff ist sehr schnell, die Versionsinformationenkönnen jedoch bis zu 24 Stunden alt sein. `

      posted in ioBroker Allgemein
      T
      tapir
    • RE: Adapter aktualisieren - TimeOut

      @Homoran:

      und welcher davon ist im Reiter davor aktiviert?

      BTW - welche Version admin hast du?

      sonst erstell mal den:

      http://download.iobroker.net/sources-dist.json
      

      mit dem Namen fast-online und wähle ihn aus.

      Gruß

      Rainer `

      Hallo Rainer,

      nach stundenlangen Probieren hat bei mir jetzt auch nur diese Lösung geholfen.

      Das Problem gab es schon öfters, aber noch nicht in diesem Ausmaß, dass alle nicht installierten Adapter undefined sind.

      Du hast in einem anderen Post geschrieben >> beizeiten wieder zurücksetzen <<.

      Gibt es sonst Sicherheitsrisiken???

      Nach dem Rücksetzen geht es leider nicht mehr…

      Warum bekommt er den Default-Pfad nicht mehr auf die Reihe?

      posted in ioBroker Allgemein
      T
      tapir
    • RE: [gelöst] Dimmer: Auf Leveländerung erst triggern, wenn sich der Wert nicht mehr ändert?

      Habs rausgefunden :idea:

      Der on-Trigger wird mit dem Parameter für das Gewerk erweitert:

      on({id: /^hm-rpc\.[.:\w\d-]+\.DIRECTION$/, change: "any", val: 0, enumName: "triggerDim", logic: "and"}, function(obj) 
      {
          console.log("Dimmen beendet: " + obj.newState.val);
      });
      
      

      Meine nächste Baustelle lautet RegExp :!:

      Nochmals danke !!!

      posted in Skripten / Logik
      T
      tapir
    • RE: [gelöst] Dimmer: Auf Leveländerung erst triggern, wenn sich der Wert nicht mehr ändert?

      Danke für die Antworten.

      Die Lösung von bluefox habe ich getestet und sie ist fast perfekt.

      Beim Selector ist die Abfrage noch auf eine bestimmte Aufzählung in den Gewerken begrenzt:

      var cacheSelectorDimmer = $('channelstate.id=*.DIRECTION');

      Ist das auch in RegExp umsetzbar?

      posted in Skripten / Logik
      T
      tapir
    • RE: [gelöst] Dimmer: Auf Leveländerung erst triggern, wenn sich der Wert nicht mehr ändert?

      Also, die Variante mit dem on-Trigger habe ich gelöst:

      on({id: "hmxxx.DIRECTION", change: "any", val: 0, logic: "and"}, function(obj) 
      {
          console.log("Dimmen beendet: " + obj.newState.val);
      });
      
      

      Aber wie baue ich die Parameter change: "any", val: 0, logic: "and" in den Selector ein. :?:

      var cacheSelectorDimmer = $('channel[state.id=*.DIRECTION](functions=xxxx)');
      cacheSelectorDimmer.on(function(obj) { ..... }); 
      ````Der benutzt doch auch die on-Funktion. Ich habe aber bisher kein Beispiel gesehen, bei dem die Triggerbedingung geändert wurde.
      
      Geht das irgendwie?
      posted in Skripten / Logik
      T
      tapir
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo