Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [jetzt aber gelöst] Nochmal: Fehler in Skripten seit Update 2.1.2

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.3k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.3k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.6k

[jetzt aber gelöst] Nochmal: Fehler in Skripten seit Update 2.1.2

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
23 Beiträge 5 Kommentatoren 2.8k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • A Offline
    A Offline
    aski71
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    habe gerade den anderen Thread gelesen. Vielleicht ja nicht verstanden, aber …

    Ich bekomme folgenden Fehler:

    javascript-0	25 11:27:55.774	warn	Wrong type of hm-rega.0.12389: "string". Please fix, while deprecated and will not work in next versions.
    

    Aufgrund folgenden Skripts:

    on('geofency.0.Alex.Home.entry', 'hm-rega.0.12389');
    

    Beides ist vom Typ boolean.

    Jetzt werde ich aus dem anderen Thread nicht ganz schlau. Das sollte doch gehen, oder mache ich einen Denkfehler?!

    Ebenso führt folgendes zwar nicht zu einer Fehlermeldung, aber seit dem Update schlicht zu einem falschen Ergebnis:

    setState("hm-rega.0.12391"/*Anwesenheit.Nutzer*/, getState("geofency.0.atHomeCount").val);
    

    Beides ist vom Typ number.

    In hm-rega.0.12391 steht nun aber immer 65000, egal welchen Wert atHomeCount annimmt.

    Vielen Dank für Hilfe.

    VG Alex

    1 Antwort Letzte Antwort
    0
    • paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #2

      @aski71:

      Beides ist vom Typ boolean. `
      Sollte es vielleicht sein - ist es aber nicht, denn an "hm-rega.0.12389" wird ein Wert vom Typ "string" übergeben (der Wert kann z.B "true" sein).

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      1 Antwort Letzte Antwort
      0
      • P Offline
        P Offline
        pix
        schrieb am zuletzt editiert von
        #3

        Hallo Alex, hat mich auch ganz schön Hirnschmalz gekostet ;) @aski71:

        Ebenso führt folgendes zwar nicht zu einer Fehlermeldung, aber seit dem Update schlicht zu einem falschen Ergebnis:

        setState("hm-rega.0.12391"/*Anwesenheit.Nutzer*/, getState("geofency.0.atHomeCount").val);
        

        Beides ist vom Typ number.

        In hm-rega.0.12391 steht nun aber immer 65000, egal welchen Wert atHomeCount annimmt. `

        Probier mal

        setState("hm-rega.0.12391"/*Anwesenheit.Nutzer*/, parseInt(getState("geofency.0.atHomeCount").val, 10));
        

        Du kannst die tatsächlichen Typen abfragen:

        log('rega12391 ist vom Typ: ' + typeof getState("hm-rega.0.12391").val);
        log('geofency.0.atHomeCount ist vom Typ: ' + typeof getState("geofency.0.atHomeCount").val);
        
        

        So, jetzt habe ich zum Ende meines Posts doch nochmal nachgesehen:

        Der Datenpunkt geofency0.atHomeCount ist eine String

        {
          "_id": "geofency.0.atHome",
          "type": "state",
          "common": {
            "name": "atHome",
            "type": "string",
            "role": "persons",
            "read": true,
            "write": false,
            "def": 0,
            "desc": "Anwesende Personen"
          },
          "native": {},
          "acl": {
            "object": 1638,
            "state": 1638
          }
        }
        
        

        Deshalb parseInt verwenden.

        Gruß

        Pix

        Mist! Paul war wieder schneller :lol:

        ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

        1 Antwort Letzte Antwort
        0
        • HomoranH Offline
          HomoranH Offline
          Homoran
          Global Moderator Administrators
          schrieb am zuletzt editiert von
          #4

          Ich fürchte das könnte der gleiche bug (?) sein, den ich in der influxDB habe.

          Auch dort wird eine Systemvariable über hm-rega als String eingegeben, obwohl es eine SysVar vom Typ Zahl ist.

          kann das ein Bug im hm-rega sein?

          Gruß

          Rainer

          kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

          der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

          1 Antwort Letzte Antwort
          0
          • A Offline
            A Offline
            aski71
            schrieb am zuletzt editiert von
            #5

            @pix:

            Probier mal

            setState("hm-rega.0.12391"/*Anwesenheit.Nutzer*/, parseInt(getState("geofency.0.atHomeCount").val, 10));
            

            Du kannst die tatsächlichen Typen abfragen:

            log('rega12391 ist vom Typ: ' + typeof getState("hm-rega.0.12391").val);
            log('geofency.0.atHomeCount ist vom Typ: ' + typeof getState("geofency.0.atHomeCount").val);
            
            

            So, jetzt habe ich zum Ende meines Posts doch nochmal nachgesehen:

            Der Datenpunkt geofency0.atHomeCount ist eine String `

            Leider nein. :D

            Habe das gerade ausprobiert.

            parseInt() bringt keinen Effekt und beide sind bei mir number.

            Siehe Logging:

            javascript.0	25 16:19:40.703	info	javascript.0 script.js.Geofency_Presence.Presence: geofency.0.atHomeCount ist vom Typ: number
            javascript.0	25 16:19:40.703	info	javascript.0 script.js.Geofency_Presence.Presence: rega12391 ist vom Typ: number
            javascript.0	25 16:19:40.702	info	javascript.0 script.js.Geofency_Presence.Presence: geofency.0.atHomeCount = 1
            
            1 Antwort Letzte Antwort
            0
            • A Offline
              A Offline
              aski71
              schrieb am zuletzt editiert von
              #6

              @paul53:

              @aski71:

              Beides ist vom Typ boolean. Sollte es vielleicht sein - ist es aber nicht, denn an "hm-rega.0.12389" wird ein Wert vom Typ "string" übergeben (der Wert kann z.B "true" sein).

              Wenn ich unter Objekte->hm-rega.0.12389->raw nachsehe, finde ich:

                  "type": "boolean",
              

              Wenn ich unter Objekte-> geofency.0.Alex.Home.entry-> raw nachsehe, finde ich:

                  "type": "boolean",
              

              Warum wird dann an hm-rega.0.12389 ein Wert vom Typ "string" übergeben?

              Ist das nicht irgendwie unlogisch?

              Und führt das nicht die wunderbar einfache

              on('geofency.0.Alex.Home.entry', 'hm-rega.0.12389');
              

              Logik ad absurdum?

              1 Antwort Letzte Antwort
              0
              • paul53P Offline
                paul53P Offline
                paul53
                schrieb am zuletzt editiert von
                #7

                Wenn im Datenpunkt-Attribut common.type: "boolean" steht, bedeutet es, dass der Typ "boolean" sein sollte. In state.val kann aber ein anderer Typ enthalten sein, was bisher ohne die Typprüfung nicht auffiel. Es kann auch ein String "true" oder "false" enthalten sein, was im Reiter "Objekte" oder im Reiter "Zustände" vom echten false oder true nicht unterschieden werden kann. Allerdings funktioniert if(dp.state.val) mit Strings nicht.

                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                1 Antwort Letzte Antwort
                0
                • A Offline
                  A Offline
                  aski71
                  schrieb am zuletzt editiert von
                  #8

                  @paul53:

                  Wenn im Datenpunkt-Attribut common.type: "boolean" steht, bedeutet es, dass der Typ "boolean" sein sollte. In state.val kann aber ein anderer Typ enthalten sein, was bisher ohne die Typprüfung nicht auffiel. Es kann auch ein String "true" oder "false" enthalten sein, was im Reiter "Objekte" oder im Reiter "Zustände" vom echten false oder true nicht unterschieden werden kann. Allerdings funktioniert if(dp.state.val) mit Strings nicht. `

                  Hm. Verstanden.

                  Ich habe nun mal folgende Variablen per log ausgeben lassen:

                         log("geofency.0.atHomeCount = " + getState("geofency.0.atHomeCount").val);
                         log('rega12391 ist vom Typ: ' + typeof getState("hm-rega.0.12391").val);
                         log('geofency.0.atHomeCount ist vom Typ: ' + typeof getState("geofency.0.atHomeCount").val);
                         log('geofency.0.Alex.Home.entry ist vom Typ: ' + typeof getState("geofency.0.Alex.Home.entry").val);
                         log('geofency.0.Elke.Home.entry ist vom Typ: ' + typeof getState("geofency.0.Elke.Home.entry").val);
                         log('hm-rega.0.12389 ist vom Typ: ' + typeof getState("hm-rega.0.12389").val);
                         log('hm-rega.0.12390 ist vom Typ: ' + typeof getState("hm-rega.0.12390").val);
                  
                  

                  Ergebnis im Log ist:

                  javascript-0	25 16:59:47.668	info	script.js.Geofency_Presence.Presence: hm-rega.0.12390 ist vom Typ: boolean
                  javascript-0	25 16:59:47.665	info	script.js.Geofency_Presence.Presence: hm-rega.0.12389 ist vom Typ: string
                  javascript-0	25 16:59:47.664	info	script.js.Geofency_Presence.Presence: geofency.0.Elke.Home.entry ist vom Typ: string
                  javascript-0	25 16:59:47.663	info	script.js.Geofency_Presence.Presence: geofency.0.Alex.Home.entry ist vom Typ: string
                  javascript-0	25 16:59:47.662	info	script.js.Geofency_Presence.Presence: geofency.0.atHomeCount ist vom Typ: number
                  javascript-0	25 16:59:47.657	info	script.js.Geofency_Presence.Presence: rega12391 ist vom Typ: number
                  javascript-0	25 16:59:47.655	info	script.js.Geofency_Presence.Presence: geofency.0.atHomeCount = 1
                  

                  Was hier schon auffällig ist:

                  1. geofency.0.Alex.Home.entry wird mit obiger kurzer on-Methode auf rega.0.12389 gemappt.

                  Beide werden hier als string ausgegeben, obwohl in der CCU2 sowohl rega.0.12389, als auch hm-rega.0.12390 als typ boolean angelegt sind.

                  Im Logging wird "Wrong type of hm-rega.0.12389: "string". Please fix, while deprecated and will not work in next versions." angemeckert.

                  Eigentlich richtig angemeckert, aber der typeof()-Call liefert für 12389 den falschen Wert. Nämlich string.

                  1. geofency.0.Elke.Home.entry wird mit der kurzen on-Methode auf hm-rega.0.12390 gemappt. Das klappt nun also der Typ-Prüfung wegen nicht und wird dann zurecht als deprecated angemeckert. Lösung wäre wohl dann, einen setState('hm-rega.0.12390', <true|false>); zu machen, richtig?

                  2. geofency.0.atHomeCount ist number. rega12391 ist auch number.

                  setState("hm-rega.0.12391", parseInt(getState("geofency.0.atHomeCount").val, 10)); führt auch nicht dazu, dass der richtige Wert nach rega12391 geschrieben wird. Der Wert in der CCU2-Variablen ist und bleibt 65000.00.

                  Und nu? :o</true|false>

                  1 Antwort Letzte Antwort
                  0
                  • A Offline
                    A Offline
                    aski71
                    schrieb am zuletzt editiert von
                    #9

                    @aski71:

                    1. geofency.0.Alex.Home.entry wird mit obiger kurzer on-Methode auf rega.0.12389 gemappt.

                    Beide werden hier als string ausgegeben, obwohl in der CCU2 sowohl rega.0.12389, als auch hm-rega.0.12390 als typ boolean angelegt sind.

                    Im Logging wird "Wrong type of hm-rega.0.12389: "string". Please fix, while deprecated and will not work in next versions." angemeckert.

                    Eigentlich richtig angemeckert, aber der typeof()-Call liefert für 12389 den falschen Wert. Nämlich string.

                    1. geofency.0.Elke.Home.entry wird mit der kurzen on-Methode auf hm-rega.0.12390 gemappt. Das klappt nun also der Typ-Prüfung wegen nicht und wird dann zurecht als deprecated angemeckert. Lösung wäre wohl dann, einen setState('hm-rega.0.12390', <true|false>); zu machen, richtig?

                    2. geofency.0.atHomeCount ist number. rega12391 ist auch number.

                    setState("hm-rega.0.12391", parseInt(getState("geofency.0.atHomeCount").val, 10)); führt auch nicht dazu, dass der richtige Wert nach rega12391 geschrieben wird. Der Wert in der CCU2-Variablen ist und bleibt 65000.00.

                    Und nu? :o</true|false> `

                    Nachtrag: Nachdem ich 1) und 2) auf die Langform des on() mit einem if-then-else und setState(…, <true|false>) umgeschrieben habe, ist 1) und 2) gelöst. Bei 1) liefert das logging jetzt auch den richtigen typeof()-Wert. Sollte es aber eigentlich immer machen, oder? ;)

                    1. ist mir nach wie vor schleierhaft.</true|false>
                    1 Antwort Letzte Antwort
                    0
                    • paul53P Offline
                      paul53P Offline
                      paul53
                      schrieb am zuletzt editiert von
                      #10

                      Zu 1) und 2) Probier mal

                      on('geofency.0.Alex.Home.entry', function(dp) {
                      setState('hm-rega.0.12389', toBoolean(dp.state.val));
                      });
                      

                      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                      1 Antwort Letzte Antwort
                      0
                      • A Offline
                        A Offline
                        aski71
                        schrieb am zuletzt editiert von
                        #11

                        @paul53:

                        Zu 1) und 2) Probier mal

                        on('geofency.0.Alex.Home.entry', function(dp) {
                        setState('hm-rega.0.12389', toBoolean(dp.state.val));
                        });
                        ```` `  
                        

                        Das klappt. Danke. :D

                        … jetzt nur noch 3) auf die Schliche kommen.

                        1 Antwort Letzte Antwort
                        0
                        • A Offline
                          A Offline
                          aski71
                          schrieb am zuletzt editiert von
                          #12

                          Zu 3)

                          Es wird ja immer 65000 in die Variable geschrieben.

                          Ich habe mir jetzt nochmal den Raw-Modus von hm-rega.0.12391 angesehen.

                          Dort gibt es einen "min": 65000

                          Ist das eine Spur? Zumal min und max eigentlich 0 und 65000 sind.

                          Wo kommt dieses min 65000 her?

                          {
                            "common": {
                              "name": "Anwesenheit.Nutzer",
                              "type": "number",
                              "role": "state",
                              "desc": "# user @ home",
                              "min": 65000,
                              "read": true,
                              "write": true
                            },
                            "native": {
                              "Name": "Anwesenheit.Nutzer",
                              "TypeName": "VARDP",
                              "DPInfo": "# user @ home",
                              "ValueUnit": "",
                              "ValueList": "",
                              "ValueMin": 0,
                              "ValueMax": 65000,
                              "ValueType": 4,
                              "ValueSubType": 0
                            },
                            "acl": {
                              "object": 1638,
                              "owner": "system.user.admin",
                              "ownerGroup": "system.group.administrator",
                              "state": 1638
                            },
                            "_id": "hm-rega.0.12391",
                            "type": "state"
                          }
                          
                          1 Antwort Letzte Antwort
                          0
                          • paul53P Offline
                            paul53P Offline
                            paul53
                            schrieb am zuletzt editiert von
                            #13

                            @aski71:

                            Dort gibt es einen "min": 65000

                            Ist das eine Spur? `
                            Ja, der JS-Adapter wurde nicht nur um die Typprüfung, sondern auch um die Prüfung common.min <= state <= common.max erweitert (falls vorhanden). Korrigiere den Wert von common.min und es wird wieder funktionieren.

                            Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                            Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                            1 Antwort Letzte Antwort
                            0
                            • A Offline
                              A Offline
                              aski71
                              schrieb am zuletzt editiert von
                              #14

                              @paul53:

                              @aski71:

                              Dort gibt es einen "min": 65000

                              Ist das eine Spur? Ja, der JS-Adapter wurde nicht nur um die Typprüfung, sondern auch um die Prüfung ****common.min <= state <= common.max**** erweitert (falls vorhanden). Korrigiere den Wert von common.min und es wird wieder funktionieren.

                              Genau das war's! Weiß der Henker, wo dieses common.min herkam.

                              Danke allen für die Mithilfe.

                              1 Antwort Letzte Antwort
                              0
                              • A Offline
                                A Offline
                                aski71
                                schrieb am zuletzt editiert von
                                #15

                                @aski71:

                                @paul53:

                                @aski71:

                                Dort gibt es einen "min": 65000

                                Ist das eine Spur? Ja, der JS-Adapter wurde nicht nur um die Typprüfung, sondern auch um die Prüfung ****common.min <= state <= common.max**** erweitert (falls vorhanden). Korrigiere den Wert von common.min und es wird wieder funktionieren.

                                Genau das war's! Weiß der Henker, wo dieses common.min herkam.

                                Danke allen für die Mithilfe. `

                                Kaum einen Tag später: Das gelöschte common.min ist wieder da und steht auf 65000. :oops:

                                Hat wer eine Idee, wer oder was dieses common.min automatisch setzen könnte?

                                1 Antwort Letzte Antwort
                                0
                                • A Offline
                                  A Offline
                                  aski71
                                  schrieb am zuletzt editiert von
                                  #16

                                  @aski71:

                                  @paul53:

                                  @aski71:

                                  Dort gibt es einen "min": 65000

                                  Ist das eine Spur? Ja, der JS-Adapter wurde nicht nur um die Typprüfung, sondern auch um die Prüfung ****common.min <= state <= common.max**** erweitert (falls vorhanden). Korrigiere den Wert von common.min und es wird wieder funktionieren.

                                  Genau das war's! Weiß der Henker, wo dieses common.min herkam.

                                  Danke allen für die Mithilfe. `

                                  … kaum ein Tag später: Das common.min von 65000 ist wieder da. Obwohl ich es gestern raus gelöscht hatte. :shock:

                                  Hat jemand eine Erklärung dafür?

                                  1 Antwort Letzte Antwort
                                  0
                                  • paul53P Offline
                                    paul53P Offline
                                    paul53
                                    schrieb am zuletzt editiert von
                                    #17

                                    @aski71:

                                    Das common.min von 65000 ist wieder da. Obwohl ich es gestern raus gelöscht hatte. :shock:

                                    Hat jemand eine Erklärung dafür? `
                                    In der Datei "ioBroker.hm-rega/hm-rega.js" enthalten die Zeilen 1060 und 1061 einen Fehler:

                                    // Zeile 1059 ff.
                                                    if (data[id].ValueMin)  obj.common.min = data[id].ValueMin;
                                                    if (data[id].ValueMax)  obj.common.min = data[id].ValueMax;
                                                    if (data[id].ValueUnit) obj.common.min = data[id].ValueUnit;
                                    
                                    

                                    Richtig:

                                                    if (typeof data[id].ValueMin === 'number')  obj.common.min = data[id].ValueMin;
                                                    if (typeof data[id].ValueMax === 'number')  obj.common.max = data[id].ValueMax;
                                                    if (data[id].ValueUnit)                     obj.common.unit = data[id].ValueUnit;
                                    
                                    

                                    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                    1 Antwort Letzte Antwort
                                    0
                                    • A Offline
                                      A Offline
                                      aski71
                                      schrieb am zuletzt editiert von
                                      #18

                                      Das erklärt einiges. Danke. :)

                                      1 Antwort Letzte Antwort
                                      0
                                      • paul53P Offline
                                        paul53P Offline
                                        paul53
                                        schrieb am zuletzt editiert von
                                        #19

                                        Bluefox hat es in Version 1.1.1 von iobroker.hm-rega korrigiert.

                                        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                        1 Antwort Letzte Antwort
                                        0
                                        • BluefoxB Offline
                                          BluefoxB Offline
                                          Bluefox
                                          schrieb am zuletzt editiert von
                                          #20

                                          @paul53:

                                          Bluefox hat es in Version 1.1.1 von iobroker.hm-rega korrigiert. `
                                          Du musst langsam lernen wie man mit github arbeitet. :)

                                          Es ist sehr mühsam die Änderungen aus JIRA einzupflegen. Aber die will ich auch auf keinen Fall liegen lassen.

                                          1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          315

                                          Online

                                          32.5k

                                          Benutzer

                                          81.7k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe