Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Luft-Messdaten von OpenSenseMap auslesen

    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

    Luft-Messdaten von OpenSenseMap auslesen

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

      @Homoran sagte:

      name kommt eigentlich nur bei der Station vor, du nutzst es aber doch auch bei den Sensoren

      Die globale Variable Name enthält den Stationsnamen. Die lokale Variable Name (Funktionsparameter) enthält das Attribut "title" des Sensors.

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

        @Homoran sagte :

        zusätzlich zur ID
        Ich weiß nämlich nicht ob der Name eindeutig ist

        Diese Modifikation der ID sollte nicht schwer fallen ?

        Homoran 1 Reply Last reply Reply Quote 0
        • Homoran
          Homoran Global Moderator Administrators @paul53 last edited by

          @paul53
          Nicht dass ich mich schon wieder unpräzise ausgedrückt habe (ich weiß doch was ich meine 😉 )

          Es soll so aussehen:
          state_statt_Channel.png

          Bisher wird die ID nicht einzeln als DP angelegt sondern nur als "Pfad" zum Sensor.
          Außerdem soll der Name Editirbar sein.
          Einige Stationen heißen z.B. "Station" - das hilft keinem

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

            @Homoran sagte:

            Außerdem soll der Name Editirbar sein.

            Habe ich Dich falsch verstanden ? Du möchtest den Stationsnamen im Namen des Datenpunktes haben und nicht in der ID ?

            Homoran 1 Reply Last reply Reply Quote 0
            • Homoran
              Homoran Global Moderator Administrators @paul53 last edited by

              @paul53 sagte in Luft-Messdaten von OpenSenseMap auslesen:

              @Homoran sagte:

              Außerdem soll der Name Editirbar sein.

              Habe ich Dich falsch verstanden ? Du möchtest den Stationsnamen im Namen des Datenpunktes haben und nicht in der ID ?

              Ja!

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

                @Homoran
                Also etwa so ?

                Blockly_temp.JPG

                Homoran 1 Reply Last reply Reply Quote 0
                • Homoran
                  Homoran Global Moderator Administrators @paul53 last edited by Homoran

                  @paul53 weiss nicht - den part habe ich noch nicht komplett intus - sorry!

                  Das soll herauskommen:
                  ID_Name.png

                  MAP1 ist editierbar!


                  So habe ich es "gelöst":
                  ID_Name_Blockly.png


                  Und dabei die Funktion Stations-DP anlegen mit createState('Luftdaten.' + Station, {type:'device', read:true, write:true, name:Name}); im Vorfeld verwendet

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

                    @Homoran
                    Ach, Du hast einen zusätzlichen Datenpunkt angelegt. type = 'device' ist unzulässig !

                    Homoran 1 Reply Last reply Reply Quote 0
                    • Homoran
                      Homoran Global Moderator Administrators @paul53 last edited by Homoran

                      @paul53 sagte in Luft-Messdaten von OpenSenseMap auslesen:

                      @Homoran
                      type = 'device' ist unzulässig !

                      Ja - das waren noch die Knochen von meinem ersten Versuch - das Thema hatten wir ja schon.
                      Muss ich noch ändern

                      EDIT: cool ist ein Bool geworden 😉

                      Ach, Du hast einen zusätzlichen Datenpunkt angelegt.

                      geht es anders?

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

                        @Homoran sagte:

                        geht es anders?

                        Nicht mit createState(). Ich würde die Funktion erzeugeZahlDP() mit verwenden.

                        Blockly_temp.JPG

                        Homoran 1 Reply Last reply Reply Quote 1
                        • Homoran
                          Homoran Global Moderator Administrators @paul53 last edited by Homoran

                          @paul53 sagte in Luft-Messdaten von OpenSenseMap auslesen:

                          Ich würde die Funktion erzeugeZahlDP() mit verwenden.

                          ok - das ist dann eine Funktion weniger un Name ist da ja auch RW 😉

                          Ich hätte das aus "Strukturgründen" deshalb ja lieber als channel gehabt.

                          Und dummy kommt dann in den Pfad bei den Sensor-States statt Station?

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

                            @Homoran sagte:

                            Und dummy kommt dann in den Pfad bei den Sensor-States statt Station?

                            Nein, dummy ist das, was der Bezeichner sagt. Die Variable wird nur benötigt, weil die Funktion einen Wert zurück gibt, der an dieser Stelle nicht benötigt wird.

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

                              @Homoran sagte:

                              aus "Strukturgründen" deshalb ja lieber als channel gehabt.

                              Dann musst Du einen Javascript-Funktion mit setObject() verwenden.

                              Homoran 1 Reply Last reply Reply Quote 0
                              • Homoran
                                Homoran Global Moderator Administrators @paul53 last edited by

                                @paul53 sagte in Luft-Messdaten von OpenSenseMap auslesen:

                                @Homoran sagte:

                                aus "Strukturgründen" deshalb ja lieber als channel gehabt.

                                Dann musst Du einen Javascript-Funktion mit setObject() verwenden.

                                Das lasse ich lieber wenn das so gefährlich ist.

                                Du überraschst mich immer wieder.

                                @paul53 sagte in Luft-Messdaten von OpenSenseMap auslesen:

                                Die Variable wird nur benötigt, weil die Funktion einen Wert zurück gibt,

                                Das ist doch Hokuspokus 😉
                                Bin mal gespannt

                                1 Reply Last reply Reply Quote 0
                                • Homoran
                                  Homoran Global Moderator Administrators last edited by

                                  Natürlich hat es geklappt.
                                  Danke @paul53
                                  Aber bis ich das verdaut habe wird es noch etwas dauern

                                  @paul53 sagte in Luft-Messdaten von OpenSenseMap auslesen:

                                  Dann musst Du einen Javascript-Funktion mit setObject() verwenden.

                                  Wenn ich ganz mutig bin verwende ich meine alte StationDP-Anlegen funktion und tausche nur setState gegen setObject aus.

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

                                    @Homoran sagte:

                                    tausche nur setState gegen setObject aus.

                                    Genau das ist die Gefahr !!
                                    Die Funktion erzeugeChannel(id, Name) müsste etwa so aussehen:

                                    id = 'javascript.' + instance + '.' + id;
                                    if(!existsObject(id)) {
                                       let obj = {};
                                       obj.type = 'channel';
                                       obj.common = {};
                                       obj.common.name = Name;
                                       setObject(id, obj);
                                    }
                                    
                                    Homoran 1 Reply Last reply Reply Quote 0
                                    • Homoran
                                      Homoran Global Moderator Administrators @paul53 last edited by Homoran

                                      Sorry @paul53

                                      ich kapiere das nicht ganz.

                                      Du prüfst ob die Id bereits existiert. Wenn nicht, legt er los - klar soweit!
                                      Die ID wäre ja die Stationsnummer
                                      Muss ich da vorher eine ID übergeben = Station? - klappt nicht

                                      Den "Pfad" baust du ja im letzten Schritt komplett auf.
                                      Name ist doch bereits die vorhandene Variable - muss ich da auch noch was übergeben?

                                      Ich habe alle(?) Versionen mit und ohne Übergabe versucht, auch mit Text aus "Luftdaten."+Station

                                      bekomme immer javascript.0 2020-01-02 16:53:29.576 error (4615) setForeignObject: try to set null object for [object Object]

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

                                        @Homoran
                                        Sorry, es wird eine falsche ID geprüft. Habe es oben korrigiert.

                                        An die Funktion muss die Teil-ID und der Name übergeben werden.

                                        Blockly_temp.JPG

                                        Homoran 1 Reply Last reply Reply Quote 0
                                        • Homoran
                                          Homoran Global Moderator Administrators @paul53 last edited by

                                          @paul53 sagte in Luft-Messdaten von OpenSenseMap auslesen:

                                          Sorry, es wird eine falsche ID geprüft.

                                          kein Problem - das lernt 😉

                                          @paul53 sagte in Luft-Messdaten von OpenSenseMap auslesen:

                                          An die Funktion muss die Teil-ID und der Name übergeben werden.

                                          Hatte ich fast so, ich hatte lediglich statt Attribut name... einfach Name genommen.
                                          Da war doch was mit global und local :oops:

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

                                            @Homoran sagte:

                                            das lernt

                                            Ja, woran man sieht, dass der Umgang mit setObject() nicht trivial ist.

                                            @Homoran sagte in Luft-Messdaten von OpenSenseMap auslesen:

                                            Da war doch was mit global und local :oops:

                                            Die Funktionsparameter id und Name und die intern deklarierte Variable obj sind lokal (nur innerhalb der Funktion gültig).

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            618
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            blockly climate monitoring
                                            4
                                            59
                                            3317
                                            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