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.
    • Homoran
      Homoran Global Moderator Administrators @Michael Dolp last edited by

      @Michael-Dolp Nicht das was du willst, aber auch eine Lösung wäre:
      https://download.gira.de/data3/PI_Kompensationsmodul_DE.pdf

      Habe es selber nicht, aber nur gutes davon gehört

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

        @Michael-Dolp sagte:

        Also z.B.
        (Min-Level) aus 12% wird > 0%
        (Max_Level) aus 80% wird > 100%

        alias: {
           read: "Math.round((val - 12) / 0.68)",
           write: "Math.round(0.68 * val + 12)",
           id: '...'
        }
        
        Michael Dolp 1 Reply Last reply Reply Quote 1
        • Michael Dolp
          Michael Dolp @paul53 last edited by

          @paul53
          Vielen Dank - geht also doch mit Dreisatz, manchmal denk ich einfach zu kompliziert. Ich werde es morgen mal probieren und dann entsprechend Feedback bzw. Beispiel geben.

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

            @Homoran
            Danke, damit scheint wohl eher auf Spatzen mit der .50er geschossen zu werden aber dennoch interessant und vielleicht mal nützlich.

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

              @Michael-Dolp sagte:

              Ich werde es morgen mal probieren und dann entsprechend Feedback bzw. Beispiel geben.

              Ich weiß nicht, ob inzwischen im js-controller der Wert auf den Bereich zwischen Min und Max begrenzt wird, denn es war früher nicht so und es wurde mal im Javascript-Adapter ergänzt.

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

                @paul53
                Das sagt mir jetzt leider nichts, inwiefern betrifft / beeinflusst dies den Lösungsansatz?

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

                  @Michael-Dolp sagte:

                  inwiefern betrifft / beeinflusst dies den Lösungsansatz?

                  Das werden wird sehen. Evtl. muss noch eine Begrenzung für "read" ergänzt werden.

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

                    Habs doch jetzt gleich probiert - es geht soweit, aber ich kriege keine Werte angezeigt (siehe Screenshot). Ich kann einen Wert eingeben und es regelt wie gewünscht in umgerechneter Form den "hm-rpc.0.NEQ0044188.1.LEVEL" das Alias "alias.0.OG.Galerie.Bürobeleuchtung" selbst zeigt aber keine Werte an. Wo habe ich den Fehler?

                    alt text

                    CODE - "alias.0.OG.Galerie.Bürobeleuchtung":

                    {
                      "from": "system.adapter.alias.0",
                      "user": "system.user.admin",
                      "ts": 1605979923610,
                      "common": {
                        "name": "OG_Galerie_Bürobeleuchtung",
                        "unit": "%",
                        "role": "value.dimmer",
                        "type": "number",
                        "alias": {
                          "id": "hm-rpc.0.NEQ0044188.1.LEVEL",
                          "def": 0,
                          "min": 0,
                          "max": 100,
                          "write": "(val * 9/5) + 32",
                          "read": "(val − 32) * 5/9"
                        }
                      },
                      "native": {
                        "CONTROL": "DIMMER.LEVEL",
                        "ID": "LEVEL",
                        "TYPE": "FLOAT",
                        "UNIT": "100%",
                        "DEFAULT": 0,
                        "FLAGS": 1,
                        "MAX": 1,
                        "MIN": 0,
                        "OPERATIONS": 7,
                        "TAB_ORDER": 0
                      },
                      "acl": {
                        "object": 1636,
                        "owner": "system.user.admin",
                        "ownerGroup": "system.group.administrator",
                        "state": 1636
                      },
                      "_id": "alias.0.OG.Galerie.Bürobeleuchtung",
                      "type": "state"
                    }
                    

                    Ist das Objekt bzw. der Code überhaupt in diesem Umfang nötig und wo liegt der Fehler - scheint das von Dir prognostizierte evlt. Problem zu sein oder?

                    Für weitere Hilfe wäre ich sehr dankbar.

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

                      @Michael-Dolp:

                      wo liegt der Fehler?

                      Hast du den Alias manuell erstellt ? Ich korrigiere mal.

                        "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": "Math.round(0.68 * val + 12)",
                             "read": "Math.round((val - 12) / 0.68)"
                          }
                        },
                        "native": {}, // darf nur ein leeres Objekt enthalten !
                      
                      Michael Dolp 1 Reply Last reply Reply Quote 0
                      • Michael Dolp
                        Michael Dolp @paul53 last edited by Michael Dolp

                        @paul53
                        Ja, ich bin wie bereits erwähnt nicht wirklich fit im Coden.. Aber Dank Dir funktioniert es nun perfekt! (siehe Screenshot)

                        alt text

                        Der komplette Code zu diesem Beispiel:

                        HomeMatic Dimmer Device: hm-rpc.0.NEQ0044188.1.LEVEL
                        Virtual Device: alias.0.OG.Galerie.Bürobeleuchtung
                        Dim-Range: 12-80%

                        Berechnung des Faktors hier "0.68":
                        Dim.Max - Dim.Min / 100 > (80 - 12) / 100 = 0.68
                        ( Wert 12 = Dim.Min )

                        {
                          "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": "Math.round(0.68 * val + 12)",
                              "read": "Math.round((val - 12) / 0.68)"
                            }
                          },
                          "native": {},
                          "acl": {
                            "object": 1636,
                            "owner": "system.user.admin",
                            "ownerGroup": "system.group.administrator",
                            "state": 1636
                          },
                          "_id": "alias.0.OG.Galerie.Bürobeleuchtung",
                          "type": "state"
                        }
                        

                        Vielen Dank für die schnelle Hilfe!

                        Sollte somit "gelöst" sein.

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

                          @Michael-Dolp sagte:

                          Dim-Range: 12-80%

                          Gib mal bei "hm-rpc.0.NEQ0044188.1.LEVEL" den Wert 85 ein und schau, welchen Wert der Alias annimmt.

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

                            @paul53
                            In dem Fall kommen wir auf 107% - kommt jetzt die erwähnte Begrenzung zum Einsatz?

                            Stimmt so oder:
                            Berechnung des Faktors hier "0.68":
                            Dim.Max - Dim.Min / 100 > (80 - 12) / 100 = 0.68
                            ( Wert 12 = Dim.Min )

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

                              @Michael-Dolp sagte:

                              kommt jetzt die erwähnte Begrenzung zum Einsatz?

                              Ja.

                                    "read": "val < 12 ? 0 : val > 80 ? 100 : Math.round((val - 12) / 0.68)"
                              
                              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:

                                "read": "val < 12 ? 0 : val > 80 ? 100 : Math.round((val - 12) / 0.68)"

                                Er gibt mir jetzt entsprechend nur noch "true" oder "false" aus. Geht also noch nicht.

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

                                  @paul53
                                  EDIT: "geht mit beiden"

                                  "type": "number" statt "state" dann gehts.

                                  Hier also der momentan perfekt funktionierende Code:

                                  {
                                    "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": "Math.round(0.68 * val + 12)",
                                        "read": "val < 12 ? 0 : val > 80 ? 100 : Math.round((val - 12) / 0.68)"
                                      }
                                    },
                                    "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.68":
                                  ( Dim.Max - Dim.Min ) / 100 > (80 - 12) / 100 = 0.68
                                  ( Wert 12 = Dim.Min )
                                  ( Wert 80 = Dim.Max )

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

                                    @Michael-Dolp sagte:

                                    Er gibt mir jetzt entsprechend nur noch "true" oder "false" aus.

                                    Seltsam. Wenn ich die Sequenz in Javascript teste, funktioniert es.

                                    var val = 8;
                                    log(val < 12 ? 0 : val > 80 ? 100 : Math.round((val - 12) / 0.68));
                                    
                                    Michael Dolp 2 Replies Last reply Reply Quote 0
                                    • Michael Dolp
                                      Michael Dolp @paul53 last edited by Michael Dolp

                                      @paul53
                                      Stimmt, ging auch mit "state" war also alles korrekt. Hang wohl irgendwo kurz.

                                      Vielen Dank für die sehr schnelle kompetente Hilfe Paul, das hat mit sehr weiter geholfen!

                                      Hab echt schon vorher einige Zeit rumgesucht und nichts gefunden... komisch, dass Niemand dieses Problem hat bzw. Dimmer Visualisiert, welche sich nicht auf 0 und 100 regeln lassen.

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

                                        @paul53
                                        Hi, jetzt muss ich leider nochmal stören - wenn ich in das Alias 0% schreibe wird das Device auf den "Min" Wert gesetzt und nicht ebenfalls auf "0" / OFF.

                                        Was müsste hierfür noch ergänzt werden?

                                        Aktueller Auszug Alias Code:

                                        "common": {
                                            "name": "OG_Galerie_Bürobeleuchtung",
                                            "unit": "%",
                                            "role": "level.dimmer",
                                            "type": "stater",
                                            "def": 0,
                                            "min": 0,
                                            "max": 100,
                                            "alias": {
                                              "id": "hm-rpc.0.NEQ0044188.1.LEVEL",
                                              "write": "Math.round(0.77 * val + 23)",
                                              "read": "val < 23 ? 0 : val > 100 ? 100 : Math.round((val - 23) / 0.77)"
                                            }
                                        
                                        paul53 1 Reply Last reply Reply Quote 0
                                        • paul53
                                          paul53 @Michael Dolp last edited by paul53

                                          @Michael-Dolp sagte:

                                          Auszug Alias Code:

                                          "type" ist falsch, richtig:

                                              "type": "number",
                                          

                                          Die Prüfung val > 100 kann entfallen.

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

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

                                            Die Prüfung val > 100 kann entfallen.

                                            Danke, aber ich glaube wir meinen was anderes - Wenn das Alias 0 ist, dann ist das Device 23
                                            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)"

                                            Nur so geht es nicht, da wird das Device immer 0

                                            Also praktisch ab 1% umrechnen - bei 0% beides auf 0% setzten

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            934
                                            Online

                                            31.7k
                                            Users

                                            79.9k
                                            Topics

                                            1.3m
                                            Posts

                                            javascript template
                                            4
                                            37
                                            2235
                                            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