Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. HMIP Datenpunkte umbenennen

    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

    HMIP Datenpunkte umbenennen

    This topic has been deleted. Only users with topic management privileges can see it.
    • H
      hinsen2k last edited by

      Moin zusammen,

      ich nutze mit dem HMIP Access Point u.a. die Fensterkontakte, welche im iobroker beispielhaft wie folgt aussehen:

      Screenshot 2022-01-23 010921.png

      Nun möchte ich per id vom Selektor den Fensterstatus abrufen und in eine Liste schreiben. Das ist erstmal kein Problem.
      Allerdings erhalte ich als Ausgabe immer nur "windowState" - was im Grunde zwar richtig ist, mich aber bei mehreren Fenstern nicht wirklich weiter bringt ;-).
      Am liebsten würde ich auf den Namen vom Oberordner zurückgreifen (hier: Fenster Badezimmer). Gibt es da eine Chance?
      Ansonsten hatte ich noch gedacht, eigene Datenpunkte zu erstellen (die einen eindeutigen Namen haben) in die ich die aktuellen windowsState's vorab reinkopiere. Aber das scheint mir zu umständlich, oder?

      Mein bisheriges Blockly:

      0f39e5d5-2258-4b04-8b50-7eb2bad747cf-image.png

      und die dazugehörige Funktion:

      d927719f-21ad-416d-9e96-8ebaf019c33e-image.png
      Vielleicht kann man ja die Funktion anpassen? Nur da habe ich leider noch so gar keine Ahnung von.

      Vielen Dank schonmal für Eure Tipps und Denkanstöße!

      VG
      Sven

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

        @hinsen2k

        Moing,
        ich kenne mich in Blocky nun leider garnicht aus, mach alles in Script aber hier möchte ich dir mal beschreiben wie ich das gemacht habe.

        • Ich habe die Sensoren einem Raum zugeordnet (Aufzählungen/Rooms) und der Gruppe Schliessung (Aufzählung/functions).
        • Dann habe ich alle Sensoren dieser Gruppe "subscribed" (schreckliches Deutsch ich weis).
          Das mache ich in Script mit:
        $('channel[state.id=*.STATE](functions=Schliessung)').each(function (id, i) {
        

        Hier müsstest du schauen wie das in Blocky geht.

        • Wenn sich nun der State eines Sensors ändert, prüfe ich mit:
        if(raumliste.indexOf(raum) != -1){
        

        in welchem Raum der Sensor ist und verarbeite diese Information dann weiter.

        Alternativ gibt es auch noch den Alias-Adapter (den ich nicht benutze), aber wie ich es verstanden habe kann man dort jedem Datenpunkt einen neuen "Wunsch-Namen" vergeben, hätte auch seinen Charme weil man beim Austausch (bsp. wegen Defekt) nicht in jedem Script sondern nur an einer Stelle den Sensor auswechseln muss.

        Ich hoffe ich konnte dir ein wenig Helfen

        H 1 Reply Last reply Reply Quote 0
        • H
          hinsen2k @Peoples last edited by

          @peoples

          Danke, aber ich verstehe bei Skripten nur Bahnhof 😕

          ABER: Du hast mich auf eine Idee gebracht. Ich könnte bestimmt auch die Raumnamen mit den IDs vom Selektor auslesen und dann weiterverarbeiten.
          Da muss ich mal schauen, wie ich das hinbekomme. 😉

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

            @hinsen2k sagte: Vielleicht kann man ja die Funktion anpassen?

            Siehe hier mit noch einer weiteren Stufe (wegen "channels"). JS-Funktion mit Ergebnis deviceName(id):

                id = id.substring(0, id.lastIndexOf('.'));
                if(existsObject(id) && getObject(id).type == 'device') return getObject(id).common.name;
                id = id.substring(0, id.lastIndexOf('.'));
                if(existsObject(id) && getObject(id).type == 'device') return getObject(id).common.name;
                id = id.substring(0, id.lastIndexOf('.'));
                if(existsObject(id) && getObject(id).type == 'device') return getObject(id).common.name;
            
            1 Reply Last reply Reply Quote 0
            • First post
              Last post

            Support us

            ioBroker
            Community Adapters
            Donate

            703
            Online

            31.8k
            Users

            79.9k
            Topics

            1.3m
            Posts

            3
            4
            383
            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