Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. [gelöst] Anwesenheit über Kategorie (alt Funktion)

    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

    [gelöst] Anwesenheit über Kategorie (alt Funktion)

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

      Hallo zusammen,

      ich habe eigene Datenpunkte erstellt, die abbilden, ob Geräte an der Fritzbox als aktiv gemeldet sind, oder nicht. Die Geräte an denen ich ablesen möchte, ob jemand auch tatsächlich in der Wohnung ist habe ich in die Kategorie "Anwesenheit" gesteckt.

      Nun ist der Plan, dass die Blockly-Abfrage über die Kategorie läuft, ob irgendein Gerät aktiv ist, oder alle offline sind. Sprich, ist irgendein Gerät online, ist auch jemand zuhause. Falls nicht, nur noch der Kater.

      Mit der Kategorie habe ich es auch gelöst, um Infos zu erhalten, wo eine Batterie getauscht werden müsste. Das läuft super!

      Die Namen in der Kategorie und im Skript habe ich exakt gleich. Keine Tippfehler.
      Trotzdem schaltet mir das Skript den Datenpunkt nicht. Selbst wenn ich manuell einen Datenpunkt ändere müsste die "Anwesenheit" wenigstens auf wahr springen. Seit dem Erstellen ist es aber stur auf falsch. Es ändert sich nicht und ich komme nicht dahinter, wo ich meinen Fehler habe.

      Hier der Code fürs Skript:

      <xml xmlns="https://developers.google.com/blockly/xml">
        <block type="on_ext" id="Z}2t_*n%4$_%[gM;APn$" x="62" y="13">
          <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
          <field name="CONDITION">any</field>
          <field name="ACK_CONDITION"></field>
          <value name="OID0">
            <shadow type="field_oid" id="e`@I0yg8?YL`Ggv{G;lE">
              <field name="oid">ID auswählen</field>
            </shadow>
            <block type="selector" id="tZiru3P4!cL1[.;jM6?,">
              <field name="TEXT">state[id=*](functions=anwesenheit)</field>
            </block>
          </value>
          <statement name="STATEMENT">
            <block type="controls_if" id="uIpY_0h,Nwu)metV1KI|">
              <mutation else="1"></mutation>
              <value name="IF0">
                <block type="logic_compare" id="^}@bNNRP,2Z;xM%[=Osu" inline="false">
                  <field name="OP">EQ</field>
                  <value name="A">
                    <block type="on_source" id="GhnJ/]0IPRN8Vmv1u%m-">
                      <field name="ATTR">state.val</field>
                    </block>
                  </value>
                  <value name="B">
                    <block type="logic_boolean" id=".O78$-;wUXLqq#H;B.F?">
                      <field name="BOOL">TRUE</field>
                    </block>
                  </value>
                </block>
              </value>
              <statement name="DO0">
                <block type="update" id="xecA9n4SCYbwD[$=sks6">
                  <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                  <field name="OID">0_userdata.0.Anwesenheit</field>
                  <field name="WITH_DELAY">FALSE</field>
                  <value name="VALUE">
                    <block type="logic_boolean" id="MAm6^8ADJ:]/@(_@gG!y">
                      <field name="BOOL">TRUE</field>
                    </block>
                  </value>
                </block>
              </statement>
              <statement name="ELSE">
                <block type="update" id="*d@zoz|)QNmrAKDigD=%">
                  <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                  <field name="OID">0_userdata.0.Anwesenheit</field>
                  <field name="WITH_DELAY">FALSE</field>
                  <value name="VALUE">
                    <block type="logic_boolean" id="k?7BgBhU|ph?S.]V/k%o">
                      <field name="BOOL">FALSE</field>
                    </block>
                  </value>
                </block>
              </statement>
            </block>
          </statement>
        </block>
      </xml>
      

      Vielleicht ist irgendwem klar, wo mein ?Fehler? liegt 😊

      Grüßle!

      Homoran paul53 3 Replies Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @R. Frase last edited by

        @r-frase sagte in Anwesenheit über Kategorie (alt Funktion):

        Vielleicht ist irgendwem klar, wo mein ?Fehler? liegt

        nicht ohne das Blockly zu sehen
        https://forum.iobroker.net/topic/51555/hinweise-für-gute-forenbeiträge/1

        1 Reply Last reply Reply Quote 0
        • paul53
          paul53 @R. Frase last edited by

          @r-frase sagte: Die Namen in der Kategorie und im Skript habe ich exakt gleich.

          Die ID ist "enum.functions.anwesenheit"?

          1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @R. Frase last edited by

            @r-frase sagte: wo mein ?Fehler? liegt

            Man darf nicht nur den Datenpunkt auswerten, der gerade triggert, sondern man muss alle Datenpunkte prüfen (Schleife).

            Blockly_temp.JPG

            1 Reply Last reply Reply Quote 1
            • R. Frase
              R. Frase last edited by R. Frase

              Hallo zusammen und vielen lieben Dank für eure Antworten! 🙂

              Ich bitte um Entschuldigung, dass ich kein Bild vom Blockly hinterlegt hatte @Homoran.
              Und dein Blockly-Skript funktioniert perfekt @paul53!

              Zwei Dinge... bei meiner Abfrage für den Batteriestatus funktioniert es ohne Schleife. Warum? Da werden doch auch alles Batterien abgefragt? Oder bilde ich mir das nur ein? 🤔
              Weil, von drei Fernbedienungen ausgelöst, habe ich bereits Nachrichten per Whatsapp erhalten, dass die Batterie geprüft werden soll.

              Hier mein Blockly dazu:
              Screenshot 2024-09-24 115906.JPG
              Man sieht auch die "Subscriptions".
              Oder stimmt das schon, dass keine Schleife benötigt wird, da ich ALLE schlechten Batteriestände haben will und bei der Anwesenheit das Prüfen dann aufgehört werden kann, wenn das erste Gerät eine Anwesenheit darstellt?

              Bzgl. der Subscriptions im aktuellen Blockly, wo es bisher nicht funktioniert hat, hatte ich noch die betreffende Funktion als Unterordner von Alarm geändert. Der Plan war das mit einer Alarmanlage nachzurüsten... also mache ich es ordentlich.
              Und jetzt hatte ich spontan die Erleuchtung warum keine Subscriptions gezählt wurden: es muss heißen "alarm.anwesenheit". Jetzt habe ich spontan 8 Subscriptions und es wird geschaltet. Ich war davon ausgegangen, dass "anwesenheit" ausreicht. Wieder was gelernt 😜
              Screenshot 2024-09-24 120353.JPG

              Ich muss mich in diese Schleifenlogik noch hineinfuchsen, deshalb nochmal vielen Dank für die Starthilfe!

              Wäre also noch immer diese blöde Frage, ob meine Batterien richtig überwacht werden 😱

              A 1 Reply Last reply Reply Quote 0
              • A
                Ahnungsbefreit @R. Frase last edited by

                @r-frase Das sind doch 2 unterschiedliche Logiken:

                • Bei den Batterien willst Du dann eine Meldung, wenn bei einem Device der Level geändert wurde und dann genau für dieses Device die Meldung

                • Bei der Anwesenheit musst Du immer, wenn sich die Anwesenheit für ein Objekt geändert noch einmal die ganze Liste abklappern und prüfen, ob irgend ein Device (nicht zwingend das, welches das Blockly getriggert hat) noch Anwesenheit zeigt. Deshalb geht es hier nicht ohne die Schleife, im 1.Fall aber schon

                R. Frase 1 Reply Last reply Reply Quote 0
                • R. Frase
                  R. Frase @Ahnungsbefreit last edited by

                  @ahnungsbefreit das stimmt!

                  Vielen Dank nochmal. Ich ändere auf "gelöst" 🤗

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

                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  886
                  Online

                  31.9k
                  Users

                  80.2k
                  Topics

                  1.3m
                  Posts

                  4
                  7
                  341
                  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