Seite 1 von 2

[V4.0.1] Keine Variablen mit Ziffern im Name möglich? (Logik lässt sich nicht speichern) (WD-2574)

Verfasst: Di Aug 13, 2024 10:38 am
von starwarsfan
Hallo miteinander,

kann es sein, dass es nicht möglich ist, in einer Logik Variablen mit Ziffern im Name zu verwenden? :confusion-scratchheadyellow:

Sobald ich etwas wie bspw.

Code: Alles auswählen

  "Level":[
  ...
    ["$Input_value01", "bool", false],
...
mache, lässt sich die Logik nicht mehr speichern und ich erhalte eine Fehlermeldung:
Level index has wrong type 5
Nehme ich die "01" weg, funktioniert es. :think:

Re: [v4.0.1] Keine Variablen mit Ziffern im Name möglich?

Verfasst: Di Aug 13, 2024 12:14 pm
von gbglace
Zahlen selbst wäre neu, was definitiv nicht geht ist einen Substring bzw. den Beginn davon als eigenständige Variable noch parallel dazu zu haben.

Re: [v4.0.1] Keine Variablen mit Ziffern im Name möglich?

Verfasst: Di Aug 13, 2024 12:37 pm
von starwarsfan
Hoi Göran
gbglace hat geschrieben: Di Aug 13, 2024 12:14 pm was definitiv nicht geht ist einen Substring bzw. den Beginn davon als eigenständige Variable noch parallel dazu zu haben.
Dann frage ich mich aber, wieso das hier funktioniert:

Code: Alles auswählen

  "Level":[
    ["$Run","bool",true],
    ["$Select","integer",0],
    ["$Val","bool",false],
    ["$Clk","bool",false],
    ["$Clk_Val","bool",false],
    ["$Period","float",300],
    ["$VAR<Inhibit?>","bool",false]
  ],
Das ist aus dem Baustein von Jens, man beachte die Variablen $Clk und $Clk_Val. Nach obiger Aussage dürfte das nicht funktionieren!?

Aber wie auch immer, wenn ich aus obigem Block

Code: Alles auswählen

  "Level":[
    ["$Run","bool",true],
    ["$Select","integer",0],
    ["$Val01","bool",false],
    ["$Clk","bool",false],
    ["$Clk_Val","bool",false],
    ["$Period","float",300],
    ["$VAR<Inhibit?>","bool",false]
  ],
mache, natürlich auch mit Anpassung von $Val in $Val01 überall dort, wo die Variable verwendet wird, lässt sich die Logik nicht mehr speichern. :think:

Weitere Ideen dazu?

Re: [v4.0.1] Keine Variablen mit Ziffern im Name möglich?

Verfasst: Di Aug 13, 2024 12:42 pm
von starwarsfan
Hm, jetzt wird's ganz verrückt: Es ist egal wie ich die Variable nenne, selbst wenn ich

Code: Alles auswählen

$Val
ändere in

Code: Alles auswählen

$Valfoo
lässt sich die Logik nicht speichern. Sobald ich wieder

Code: Alles auswählen

$Val
draus mache, funktioniert es wieder. Kann es sein, dass hier soetwas wie eine "interne" Variable verwendet wird?

Re: [v4.0.1] Keine Variablen mit Ziffern im Name möglich?

Verfasst: Di Aug 13, 2024 4:34 pm
von gbglace
Hui Yves ist wohl wieder auf Forschungsreise ins Bug-Country.

Re: [v4.0.1] Keine Variablen mit Ziffern im Name möglich?

Verfasst: Di Aug 13, 2024 6:33 pm
von starwarsfan
Hallo miteinander
gbglace hat geschrieben: Di Aug 13, 2024 4:34 pm Yves ist wohl wieder auf Forschungsreise ins Bug-Country.
So siehts wohl aus.

Nächstes Finding: Nachdem die Fehlermeldung erschienen ist, lässt sich die Logik gar nicht mehr bearbeiten. Das heisst, der Editor geht zwar auf aber nach einer Änderung bleibt das Speichern-Symbol disabled. :think:

Nochmal zum Vergleich:

Ich habe diesen Code (nicht funktional):

Code: Alles auswählen

/**
 * New custom logic
 *
 * 
 */

{
  "_Meta": { // Optional
    "Description": "",
    "Version": "1.02",
    "Icon": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48IS0tIFVwbG9hZGVkIHRvOiBTVkcgUmVwbywgd3d3LnN2Z3JlcG8uY29tLCBHZW5lcmF0b3I6IFNWRyBSZXBvIE1peGVyIFRvb2xzIC0tPg0KPHN2ZyB3aWR0aD0iODAwcHgiIGhlaWdodD0iODAwcHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxwYXRoIGQ9Ik01IDkuNzc3NDZWMTYuMkM1IDE3Ljg4MDIgNSAxOC43MjAzIDUuMzI2OTggMTkuMzYyQzUuNjE0NiAxOS45MjY1IDYuMDczNTQgMjAuMzg1NCA2LjYzODAzIDIwLjY3M0M2Ljc4ODk0IDIwLjc0OTkgNi45NTA4MiAyMC44MDg3IDcuMTMyMDIgMjAuODUzN00yMSAxMkwxNS41NjY4IDUuOTYzOTlDMTQuMzMxMSA0LjU5MTIyIDEzLjcxMzMgMy45MDQ4NCAxMi45ODU2IDMuNjUxNDRDMTIuMzQ2NiAzLjQyODg4IDExLjY1MSAzLjQyODkzIDExLjAxMTkgMy42NTE1OUMxMC4yODQzIDMuOTA1MDkgOS42NjY2MSA0LjU5MTU3IDguNDMxMTQgNS45NjQ1MkwzIDEyTTE5IDUuMDAwMDJWMTYuMkMxOSAxNy44ODAyIDE5IDE4LjcyMDMgMTguNjczIDE5LjM2MkMxOC4zODU0IDE5LjkyNjUgMTcuOTI2NSAyMC4zODU0IDE3LjM2MiAyMC42NzNDMTcuMjExMSAyMC43NDk5IDE3LjA0OTIgMjAuODA4NyAxNi44NjggMjAuODUzN003LjEzMjAyIDIwLjg1MzdDNy42NTAxNyAxOC42NDQ4IDkuNjMzMDEgMTcgMTIgMTdDMTQuMzY3IDE3IDE2LjM0OTggMTguNjQ0OCAxNi44NjggMjAuODUzN003LjEzMjAyIDIwLjg1MzdDNy43MjEzMyAyMSA4LjUxNDk1IDIxIDkuOCAyMUgxNC4yQzE1LjQ4NSAyMSAxNi4yNzg3IDIxIDE2Ljg2OCAyMC44NTM3TTE0IDEyQzE0IDEzLjEwNDYgMTMuMTA0NiAxNCAxMiAxNEMxMC44OTU0IDE0IDEwIDEzLjEwNDYgMTAgMTJDMTAgMTAuODk1NCAxMC44OTU0IDEwIDEyIDEwQzEzLjEwNDYgMTAgMTQgMTAuODk1NCAxNCAxMloiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4NCjwvc3ZnPg=="
  },
  "Level":[
    ["$Run","bool",true],
    ["$Select","integer",0],
    ["$Foo","bool",false],
    ["$Clk_Val","bool",false],
    ["$Period","float",300],
    ["$VAR<Inhibit?>","bool",false]
  ],
  "Module": [
    ["Break",["$VAR<Inhibit?>"]],
    ["Multiplexer",["$Foo","$Foo"],"$Clk_Val","$Select"]
  ],
  "Input": [
    ["Eingang","Eingangswert","$Foo","a"],
    ["Intervall in Sekunden","Zeit [s] zwischen Senden (standard 300 Sekunden, 5 Minuten)","$Period","c"],
    ["Inhibit","INHIBIT","$VAR<Inhibit?>","u"]
  ],
  "Output": [
    ["Ausgang","Per Intervall gesendeter Ausgangswert","$Clk_Val","ct"]
  ]
}
Wenn ich dort drin aus "$Foo" "$Fooo" mache, so:

Code: Alles auswählen

/**
 * New custom logic
 *
 * 
 */

{
  "_Meta": { // Optional
    "Description": "",
    "Version": "1.02",
    "Icon": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48IS0tIFVwbG9hZGVkIHRvOiBTVkcgUmVwbywgd3d3LnN2Z3JlcG8uY29tLCBHZW5lcmF0b3I6IFNWRyBSZXBvIE1peGVyIFRvb2xzIC0tPg0KPHN2ZyB3aWR0aD0iODAwcHgiIGhlaWdodD0iODAwcHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxwYXRoIGQ9Ik01IDkuNzc3NDZWMTYuMkM1IDE3Ljg4MDIgNSAxOC43MjAzIDUuMzI2OTggMTkuMzYyQzUuNjE0NiAxOS45MjY1IDYuMDczNTQgMjAuMzg1NCA2LjYzODAzIDIwLjY3M0M2Ljc4ODk0IDIwLjc0OTkgNi45NTA4MiAyMC44MDg3IDcuMTMyMDIgMjAuODUzN00yMSAxMkwxNS41NjY4IDUuOTYzOTlDMTQuMzMxMSA0LjU5MTIyIDEzLjcxMzMgMy45MDQ4NCAxMi45ODU2IDMuNjUxNDRDMTIuMzQ2NiAzLjQyODg4IDExLjY1MSAzLjQyODkzIDExLjAxMTkgMy42NTE1OUMxMC4yODQzIDMuOTA1MDkgOS42NjY2MSA0LjU5MTU3IDguNDMxMTQgNS45NjQ1MkwzIDEyTTE5IDUuMDAwMDJWMTYuMkMxOSAxNy44ODAyIDE5IDE4LjcyMDMgMTguNjczIDE5LjM2MkMxOC4zODU0IDE5LjkyNjUgMTcuOTI2NSAyMC4zODU0IDE3LjM2MiAyMC42NzNDMTcuMjExMSAyMC43NDk5IDE3LjA0OTIgMjAuODA4NyAxNi44NjggMjAuODUzN003LjEzMjAyIDIwLjg1MzdDNy42NTAxNyAxOC42NDQ4IDkuNjMzMDEgMTcgMTIgMTdDMTQuMzY3IDE3IDE2LjM0OTggMTguNjQ0OCAxNi44NjggMjAuODUzN003LjEzMjAyIDIwLjg1MzdDNy43MjEzMyAyMSA4LjUxNDk1IDIxIDkuOCAyMUgxNC4yQzE1LjQ4NSAyMSAxNi4yNzg3IDIxIDE2Ljg2OCAyMC44NTM3TTE0IDEyQzE0IDEzLjEwNDYgMTMuMTA0NiAxNCAxMiAxNEMxMC44OTU0IDE0IDEwIDEzLjEwNDYgMTAgMTJDMTAgMTAuODk1NCAxMC44OTU0IDEwIDEyIDEwQzEzLjEwNDYgMTAgMTQgMTAuODk1NCAxNCAxMloiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4NCjwvc3ZnPg=="
  },
  "Level":[
    ["$Run","bool",true],
    ["$Select","integer",0],
    ["$Fooo","bool",false],
    ["$Clk_Val","bool",false],
    ["$Period","float",300],
    ["$VAR<Inhibit?>","bool",false]
  ],
  "Module": [
    ["Break",["$VAR<Inhibit?>"]],
    ["Multiplexer",["$Fooo","$Fooo"],"$Clk_Val","$Select"]
  ],
  "Input": [
    ["Eingang","Eingangswert","$Fooo","a"],
    ["Intervall in Sekunden","Zeit [s] zwischen Senden (standard 300 Sekunden, 5 Minuten)","$Period","c"],
    ["Inhibit","INHIBIT","$VAR<Inhibit?>","u"]
  ],
  "Output": [
    ["Ausgang","Per Intervall gesendeter Ausgangswert","$Clk_Val","ct"]
  ]
}

Dann lässt sich's nicht mehr speichern. WTF!? :confusion-scratchheadyellow: :confusion-scratchheadyellow: :confusion-scratchheadyellow:

Re: [v4.0.1] Keine Variablen mit Ziffern im Name möglich?

Verfasst: Di Aug 13, 2024 10:09 pm
von Robert_Mini
Passiert manchmal und ich konnte es nie reproduzieren, außer der genannte Fall, dass ein Substring als Ein/Ausgang vorkommt zB $var und $var01, was oft beim Erweitern passiert.

Wenn es passiert und auch der Speichern Button ausgegraut ist => Code kopieren und in neue Custom Logik einfügen.

Schön wäre es aber, das reproduzierbar zu machen und dann zu fixen.


Lg
Robert

Re: [v4.0.1] Keine Variablen mit Ziffern im Name möglich?

Verfasst: Mi Aug 14, 2024 9:57 pm
von starwarsfan
Hallo Robert
Robert_Mini hat geschrieben: Di Aug 13, 2024 10:09 pm Wenn es passiert und auch der Speichern Button ausgegraut ist => Code kopieren und in neue Custom Logik einfügen.
Tatsache! Den nicht speicherbaren Code in eine neue Logik kopiert und et voila, speichern funktioniert. :doh:

Robert_Mini hat geschrieben: Di Aug 13, 2024 10:09 pm Schön wäre es aber, das reproduzierbar zu machen und dann zu fixen.
Ack!

Re: [V4.0.1] Keine Variablen mit Ziffern im Name möglich?

Verfasst: Mi Aug 14, 2024 10:44 pm
von starwarsfan
Hallo miteinander,

um das hier abzuschliessen, hier der finale Stand.

Ich habe jetzt den Code von Jens so wie ich ihn initial erweitert hatte in eine neue Custom-Logik kopiert. Dort lässt er sich ohne Probleme speichern und die Logik funktioniert wie gewünscht. Der Baustein hat damit 26 Eingänge und 24 Ausgänge.

Damit kann ich bestätigen, dass soetwas problemlos funktioniert:

Code: Alles auswählen

  "Level":[
    ["$Run", "bool", true],
    ["$Select", "integer", 0],

    ["$Val01", "bool", false],
    ["$Val02", "bool", false],
    ["$Val03", "bool", false],
...
    ["$Val22", "bool", false],
    ["$Val23", "bool", false],
    ["$Val24", "bool", false],

    ["$Clk", "bool", false],

    ["$Clk_Val01", "bool", false],
    ["$Clk_Val02", "bool", false],
    ["$Clk_Val03", "bool", false],
...
    ["$Clk_Val22", "bool", false],
    ["$Clk_Val23", "bool", false],
    ["$Clk_Val24", "bool", false],

    ["$Period", "float", 300.0],
    ["$VAR<Inhibit?>", "bool", false]
  ],
...
Somit gibt es das Problem mit den überlappenden Variablennamen offensichtlich nicht (mehr) und auch die Ziffern im Variablenname sind kein Problem. :handgestures-thumbupright:

Allerdings hinterlässt das initiale Problem schon noch ein Fragezeichen, da es irgendeine Situation gibt, welche zum beschriebenen Verhalten führt, dass sich die Logik nicht mehr speichern lässt. Robert hat das ja auch bestätigt, dass dann das Kopieren in eine neue Logik hilft. An dieser Stelle hört sich dieses Problem irgendwie sehr ähnlich an...

Re: [V4.0.1] Keine Variablen mit Ziffern im Name möglich? (Logik lässt sich nicht speichern)

Verfasst: Do Aug 22, 2024 6:00 am
von speckenbuettel
--- Meine Antwort bezieht sich auf V4.1 IP1 ---


Hallo,

ich habe ein ähnliches Problem, nur leider funktioniert bei mir der Workaround mit dem Kopieren in eine neue Logik nicht.

Da ich mir auf Grund dieses und ähnlicher Probleme mit dem Logikeditor angewöhnt habe, eine Logik nach der Veränderung jeder einzelnen Komponente zu speichern, kann ich ziemlich genau nachvollziehen wo der Fehler auftritt, und ich kann ihn gezielt reproduzieren.
Allerdings gibt das Auftreten des Fehlers große Rätsel auf.

Ich möchte eine Logik erstellen, um Pushover-Nachrichten mittels HTTP-API zu erstellen.

Die fertige Logik soll so aussehen:

Code: Alles auswählen

{

    "Level": [
        [
            "$Trigger",
            "bool",
            false
        ],
        [
            "$MessageOn",
            "string,1024",
            ""
        ],
        [
            "$MessageOff",
            "string,1024",
            ""
        ],
        [
            "$Token",
            "string,64",
            "ad1cjyoos81yfoevk5i6dqfcq5mcay"
        ],
        [
            "$User",
            "string,64",
            "udrt6qqircmkr748qegvbctextr99h"
        ],
        [
            "$Device",
            "string,64",
            "falk-phone"
        ],
        [
            "$Priority",
            "string,64",
            "0"
        ],
        [
            "$Title",
            "string,64",
            "System"
        ],
        [
            "$Message",
            "string,64",
            ""
        ],
        [
            "$VAR<Inhibit?>",
            "bool",
            false
        ]
    ],

    "Module": [
        [
            "Break",
            [
                "$VAR<Inhibit?>"
            ]
        ],
        [
            "Multiplexer",
            [
                "$MessageOff",
                "$MessageOn"
            ],
            "$Message",
            "$Trigger"
//        ],
//        [
//            "SendExplicit",
//            "$Trigger",
//            "$Message",
//            0
        ]
    ],

    "Input": [
        [
            "Ereignis",
            "Auslöser für die Pushover-Nachricht",
            "$Trigger",
            "c"
        ],
        [
            "Titel",
            "Titel der Pushover-Nachricht",
            "$Title",
            "c"
        ],
        [
            "Nachricht EIN",
            "Text der Pushover-Nachricht bei Eintritt des Ereignisses (Wechsel von FALSE auf TRUE)",
            "$MessageOn",
            "c"
        ],
        [
            "Nachricht AUS",
            "Text der Pushover-Nachricht bei Wegfall des Ereignisses (Wechsel von TRUE auf FALSE)",
            "$MessageOff",
            "c"
        ],
        [
            "Inhibitor",
            "Inhibitor",
            "$VAR<Inhibit?>",
            "u"
        ]
    ],

    "Output": [
        [
            "Token",
            "Token",
            "$Token",
            "c"
        ],
        [
            "User",
            "User",
            "$User",
            "c"
        ],
        [
            "Device",
            "Device",
            "$Device",
            "c"
        ],
        [
            "Priority",
            "Priority",
            "$Priority",
            "c"
        ],
        [
            "Title",
            "Title",
            "$Title",
            "c"
        ],
        [
            "Message",
            "Message",
            "$Message",
            "a"
        ]
    ]

}
Das Speichern der Logik funktioniert einwandfrei mit dieser Version:

Code: Alles auswählen

{

    "Level": [
        [
            "$Trigger",
            "bool",
            false
        ],
        [
            "$MessageOn",
            "string,1024",
            ""
        ],
        [
            "$MessageOff",
            "string,1024",
            ""
        ],
        [
            "$Token",
            "string,64",
            "ad1cjyoos81yfoevk5i6dqfcq5mcay"
        ],
        [
            "$User",
            "string,64",
            "udrt6qqircmkr748qegvbctextr99h"
        ],
        [
            "$Device",
            "string,64",
            "falk-phone"
        ],
        [
            "$Priority",
            "string,64",
            "0"
        ],
        [
            "$Title",
            "string,64",
            "System"
        ],
        [
            "$Message",
            "string,64",
            ""
        ],
        [
            "$VAR<Inhibit?>",
            "bool",
            false
        ]
    ],

    "Module": [
        [
            "Break",
            [
                "$VAR<Inhibit?>"
            ]
        ],
        [
            "Multiplexer",
            [
                "$MessageOff",
                "$MessageOn"
            ],
            "$Message",
            "$Trigger"
//        ],
//        [
//            "SendExplicit",
//            "$Trigger",
//            "$Message",
//            0
        ]
    ],

    "Input": [
        [
            "Ereignis",
            "Auslöser für die Pushover-Nachricht",
            "$Trigger",
            "c"
        ],
        [
            "Titel",
            "Titel der Pushover-Nachricht",
            "$Title",
            "c"
        ],
        [
            "Nachricht EIN",
            "Text der Pushover-Nachricht bei Eintritt des Ereignisses (Wechsel von FALSE auf TRUE)",
            "$MessageOn",
            "c"
        ],
        [
            "Nachricht AUS",
            "Text der Pushover-Nachricht bei Wegfall des Ereignisses (Wechsel von TRUE auf FALSE)",
            "$MessageOff",
            "c"
        ],
        [
            "Inhibitor",
            "Inhibitor",
            "$VAR<Inhibit?>",
            "u"
        ]
    ],

    "Output": [
        [
            "Token",
            "Token",
            "$Token",
            "c"
        ],
        [
            "User",
            "User",
            "$User",
            "c"
        ],
        [
            "Device",
            "Device",
            "$Device",
            "c"
        ],
        [
            "Priority",
            "Priority",
            "$Priority",
            "c"
        ],
        [
            "Message",
            "Message",
            "$Message",
            "a"
        ]
    ]

}
So lässt sich die Logik speichern und ausführen.

Wenn ich nun, quasi als letzen Schritt, einen weiteren Output einfüge

Code: Alles auswählen

        [
            "Title",
            "Title",
            "$Title",
            "c"
        ],
dann lässt sich die Logik nicht mehr speichern.

Bild

Detaillierte Fehlermeldung:
Bild
Bild

Das Rätsel dabei ist, dass die Fehlermeldung "Parsing error in "Input"" lautet, während ich den Input an dieser Stelle überhaupt nicht geändert habe.
Auch habe ich keine Variable hinzugefügt oder benutzt, die mit ähnlichem Namen schon mal aufgetreten ist.

An der mehrfachen Verwendung von $Message... hat sich der Logigeditor ja vorher nicht gestört.

Das Problem lässt sich exakt reproduzieren: ich kann entweder eine neue Custom-Logik erstellen und den Code ohne den Output "Title" einfügen, die Logik speichern und ausführen.
Oder ich kann die vorhandene Logik bereinigen (indem ich den Code einer funktionierenden Logik einfüge und diese dann speichere - es funktioniert allerdings nicht, nur den Output "Title" wieder zu entfernen :confusion-scratchheadyellow: ).

Hat jemand eine Idee?

Vielen Dank und viele Grüße
Falk