NEWS


  • Hallo,
    habe eine Gosund WB4 RGBW LED Lampe mit Tamota 8.3.1 geflasht und per MQTT in den sonoff Adapter übernommen.
    Möchte nun per script die RGB Werte ändern. Script läuft und im iobroker log sieht man wie die states geändert werden. In der Objektliste sieht man auch den entsprechenden Wert. Leider werden die Änderungen nicht an die Lampe übergeben.
    Wenn ich in der Objektliste den Datenpunkt von Hand änderen (Wert eingebe und Häckchen setzte) klappts. Die Farbe ändert sich entsprechend und im console log von Tasmota sieht man wie der Befehl verarbeitet wird.
    Was mache ich falsch?

  • Forum Testing Most Active Global Moderator Administrators

    @quinti sagte in state per script ändern klappt nicht:

    Leider werden die Änderungen nicht an die Lampe übergeben.

    setzst du ack = true oder false?

    @quinti sagte in state per script ändern klappt nicht:

    Wert eingebe und Häckchen setzte

    Das wäre ack=true, was für einen Datenpunkt eines Adapters absolut untypisch wäre


  • habs mit einem script versucht (soll so dann auch laufen) , und zum testen mit einem einfachem blockly, geht beides nicht:
    blockly.jpg

    const idTemp = 'javascript.0.temptest'/*temptest*/;
    const idRot = 'sonoff.0.LED27_Zapfstelle.Red'/*LED27 Zapfstelle  Red*/;
    const idGruen = 'sonoff.0.LED27_Zapfstelle.Green'/*LED27 Zapfstelle  Green*/;
    const idBlau = 'sonoff.0.LED27_Zapfstelle.Blue'/*LED27 Zapfstelle  Blue*/;
    const tmin = -15;  // minimale Temperatur
    const tmax = 35;   // maximale Temperatur
    const tg = 10;     // Temperatur für 100% grün
    const maxFarbe = 100;  // max. Farbwert
    
    var t = getState(idTemp).val;
    
    function farbe() {
       if(t < tmin) t = tmin;
       if(t > tmax) t = tmax;
       if(t < tg){
          setState(idRot, 0, true);
          setState(idGruen, maxFarbe * (t - tmin) / (tg - tmin), true);
          setState(idBlau, maxFarbe * (tg - t) / ( tg - tmin), true);
       } else {
          setState(idRot, maxFarbe * (t - tg) / (tmax - tg), true);
          setState(idGruen, maxFarbe * (tmax - t) / ( tmax - tg), true);
          setState(idBlau, 0, true);
       }
    }
    
    farbe();  // Skriptstart
    
    on(idTemp, function(dp) {
       
       t = dp.state.val;
       farbe();
    });
    

  • @quinti
    Die Werte für die Datenpunkte idRot, idGruen und idBlau müssen mit Ack = false / Block "steuere" geschrieben werden.


  • Danke das wars!!!

Suggested Topics

1.7k
Online

38.4k
Users

43.9k
Topics

613.1k
Posts