Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. MQTT Remote Commands für OwnTracks-Adapter

    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

    MQTT Remote Commands für OwnTracks-Adapter

    This topic has been deleted. Only users with topic management privileges can see it.
    • mickym
      mickym Most Active @Guest last edited by

      @k-nebel Ich kann mich mit Blockly auch nicht anfreunden. Ein Javascript ist mir ehrlich gesagt zu aufwändig jetzt und gerade im Fehlerfall schwierig für mich zu behandeln.

      Ich könnte Dir bei einem Node-Red Flow behilflich sein - das denke ich würde ich schnell hinbekommen, wenn Du halt hier mit unterstützt. Ich nutze das halt als meine präferierte Logikmaschine.

      ? 1 Reply Last reply Reply Quote 0
      • ?
        A Former User @mickym last edited by

        @mickym Also bin der Sache etwas näher gekommen....funkt aber noch nicht.

        sendTo('owntracks/0/users/devicex/cmd', 'sendMessage2Client',
        {
            "_type": "cmd",
            "action": "setConfiguration",
            "configuration": {
                "_type": "configuration",
                "monitoring": 2
            }
        });
        

        Divicex steht natürlich für den tatsächlichen Namen. Das Script meldet keinen Fehler, es kommt aber nichts an.

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

          @k-nebel wie gesagt ich bin auch kein Javascript Guru - aber vielleicht gibts ja noch andere Hürden. Wo läuft denn Dein mqtt Broker?

          Wenn Du evtl. den mqtt Adapter als Broker laufen hast, dann kann der evtl. Probleme machen. Hast Du ein Interface im iobroker so dass Du es wie ich einfach eintragen kannst?

          30cf5dd9-57ca-42db-a673-23569975c49e-image.png

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

            @k-nebel Musst Du bei dem sendto - um die geschweiften Klammern nicht noch Anführungszeichen machen - das ganze muss ja als String weg.

            sendTo('owntracks/0/users/devicex/cmd', 'sendMessage2Client','{"_type": "cmd","action": "setConfiguration","configuration": {"_type": "configuration","monitoring": 2}}');
            

            Wenn ich mir die Syntax zu sendto anschaue:

            sendTo('telegram', {user: 'UserName', text: 'Test message'});

            dann ist das ja viel komplexer. Wie gesagt, wenn Du es über NodeRed machst - dann kein Problem. Und wie im letzten Posting gesagt - trag halt einfach mal den Text direkt in Deinen Datenpunkt ein.

            ? 1 Reply Last reply Reply Quote 0
            • ?
              A Former User @mickym last edited by

              @mickym Hm, ich komme im Moment nicht weiter. Habe auf Github in einem Issue gelesen, dass es bei Android zur Zeit keine cmd-Actions gibt und auch nicht geplant sind. Keine guten Aussichten. Unter Objects gibt es auch keinen cmd Eintrag.
              Schade...

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

                @k-nebel Ehrlich gesagt kann ich das nicht glauben - die Beschreibung zeigt, dass der Parameter auch auf Android geht.
                monitoring Location reporting mode (iOS,Android/integer).

                Ich würde mal den String direkt in Deinen cmd Datenpunkt eintragen. Mit dem sendTo weiß ich nicht ob dass das richtige Kommando ist.

                Wie gesagt unter NodeRed würde ich das ja mit Dir weiterverfolgen.

                Als ersten Schritt musst Du aber den String direkt in einen Datenpunkt kopieren. Dabei ist es egal, ob Du das direkt über Deinen iobroker machst, oder einem eigenen mqtt Publisher.

                Und ich hab Dir ja schon unten gesagt, wenn Du den MQTT-Adapter als Broker laufen hast, kannst Du auch Probleme haben. Schau mal im Log ob das was drin steht, ob irgendwelche Nachrichten nach mehreren Retries gelöscht werden. Solange Du die Voraussetzungen nicht prüfst, ist das halt ein Stochern im Nebel.

                @k-nebel sagte in MQTT Remote Commands für OwnTracks-Adapter:

                Unter Objects gibt es auch keinen cmd Eintrag.
                Schade...

                Ist das der mqtt Adapter als Broker? Ggf. halt selbst einfach einen cmd Datenpunkt anlegen.
                Und falls Du den owntracks Adapter nutzt - da würde ich halt lieber auf reines mqtt wechseln.

                Im Prinzip solltest Du gemäß Deiner Konfig folgende Datenpunkte unter Deinem Gerät finden:

                screen.png

                Der cmd ist für die Befehle und der event Datenpunkt signalisiert Dir wenn Du eine bekannte Location verlässt oder eintrittst - also z. Bsp. Zuhause. Das kannst Du dann als Trigger verwenden, um wie von Dir gewünscht den Modus umzuschalten.

                ? 1 Reply Last reply Reply Quote 0
                • ?
                  A Former User @mickym last edited by

                  @mickym Also ich nutze den Owntracks-Adapter. Dort habe ich einen Datenpunkt cmd an richtiger Stelle erzeugt und auch versucht das JSON Object direkt einzugeben - ohne Ergebnis.
                  Nebenher läuft natürlich der mqtt-Adapter. Fehler oder Warnungen gab es nicht.
                  Danke für dein Angebot mit NodeRed. Das wäre aber auch Neuland und ich würde darauf zurückkommen, wenn ich es nicht anders hin bekomme.
                  Bin gerade dabei das Open-Source Project von Owntracks mit Android-Studio zu bearbeiten. Es wäre nicht das erste Mal, dass es mir gelingt, eine eigene Funktion direkt in der App zu implementieren.
                  Werde berichten.
                  Gruß Jo

                  ? 1 Reply Last reply Reply Quote 0
                  • ?
                    A Former User @Guest last edited by

                    @k-nebel Tja, das erzeugen der App funktioniert und ich habe in der "MapActivity.java" eine Funktion "SetMonitoringNext" gefunden. Man könnte nun einen Timer programmieren, der meinetwegen alle 5 Minuten die WLAN Verbindung checkt und - falls mit der richtigen SSID Verbunden, diese Funktion anstößt.
                    Problem bei der Sache: Die App ist ansonsten Komplett, aber der Open-Source-Code bietet keine Google Map Keys.
                    Das heisst, es wird keine Karte angezeigt. So etwas anzulegen geht, ist aber eine Prozedur. Werde mal weiter sehen.
                    Nur zur Info halt.

                    ? 1 Reply Last reply Reply Quote 0
                    • ?
                      A Former User @Guest last edited by A Former User

                      Neues Update: App läuft, zwar ohne Map, aber die ist mir erst mal egal.
                      Für diejenigen die es interessiert hier die Änderungen:
                      AndroidManifest.xml

                      <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
                      

                      BackgroundService.java

                          //Check Monitoring & SSID
                          public Handler timerHandler = new Handler();
                          Runnable timerRunnable = new Runnable() {
                              @Override
                              public void run() {
                                  SharedPreferences prefs = getSharedPreferences("save_set", 0);
                                  SharedPreferences.Editor editor = prefs.edit();
                                  boolean auto = prefs.getBoolean("Auto", false);
                                  editor.commit();
                                  if(auto) {
                                      //Get SSID, if Connected
                                      WifiManager mWifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
                                      assert mWifiManager != null;
                                      WifiInfo info = mWifiManager.getConnectionInfo();
                                      if (info.getSSID().contains("MySSID")) {
                                              if (preferences.getMonitoring() == LocationProcessor.MONITORING_MOVE) {
                                                  preferences.setMonitoring(LocationProcessor.MONITORING_SIGNIFICANT);
                                              }
                                          } else{
                                          preferences.setMonitoring(LocationProcessor.MONITORING_MOVE);
                                      }
                                  }
                                  //Toast.makeText(getApplicationContext(), info.getSSID(), Toast.LENGTH_SHORT).show();
                                  timerHandler.postDelayed(timerRunnable, 60000);
                              }
                          };
                      

                      Zudem in der Funktion OnCreate()

                      timerHandler.postDelayed(timerRunnable, 60000);
                      

                      und in der Funktion OnDestroy()

                      timerHandler.removeCallbacks(timerRunnable);
                      

                      Ob ich mit der Map weiterkomme werde ich berichten.
                      Gruß
                      Jo

                      ? 1 Reply Last reply Reply Quote 0
                      • ?
                        A Former User @Guest last edited by A Former User

                        Finales Ergebnis:
                        Google Maps-Key besorgt und zusätzlichen Button zum Ein/Ausschalten meiner Funktion integriert.
                        Screenshot_20210315-174602_Owntracks.jpg

                        Wer das selber umsetzen möchte, kann mich gerne kontaktieren.
                        Einziger Wermutstropfen wäre, wenn die App ein automatisches Update erhält. Dann wird die eigene Version
                        wahrscheinlich überschrieben.
                        Gruß
                        Jo

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate
                        FAQ Cloud / IOT
                        HowTo: Node.js-Update
                        HowTo: Backup/Restore
                        Downloads
                        BLOG

                        947
                        Online

                        31.9k
                        Users

                        80.2k
                        Topics

                        1.3m
                        Posts

                        2
                        13
                        740
                        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