Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Min/Max "Dimmer-Range" in "0-100% Dim-Level" umrechnen

    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

    Min/Max "Dimmer-Range" in "0-100% Dim-Level" umrechnen

    This topic has been deleted. Only users with topic management privileges can see it.
    • paul53
      paul53 @Michael Dolp last edited by paul53

      @Michael-Dolp sagte:

      Es sollte aber bei Alias 0 das Device ebenfalls auf 0 setzen.

      Quasi so:
      "write": "val = 23 ? 0 : Math.round(0.76 * val + 23)",
      "read": "val < 23 ? 0 : val > 100 ? 100 : Math.round((val - 23) / 0.76)"

      Ich denke so:

          "write": "val <= 0 ? 0 : Math.round(0.77 * val + 23)",
          "read": "val < 23 ? 0 : Math.round((val - 23) / 0.77)"
      

      Der Wert des Original-Datenpunktes wird nicht > 100. Oder ?

      Michael Dolp 2 Replies Last reply Reply Quote 0
      • Michael Dolp
        Michael Dolp @paul53 last edited by

        @paul53 said in Min/Max "Dimmer-Range" in "0-100% Dim-Level" umrechnen:

                                                                                                                                        "write": "val <= 0 ? 0 : Math.round(0.77 * val + 23)",                                                                                                                                                                                "read": "val < 23 ? 0 : Math.round((val - 23) / 0.77)"                                            
        

        Danke, jetzt läuft es so wie es soll und bei Device 100% schreibt er das Alias ebenfalls auf 100% und nicht höher.

        ( Hat leider etwas gedauert, weil mein Filesystem des Virtuellen IOBrokers Systems kaput ging und ich den IOBroker inzwischen in einem Docker neu aufgesetzt habe. )

        Das ist jetzt also der ideale Code um mit einem Alias eine "individuelle Dimm-Range" auf die Volle 0-100% Range umzurechnen:

        {
          "from": "system.adapter.alias.0",
          "user": "system.user.admin",
          "ts": 1605979923610,
          "common": {
            "name": "OG_Galerie_Bürobeleuchtung",
            "unit": "%",
            "role": "level.dimmer",
            "type": "number",
            "def": 0,
            "min": 0,
            "max": 100,
            "alias": {
              "id": "hm-rpc.0.NEQ0044188.1.LEVEL",
              "write": "val <= 0 ? 0 : Math.round(0.77 * val + 23)",
              "read": "val < 23 ? 0 : Math.round((val - 23) / 0.77)"
            }
          },
          "native": {},
          "acl": {
            "object": 1636,
            "owner": "system.user.admin",
            "ownerGroup": "system.group.administrator",
            "state": 1636
          },
          "_id": "alias.0.OG.Galerie.Bürobeleuchtung",
          "type": "state"
        }
        

        Berechnung des Faktors hier "0.77":
        ( Dim.Max - Dim.Min ) / 100 > (100 - 23) / 100 = 0.77
        ( Wert 23 = Dim.Min )
        ( Wert 100 = Dim.Max )

        Beispiel Range 15-80%: ( 80 - 15 ) / 100 = 0.65 also:

        "write": "val <= 0 ? 0 : Math.round(0.65 * val + 15)",
        "read": "val < 15 ? 0 : Math.round((val - 15) / 0.65)"
        

        im Iot übernimmt er damit auch problemlos das Alias als "Dimmer"

        Danke nochmal!

        1 Reply Last reply Reply Quote 0
        • Michael Dolp
          Michael Dolp @paul53 last edited by

          @paul53
          Hallo Paul,

          da ich leider einige Steckdosen mit ESPEasy geflasht habe und diese nicht umflashen möchte muss ich nun ebenfalls ein Alias anlegen, weches mir den GPIO12 auf 0 / 1 setzt und selbst mit false / true funktionieren soll. Ist jetzt zwar etwas Offtopic, aber trifft die gleiche Vorgehensweise. Mit der Add Device "Auto-Funktion" kriegt er es nicht hin.

          alt text

          Meine bisherigen Ansätze sind maximal bis zu einer Endlosschleife gekommen und IOBRoker hat neu initialisiert.

          Also so etwas in der Richtung:

          "common": {
            "name": "SET",
            "role": "switch.light",
            "type": "string",
              "write": "val = true ? 1 : 0",
              "read": "val = 1 ? true : false"
            "alias": {
              "id": "mqtt.0.LSC_Plug_4.Set.GPIO.12"
            }
          

          Leider geht das so nicht ganz - kannst Du mir vielleicht weiter helfen?

          Danke - Gruß

          Michael

          paul53 1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @Michael Dolp last edited by paul53

            @Michael-Dolp sagte:

            Also so etwas in der Richtung:

            "type" muss "boolean" sein. Bitte ändern:

            "common": {
              "name": "Schreibtischleuchte Kinderzimmer",
              "role": "switch.light",
              "type": "boolean",
              "write": true,
              "read": true,
              "alias": {
                "id": "mqtt.0.LSC_Plug_4.Set.GPIO.12",
                "write": "val ? 1 : 0"
              }
            

            Die Umwandlung 0 --> false und 1 --> true erfolgt automatisch.

            Michael Dolp R 2 Replies Last reply Reply Quote 0
            • Michael Dolp
              Michael Dolp @paul53 last edited by

              @paul53
              Vielen Dank funktioniert auch perfekt - da muss ich noch einiges lernen, um das Schema zu begreifen, aber das ist es sicher Wert, denn bisher bin ich bis auf ein paar kleine Dinge vom IOBroker begeistert!

              1 Reply Last reply Reply Quote 0
              • R
                Radler1 @paul53 last edited by

                @paul53

                Hallo Paul,
                kannst du dir auch meine Konfiguration mal anschauen, auch ich habe das Problem dass ich die gelieferten Werte vom ESP Easy 0 und 1 sind und nicht false oder true.
                Der type „boolean“ ist eingestellt aber in blockly werden die Werte nicht als false oder true erkannt. Du hast ja oben beschrieben dass die Werte automatisch umgeschrieben werden, ändert sich auch die Bezeichnung in false und true oder bleiben sie bei 0 und 1.
                Vielen Dank
                Radler1
                Folie1.PNG Folie2.PNG Folie3.PNG

                paul53 2 Replies Last reply Reply Quote 0
                • paul53
                  paul53 @Radler1 last edited by

                  @radler1 sagte: die gelieferten Werte vom ESP Easy 0 und 1 sind und nicht false oder true.

                  Dann ist der Datenpunkt-Typ "boolean" falsch und muss in "number" geändert werden, damit der Alias-Datenpunkt vom Typ "boolean" automatisch wandelt.

                  R 1 Reply Last reply Reply Quote 0
                  • R
                    Radler1 @paul53 last edited by

                    @paul53
                    Hallo paul53,
                    vielen Dank für die schnelle Hilfe, ich habe "boolean" in "number" geändert, aber trozdem wird der Wert nicht richtig erkannt.
                    Fällt Dir noch was ein?

                    1 Reply Last reply Reply Quote 0
                    • paul53
                      paul53 @Radler1 last edited by

                      @radler1 sagte: aber in blockly werden die Werte nicht als false oder true erkannt.

                      Greift Blockly auf den MQTT-Datenpunkt zu oder auf den Alias? Beim MQTT-Datenpunkten müssen Zahlen 0 und 1 verwendet werden (auch beim Vergleich).

                      R 1 Reply Last reply Reply Quote 0
                      • R
                        Radler1 @paul53 last edited by

                        @paul53,
                        er greift auf den MQTT Datenpunkt zurück.

                        Beim MQTT-Datenpunkten müssen Zahlen 0 und 1 verwendet werden (auch beim Vergleich).
                        Diesen Satz habe ich nicht verstanden, was soll ich da machen?

                        Präsentation3.jpg

                        paul53 1 Reply Last reply Reply Quote 0
                        • paul53
                          paul53 @Radler1 last edited by

                          @radler1 sagte: was soll ich da machen?

                          Blockly?
                          0 und 1 anstelle von falsch und wahr verwenden.

                          R 1 Reply Last reply Reply Quote 0
                          • R
                            Radler1 @paul53 last edited by

                            @paul53

                            ich hab das in Blockly mit Baustein Mathematik 0 und 1 als auch Bausteintext 0 und 1 probiert leider ohne Erfolg.!

                            Präsentation4.png

                            paul53 2 Replies Last reply Reply Quote 0
                            • paul53
                              paul53 @Radler1 last edited by paul53

                              @radler1 sagte: leider ohne Erfolg.!

                              Du musst den Wert vergleichen - nicht die Objekt ID.

                              Blockly_DP_Props.JPG

                              Bilder bitte direkt hochladen (3. Symbol von rechts).

                              R 1 Reply Last reply Reply Quote 0
                              • R
                                Radler1 @paul53 last edited by

                                @paul53

                                vielen vielen Dank das war es!!!

                                1 Reply Last reply Reply Quote 0
                                • paul53
                                  paul53 @Radler1 last edited by

                                  @radler1
                                  Einfachere Version:

                                  Bild_2021-02-22_120041.png

                                  R 1 Reply Last reply Reply Quote 0
                                  • R
                                    Radler1 @paul53 last edited by

                                    @paul53
                                    sei bedankt auch dafür

                                    Radler1

                                    1 Reply Last reply Reply Quote 0
                                    • First post
                                      Last post

                                    Support us

                                    ioBroker
                                    Community Adapters
                                    Donate

                                    888
                                    Online

                                    31.9k
                                    Users

                                    80.1k
                                    Topics

                                    1.3m
                                    Posts

                                    javascript template
                                    4
                                    37
                                    2243
                                    Loading More Posts
                                    • Oldest to Newest
                                    • Newest to Oldest
                                    • Most Votes
                                    Reply
                                    • Reply as topic
                                    Log in to reply
                                    Community
                                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                    The ioBroker Community 2014-2023
                                    logo