Blockly skript arbeiten eine bereich nicht ab.

  • Hallo zusammen,

    ich habe hier ein Blockly erstellt, funktioniert auch soweit nur die Sprachausgabe zu Alex will nicht bzw. funktioniert wenn ich es einfacher baue dann Spricht Alex es bei jeder Änderung immer wieder. Also habe ich mir gedacht ich setzt eine Variable mit den Wert 1 oder 0 , kann man sehen wieder der Wert gerade ist ????

    blockly2.jpg

    2 Mal editiert, zuletzt von kmuenke (24. November 2018 um 16:55) aus folgendem Grund: Wie bekommt man hier Bilder hoch geladen ????

  • Hi, du solltest den Wert der Variablen am Anfang des Script auf 0 setzten, damit sie einen definierten Wert haben. Sonst steht in der Variable [definition='20','0']Alexa[/definition] Puffer voll keine 0 und du erhälst keine Sprachausgabe weil die Bedingung nicht erfüllt ist.

    Also ganz Oben im Script

    Setzte Variable Puffer Voll auf 0

    Setzte Variable [definition='20','0']Alexa[/definition] Puffer voll auf 0

    Dann werden die Variablen bei Scriptstart einmal auf 0 gesetzt.

    Schöne Grüße
    Frank

  • Hallo Frank, ok das werde ich mal überlegen. Ich dachte mir das ich im 2 block wo ich die Thermostate schließe die Variable wieder auf null setze weil dort dann die Möglichkeit besteht das wenn ich es ganz am Anfang setze beim wieder aufheizen ich wieder in die Falle laufe ???

    Du würdest es also so machen ???

    blockly3.jpg

    Einmal editiert, zuletzt von kmuenke (24. November 2018 um 17:28)

  • Ja, fast so, die Variablen werden, wenn du sie über den Triggern setzt nur einmalig bei Starten, Neuladen oder beim Speichern des Scripts auf 0 gesetzt. Danach nicht mehr, weil sie ja nicht getriggert werden. Du musst aber das auf 0 setzten von [definition='20','0']Alexa[/definition] Puffer voll bei unter 65 wieder rein setzten, so wie du es erst hattest.

    Das Problem ist wenn man ein neues Script erstellt, weiß die Variable ja sonst nicht welchen Wert sie hat.

    Schöne Grüße
    Frank

  • Ja, das ist das Problem wenn man mit Variablen im Script arbeitet. Man muss die Variablem am Anfang des Scrips definieren. Normalerweise werden die nur einmal bei Scriptstart gesetzt, aber aus irgendeinem Grund läuft das Script wohl doch alle paar Minuten komplett durch und die werden wieder auf 0 gesetzt.

    Da gibts noch einen Trick, man fragt den Status der Variable bei Scriptstart ab, und nur wenn sie weder 1 oder 0 sind setzt man sie auf Null.

    Dafür nimmst du die beiden setzte Variable auf 0 und setzte Variable auf 0 oben raus und setzt das hier für jede Variable ein.

    https://drive.google.com/open?id=1nDeyb…3mXdjw5rzB5AD1C

    Also das ganz oben 2 mal einbauen und beim ersten bei den 3 Value, Puffer voll auswählen und beim 2 bei den 3 Value [definition='20','0'][definition='20','0']Alexa[/definition][/definition] Puffer voll auswählen. Ich hoffe das war verständlich. Sonst poste mal den Code, und ich mach dir das.

    Schöne Grüße
    Frank

  • Fast, bei dem oberen in alle Felder Puffer voll auswählen, bei dem unter bei allen [definition='20','0']Alexa[/definition] Puffer voll

    Falls Puffer Voll ungleich 0 und Puffer Voll ungleich 1 mache setzte Puffer Voll auf 0

    Falls [definition='20','0']Alexa[/definition] Puffer Voll ungleich 0 und [definition='20','0']Alexa[/definition] Puffer Voll ungleich 1 mache setzte [definition='20','0']Alexa[/definition] Puffer Voll auf 0

    Schöne Grüße
    Frank

  • Die Variablen in einem Script müssen ja einen Wert haben, damit man sie auswerten kann. Erstmal hat die Variable keinen Wert. Man kann bei Variablen ja alle möglichen Werte nutzen, z.B wie bei dir 0 und 1. Man kann aber auch wahr, unwahr, 3, 4, oder irgendwelche Prozente oder Texte nutzen. Deshalb muss die Variable am Anfang des Scrips erst mal auf einen bestimmten Wert gesetzt werden. Das passiert eigentlich nur beim Sript Start. Aus irgendeinem Grund passiert das aber auch zwischendurch mal. Deshalb machen wir in deinem Fall ne Abfrage. Ist die Variable nicht 0 und auch nicht 1 dann setzen wir sie auf Null. Die Abfrage ist drin, damit die Variable nicht auf 0 gesetzt wird falls sie 1 ist. Du setzt sie ja mit deinem Script auf 1 falls der Puffer voll ist. Und damit sie dann nicht beim Scriptdurchlauf fälschlicherweise auf 0 gesetzt wird, machen wir diese Abfrage.

    Schöne Grüße
    Frank

  • Ah ok sowas dachte ich mir schon. Super erklärt habe ich verstanden. Ofen ist an und dann schauen wir mal was [definition='20','0']Alexa[/definition] heute da von sich gibt bzw. ich lasse das erstmal aus und nutze nur den Telegram um zu Testen ob es funktioniert. Sonst steigt mir meine Frau wieder aufs Dach.;(

    Werde das Script dann mal erweitern um die Funktion das wenn der Puffer voll ist sollen alle Thermostate auf 24 Grad gesetzt werden. Fällt de Termperatur unter den Puffer Voll Wert sollen sie wieder auf 22 Grad gesetzt werden.

    Danke schon mal für die Unterstützung.:thumbup:

  • Hi, ich persönlich nutze immer selbst erstellte Objekte anstatt den Variablen. Die kann ich dann in jedem Script nutzen und ich habe nicht das Problem mit dem undefinierten Zustand der Variablen. Objektzustände behalten ihren Wert. Variblen müssen immer definiert werden.

    Schöne Grüße
    Frank

  • Bin ich ganz daneben oder gehören die grünen Werte (zB 66) nicht als Text, sondern als Zahl. Selbst wenn es wirklich Texte in den Datenpunkten sind ist ein größer (<) mit Stings nicht das was man normalerweise will.

    Einmal editiert, zuletzt von Georgius (30. November 2018 um 01:07)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!