Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Daten von JS Schnittstelle als Trigger - Smart Race

    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

    Daten von JS Schnittstelle als Trigger - Smart Race

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

      Hallo,
      ich bin am verzweifeln....

      Mein Setting:

      Ich habe eine Carrera Bahn und nutzte die APP Smart Race mit der Bahn.

      Diese App kann seit neuestem auch Daten über eine Schnittstelle als Script mitteilen (sollen bald noch einige dazu kommen).

      Nun aber die Frage: Wie rufe ich die Daten aus der Schnittstelle in Blockly ab???

      Als URI für die Daten habe ich "192.168.1.112:8081" (Adresse des ioBrokers) eingetragen.

      Hier noch die Dokumentation zu Smart Race: https://www.smartrace.de/anleitung/datenschnittstelle/

      Wahrscheinlich ist die Lösung wieder mal ganz einfach, ich kapier es nur einfach nicht.....

      Wäre super, wenn jemand helfen könnte.

      DANKE

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

        @buggyracer79 sagte: Als URI für die Daten habe ich "192.168.1.112:8081"

        Sende die JSON-Daten an die Simple-API (aktivieren!) der Web-Instanz "192.168.1.112:8082". Vorher den JSON-Datenpunkt unter "0_userdata.0" erstellen.

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

          @paul53

          Vielen Dank soweit.....

          Ich habe jetzt einen neuen ioBroker Host aufgesetzt, zum Experimentieren.

          Da habe ich nur JS-Skripte und die (Simple) Restful-Api als Adapter drauf.

          Dann habe ich ein Objekt mit dem Namen VSC angelegt (Zustand - json).

          Dann ein Script angelegt:

          <block xmlns="https://developers.google.com/blockly/xml" type="request" id="NyVjp)~lQn6HZ@T2.99k" x="134" y="-485">
            <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="true"></mutation>
            <field name="WITH_STATEMENT">TRUE</field>
            <field name="LOG"></field>
            <value name="URL">
              <shadow type="text" id="a,o5a(^2s$,SEWL5?W/r">
                <field name="TEXT">http://192.168.1.230:8087</field>
              </shadow>
            </value>
            <statement name="STATEMENT">
              <block type="update" id="*RE^)4wY=b]R=w$tWTw8">
                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                <field name="OID">0_userdata.0.SmartRace.VSC</field>
                <field name="WITH_DELAY">FALSE</field>
                <value name="VALUE">
                  <block type="variables_get" id="lXB,4NEL{/LaT=I4taqq">
                    <field name="VAR" id="let+d`iZw8YV|[:@Ykvm">result</field>
                  </block>
                </value>
              </block>
            </statement>
          </block>
          

          Beim Objekt kommt dann aber folgendes raus:

          {
          "error": "command unknown",
          "getPlainValue": "http://192.168.1.230:8087/getPlainValue/stateID",
          "get": "http://192.168.1.230:8087/get/stateID/?prettyPrint",
          "getBulk": "http://192.168.1.230:8087/getBulk/stateID1,stateID2/?prettyPrint",
          "set": "http://192.168.1.230:8087/set/stateID?value=1&prettyPrint",
          "toggle": "http://192.168.1.230:8087/toggle/stateID&prettyPrint",
          "setBulk": "http://192.168.1.230:8087/setBulk?stateID1=0.7&stateID2=0&prettyPrint",
          "setValueFromBody": "http://192.168.1.230:8087/setValueFromBody?stateID1",
          "objects": "http://192.168.1.230:8087/objects?pattern=system.adapter.admin.0*&prettyPrint",
          "states": "http://192.168.1.230:8087/states?pattern=system.adapter.admin.0*&prettyPrint",
          "search": "http://192.168.1.230:8087/search?pattern=system.adapter.admin.0*&prettyPrint",
          "query": "http://192.168.1.230:8087/query/stateID1,stateID2/?dateFrom=2019-06-06T12:00:00.000Z&dateTo=2019-06-06T12:00:00.000Z&noHistory=false&aggregate=minmax&count=3000&prettyPrint"

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

            @buggyracer79 sagte: Dann ein Script angelegt:

            Wozu?
            Die Datenschnittstelle vom SmartRace muss an die Simple-API senden mit der URL
            "192.168.1.xyz:8087/set/0_userdata.0.SmartRace.VSC?value=". Ich denke (hoffe), dass sie durch das zu sendende JSON ergänzt wird.

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

              @paul53

              Da kommt leider gar nichts an........

              Bei Smartrace steht:
              Die Daten werden dabei als POST-Request im JSON-Format gesendet.

              Müsste ich die dann nicht über ein Script anfordern?

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

                @buggyracer79 sagte: Müsste ich die dann nicht über ein Script anfordern?

                Laut Beschreibung werden die Daten bei einem Ereignis gesendet.
                Versuche es mal mit setBulk: "192.168.1.xyz:8087/setBulk?0_userdata.0.SmartRace.VSC="

                EDIT: In der Beispiel-URL wird das JSON an ein lokales PHP-Skript gesendet. Vielleicht muss man es ähnlich machen und dann aus diesem Skript an die Simple-API senden?

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

                  @paul53

                  Uff......

                  Das mag alles schon so sein.

                  Ich bin zwar ein echter Noobie was das Coden angeht, aber ich habe schon das Gefühl, dass die Doku bei Smartrace etwas wenig hergibt....

                  Wenn ich wüsste, wo ich mir das Grundlagenwissen aneignen könnte, dann würde ich das ja gerne so machen....
                  So ist es mir schon fast peinlich, alles Schritt für Schritt erfragen zu müssen....

                  WaTho 1 Reply Last reply Reply Quote 0
                  • WaTho
                    WaTho @buggyracer79 last edited by

                    @buggyracer79 Hallo, ich hab dich gerade auch schon im Freeslotter-Forum gefunden. Die Datenschnittstelle von SmartRace und Simple-API sind nicht kompatibel. Man müsste entweder eine Zwischenschicht bauen, die das umwandelt oder gleich für den IoBroker einen eigenen Adapter bauen. Ersteres ist leichter umzusetzen, aber höherer Installationsaufwand, mehr Komplexität, mehr Wartungsaufwand, dafür bei mir quasi testweise fertig. Ein eigener Adapter wäre natürlich die sauberere Lösung. Da fehlt mir aber noch Erfahrung. Ich schau gerade, ob ich da beim Simple-API-Adapter was abgucken kann.

                    buggyracer79 1 Reply Last reply Reply Quote 0
                    • buggyracer79
                      buggyracer79 @WaTho last edited by

                      @watho

                      Hi,
                      cool, dass sich jemand damit beschäftigt. Ich bekomme noch immer nicht mal die Daten abgerufen.... Mals sehen, ob ich heute nochmal die Muse habe, mich damit zu beschäftigen....

                      WaTho 1 Reply Last reply Reply Quote 0
                      • WaTho
                        WaTho @buggyracer79 last edited by

                        @buggyracer79 Ich hätte einen Testadapter fertig, kann es aber nicht testen siehe Android-Problem im Freeslotter-Forum. Ist dein iobroker nur lokal verfügbar oder hängt der im öffentlichem Netz?

                        Falls es hier sonst noch jemanden gibt, der das Ausprobieren möchte und die App unter iOS oder MacOS benutzt, kann sich gerne melden. Ich nehme an dann funktioniert es, kann es aber nicht testen.

                        buggyracer79 1 Reply Last reply Reply Quote 0
                        • buggyracer79
                          buggyracer79 @WaTho last edited by

                          @watho

                          Cool!
                          Her damit! Ich kann ja über Postman simulieren.

                          WaTho 1 Reply Last reply Reply Quote 0
                          • WaTho
                            WaTho @buggyracer79 last edited by

                            @buggyracer79 Gibt es aktuell nur im Github https://github.com/watho/ioBroker.smart-race-event-receiver

                            Ich schau gerade, wie die Guidelines für Entwickler aussehen. Wahrscheinlich werde ich für den Adapter einen eigenen Beitrag aufmachen.
                            Der aktuelle Stand ist noch rudimentär. Ich habe aktuell nur das Event event.change_status umgesetzt. Der Adapter legt einen Datenpunkt smart-race-event-receiver.0.event.raceStatus an. Dorthin wird dann der neue Wert als Zeichenkette geschrieben, also z.B. 'running', 'ended' usw.

                            buggyracer79 1 Reply Last reply Reply Quote 0
                            • buggyracer79
                              buggyracer79 @WaTho last edited by buggyracer79

                              @watho

                              Also ich habe ein Beispiel an die IP des Brokers mit dem voreingestellten Port geschickt. Aber ins Objekt wurde nichts geschrieben.

                              Gesendet habe ich mit Postman als POST, Json Raw

                              {
                              "controller_id": "1",
                              "lap": 1,
                              "laptime": "0:13.861",
                              "laptime_raw": 13861,
                              "sector_1": "0:06.305",
                              "sector_1_pb": true,
                              "sector_2": "0:03.224",
                              "sector_2_pb": true,
                              "sector_3": "0:04.332",
                              "sector_3_pb": true,
                              "lap_pb": true,
                              "driver_data": {
                              "id": 2,
                              "name": "Marc",
                              "name_tts": "",
                              "active": "yes",
                              "start_no_text_style": "normal",
                              "team": "-",
                              "name_short": null,
                              "image": "",
                              "start_no": "",
                              "start_no_color_border": "rgb(68, 68, 68)",
                              "start_no_color_background": "rgb(68, 68, 68)",
                              "start_no_color_text": "rgb(68, 68, 68)"
                              },
                              "car_data": {
                              "color": "rgb(176, 243, 0)",
                              "brakes": null,
                              "active": "yes",
                              "tags": "[]",
                              "decoder_type": "Carrera (default)",
                              "image": "cdvfile://localhost/persistent/1684000048302.jpg",
                              "laps": 5,
                              "fuel": null,
                              "speed": null,
                              "tyres": "Ortmann",
                              "digital_analog": "digital",
                              "name": "Porsche 911 RSR Grello (911)",
                              "manufacturer": "Carrera",
                              "id": 40,
                              "interval_counter": 0,
                              "scale": "1:24",
                              "magnets": "yes",
                              "logo": "porsche.png",
                              "changed_on": null,
                              "interval": 0,
                              "sound": "-",
                              "comment": ""
                              },
                              "controller_data": {
                              "color_bg": "rgb(176, 243, 0)",
                              "color_text": "#000"
                              }
                              }

                              Fehlermeldung vom Adapter:

                              smart-race-event-receiver.0
                              2024-01-08 20:49:29.811 warn Invalid or unimplemented event type received: undefined

                              Ich nehme an, die hast einfach die einzelnen Werte nicht angelegt.

                              WaTho 1 Reply Last reply Reply Quote 0
                              • WaTho
                                WaTho @buggyracer79 last edited by

                                @buggyracer79
                                Ich hab aktuell nur den change_status-Event umgesetzt und würde bei dir wirklich nichts anzeigen. Abgesehen davon ist dein Format aber falsch. Da drumherum kommt immer noch der Part mit Timestamp und event.type

                                {
                                  "time": 1684769957969, // Uhrzeit des Ereignisses als Unix-Timestamp
                                  "event_type": "ui.lap_update", // Name des Ereignisses
                                  "event_data": {
                                      // Die Daten des Ereignisses von dir
                                  }
                                }
                                

                                Die Fehlermeldung kommt dann trotzdem lautet aber: Invalid or unimplemented event type received: ui.lap_update.

                                Wenn du was sehen willst, benutze folgendes:

                                {
                                  "time": 1684769957969,
                                  "event_type": "event.change_status",
                                  "event_data": {
                                    "old": "running",
                                    "new": "ended"
                                  }
                                }
                                
                                WaTho 1 Reply Last reply Reply Quote 0
                                • WaTho
                                  WaTho @WaTho last edited by

                                  Diskussionen zum Adapter dann bitte in Zukunft hier: https://forum.iobroker.net/topic/71939/test-adapter-smart-race-event-receiver-v0-0-x-github/

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

                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate

                                  939
                                  Online

                                  31.7k
                                  Users

                                  79.9k
                                  Topics

                                  1.3m
                                  Posts

                                  3
                                  15
                                  685
                                  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