NEWS
Daten von JS Schnittstelle als Trigger - Smart Race
-
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
-
@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.
-
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" -
@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. -
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?
-
@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?
-
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.... -
@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.
-
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.... -
@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.
-
Cool!
Her damit! Ich kann ja über Postman simulieren. -
@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. -
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: undefinedIch nehme an, die hast einfach die einzelnen Werte nicht angelegt.
-
@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" } }
-
Diskussionen zum Adapter dann bitte in Zukunft hier: https://forum.iobroker.net/topic/71939/test-adapter-smart-race-event-receiver-v0-0-x-github/