Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Globale Funktionen für Alias Konvertierung?

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Globale Funktionen für Alias Konvertierung?

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

      Hallo zusammen,

      hab heute mal meinen ioBroker etwas aufgeräumt, und dabei den Grossteil meiner durch Javascript "behandelten" Datenpunkte in Devices/Aliase verfrachtet (lagen noch nicht mal in 0_userdata...)

      Man kann ja im Einlesen der Aliases bereits Daten konvertieren, z.B. mit JSON.parse()... Temperaturen etc. in 'einfach lesbare' Zahlendarstellungen für's vis, NSPanel etc. Hab ich soweit hinbekommen, OK

      Was ich nicht hinbekommen habe, bzw. einen Weg suche: wie kann ich beim Einlesen in den Alias weitere (eigene) Umrechnung mittels externer Funktionen machen?

      Beispiel: ich habe einen Datenpunkt der mir eine Restlaufzeit meiner USV in Sekunden angibt. Den habe ich bisher mit einer kleinen JavaScript Funktionen in einen String Aal 'HH:MM:SS' gewandelt.

      Ich hab versucht diese Funktion in einem Script im global Ordner abzulegen. Der Gerätemanager findet diese Funktion aber nicht...

      Wie kann ich dieses Thema lösen?

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

        @xelarep sagte: Funktion in einem Script im global Ordner abzulegen.

        Ein Alias versteht nur natives Javascript und kennt den Javascript-Adapter nicht. Aliase werden im js-controller verarbeitet.

        X 1 Reply Last reply Reply Quote 1
        • X
          xelarep @paul53 last edited by

          @paul53 OK, danke, sowas in der Art hatte ich vermutet. Dann muss ich wohl den Umweg über meine bisherige Konvertierung und nem zusätzlichen DP im 0—userdata gehen, und dort den Alias drauf setzen…

          Es sei denn, jemand hat eine andere Idee…

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

            @xelarep sagte: DP im 0—userdata gehen, und dort den Alias drauf setzen…

            Ein Alias auf einen eigenen DP unter "0_userdata.0" macht keinen Sinn (Ressourcenverschwendung).

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

              @paul53 Du meinst ich soll nach Auslesen und Konvertieren direkt in den Alias reinschreiben?

              Codierknecht 1 Reply Last reply Reply Quote 0
              • Codierknecht
                Codierknecht Developer Most Active @xelarep last edited by

                @xelarep sagte in Globale Funktionen für Alias Konvertierung?:

                @paul53 Du meinst ich soll nach Auslesen und Konvertieren direkt in den Alias reinschreiben?

                Nein.
                In einen Alias schreibst Du nicht selbst.
                Aber einen DP in 0_userdata.0 schreibst Du ja mit 'nem Script. Dann kannst Du dort ja auch schon die passende Konvertierung vornehmen.

                X 1 Reply Last reply Reply Quote 1
                • X
                  xelarep @Codierknecht last edited by

                  @codierknecht so meinte ich das ja: bei Wertminderung per MQTT den per javascript konvertierten Wert in 0_userdata reinschreibe, darauf dann den Alias setzen

                  Codierknecht 1 Reply Last reply Reply Quote 0
                  • Codierknecht
                    Codierknecht Developer Most Active @xelarep last edited by Codierknecht

                    @xelarep sagte in Globale Funktionen für Alias Konvertierung?:

                    den per javascript konvertierten Wert in 0_userdata reinschreibe

                    Und warum darauf nochmal einen Alias?
                    Du schreibst doch per Script in 0_userdata. Da kannst Du doch schon konvertieren wie Du es gerne hättest.

                    X 1 Reply Last reply Reply Quote 0
                    • X
                      xelarep @Codierknecht last edited by

                      @codierknecht Im (Geräte-)Alias werden noch andere Daten gesammelt 😉

                      Codierknecht 1 Reply Last reply Reply Quote 0
                      • Codierknecht
                        Codierknecht Developer Most Active @xelarep last edited by

                        @xelarep
                        Du meinst, Du hast unterhalb von alias.0 eine komplette Struktur für das Gerät und willst dort dann alles "zusammenhalten"?
                        Das kannst Du ja halten wie ein Dachdecker - Deine freie Wahl.
                        Auch wenn ein Alias auf einen eigenen DP etwas überflüssig ist.

                        T 1 Reply Last reply Reply Quote 0
                        • T
                          ticaki Developer @Codierknecht last edited by

                          @codierknecht sagte in Globale Funktionen für Alias Konvertierung?:

                          @xelarep
                          Auch wenn ein Alias auf einen eigenen DP etwas überflüssig ist.

                          Verstehe nicht wieso. Wo ist den der Unterschied zwischen einen Skript das für sich zusammengehöre Datenpunkte nicht kreuz und quer durch die Landschaft verteilt und einem Adapter? Ja den Adapter kann man nicht ändern, aber so falsch ist das nicht das Datenpunkt die von X hergestellt werden auch dort liegen wo man sie vermutet. 🙂

                          1 Reply Last reply Reply Quote 0
                          • B
                            Blockmove last edited by

                            @codierknecht said in Globale Funktionen für Alias Konvertierung?:

                            Auch wenn ein Alias auf einen eigenen DP etwas überflüssig ist.

                            Wenn man so argumentiert, dann sind Alias allgemein etwas überflüssig 😀

                            Eigentlich sollen sie ja nur Gerätetausch erleichtern und für Übersichtlichkeit sorgen. Da ist es doch egal ob die Daten von nem Adapter oder von einem Script kommen.

                            Das ist doch - aus meiner Sicht - das Schöne an ioBroker dass es verschiedene Wege gibt 👍

                            1 Reply Last reply Reply Quote 1
                            • Codierknecht
                              Codierknecht Developer Most Active last edited by

                              @ticaki @Blockmove
                              Aliase benutzt man vermutlich meistens, um den Tausch von Geräten zu erleichtern.
                              Wenn dahinter aber ein DP aus 0_userdata steckt, muss auf jeden Fall auch ein Script angepasst werden.
                              Daher finde ich in diesem Fall einen Alias etwas überflüssig.
                              Vor allem dann, wenn man im Alias nochmal eine Konvertierung vornehmen will, die man genau so gut auch gleich im Script machen kann.

                              Nutzt man Aliase, um DP "zusammenzuhalten", kann das ja jeder halten wie er/sie will.

                              X 1 Reply Last reply Reply Quote 0
                              • X
                                xelarep @Codierknecht last edited by

                                @codierknecht sagte in Globale Funktionen für Alias Konvertierung?:

                                Nutzt man Aliase, um DP "zusammenzuhalten", kann das ja jeder halten wie er/sie will.

                                @codierknecht genau deswegen ja meine Eingangsfrage 😉
                                Ich würde halt gerne die 0_userdata vermeiden und direkt im Alias konvertieren. Dort kann ich aber halt nur Grundrechenarten oder JSON ein/auspacken 😞

                                Ich hab die letzten Jahre genügend Hardware gewechselt und wollte deswegen im Zuge der Aufräumarbeiten mir das Leben halt so angenehm wie möglich machen. Dazu gehören für mich dann Aliase - was ja auch schon mal ein Erleichterung ist.

                                Jetzt könnte ich sogar den flot wieder behalten 😬

                                Codierknecht paul53 2 Replies Last reply Reply Quote 0
                                • Codierknecht
                                  Codierknecht Developer Most Active @xelarep last edited by

                                  @xelarep sagte in Globale Funktionen für Alias Konvertierung?:

                                  Ich würde halt gerne die 0_userdata vermeiden und direkt im Alias konvertieren

                                  Wie Du mittlerweile erfahren hast, geht das so nicht.
                                  0_userdata vermeiden und direkt in einen Alias schreiben geht nicht.
                                  Da in 0_userdata aber mit einem Script geschrieben wird, kannst Du ja dort die Konvertierung vornehmen und den Wert bereits so wegschreiben wie Du ihn gerne hättest.
                                  Den Alias benutzt Du dann nur zum "zusammenhalten".

                                  Wenn sich an der Ecke die Hardware ändert, hilft Dir der Alias ja wenig. Das Script muss sowieso angepackt werden.

                                  X paul53 2 Replies Last reply Reply Quote 0
                                  • X
                                    xelarep @Codierknecht last edited by

                                    @codierknecht Deswegen habe ich das ja gestern genau so gemacht 🙂

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

                                      @codierknecht sagte: hilft Dir der Alias ja wenig. Das Script muss sowieso angepackt werden.

                                      In Skripten solle man nur Alias-DP und eigene DP verwenden: Im Alias kann man (unvollständige) Vorarbeit durch Konvertierung machen, im eigenen Datenpunkt steht dann das endgültige Ergebnis.

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

                                        @xelarep sagte: Restlaufzeit meiner USV in Sekunden angibt. Den habe ich bisher mit einer kleinen JavaScript Funktionen in einen String Aal 'HH:MM:SS' gewandelt.

                                        Beispiel für Javascript-Funktion mit Dauern im Alias und formatiert in eigenen Datenpunkten:

                                        const ids = ['alias.0.abc', 'alias.0.xyz']; // enhalten Dauern in s
                                        
                                        on(ids, function(dp) {
                                            const id = dp.id.replace('alias.0.', '0_userdata.0.');
                                            setState(id, formatDate(1000 * dp.state.val, 'hh:mm:ss'), true);
                                        });
                                        

                                        Es geht so einfach, wenn man unter "alias.0" und "0_userdata.0" die gleiche ID-Struktur verwendet.

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

                                          @xelarep sagte: 0_userdata vermeiden und direkt im Alias konvertieren.

                                          new Date(1000 * (val + 60 * new Date().getTimezoneOffset())).toLocaleTimeString('de-DE')
                                          

                                          ... bezieht sich auf Wandlung Sekunden nach "hh:mm:ss".

                                          EDIT(18:15 Uhr): Korrigiert um Zeitzone.

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

                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          1.0k
                                          Online

                                          31.7k
                                          Users

                                          79.8k
                                          Topics

                                          1.3m
                                          Posts

                                          5
                                          19
                                          576
                                          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