NEWS
[gelöst] Axios implementieren
-
Hallo, ich möchte bei WLED Geräten die Segmente schreiben.
Da dies leider nicht über den Adapter geht, würde ic hes gerne über die API machen.
Hier sind online Beispiele mit curl gegeben.
Um nicht mit exec arbeiten zu müssen, würde ich mir gernex exios zusätzlich in den Javascriptadapter holen.
Habe es hier schon angegeben:
Ist das korrekt so?
Was muss ich weiteres machen?
Und wie könnte man ein bsp. Curl der Seite in axios umsetzen?
https://kno.wled.ge/interfaces/json-api/ -
@ben1983 sagte in Axios implementieren:
Um nicht mit exec arbeiten zu müssen, würde ich mir gernex exios zusätzlich in den Javascriptadapter holen.
Ist im Standard schon enthalten. Generell hab ich in der Doku immer alles gefunden, was ich so gesucht habe: https://github.com/axios/axios/blob/v1.x/README.md
-
@ben1983 mit meinem Fork vom wled Adapter geht das. Mehr Info spaäter
-
@haus-automatisierung OK, also muss ich es nicht hinzufügen?
-
@haus-automatisierung stehe gerade auf dem schlauch:
Wenn ich das Beispiel sehen:curl -X POST "http://[WLED-IP]/json/state" -d '{"on":"t","v":true}' -H "Content-Type: application/json"
wie würde ich es denn mit axios ersetzen?
Habe das mal so ähnlich vorbereitet, was ich vor habe:const host = "http://192.168.2.142/json/state" const segmentObject = { "seg": [{ "start": 0, "stop": 20, "len": 20, }] }; import axios from 'axios'; axios({ method: 'post', url: host, data: segmentObject });
und bekomme zusätzlich nochden Fehler:
Cannot find module 'axios' or its corresponding type declarations.
-
@ben1983
require
nichtimport
-
@ticaki dann bekomme ich:
ok. hatte mich schon gewundert... Aber bin heute echt nicht auf der höhe.Also so?:
const host = "http://192.168.2.142/json/state" const segmentObject = { "seg": [{ "start": 0, "stop": 30, "len": 30, }] }; const axios = require('axios'); axios({ method: 'post', url: host, data: segmentObject });
-
@ben1983
Versuch's mal so:const host = "http://192.168.2.142/json/state" const axios = require('axios'); const segmentObject = { "seg": [{ "start": 0, "stop": 30, "len": 30, }] }; async function getData() { const response = await axios.post(host, segmentObject); console.log(JSON.stringify(response)); } getData();
-
@codierknecht Danke, aber meine Version hat zumindest in Sachen Schreiben auf funktioniert.
-
-
@codierknecht Oh, sorry. das war ein Falscher Text.
-
@codierknecht Es funktioniert zwar alles.
In deiner Version ist natürlich die Sache noch etwas schöner.
(Muss allerdings response.data loggen, nicht nur response).Allerding bekomme ich beim require('axios') noch die Meldung:
Cannot find module 'axios' or its corresponding type declarations.
Was kann das noch sein?
-
@ben1983 sagte in [gelöst] Axios implementieren:
Allerding bekomme ich beim require('axios') noch die Meldung:
Aber nur im Editor. Wird da gekringelt und angemeckert, funzt aber einwandfrei.
Mit der Macke muss man entweder leben oder den Editor dazu zwingen ihn zu ignorieren:// @ts-ignore const axios = require('axios');
-
@ben1983
Ja, aber wie oben geschrieben,wenn du den wled adapter von mir nimmst, gibt es einen State in dem du das Json rein wirst und es wird dann über die websocket verbindung vom wled adapter versendet:https://github.com/ticaki/ioBroker.wled
Die PR ist ist beim Dutchman eingereicht, mal sehen wann er es added.
mich hats genervt das "an" "helligkeit" "preset" in 3 Stufen ausgeführt wird... Deshalb nen State eingebaut dem ich dann so die Daten übergebe:
setState(`${light.id}.action`, JSON.stringify({ "bri": bri, "on": lOn, 'ps': cArray[2], 'transition': 1 }))
Das sollte auch für Steuerung von einzelnen LED's gut sein.