Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Kabelcodierung vom Go-e Charger in Variable schreiben

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Kabelcodierung vom Go-e Charger in Variable schreiben

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

      Ich möchte die Kabelcodierung vom Go-e Charger auslesen, um somit einen Teil des PV-Überschussladen-Skripts nur dann auszuführen, wenn ein Kabel angesteckt ist, damit nicht immer das ganze Skript durchläuft, wenn mal kein Kabel gesteckt ist.
      Ich kann den Kabelwert in der Konsole ausgeben, schaffe es allerdings nicht diesen Wert ( bei mir "20" für ein 20A Kabel) in eine Variable zuschreiben. Wenn ich das versuche, dann wird mir angezeigt, dass die javascript Instanz deaktiviert ist. Deaktiviere ich den Teil, so läuft wieder alles.

      Funktioniert nicht:

      StatusKabel = getState("go-e.0.cable_ampere_code").val;
      

      Ausgabe in die Konsole geht (hier Wert:0, weil kein Kable angesteckt ist):

      console.log(('Status Kabel:' + String(getState("go-e.0.cable_ampere_code").val)));
      
      

      Unbenannt2.png
      Ich habe also das Problem, dass ich den Wert nicht in eine Variable speichern kann.

      Unbenannt.png

      Wo liegt der Fehler?

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

        @henrik-0 Nutzst du den go-e Adapter oder nur die api per script?

        im Adapter liegt der DP vor:
        go-e_Datenpunkte.png

        sowohl für das Kabel zum Auto (cable ampere code), als auch für das Kabel zum go-e charger (adapter_in) falls mobile box

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

          @homoran ich nutze den Adapter und versuche "cable ampere code" in eine Variable zu schreiben.

          Homoran H 2 Replies Last reply Reply Quote 0
          • Homoran
            Homoran Global Moderator Administrators @Henrik 0 last edited by

            @henrik-0 sagte in Kabelcodierung vom Go-e Charger in Variable schreiben:

            @homoran ich nutze den Adapter und versuche "cable ampere code" in eine Variable zu schreiben.

            ok!
            Das war nicht klar.
            Der DP ist vom Typ number, welchen Typ hat die Variable?

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

              Oder gibt es noch eine andere simplere Methode festzustellen, ob ein Ladekabel gesteckt ist?

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

                @homoran sagte: welchen Typ hat die Variable?

                In Javascript sind Variablen nicht typgebunden.

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

                  @paul53 sagte in Kabelcodierung vom Go-e Charger in Variable schreiben:

                  In Javascript sind Variablen nicht typgebunden.

                  außer sie wurden vorher schon mal definiert

                  @Henrik-0

                  kabelkabel.png

                  bei mir klappt es genau so wie du es hast
                  zeig doch bitte dein ganzes Blockly

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

                    @homoran sagte: außer sie wurden vorher schon mal definiert

                    Auch dann nicht.

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

                      @homoran wie kann ich denn den Typ einer Variablen bestimmen/auswählen?
                      Wenn ich eine neue Variabel in Blockly erstelle, kann ich ja nicht auswählen, welchen Typs sie sein soll. oder doch? ich bin erst seit ein paar tagen mit Blockly unterwegs. Ich kannte es von Java, dass man immer angeben musste, welchen Typ die Variable haben soll. (Int, string, boolean, float.......).

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

                        @paul53 sagte in Kabelcodierung vom Go-e Charger in Variable schreiben:

                        Auch dann nicht.

                        dann wechselt die Variable den Typ?
                        ich dachte sie behält den Typ der ersten Zuweisung.

                        Hab ich das falsch verstanden?

                        @Henrik-0
                        Das diskutieren wir gerade - mag sein, dass ich das falsch verstanden hatte

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

                          @homoran sagte: dann wechselt die Variable den Typ?

                          Ja, beliebig oft.

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

                            @paul53 sagte in Kabelcodierung vom Go-e Charger in Variable schreiben:

                            @homoran sagte: dann wechselt die Variable den Typ?

                            Ja, beliebig oft.

                            Danke - wieder was gelernt!

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

                              @homoran sagte: ich dachte sie behält den Typ der ersten Zuweisung.

                              Nicht durch den JS-Editor verunsichern lassen: Dessen Prüfungen basieren auf Typescript - nicht auf Javascript.

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

                                @henrik-0 sagte in Kabelcodierung vom Go-e Charger in Variable schreiben:

                                @homoran wie kann ich denn den Typ einer Variablen bestimmen/auswählen?
                                Wenn ich eine neue Variabel in Blockly erstelle, kann ich ja nicht auswählen, welchen Typs sie sein soll. oder doch? ich bin erst seit ein paar tagen mit Blockly unterwegs. Ich kannte es von Java, dass man immer angeben musste, welchen Typ die Variable haben soll. (Int, string, boolean, float.......).

                                So, das ist jetzt geklärt.
                                Wenn du der Variablen eine Zahl zuweist, hat die Variable den Typ number.
                                Da liegt das Problem also schon mal nicht.

                                Wie ich dir gezeigt habe scheint es auch daran nicht zu liegen, weil es bei mir funktioniert.

                                Ich habe noch ein wenig weiter recherchiert und den RAW des Datenpunktes angesehen:

                                {
                                  "_id": "go-e.0.cable_ampere_code",
                                  "type": "state",
                                  "common": {
                                    "name": "Kabel Ampere codierung (cbl)",
                                    "type": "number",
                                    "role": "level.volume",
                                    "read": true,
                                    "write": false,
                                    "states": {
                                      "0": "no cable",
                                      "16": "16 Ampere",
                                      "32": "32 Ampere"
                                    }
                                  },
                                  "from": "system.host.ioBroker01.cli",
                                  "ts": 1613758204602,
                                  "acl": {
                                    "object": 1636,
                                    "state": 1636,
                                    "owner": "system.user.admin",
                                    "ownerGroup": "system.group.administrator"
                                  },
                                  "native": {}
                                }
                                

                                anscheinend gibt es nur 0, 16 und 32 als mögliche Zahl.
                                in der API steht jedoch 0,13...32

                                cbl	uint8_t	Typ2 ​Kabel Ampere codierung
                                13-32: Ampere Codierung
                                0: kein Kabel
                                

                                Steht bei dir tatsächlich eine 20 in den Objekten?

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

                                  @homoran also in meinen Objekten stehen auch nur die Zahlen "0","16" und "32" drin:

                                  {
                                    "from": "system.adapter.go-e.0",
                                    "ts": 1620734504293,
                                    "user": "system.user.admin",
                                    "common": {
                                      "name": "Kabel Ampere codierung (cbl)",
                                      "type": "mixed",
                                      "role": "level.volume",
                                      "read": true,
                                      "write": false,
                                      "states": {
                                        "0": "no cable",
                                        "16": "16 Ampere",
                                        "32": "32 Ampere"
                                      }
                                    },
                                    "native": {},
                                    "acl": {
                                      "object": 1636,
                                      "owner": "system.user.admin",
                                      "ownerGroup": "system.group.administrator",
                                      "state": 1636
                                    },
                                    "_id": "go-e.0.cable_ampere_code",
                                    "type": "state"
                                  }
                                  

                                  ich habe mal ein neues Skript geschrieben wo ich nur den Wert des Objektes auf die Variable des Objektes legen und dann ausgebe. Das funktioniert wunderbar.:

                                  1.png

                                  2.png

                                  Das heißt, irgendwo in meinem Skript "PVÜberschussladen" läuft irgendwas verkehrt.

                                  Hier ein Ausschnitt aus dem Blocky (ja, ich weiß, dass man einiges sicherlich einfacher und sauberer schreiben kann):

                                  3.png

                                  H Homoran paul53 3 Replies Last reply Reply Quote 0
                                  • H
                                    Henrik 0 @Henrik 0 last edited by

                                    @henrik-0 FEHLER GEFUNDEN! (hoffentlich)

                                    4.png

                                    ich habe mal nach dem Lesen des Wertes eine Pause eingefügt. Dann klappt es. Kann es sein, dass das Skript "zu schnell" ist und das Auslesen vom Go-e noch nicht abgeschlossen ist?
                                    Warum auch immer, mit der Pause zwischen Lesen und Schreiben läuft es.

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

                                      @henrik-0 sagte in Kabelcodierung vom Go-e Charger in Variable schreiben:

                                      Das heißt, irgendwo in meinem Skript "PVÜberschussladen" läuft irgendwas verkehrt.

                                      Das hatte ich ja geschriebn.
                                      Deswegen wollte ich ja das ganze Blockly sehen

                                      @henrik-0 sagte in Kabelcodierung vom Go-e Charger in Variable schreiben:

                                      ich habe mal nach dem Lesen des Wertes eine Pause eingefügt. Dann klappt es. Kann es sein, dass das Skript "zu schnell" ist und das Auslesen vom Go-e noch nicht abgeschlossen ist?

                                      eher nicht.
                                      umgekehrt ergäbe sich da ein Sinn, weil das Schreiben in einen Datenpunkt immer eine Gewisse zeit dauert.
                                      Eine Variable sollte sofort gefüllt sein.

                                      Wie lange ist denn da das Kabel schon am Auto?

                                      EDIT:
                                      sehe gerade dein "Wiederhole solange",
                                      Das feuert im Millisekundentakt Wiederholungen und kann deinen js-Adapter lahmlegen

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

                                        @homoran said in Kabelcodierung vom Go-e Charger in Variable schreiben:

                                        sehe gerade dein "Wiederhole solange",
                                        Das feuert im Millisekundentakt Wiederholungen und kann deinen js-Adapter lahmlegen

                                        Wie kann ich das denn verbessern? Gibts eine bessere Möglichkeit den Skriptteil zu wiederholen?
                                        Ich habe vor dem Ende des "Wiederhole solange" eine 60 Sekunden Pause drin. Dürfte daher doch unproblematisch sein oder ?

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

                                          @henrik-0 sagte in Kabelcodierung vom Go-e Charger in Variable schreiben:

                                          Wie kann ich das denn verbessern?

                                          solange 1=1 halte ich sowieso für sinnfrei!

                                          @henrik-0 sagte in Kabelcodierung vom Go-e Charger in Variable schreiben:

                                          Ich habe vor dem Ende des "Wiederhole solange" eine 60 Sekunden Pause drin. Dürfte daher doch unproblematisch sein oder ?

                                          Oder!

                                          gefeuert wird sofort und vor der Ausführung dann tausend mal die Pause gemacht - also eher noch schlimmer.

                                          Nutze einen Intervall-Baustein

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

                                            @henrik-0 sagte: Hier ein Ausschnitt aus dem Blocky

                                            "wiederhole solange" erzeugt regelmäßig eine Endlosschleife!
                                            Setze die Variable StatusKabel beim Skript-Start und durch einen Trigger auf "Kabel Ampere codierung", dann ist ein Polling überflüssig.

                                            Bild_2021-05-15_163547.png

                                            Wert findet man unter "Trigger".

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            824
                                            Online

                                            32.0k
                                            Users

                                            80.5k
                                            Topics

                                            1.3m
                                            Posts

                                            3
                                            21
                                            970
                                            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