NEWS
Wo finde ich diese Buttons ?
-
Hallo,
ich fange gerade neu an auf diesem Gebiet und versuche gerade ein Script zu schreiben.
Nun nutze ich Blockly und versuche folgendes zu realisieren:
- Falls A oder B dann mache das ...
Ich finde aber nur, Falls A, dann mache das
Auch kann ich keine UND-Verknüpfung mit Objekten verbinden.
Sprich, falls Objekt 1 = wahr UND Objekt 2=wahr....... nur kann ich dann auch nicht einfach wieder in die anderen Funktionen rein, weil irgendwie Logik nur mit Logik zusammenarbeitet, aber nicht mit Funktionen...schade.
oder wie realisiere ich das:
falls das licht an ist und A, B oder C sendet eine 1, dann mache folgendes ?
ich finde irgendwie keine passenden bausteine, weil oft die art von bausteine nicht miteinander harmonieren
-
da gibt es noch einen UND/ODER Block, den musst du in das Falls reinschieben
EDIT:
Gruß
Rainer -
Drück mal auf das Zahnrad vor dem "falls"
Da kannst du auch noch "sonst falls" und "sonst" einbauen und damit mehrere Bedingungen prüfen...
-
Vielen Dank !!!
was genau bedeutet dieses WERT von objekt ? heißt das, wenn der Wert = 1 ist ?
ich versuche gerade eine steuerung mit fensterkontakten zu realisieren.
wenn, das gateway aktiviert wurde und die leuchte leuchtet, erst dann reagiere auf fensterkontakte und entweder bringe eine leuchte zum leuchten, oder eine sirene....
im moment versuche ich erstmal überhaupt etwas zu realisieren, nur irgendwie mache ich es falsch, denn es tut sich nichts.
ich sehe gerade bei dir ein = 2 am ende des objekts...also wenn wert von objekt = 2....bei mir gibt es aber kein " = "
-
Das "=" ist bei den Logic-Blöcken...
-
Danke, aber irgendwie funktioniert mein vorhaben nicht.
ich erkläre mal was das da bedeuten soll, von oben nach unten....
falls "objekt is openend" schalte die lampe des gateways in einer bestimmten helligkeit und farbe an....
funktioniert auch prima....
dann kommt das blaue:
falls der wert von Light = 1 ist UND kontakt 1 oder 2 auch =1 ist, schalte eine lampe an....
aber es tut sich nichts, obwohl in den objekten wirklich light = true steht...
EDIT:
habe die = 1 mal gegen = true getauscht....lampe geht trotzdem nicht an
-
@Smuji "ist grösser als letztes"?
Sollte "wurde geändert" sein -
Wie crunchip schon sagt. Der Trigger sollte auf "wurde geändert" stehen, oder auch "wurde aktualisiert".
Dann gibt es unter den Logikblöcken einen "wahr/unwahr" Block. Den solltest du nehmen anstelle der mathematischen 1.
Außerdem verwende mal den System Block "steuere Objekt mit "wahr/unwahr"" anstelle von "umschalten"Noch zwei kleine Tipps... Ein rechtsklick auf den "und/oder" Block -> "externe Eingänge". Macht es übersichtlicher.
Das blaue Zahnrad neben dem "falls" lässt sich anklicken um weitere "sonst falls" zu generieren.Soo viele Blockly Bausteine gibt es ja garnicht. Verschaff dir mal einen Überblick und probier etwas rum.
Viel Erfolg
-
an sich ist das "umschalten" und "ist größer als letztes" schon richtig, denn, es soll ja nur auf eine änderung von 0 zu 1 reagiert werden (taster drücken) und nicht von 0 zu 1 (taster los lassen)
nehme ich "steuere" statt "umschalten", dann wird es ja genau einmal eingeschaltet, aber für das auschalten muss wieder ein neuer befehl geschrieben werden..
dabei möchte ich das gateway mit dem taster aktiv schalten und bei erneutem drücken wieder inaktiv...
aktiv = LED leuchtet und reagiert auf alle fensterkontakte.
inaktiv = led ist AUS und reagiert auf keine kontakte mehr....
ich denke das war anfang schon garnicht so verkehrt.
bzgl dem "wahr und unwahr" statt 0 und 1, habe ich so geändert.
aber das funktioniert ja auch, es funktioniert nur nicht der utnere, blaue "falls" block nicht....
falls wert von objekt light (das ist das gateway und dort die leuchte) = wahr ist UND kontakt A oder kontakt B auch = wahr ist, dann schalte das licht wieder aus (nur zu testzwecken)...
aber das tut es nicht...obwohl objekt light wirklich auf true steht und der kontakt geöffnet wird und somit eine true sendet.... irgdenwie kappt die logik nicht
kann es damit zusammenhängen, dass "wert von objekt leuchte" nicht mit = wahr oder = unwahr verknüpft werden kann, sondern nur zahlenwerte wie z.b. dimmwerte arbeitet ?
-
ich habe es jetzt mal so gemacht, ohne das = wahr
das MUSS doch funktionieren, tut es aber nicht, wieso ?
falls -> wert vom objekt Light (ist derzeit auf 1) UND wert vom fensterkontakt 1 ODER fensterkontakt 2
mache -> das licht wieder aus... also umschalten....derzeit ist es AN, also müsste es doch dann AUS gehen ?
tut es aber nicht... die fensterkontakte funktionieren aber
-
Das ist kein Triggerbaustein!
Der Logikbaustein darf nur als weitere "Subroutine" verwendet werden.
zur Reaktion als Trigger brauchst du den Roten -
@Smuji weil das sinnentleert ist
"Falls Wert von Light"
UND
"Wert is opened" ODER "Wert is opened"WAS soll denn der Wert von Light sein?? - das sagst Du nicht
WAS Soll denn "is opened" oder "is opened" sein?Merkst Du selber, oder?
-
@ homo: danke...gut, dann weiß ich da bescheid.
@BB: oben hatte ich es mal mit = true probiert, daher dachte ich ich probiere es mal ohne...
is opened heißt mein fensterkontakt..... da steht bei state , name: is opened und kann wert true oder false annehmennun habe ich was dazugelernt
ich habe es nun wieder in den ursprung versetzt und mit = wahr versehen, nur wie bringe ich nun die blauen Falls-bedingungen zum triggern ? ich hatte versucht diesen block einfach mit in den obigen trigger einzufügen, geht aber nicht...
ich habe es nun so probiert:
-
@Smuji Dein Triggerpunkt (Auslöser = > das was DU beobachtest,bzw. das worauf Du reagieren willst), das ist der "rote" Bereich
Alles was anschließend ausgelöst werden soll aufgrund der Änderung deines Triggerpunktes (deines beobachteten Datenpunktes) muss also INNERHALB der "roten Klammer" stehen.
Alles was Außerhalb der roten Klammer steht steht, wird nicht von Trigger gesteuert.Nun willst Du als nächstes unterscheiden WIE sich dein Triggerpunkt verändert hat.
Hat er sich bspw. von "true" auf false" verändert, soll womöglich etwas anderes als Reaktion erfolgen, als wäre er anders herum von "false" auf "true" gewechselt.Deshalb legst Du nun INNERHALB des roten Bereiches eine blaue "Falls" Bedingung an.
Alles was nun INNERHALB dieser blauen "Falls" Bedingung steht wird entsprechend ausgeführt
Eine weitere "Falls" Bedingung (oder auch "SONST FALLS") fängt dann den zweiten Fall ab -
ok, habe ich eigentlich auch grob verstanden, also habe ich eine zweite trigger-klammer erzeugt.
also auslöser habe ich den aktuellen licht-zustand gewählt. falls dieser wahr ist, geht es in die blaue "falls" bedingung....
oder MUSS alles zwangsläufig in der ersten roten trigger rein?
-
@Smuji sagte in Wo finde ich diese Buttons ?:
also habe ich eine zweite trigger-klammer erzeugt.
Wo genau?
Trigger in Trigger geht nicht -
@Smuji schreibe doch einfach mal in Fließtext auf was genau Du erreichen willst:
z.B.
"Wenn ein bestimmtes Licht eingeschaltet wird, dann soll das und das passieren, aber auch nur wenn es draußen gerade nicht regnet"
"Wenn ein bestimmtes Licht ausgeschaltet wird, dann soll hingegen das und das geschehen, egal ob es regnet oder nicht"Verstehst Du was ich meine?
Solange wir nicht wissen was Du eigentlich genau, unter welcher Voraussetzung schalten willst oder auch nicht, können wir dir nur allgemein Antworten geben.Dir fehlen offensichtlich noch ein paar Mosaiksteine in dem Puzzle, so dass Dir das gesamte Bild noch nicht ganz klar ist, aber das bekommen wir schon noch hin
-
habe ich doch schon mehrmals.....
ein taster aktiviert die "alarmanlage" und ihre Bereitschaft signalisiert sie mit einem LED-licht.
wenn sie aktiv ist, reagiert sie auf einen fensterkontakt und soll später (noch nicht eingebaut) yeelight-lampen einschalten.
drückt man den taster nochmals, wird sie wieder deaktiviert,LED geht aus und fensterkontakte sind funktionslos....
mich interessiert einfach nur, warum die untere schleiche "tot" ist(ich suche meinen denkfehler).....ich habe sie doch in einen roten trigger gepackt...
Falls Objekt Light = wahr (falls sie aktiv geschaltet wurde und nur dann)
regaiere auf die "is opened = wahr" (fenster offen = wahr)
und "umschalte" die leuchte, die den trigger ausgelöst hat. (das bleibt natürlich nicht so, ist aber im moment die einzige leuchte zum funktionstest) ich will nur erstmal die funktion überprüfen, bevor ich noch weiteres hinzufügeliegt es nun daran, dass die gleiche leuchte den trigger startet, welche dann vom trigger "umgeschaltet" werden soll? geht es deswegen nicht ?
-
@Smuji sagte in Wo finde ich diese Buttons ?:
wenn sie aktiv ist, reagiert sie auf einen fensterkontakt und soll später (noch nicht eingebaut) yeelight-lampen einschalten.
Dazu brauchst du keinen zweiten Trigger, sondern ein SONSTWENN
-
ok, ein else if sozusagen.... aber eigentlich müsste es doch auch so gehen? oder funktionieren 2 trigger einfach nicht ?
aber ich verstehe nicht wo ich den "sonst wenn" einbauen soll ?
ich kenne einen "sonst wenn" so:
wenn A passiert, mache X
wenn aber B passiert, mache Y
in meinem fall ist es ja eher ein;
wenn A passiert, mache X
wenn X gemacht wurde, überprüfe ob D oder E und mache dann T
p.s. WARUM, funktioniert mein obiges nicht ? ich möchte nicht gezeigt bekommen, WAS ich machen soll, sondern WESHALB meins nicht geht, sonst stehe ich beim nächsten mal vor dem gleichen problem, weil ich nicht verstanden habe, warum es falsch war. du verstehen ?