Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Welche Namen haben Eure Sensoren/Aktoren?

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Welche Namen haben Eure Sensoren/Aktoren?

    This topic has been deleted. Only users with topic management privileges can see it.
    • I
      ignis-draco last edited by ignis-draco

      @MartinP

      Ja ich habe die alle per Hand angelegt. Ich kann mir nicht vorstellen wie man das Automatisieren soll.
      Als Beispiel ich habe aktuell unterschiedliche Thermostate im Einsatz der DPs zum setzten der Wusch Temperatur sind:

      zigbee2mqtt.0.0x1c34f1fffedbb33b.current_heating_setpoint
      zigbee2mqtt.0.0x54ef44100074026c.occupied_heating_setpoint
      maxcul.0.KEQ0447740.desiredTemperature
      

      Wie man sieht ist selbst nicht mal bei Zigbee2mqtt die Benennung einheitlich. Ich könnte mir nur vorstellen das man vielleicht einen Wizzard baut der ein die Erstellung erleichter. Aber wie der genau aussieht hängt halt ganz stark von der gewollten Strucktur.

      Die Order Struktur habe ich natürlich nicht von Hand angelegt.

      
      function createStruct()
      {
          # Wo sollen die Ordner Strukturen erstellt werden ?  
          let paths = ["0_userdata.0", "alias.0"]
          let floors = new Object()
          # Welche Etagen und räume gibt es 
          floors["eg"] = ["outdoor","wc","office","kitchen","sleeping_room","living_room","hallway"]
          # Es können beliebig viele Etagen und Räume angelegt werden 
          #  floors["og"] = ["child_room1", "wc", "hallway", "child_room1"]
          
          # Welche Funktion soll in jedem Raum angelegt werden. 
          let func = ["light", "audio", "clima", "pressend","power","speak", ]
          func.sort();
      
          for(const base of paths){
              if(!existsObject(base)){
                  console.log("base not exists!");		
              }else{
                  for(const [floor, rooms] of Object.entries(floors)){
                      rooms.sort()
                      for(const room of rooms){
                          var path_tmp = base + "." + floor + "." + room
                         // if(!existsObject(path_tmp)){
                              setObject(path_tmp, {
                                  type: 'folder',
                                  common: {
                                      name: room
                                  },
                                  native: {}
                              });
                          //}
                          for (const item of func){
                              let path2_tmp = path_tmp + "." + item
                            //  if(!existsObject(path2_tmp)){
                                  setObject(path2_tmp, {
                                      type: 'folder',
                                      common: {
                                          name: item
                                      },
                                      native: {}
                                  });                    
                           //   }
                          }
                      }
                  }
              } 
          }
      
         //  ##################### Userdata global ###############
          # Welche Ordner sollen dann im 0_userdata.0.global angelegt werden 
          let glob = ["radio", "timer", "refuel", "weather", "shopping", "clima"]; 
          glob.sort();
          if(!existsObject("0_userdata.0.global")){
               setObject("0_userdata.0.global", {
                  type: 'folder',
                  common: {
                      name: "Global"
                  },
                  native: {}
              });
          }
          for(const item of glob){
              if(!existsObject("0_userdata.0.global."+item)){
               setObject("0_userdata.0.global."+item, {
                  type: 'device',
                  common: {
                      name: item
                  },
                  native: {}
              });
              }
          }
          //  ##################### alias global ###############
          # Welche Ordner sollen dann im alias.0.global angelegt werden    
          let glob2 = ["audio", "clima"]; 
          glob2.sort();
          if(!existsObject("alias.0.global")){
               setObject("alias.0.global", {
                  type: 'folder',
                  common: {
                      name: "Global"
                  },
                  native: {}
              });
          }
          for(const item of glob2){
              if(!existsObject("alias.0.global."+item)){
               setObject("alias.0.global."+item, {
                  type: 'device',
                  common: {
                      name: item
                  },
                  native: {}
              });
              }
          }
      }
      
      createStruct();
      

      Ach und die Sachen mit den unterschiedlichen Einheiten solange es man es umrechnen oder übersetzten kann lässt sich das hinbekommen. Z.b. Der device-reminder Adapter gibt bei einem gerät wenn es an ist "in action" raus. Für mich ist an der stelle ein True oder False besser. durch

      val === 'in action' ? true : false
      

      Das ich im "Alias Read-Function" eingetragen habe steht im DP ein true wenn "in action" ist ansonsten ein false.

      1 Reply Last reply Reply Quote 0
      • MartinP
        MartinP last edited by

        @ignis-draco Das Feature mit der meiner Meinung nach größten Sexyness wird als gegeben vorausgesetzt - dass man in den Aliasen auch Umrechnungsfunktionen ausführen lassen kann ist ja eigentlich ein sehr hilfreiches Feature. Sozusagen Hilfe bei Navigation, Organisation und Transformation 😉

        Alleine deshalb werde ich mich da wohl doch mal etwas genauer einlesen.
        Die Frage ist, wann man mit dem Nutzen von Aliasen anfängt.
        Ich habe nur meinen Heizkörperthermostaten und 4...5 Zwischenstecker. Dazu noch einen Smartmeter-Lesekopf, und ein Auslesescript für Fritzbox-Daten...

        Aber vielleicht ist es nicht gut, zu warten bis der Leidensdruck zu groß wird ...

        1 Reply Last reply Reply Quote 0
        • I
          ignis-draco last edited by ignis-draco

          @MartinP

          Ich würde sagen, es kommt darauf an, was man selbst baut.
          Wenn man nur fertige Adapter nimmt und diese an Geräte (z.B. heatingcontrol) anschließt, dann macht es das Ganze nur übersichtlicher, mehr aber auch nicht. Wenn man aber selbst Scripte schreibt (oder Blockly) dann würde ich sofort damit anfangen. Die ersten Scripte von mir sind entstanden als es noch keine Aliase gab. Da habe ich teilweise mit Whitespaces und festen Pfaden gearbeitet. Wenn ich ein neues Gerät hatte oder ein Gerät geändert habe musste ich das an 4-5 Stellen anpassen. Da hätte ich schon beim zweiten Gerät von der Struktur profitiert. Nicht ohne Grund habe ich alle Skripte so überarbeitet, dass ich nur noch mit einem Selektor auf die Geräte zugreife. Wenn ich jetzt eine neue Lampe kaufe, binde ich die z.B. per Zigbee ein, lege den Alias an und schon ist die Lampe zeitgesteuert gedimmt und per Telegramm steuerbar ohne das ich auch nur eine Zeile im Quellcode ändern muss.
          Also wenn man vorhat selbst Skripte zu bauen (was meiner Meinung nach der Hauptgrund ist ioBroker zu verwenden) dann sollte man gleich am ersten Tag damit anfangen um keine Altlasten aufzubauen.

          1 Reply Last reply Reply Quote 0
          • da_Woody
            da_Woody last edited by

            @martinp sagte in Welche Namen haben Eure Sensoren/Aktoren?:

            Die Frage ist, wann man mit dem Nutzen von Aliasen anfängt.

            IMHO gleich von anfang an!
            kann mich noch gut erinnern, wie wir damals zu zweit 2 tage gesessen sind und für jeden alias, damals noch über das script, jeden alias manuell angelegt haben. ein vertipper, nochmal. frustrierend... 😞
            mit dem aliasmanager ist das leben schon einfacher geworden...

            1 Reply Last reply Reply Quote 0
            • MartinP
              MartinP last edited by MartinP

              @da_woody Habe erste Versuche gemacht, mit den "Konvertierungsfunktionen"...

              Habe "mqtt.0.thermostat.sensors.raum.temperature" meines Thermostaten ge-aliast und EIGENTLICH die Temperatur. die im Alias angezeigt wird als Fingerübung von °C in Kelvin konvertieren lassen ...

              4c0963db-e882-41b7-ae51-5be883b3ff6d-grafik.png

              Plötzlich sah der Grafana-Graph des Thermostaten etwas komisch aus (Wohlgemerkt aus dem original-datenpunkt gespeist mqtt.0.thermostat.sensors.raum.temperature) ...

              e7ccb8c4-7a33-4b42-911c-1f95d9e5c083-grafik.png

              Da muss ich mich wohl noch einmal damit beschäftigen, wie der reale Datenpunkt und sein Alias miteinander interagieren ...

              MartinP 1 Reply Last reply Reply Quote 0
              • MartinP
                MartinP @MartinP last edited by MartinP

                So richtig wird dieser Alias-Adapter wohl nicht mein Freund - meine Celsius<->Fahrenheit Kelvin Experimente haben den ioBroker LXC-Container in 100% CPU und Speicher getrieben ...
                Mal schauen, wie ich aus der Nummer wieder herauskomme ...

                NACHTRAG - Reboot des LXC-Containers und dann habe ich erstmal meine Alias-Basteleien wieder gelöscht, bevor sie noch Unheil anrichten...

                NACHTRAG 2 - ich bin mir völlig im Unklaren, warum der Alias-Datenpunkt solche Rückwirkungen auf den ioBroker haben kann. Selbst die Konsole des LXC-Containers ließ sich nicht mehr bedienen... Von da her gibt es überhaupt keine Infos, welche Prozesse da Amok gelaufen sind.

                Eigentlich braucht man für die Nutzung ja drei Arten von Aliasen:

                1. Lesen eines Messwertes aus einem realen Datenpunkt
                2. Schreiben eines Messwertes in einen realen Datenpunkt
                3. Beides , z. B. wenn man den Schaltzustand einer Steckdose über ein Alias schreiben und auch auslesen will...

                Würde wirklich gerne wissen, wie es zu diesem Amoklauf gekommen ist, und in welcher Weise da das Nutzen einer Umrechnungsfunktion für beide Richtungen eine Rolle gespielt hat. Die Rückwirkung der Umrechnung im Alias-Datenpunkt auf den Original-Datenpunkt finde ich auch sehr irritierend....

                Legt der Alias-Adapter womöglich gar keine "Schatten" Datenpunkte an, sondern arbeitet sich irgendwie an den verknüpften Original-Datenpunkten ab?

                1 Reply Last reply Reply Quote 0
                • I
                  ignis-draco last edited by

                  @MartinP

                  Kann es sein das du eine Endlosschleife gebaut hast ?

                  1. gerät schreibt in "mqtt.0.thermostat.sensors.raum.temperature"
                  2. "mqtt.0.thermostat.sensors.raum.temperature" hat einen neuen Wert
                  3. der umgewandelt wird
                  4. der neue Wert wir in z.b "alias.0.dev.local_temp_kelvin" geschrieben.
                  5. es gibt einen neuen Wert in "alias.0.dev.local_temp_kelvin"
                  6. Dieser Wert wird umgewandelt
                  7. der neue wert wird nach "mqtt.0.thermostat.sensors.raum.temperature" geschrieben
                  8. "mqtt.0.thermostat.sensors.raum.temperature" hat einen neuen Wert und es geht mit 3 wieder los.

                  Lass mal die write Funktion weg. Bei mir läuft das in einem LXC mit nur read seit heute morgen 6 Uhr ohne Probleme.

                  Ich finde es übrigen sehr komisch das du eine DP sowohl lesend als auch schreibend verwendest.
                  Normaler weiße hat gibt es doch immer eine set und eine current oder so.

                  P.S. An die die sich besser damit auskennen könnte es sein das bei dem schreiben von
                  "mqtt.0.thermostat.sensors.raum.temperature" nach "alias.0.dev.local_temp_kelvin" das ack auf True gesetzt werden muss?

                  MartinP 1 Reply Last reply Reply Quote 0
                  • MartinP
                    MartinP @ignis-draco last edited by MartinP

                    @ignis-draco said in Welche Namen haben Eure Sensoren/Aktoren?:

                    Ich finde es übrigen sehr komisch das du eine DP sowohl lesend als auch schreibend verwendest.
                    Normaler weiße hat gibt es doch immer eine set und eine current oder so.

                    Habe geschaut - weder im Sonoff-Adapter für die NOUS A1T Tasmota Steckdose, noch in der Fritz!DECT 200 gibt es diese Trennung ...

                    Die ESP8266 Firmware für den Thermostaten habe ich selber programmiert - da hätte ich die Freiheit, das zu ändern ...

                    Der Alias-Adapter scheint sich ganz schön genau umzuschauen ...

                    Habe den Alias-Punkt für die Raumtemperatur gestern komplett gelöscht, und gerade wieder angelegt ...

                    Da gibt es einen Verweis auf die Influx-DB - trotzdem die EIGENTLICH Direkt auf den original-Datenpunkt schaut - das würde ggfs. die Rückwirkung erklären ...

                    {
                      "type": "state",
                      "common": {
                        "name": "thermostat/sensors/raum/temperature",
                        "role": "variable",
                        "type": "number",
                        "read": true,
                        "write": true,
                        "alias": {
                          "id": "mqtt.0.thermostat.sensors.raum.temperature"
                        },
                        "custom": {
                          "influxdb.0": {
                            "enabled": true,
                            "storageType": "",
                            "aliasId": "Raumtemperatur-ArbeitszimmerMartin",
                            "debounceTime": 0,
                            "blockTime": 0,
                            "changesOnly": true,
                            "changesRelogInterval": 0,
                            "changesMinDelta": 0,
                            "ignoreBelowNumber": "",
                            "disableSkippedValueLogging": false,
                            "enableDebugLogs": false,
                            "debounce": 1000
                          }
                        }
                      },
                      "_id": "alias.0.Arbeitszimmer.temperature",
                      "native": {},
                      "from": "system.adapter.admin.0",
                      "user": "system.user.admin",
                      "ts": 1700128067582,
                      "acl": {
                        "object": 1636,
                        "state": 1636,
                        "owner": "system.user.admin",
                        "ownerGroup": "system.group.administrator"
                      }
                    }
                    

                    Was soll mit klicken von entsprechendem "x" gelöscht werden?

                    58237a6d-d2d9-4eb1-9f39-83366db8e992-grafik.png

                    "Konverter beim Schreiben" oder oben den Haken bei "unterschiedliche IDs ..:" setzen und "Alias write State" Löschen?

                    MartinP 1 Reply Last reply Reply Quote 0
                    • MartinP
                      MartinP @MartinP last edited by MartinP

                      Habe es erstmal so probiert - das "x" weggemacht

                      ddb618e2-f0ff-47c2-93d9-709d77d2dfcd-grafik.png

                      Amoklauf bleibt bisher aus 😉

                      Nachtrag - bei dieser Lösung gibt es trotzdem Rückwirkung auf die Grafana-Grafen

                      2a9b53a5-6692-4b3c-981f-bf72c0ea53cd-grafik.png

                      Nachtrag 2. mit "Unterschiedliche ID verwenden", und Aus-Xen der Schreib-ID gibt es eine Fehlermeldung...

                      a4e4871f-2260-485d-adf9-1ae86be00f37-grafik.png

                      MartinP 1 Reply Last reply Reply Quote 0
                      • MartinP
                        MartinP @MartinP last edited by MartinP

                        So, diese Lösung scheint die Schleife zu vermeiden - geschrieben wird aber in den extra angelegten Userdata Dummy-Datenpunkt in Userdata nicht ...

                        595bb148-4534-43af-aeb8-2d46eb25ba0e-grafik.png

                        EDIT: Auch in diesem Szenario gibt es Rückwirkungen auf die influx-DB und die Grafana Darstellung ...

                        EDIT2: Ich HASSE Assistenten...

                        Der Alias hat irgendwie AUTOMATISCH die Influx-DB Parametrierung vom Mutter-Datenpunkt kopiert- oder die Datenstrukturen hinter dem Alias sind so schlicht ... :

                        Es könnte auch eine Fehl-Interpretation von "lesen" und "schreiben" vorliegen
                        ddbb783f-b891-4d1a-81f0-9d7ecff5dd60-grafik.png

                        MartinP ? 2 Replies Last reply Reply Quote 0
                        • MartinP
                          MartinP @MartinP last edited by MartinP

                          So, nachdem ich die Influx-Verknüpfung im Alias-Datenpunkt gelöscht habe, ist erstmal Ruhe.

                          Im Endausbau wird es sicherlich sinnvoll sein, von den Alias-Datenpunkten aus in die Influx-DB zu schreiben. um es z. B. bei Geräteaustausch auch an der Influx Front leichter zu haben...

                          Habe dann noch im Common-Reiter des Alias-Bearbeiten-Fensters die Haken Readable und Writeable gefunden, und den letzteren abgeschaltet

                          1 Reply Last reply Reply Quote 0
                          • DJMarc75
                            DJMarc75 last edited by

                            öööhm, geht es noch um das Thema vom Beitragstitel ? 😉

                            MartinP 1 Reply Last reply Reply Quote 0
                            • MartinP
                              MartinP @DJMarc75 last edited by MartinP

                              @djmarc75 Jedenfalls war ich inspiriert vom Thema des Beitragstitels, als ich Aliases ausprobiert habe, und die Erfahrungen mit der Sperrigkeit des Themas gemacht habe. Hätte auch damit enden können dass meine Antwort gewesen wäre "ihre Geburtsnamen", weil ich den Alias-Adapter für zu riskant erfahren hätte....

                              Die Überschrift kann man schon als relativ allgemeine Bitte um Erfahrungen mit dem Alias-Adapter (der aber gar nicht in der Überschrift erwähnt wird) gelesen werden...

                              EDIT: Auch nicht im Hinterkopf des Fragestellers bei der Threaderöffnung war ....

                              1 Reply Last reply Reply Quote 0
                              • ?
                                A Former User @wcag22 last edited by

                                @pi-ter

                                Bei mir ist die name convention relativ einfach: <art><device><raum><no.> also Plug_Ventilator_BueroB_1 damit weiss ich, wo was gemeint ist. Die IP etc ist erstmal unwichtig, da sich diese aendern kann, arbeite der einfachheit gern mit dhcp-servern und dns, wenn ich den Name weiss, ist mir die IP egal.

                                1 Reply Last reply Reply Quote 0
                                • ?
                                  A Former User @MartinP last edited by

                                  @martinp sagte in Welche Namen haben Eure Sensoren/Aktoren?:

                                  Der Alias hat irgendwie AUTOMATISCH die Influx-DB Parame

                                  Moin,

                                  ja, steht auch da!
                                  71260bad-3136-49fa-a1d4-cafaddacc081-grafik.png
                                  Unter optionen:
                                  5ab76799-0c70-4caa-9578-d6dfcdc79f63-grafik.png
                                  Wenn man da den Haken wegnimmt, dann sollte da erst gar nichts angelegt werden.

                                  VG
                                  Bernd

                                  1 Reply Last reply Reply Quote 0
                                  • MartinP
                                    MartinP last edited by

                                    @ilovegym Das ist EIN Bandwurm-Name für ein Gerät. Über den Alias-Adapter würde man das ggfs. so machen ...

                                    Alias.0.Erdgeschoss.BueroB1.Ventilator.Power

                                    Dass es ein Zwischenstecker ist, der den Ventilator steuert, ist erstmal irrelevant, und braucht auf dieser Ebenen nicht zu interessieren. Vielleicht gibt es - wenn der Ventilator mal kaputt geht Ersatz, der eine integrierte Fernsteuerfähigkeit hat, und deshalb keinen Zwischenstecker mehr braucht...

                                    ? 1 Reply Last reply Reply Quote 0
                                    • ?
                                      A Former User @MartinP last edited by

                                      @martinp

                                      Hmm ich hab über 500 Devices, da möchte ich gerne wissen, nach was ich suchen muss… 😉

                                      Aber jedem seine Philosophie ..

                                      1 Reply Last reply Reply Quote 0
                                      • MartinP
                                        MartinP last edited by

                                        Es muss ja nicht nur ein Ordnungssystem geben - man kann ja mehrere Alias-Bäume anlegen, die verschiedene Baum-Strukturierte Sichten auf die Geräte bzw. Datenpunkte bieten.

                                        .... oder den eigentlichen Namen des Gerätes nach Deinem Schema anlegen, und dann trotzdem einen Alias-Baum darüberlegen ...

                                        Wenn man z. B. das Raum-Thermometer einmal als MQTT-Device hat, und in einem anderen Raum das Thermometer in einer FritzDECT Dose nutzt, wird es z. B. mühsam, ein allgemeingültiges Skript für beide Thermometer anzulegen ...

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

                                        Support us

                                        ioBroker
                                        Community Adapters
                                        Donate
                                        FAQ Cloud / IOT
                                        HowTo: Node.js-Update
                                        HowTo: Backup/Restore
                                        Downloads
                                        BLOG

                                        723
                                        Online

                                        32.0k
                                        Users

                                        80.5k
                                        Topics

                                        1.3m
                                        Posts

                                        10
                                        53
                                        2600
                                        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