NEWS
PING Smartphone WLAN Energiesparmodus berücksichtigen
-
@mickym Dankeschön. Das hat ein Großteil des Problems lösen können.
Jetzt bekomme ich bei "false" nicht mehr direkt ne Falschmeldung.
Bei "true" wird das Script sofort ausgeführt.Da ich das Ganze jetzt allerdings ja auch so ausbauen möchte, dass sich beim nachhause kommen die Lichter einschalten, werde ich allerdings wohl bald vor einem anderen Problem stehen:
Nehmen wir mal an, ich (oder meine Tochter) sitzen zuhause und schauen ein Film und schalten dafür manuell die Lichter aus. Der WLAN Wert springt nun plötzlich wieder fälschlicherweise auf false. Die Lichter bleiben aus, was ja auch gut so ist.
Aber er springt kurze Zeit später ja wieder auf True und schaltet dann ungewollt die Lichter wieder ein.
Theoretisch müsste das Script prüfen ob der Wert "false" nur kurzzeitig gesetzt war und das darauffolgende "true" dann nicht direkt nochmal ausführen.
Bisschen tricky denk ich mal. Aber vielleicht hat ja jemand eine Idee wie man das lösen könnte.
So sieht mein Script aktuell aus:
-
@athomic_arts Ich meine Du kannst das immer weiter so treiben, Du kannst natürlich hinter den Timer im False Ast eine Variable auf false setzen, einen neuen Timer kreieren, der nach Ablauf Deiner Zeit diese Variable wieder auf true setzt und dass dann als Bedingung für Deinen True Ast nehmen.
Du wirst aber irgendwann in Teufelsküche kommen.
Ich halte es für sinnvoller (wenn Dein Fernseher zum Beispiel im WLAN) ist oder irgendwelche anderen Dinge, diese in eine Ausnahmeliste - zu bringen, die Deine Automatik einfach deaktiviert. Bei bleiben umgekehrt bestimmte Lichter an, wenn der Fernseher läuft auch wenn in dem Zimmer keine Bewegung registriert wird usw.
Jedenfalls ist so was leichter logisch zu handeln. Wie gesagt Du kannst es so machen, wie ich am Anfang beschrieben habe, aber ich möchte nicht wissen, wie oft dann Deine Lichter nicht angehen, wenn sie angehen sollen, aber gerade die Überprüfung auf kurz aus, aktiv ist.
-
@athomic_arts sagte: prüfen ob der Wert "false" nur kurzzeitig gesetzt war
-
@paul53 Hat prima funktioniert. Dankeschön
Das Script sieht nun so aus:
Jetzt habe ich noch einige manuelle Datenpunkte erstellt. Der Wert wird bei der jeweiligen Person auf True gestellt, wenn diese Zuhause ist. Das klappt auch.
Alex = false
Paula = true
Lilo = false
Amy = falseNun erstelle ich ein neues Script.
Dafür benötige ich einen Trigger der prüft ob eine der jeweiligen Personen zuhause ist. Schließlich sollen sich die Lichter erst abschalten wenn alle Personen auf "false" stehen bzw. sich einschalten wenn einer oder mehr "true" ist.Ist bestimmt nicht schwer, aber ich als Anfänger komme nicht drauf wie man das am einfachsten umsetzt.
Alle Lösungen die mir einfallen, würden zu einem überladenen Skript führen. -
Hy, denke das du nach so langer Zeit schon eine entsprechende Lösung gefunden hast aber da ich grade erst diesen Beitrag gesehen habe (habe mal ganz dreißt dein Skript kopiert
) dachte ich schreib mal wie ich das gelöst habe:
Als erstes habe ich, ähnlich wie du, allen ein eigenes Objekt gegeben (Anwesenheit XX: true/false) welches ich durch mehrere Skripte steuere (Ping, Kamera usw.). Durch diese Objekte werden wiederum andere Skripte gesteuert für die einzelnen Dinge die passieren sollen wenn XX anwesend ist.
Zusätzlich habe ich zwei allgemeines Objekte: "Status" und "Status manuell". Hier wird (bei "Status"), wenn mindestens eine Person anwesend ist "Zuhause" eingetragen, wenn alle weg sind "Abwesend". Gesteuert durch ein separates Skript, welches sich auf die "Anwesenheit" Objekte bezieht.
Das Objekt "Status manuell" ist für die Visualisierung gedacht, damit hier eben "manuell" zumindest die allgemeine Anwesenheit/Abwesenheit angeklickt werden kann. Ein Skript wiederum überträgt das auf den normalen "Status".Das Skript zum Abfragen der "Anwesenheit" und Eintragung vom "Status" lauf über mehrere ODER-Verknüpfungen und beinhaltet noch Dinge wie Telegram-Nachricht bzgl. "Status" und die Urlaubsmeldung.
Gruß
Jan -
An alle die Ahnung haben: Würde das in diesem Beispiel nicht auch funktionieren? Ich weiß das hierbei nur eins der Objekte sich ändern muss um den Trigger zu triggern. Würde aber die Abfrage nach dem Wert auch beinhalten das nur eins der Objekte Wahr sein müsste?
Ist jetzt nur so dahin "geschmiert", daher keine Eintragungen, geht hier nur darum das ihr versteht was ich meine.
Antwort wäre schön, könnte das durchaus auch in anderen Bereichen einsetzen wenn es so funktioniert.
-
@schlumpf sagte: Würde aber die Abfrage nach dem Wert auch beinhalten das nur eins der Objekte Wahr sein müsste?
Nein, es muss eine ODER-Verknüpfung aller Werte erfolgen, wenn man erfassen will, dass kein Wert wahr ist. Bei so vielen Datenpunkten verwendet man besser eine Schleife über eine Liste, ähnlich wie hier.
-
Ok, wenn ich das richtig verstehe funktioniert das nicht weil er nicht alle zusammen abfragt sondern jedes einzeln.
Das was du geschrieben hast hatte ich mir auch schon angeguckt und versucht nachzubauen, hab es aber nicht hinbekommen. Ich denke das liegt daran, dass, wenn ich es richtig verstanden habe, die Aufzählungen abgefragt werden. Diese nutze ich allerdings nicht, daher scheint es bei mir nicht zu funktionieren.
Könnte man sowas nicht auch mit einer Liste oder Änlichem bewerkstellen?
-
@schlumpf sagte: Könnte man sowas nicht auch mit einer Liste oder Änlichem bewerkstellen?
-
WOW, so einfach? Oh mann!!!
Also, ich habe zwar noch nicht ganz verstand "warum" aber es funktioniert!
Vielen Dank Paul, du bist der Beste!
-
Hallo Paul, ich schon wieder.
Habe versucht das Blockly oben für ein anderes Projekt umzubauen, komme aber grade nicht weiter und hoffe du bist so geduldig und hilfst mir nochmal.
Eigentlich wollte ich einfach nur 2 Lampen in vorher über mein VIS zu definierenden Farbein blinken lassen. Soweit so gut, hat eigentlich auch alles soweit funktioniert. Ich habe mir ein Skript geschrieben, welches die Werte aus 4 Benutzerdefinierten Objekten nimmt und sie zu einem Comando für die beiden Hue-Lampen umwandelt und mit dem "alert:lselect" zum Blinken bringt. Hier habe ich 2 Skripte zusammen gebaut.
In der Theorie (nach ein paar Versuchen) klappt es auch, nur leider nur mit einer Lampe anstatt beiden. Sicher einfach nur ein dummer denkfehler oder fehlendes Wissen, aber ich komme einfach nicht drauf.
-
@schlumpf sagte: leider nur mit einer Lampe anstatt beiden.
Nimm die Blöcke "die Schleife abbrechen" raus.
-