NEWS
[Gelöst] Blockly mit Funktion in der es request gibt umbauen
-
Guten Morgen,
Gehört das hierher unter Blockly, oder unter Javascript?
Ich lese immer wieder das man "request" nicht mehr verwenden soll, da es abgekündigt ist und bald nicht mehr funktionieren wird. Ich habe 2 IoBroker Instanzen (Proxmox und Raspi4) und die "kommunizieren" über "simple-api" miteinander. So kann ich z.B. über der VIS auf dem Proxmox IoBroker das "BackItUp" auf dem Raspi starten. Da ich keine Ahnung von Javascript habe, habe ich mir das damals über ChatGPT zusammenbauen lassen und die ganzen Blocklys funktionieren auch. Diese Funktionen sind alle mit einem "request" und das würde ich jetzt gerne umstellen, bevor es nicht mehr geht. Dazu mehrere Fragen:
Ich habe jetzt gelesen, das "axios" auch nicht das gelbe vom Ei sein soll und man lieber "http.Get" verwenden soll. Stimmt das?
Es gibt ja die neuen Blöcke in der Betaversion, brauche ich dann überhaupt noch eine Javascript Funktion, oder geht das direkt mit den Blöcken?So sieht die Funktion aktuell aus:
var request = require ('request'); let oneClick = getState("0_userdata.0.BackItUp_4GB.oneClick").val; request('http://192.168.1.11:8087/set/backitup.0.oneClick.iobroker?value=' +oneClick);
Das sagt ChatGPT dazu, wenn ich auf "axios" umstellen möchte:
const axios = require('axios'); let oneClick = getState("0_userdata.0.BackItUp_4GB.oneClick").val; axios.get('http://192.168.1.11:8087/set/backitup.0.oneClick.iobroker', { params: { value: oneClick } }) .then(response => { console.log('Erfolgreich gesendet:', response.data); }) .catch(error => { console.error('Fehler beim Senden:', error); });
Und wenn ich auf "http.Get" gehen will, kommt das raus:
const http = require('http'); let oneClick = getState("0_userdata.0.BackItUp_4GB.oneClick").val; let value = encodeURIComponent(oneClick); // Stellen Sie sicher, dass der Wert URL-kodiert ist const url = `http://192.168.1.11:8087/set/backitup.0.oneClick.iobroker?value=${value}`; http.get(url, (res) => { console.log(`STATUS: ${res.statusCode}`); res.setEncoding('utf8'); res.on('data', (chunk) => { console.log(`BODY: ${chunk}`); }); res.on('end', () => { console.log('No more data in response.'); }); }).on('error', (e) => { console.error(`Got error: ${e.message}`); });
Und damit bin ich dann endgültig überfordert.
Mit dem "axios" das verstehe ich ja noch einigermaßen, aber "http.Get"? Keine Chance!
Kann mir jemand einen Tipp geben, was ich tun soll oder was das sinnvollste ist?
Gruß, Johannes
-
@jojo58 Zeig mal bitte den Teil mit Beispiel aus der Adapter-Dokumentation. Und was müsste an dem Beispiel angepasst werden, damit Du nicht ChatGPT fragen musst
-
Hmm, ich weiß nicht genau was du meinst, ich habe den Adapter installiert und den Rest hier aus dem Forum, bzw. aus dem Netz. Um ehrlich zu sein, die Adapter Doku rufe ich gerade zum ersten Mal auf. Da steht bei "set" dann:
http://ipaddress:8087/set/javascript.0.test?value=1
So habe ich es ja auch gemacht. Oder meist du etwas anderes?
-
@jojo58 Ich dachte hier geht es um httpGet. Dazu ist doch auch ein Beispiel in der Dokumentation zu finden.
Und für Blockly gibt es einen fertigen Baustein. Warum überhaupt Javascript?
-
@haus-automatisierung
Solche Fragen werden demnächst wohl öfter kommen.@haus-automatisierung sagte in Blockly mit Funktion in der es request gibt umbauen:
Warum überhaupt Javascript?
Sehr viele user haben ihre Skripte
@jojo58 sagte in Blockly mit Funktion in der es request gibt umbauen:
hier aus dem Forum,
und wenn man
@haus-automatisierung sagte in Blockly mit Funktion in der es request gibt umbauen:
nicht ChatGPT fragen
soll/will, wird mit der 8.x wohl einiges der c&p Skripte pflegebedürftig werden.
Diese c&p user werden
@haus-automatisierung sagte in Blockly mit Funktion in der es request gibt umbauen:
mit Beispiel aus der Adapter-Dokumentation
nicht wirklich in der Lage sein "ihre" Skripte umzubauen.
Hast du eine Idee, wie dieses sinnvoll gehanhabt werden soll?
-
Sorry, entweder wir reden aneinander vorbei, oder ich verstehe dich absolut nicht. Diesen "set" Befehl:
request('http://192.168.1.11:8087/set/backitup.0.oneClick.iobroker?value=' +oneClick);
möchte ich vom lokalen IoB zum Raspi IoB schicken, wenn sich lokal der Datenpunkt dazu ändert. Wenn das mit Blöcken geht, anstatt mit Javascript, umso besser.
-
@homoran sagte in Blockly mit Funktion in der es request gibt umbauen:
@haus-automatisierung
Solche Fragen werden demnächst wohl öfter kommen.
Hast du eine Idee, wie dieses sinnvoll gehanhabt werden soll?Naja ich erkläre hier in etlichen Foren-Beiträgen ausführlich was sich geändert hat, welchen neuen Blockly-Bausteine es gibt und wie man diese anwendet. Zusätzlich auf YouTube und in den Online-Kursen. Dokumentation des Adapters wird auch ständig erweitert.
Was soll ich denn noch machen? Ich verstehe ja nichtmal, warum für dieses einfache Beispiel kein Blockly verwendet wird. Stattdessen wird ChatGPT gefragt und viel zu umständliche Scripts mit Fragezeichen geteilt.
-
@haus-automatisierung sagte in Blockly mit Funktion in der es request gibt umbauen:
warum für dieses einfache Beispiel kein Blockly verwendet wird
Naja, als ich vor etlichen Monaten hier nachgefragt habe, wurde nichts von einem Blockly Baustein erzählt. Daher dieses einfachen Javascripte. Ich habe noch einen dritten IoB und dort ist die Version 8.3.0 von Javascript installiert. Werde dort auch simple-api installieren und dann mal mit Blöcken versuchen das richtig umzusetzen. Dann müsste doch der "http (POST)" der richtige dafür sein, oder liege ich damit falsch?
Oh man, vielleicht sollte ich mich wirklich mal mit Javascript beschäftigen, aber ob man das als betagter Rentner noch lernt? Ich weiß nicht so recht...
-
@haus-automatisierung
Ich glaube wir reden aneinander vorbei.ich rede von c&p usern, die es zu hunderten gibt, die aus dem Forum js-Skripte übernommen haben, teilweise aus der Zeit vor Blockly, die jetzt mit der nächsten Version des Adapters umgebaut werdrn müssen.
ob es jetzt wegen request oder was sonst noch umgebaut wurde ist unerheblich.
Diesen Usern fehlt schlichtweg das Wissen dies umzubauen, und die js-Doku ist auch nicht gerade für dieses Klientel geeignet das zu ändern.
-
@jojo58 sagte in Blockly mit Funktion in der es request gibt umbauen:
Naja, als ich vor etlichen Monaten hier nachgefragt habe, wurde nichts von einem Blockly Baustein erzählt.
Wo war das? Diese request-Bausteine gibt es auch in Blockly schon seit ich denken kann. Also 7+ Jahre. Die müssen jetzt halt gegen andere Bausteine ausgetauscht werden. Mehr nicht.
Daher dieses einfachen Javascripte. Ich habe noch einen dritten IoB und dort ist die Version 8.3.0 von Javascript installiert.
Naja und die neuen Funktionen mit httpGet wären noch einfacher.
Oh man, vielleicht sollte ich mich wirklich mal mit Javascript beschäftigen, aber ob man das als betagter Rentner noch lernt? Ich weiß nicht so recht...
Die Frage wäre ja: Warum? Mit Blockly bekommt man doch die allermeisten Aufgaben erledigt.
-
@jojo58 sagte: So sieht die Funktion aktuell aus:
... und so in Blockly mit JS-Version 8.x:
Die Simple-API benötigt man nur auf der Empfänger-Seite.
-
@haus-automatisierung sagte in Blockly mit Funktion in der es request gibt umbauen:
Wo war das? Diese request-Bausteine gibt es auch in Blockly schon seit ich denken kann. Also 7+ Jahre.
https://forum.iobroker.net/topic/66458/datenpunkte-eines-anderen-iobrokers-anzeigen/15
Damals war ich froh, das ich Daten bekam
-
Vielen Dank . Das Beispiel reicht mir um alles umzubauen. Ich hatte schon wieder den falschen Ansatz, dachte das muss mit POST gehen, da ich etwas hinschicken will.
-
@jojo58 sagte: dachte das muss mit POST gehen, da ich etwas hinschicken will.
Alle Informationen für die Simple-API stecken in der URL.
-
@jojo58 sagte in Blockly mit Funktion in der es request gibt umbauen:
Ich hatte schon wieder den falschen Ansatz, dachte das muss mit POST gehen, da ich etwas hinschicken will.
Vorher mit request hattest Du doch auch nur einen GET-Request gesendet.
-
Es funktioniert in beide Richtungen und ich kann anfangen alles umzustellen. Vielen Dank für eure Hilfe.
Gruß, Johannes