NEWS
[gelöst] Eingeschaltete Verbraucher überwachen
-
Mein Blockly funktioniert nicht! Aufgabe: wenn eines der bool - Objekte "wahr" wird, soll "Beleuchtung Dachgeschoss" auch "wahr" werden, wenn keines "wahr" ist, "falsch".
Ich habe mehrere Objekte mit "oder" verknüft. Das Ergebnis solle im angelegten Objekt "Beleuchtung Dachgeschoss" als bool gespeichert werden.Warum funktioniert mein Ansatz nicht?
Danke für eure Antworten!
Hans -
@tontechniker
Die Oder müssen an den Anfang und nicht in einen anderen Block rein. -
@tontechniker sagte: wenn eines der bool - Objekte "wahr" wird
Dann müssen auch diese 3 Datenpunkte triggern.
-
@paul53 sagt: Dann müssen auch diese 3 Datenpunkte triggern.
Vielen Dank! Daran habe ich nicht gedacht. Bin noch blutiger Anfänger mit Blockly.
Gruß
HansP.S.
Es kam noch diese Fehlermeldung:
"You are assigning a number to the state "0_userdata.0.Überwachte_Verbraucher.Beleuchtung_Garten" which expects a boolean. Please fix your code to use a boolean or change the state type to number".Nach einfügen von Konvertierung "nach Logikwert" funktionierte das Blockly wie gewünscht.
-
@tontechniker
Das Blockly kann nicht funktionieren, da die FALLS Bedingung kein Sinn ergibt. Was soll war sein?Wenn Das funktioniert, dann nur weil die FALLS eh immer war ist und somit einfach wegfallen kann und Du den Trigger auf "ist wahr" ändern müsstest.
Aktualisieren ist ebenfalls nicht richtig, da das eben nur aktualisiert und nicht steuert. Heißt es schreibt nur den Wert in den DP, sonst nichts. Wenn das gewünscht ist ok, aber soll hier nicht was geschaltet werden?
-
@jan1
Das "wahr" steht testweise für eine Freigabeobjekt, welches ich z.Zt. nicht habe. Wenn ich das "wahr" wegnehme, funktioniert das Blockly nicht.
Es soll nur das Ergebnis in der Visu angezeigt werden, und das funktioniert. -
Das ganze Blockly funktioniert nicht das es kein Sinn ergibt.
Ohne wahr fehlt eben etwas, wobei das keine Funktion ist. -
@jan1
Ich kann nur sagen, dass es zur Zufriedenheit funktioniert.Hab das für alle Stockwerke eingebaut und es ist O.K.!
-
@tontechniker
Das Ding macht nix sinnvolles, wenn das gewünscht ist funktioniert esWenn Du Hilfe willst, musst Du Dich auch darauf ein lassen bestehende Fehler zu akzeptieren und da gehts schon mit dem aktualisieren los. Das geht wahrscheinlich nur, weil Du danach konvertierst, was sinnlos ist, da das schon passt, der Block aber dann das Steuern übernimmt, was man mit dem richtigen Block eh schon machen würde.
-
@jan1
Das "Ding" zeigt mir im Ergebnis in der Visu-Übersicht, ob noch irgendwo ein Verbraucher eingeschaltet ist. Das ist die Funktion, die ich beabsichtige. -
@tontechniker
Ja aber so wie Du das aufbaust, ist das eher purer Zufall, dass das so funktioniert, weil das nur Funktionen einzelner Blöcke z einer gesamt Funktion zusammen baut, die ein einzelner Block mehr schon als logische Funktion beinhaltet.Was ich auch nicht verstehe, ist die ODER Funktion in der Falls. Du willst das eine Objekt ODER das andere aktualisieren. Wo her soll der Block denn nun wissen was er aktualisieren soll?
-
@jan1
Wie würdest Du denn die Aufgabe lösen?? -
@tontechniker
Beschreibe bitte noch mal was Du erreichen willst, weil so ganz habe ich das noch nicht verstanden. Wobei Dein Blockly eben auch kein Sinn ergibt.Du willst doch lediglich ein paar Lampen (wie viele?) prüfen, ob die an sind und wenn eine davon an ist, dann soll ein DP auf wahr wechseln, richtig?
-
@tontechniker sagte: Nach einfügen von Konvertierung "nach Logikwert" funktionierte das Blockly wie gewünscht.
Enthalten die Datenpunkte "Rundumleuchten" und "Wege" Zahlen (Anzahl der eingeschalteten Leuchten)? Wenn ja, dann bilde die Summe und prüfe diese auf > 0.
Man kann auch mit Typwandlung arbeiten, was aber der Verständlichkeit abträglich ist.
-
@paul53
Du bist ja der Blockly Spezi, deshalb mal ne Frage zu dem Blockly so wie es jetzt ist. Wie kann ich ein Objekt mit ner ODER definiert setzten? Wenn die beiden Objekte unterschiedlich sind, welches ist dann dominant?mal von der Konvertierung abgesehen, kann das doch so nicht funktionieren:
-
@jan1
Bei ODER (||) wird der erste (von links nach rechts) Operand zurück gegeben, dessen implizite Typwandlung true ergibt. -
@paul53
OK, heißt tatsächlich wenn einer der beiden Werte TRUE ist (oder eben nicht einer der Werte die ein FALSE verursachen), wird auf TRUE aktualisiert, oder beziehst Du das jetzt doch auf die Konvertierung auf ein Logikwert?
Die Konvertierung wird ja eh nur benötigt, wenn die Objekte nicht boolen sind, was noch nicht geklärt ist.Edit:
würde auch erklären warum das so funktioniert, obwohl das dann aber zu 100% Zufall ist, da er das was Du da aufführst als Anfänger nie und nimmer absichtlich gemacht hatDa empfehle ich aber trotz Funktion das auf "normal" umzubauen, da man diese Logik erst mal verinnerlichen muss.
-
@jan1 sagte: Die Konvertierung wird ja eh nur benötigt, wenn die Objekte nicht boolen sind
Ja, siehe Beispiel:
-
@paul53
OK, wieder was gelernt.
Mal schauen was @Tontechniker noch schreibt und ob die Konvertierung wirklich nötig ist, oder ob die nur zufällig das Blockly so zurecht biegt, dass es augenscheinlich das Tut was gewünscht ist, was wirklich Zufall sein sollte -
@jan1
Das mit der Konvertierung macht mich auch etwas stutzig. Meine verwendeten Objekte sind alle "bool". Trotzdem kommt die schon oben erwähnte Fehlermeldung im Log, wenn ich die Konvertierung nicht einfüge.
Ich habe drei Stockwerke mit je ca. 10 Objekten. In der Visu habe ich für jedes Stockwerk einen Indikator (bool) eingebaut, der anzeigt, dass noch nicht alle Objekte (Leuchten) aus sind.
Nach meinem Kentnisstand habe ich ein logisches "oder" über die Objekte mit meinem Blockly gebaut, das - bis auf die Konvertierung - so funktioniert wie gedacht.
Das das ein Zufallsprodukt sein soll, kann ich nicht glauben. Ich kann auch mal den Code des Blocklys hier einstellen, dann können die Spezialisten nachsehen, warum es funktioniert.
Hans