Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. PING Smartphone WLAN Energiesparmodus berücksichtigen

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    PING Smartphone WLAN Energiesparmodus berücksichtigen

    This topic has been deleted. Only users with topic management privileges can see it.
    • A
      AlyxAbyss last edited by AlyxAbyss

      Hey Community,

      ich versuche mich zur Zeit an meinen ersten Blockly Scripten und stoße aktuell vor einem kleineren Problem.

      Und zwar habe ich vor, dass sobald meine Tochter in WLAN Reichweite ist mein Echo mir dies mitteilt und ich ebenfalls eine Telegram Nachricht erhalte. Das selbe wenn sie das WLAN Netzwerk verlässt.

      Klappt soweit auch prima. Allerdings ist mir aufgefallen, dass ich in etwa alle 15 Minuten eine Falschmeldung erhalte, da ihr Handy bei Nichtbenutzung sich immer wieder aus dem WLAN ausklingt und kurz darauf wieder einklinkt. Oft sind da nur wenige Sekunden zwischen. Das nervt schnell.

      Mir ist klar, dass man den Energiesparmodus am Smartphone auch umstellen kann. Trotzdem würde ich das Problem gerne seitens ioBroker lösen, da ich ähnliche Scripte auch für Besucher erstellen möchte und nicht von jedem Verlangen kann bloß für mich, seine WLAN Einstellungen zu ändern.

      Außerdem möchte ich das Script noch soweit erweitern, dass sich die Lichter zuhause ausschalten, wenn meine Tochter die Wohnung verlässt und sich direkt einschalten sobald sie zuhause ankommt. Da ist es natürlich auch kontraproduktiv wenn die WLAN Verbindung zwischendurch immer mal kurz verschwindet.

      Meine Idee wäre, dass wenn der Wert "Alive Smartphone Paula" sich ändert, nicht direkt die Befehle gestartet werden, sondern nochmal gegen geprüft wird.

      Das Smartphone klingt sich aus dem WLAN aus.

      "Alive Smartphone Paula" springt auf "false"

      Nun soll das Script nach z.B. 2 Minuten nochmal prüfen ob der Wert sich noch immer auf "false" befindet und erst dann die Befehle ausführen.

      Bei "Alive Smartphone Paula" = "True" soll es sich ähnlich verhalten. Aber da wäre es super, wenn die Befehle sofort gestartet werden würden, damit sie zuhause nicht erst noch 2 Minuten im dunkeln steht. Soll aber auch keinen Fehlalarm auslösen, weil der Wert kurzzeitig auf "false" gesprungen ist.

      So sieht mein Script aktuell aus:
      (Befehle für Lichter sind da noch nicht enthalten)

      chrome_0cA0sFIwIa.jpg

      Hoffe ihr habt ein paar gute Lösungsvorschläge für mich.

      mickym 1 Reply Last reply Reply Quote 0
      • mickym
        mickym Most Active @AlyxAbyss last edited by mickym

        @athomic_arts Ich verhindere das - in dem ich bei false einfach 10 Minuten warte bis, ich das als bestätigt annehme.
        Also mach einfach einen Timer in Deinen false Ast. Den Timer löscht Du im True Ast, sodass kein falscher Alarm gesendet wird.

        Kannst natürlich auch 2 Min nehmen - letztlich ist das egal wie lange Du den Timer einstellst - hängt halt davon ab, wieviel Fehlalarme Du hast.

        Also den ganzen falsch Ast führst Du erst nach einem Timeout aus.

        2a0c71e0-6c15-457f-8651-9ad0dcd59ded-image.png

        Im True Ast löscht Du den Timer wieder - so dass die fehlerhafte Meldung unterbleibt und dieser auch weiterhin sofort reagiert:

        dc95a89f-8869-4d8d-b7fb-d50965fcfc6b-image.png

        Im Prinzip funktioniert es also so, dass man nach 2 Minuten nicht nochmals überprüft, sondern wenn innerhalb dieser Zeit sich das Telefon wieder meldet unterbleibt die Abwesensheitsmeldung.

        A 1 Reply Last reply Reply Quote 1
        • A
          AlyxAbyss @mickym last edited by AlyxAbyss

          @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:

          chrome_iF41S1SrtP.jpg

          mickym paul53 2 Replies Last reply Reply Quote 0
          • mickym
            mickym Most Active @AlyxAbyss last edited by

            @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.

            1 Reply Last reply Reply Quote 0
            • paul53
              paul53 @AlyxAbyss last edited by

              @athomic_arts sagte: prüfen ob der Wert "false" nur kurzzeitig gesetzt war

              Bild_2022-01-16_175453.png

              A 1 Reply Last reply Reply Quote 1
              • A
                AlyxAbyss @paul53 last edited by

                @paul53 Hat prima funktioniert. Dankeschön 🙂

                Das Script sieht nun so aus:

                chrome_RVlT1Q0fy6.jpg

                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 = false

                Nun 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. 😄

                S 1 Reply Last reply Reply Quote 0
                • S
                  Schlumpf @AlyxAbyss last edited by

                  @alyxabyss

                  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

                  S 1 Reply Last reply Reply Quote 1
                  • S
                    Schlumpf @Schlumpf last edited by

                    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?

                    69275817-bf45-4640-b286-2ed901b0b908-grafik.png

                    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.

                    paul53 1 Reply Last reply Reply Quote 0
                    • paul53
                      paul53 @Schlumpf last edited by paul53

                      @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.

                      S 1 Reply Last reply Reply Quote 0
                      • S
                        Schlumpf @paul53 last edited by

                        @paul53

                        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?

                        paul53 1 Reply Last reply Reply Quote 0
                        • paul53
                          paul53 @Schlumpf last edited by

                          @schlumpf sagte: Könnte man sowas nicht auch mit einer Liste oder Änlichem bewerkstellen?

                          Bild_2022-04-06_161720959.png

                          S 2 Replies Last reply Reply Quote 0
                          • S
                            Schlumpf @paul53 last edited by

                            @paul53

                            WOW, so einfach? Oh mann!!! 😄

                            Also, ich habe zwar noch nicht ganz verstand "warum" aber es funktioniert!

                            Vielen Dank Paul, du bist der Beste!

                            1 Reply Last reply Reply Quote 0
                            • S
                              Schlumpf @paul53 last edited by

                              @paul53

                              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.

                              Blinken.jpg

                              paul53 1 Reply Last reply Reply Quote 0
                              • paul53
                                paul53 @Schlumpf last edited by

                                @schlumpf sagte: leider nur mit einer Lampe anstatt beiden.

                                Nimm die Blöcke "die Schleife abbrechen" raus.

                                S 1 Reply Last reply Reply Quote 0
                                • S
                                  Schlumpf @paul53 last edited by

                                  @paul53

                                  Oh.....

                                  Ja, jetzt klappt es. 😄

                                  Wie immer vielen Dank Paul.

                                  1 Reply Last reply Reply Quote 0
                                  • First post
                                    Last post

                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate

                                  455
                                  Online

                                  31.9k
                                  Users

                                  80.2k
                                  Topics

                                  1.3m
                                  Posts

                                  4
                                  15
                                  681
                                  Loading More Posts
                                  • Oldest to Newest
                                  • Newest to Oldest
                                  • Most Votes
                                  Reply
                                  • Reply as topic
                                  Log in to reply
                                  Community
                                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                  The ioBroker Community 2014-2023
                                  logo