@gerwei Antwort an mich selber: Der Adapter SimpleAPI kann direkt auch POSTs entgegennehmen, mit der allgemeinen URL: POST http:<ioBroker>:8087/setValueFromBody/state_id und den gewünschten Werten im body.
Steht sogar in dessen Doc....
NEWS
Latest posts made by gerwei
-
RE: ioBroker.web erweitern
-
ioBroker.web erweitern
Hallo Allerseits
Ich möchte gern mit meinem eigenen Adapter auf einen POST aus dem LAN reagieren. In der Dokumentation von ioBroker.web (https://github.com/ioBroker/ioBroker.web) steht, man kann ihn mit eigenen Handlern erweitern. Nur kann ich irgendwie nicht finden, wie das geht. Kann mir jemand einen Tip oder einen Link zum Weiterlesen oder ein Beispiel zeigen?
Letztlich würde es mir reichen, den POST des externen Geräts in ein GET auf den SimpleAPI Adapter weiterzuleiten. Aber dafür einen separaten Webserver einrichten möchte ich nur, wenn es nicht anders geht (Oder kann der SimpleAPI Adapter irgendwie auch direkt zur Entgegennahme von POSTs gebracht werden?)
Vielen Dank!
EDIT Ups Sorry, ging versehentlich ins falsche Forum, müsste natürlich nach "Entwicklung"
-
Fetch vom Settings Frontent nicht möglich?
Hallo Allerseits
Das ist vermutlich kein ioBroker-spezifisches Problem, aber vielleicht mag doch jemand helfen: Ich möchte einen Adapter für ein Gerät schreiben, das Informationen über http://{ip}/api/v1/info herausrückt.
Das klappt sowohl vom Browser aus, als auch von main.ts meines Adapters mitawait fetch('http://${ip}/api/v1/info")
.Ich möchte nun gern im Settings-UI den Anwender auffordern, die IP-Adresse des Geräts einzugeben, und dann testen, ob sie stimmt. Ich versuche also folgendes in load() in index_m.html:
$('#url').on('blur', () => { console.log("test url " + $('#url').val()) $.getJSON($('#url').val()+"/api/v1/info", result=>{/* tu was */}) })
(wobei #url das Input-Feld mit der vom Anwender eingetragenen url ist)
Da bekomme ich aber nach korrekter console.log-Ausgabe immer nur eine 403 - forbidden Antwort zurück. Ich habe statt $.getJSON auch mit $.ajax() und mit Browser-fetch experimentiert, aber alles mit demselben Ergebnis.
Aus irgendeinem Grund "mag" das Gerät resp. dessen eingebauter REST Server meine Anfragen aus dem Frontent nicht, während es identische Anfragen aus dem Backend und vom Browser akzeptiert. Und auch von der Kommandozeile mit curl. Wie kann das sein? Wie kann es überhaupt merken, woher die Anfrage kommt?
Die Frage ist vermutlich dämlich und ich übersehe etwas ganz Triviales, aber ich wäre fürs einen Tip sehr dankbar.
-
RE: Iobroker auf raspi
Hab ich probiert und bekomme die Fehlermeldung "Segmentation fault"
Wenn ich versuche die version anzuzeigen bekomme ich folgendes:
root@ioBroker-RasPi:/opt/iobroker# iobroker version
/usr/bin/iobroker: Zeile 1: 812 Speicherzugriffsfehler node /opt/iobroker/node_modules/iobroker.js-controller/iobroker.js $1 $2 $3 $4 $5
Jemand noch ne Idee? `
Da eine JavaScript Anwendung ja kaum einen Segmentation fault werfen kann, würde ich von einem Hardware-Problem oder einem komplett zerschossenen NodeJS ausgehen.
Also würde ich die SD Karte neu formatieren, testen und dann das Ganze neu aufspielen. Und sicherstellen, dass das Dateisystem auf die ganze Karte erweitert ist. Und dass es wirklich die OS-Version für den Raspberry 2/3 ist. `
Alles schon gemacht.
Hab mich sehr penibel an die Anleitung gehalten.
Leider ohne Erfolg.
Hardware klingt für mich erstmal unwahrscheinlich. Auf den Test-Pi läuft normalerweise mein Octoprint -Server (für 3D-Drucker…).
Werde Trotzdem mal SD-Karte und Pi tauschen. Werde das Image mal über einen Windows Rechner aufspielen...
Kann mir zwar nicht vorstellen das es was bringt, aber wer weiss... `
Was passiert denn, wenn Du NodeJS ganz ohne ioBroker aufrufst? z.B, 'node –version' oder 'npm --version' ? Und was spuckt 'df -h' aus?
-
RE: Iobroker auf raspi
Hab ich probiert und bekomme die Fehlermeldung "Segmentation fault"
Wenn ich versuche die version anzuzeigen bekomme ich folgendes:
root@ioBroker-RasPi:/opt/iobroker# iobroker version
/usr/bin/iobroker: Zeile 1: 812 Speicherzugriffsfehler node /opt/iobroker/node_modules/iobroker.js-controller/iobroker.js $1 $2 $3 $4 $5
Jemand noch ne Idee? `
Da eine JavaScript Anwendung ja kaum einen Segmentation fault werfen kann, würde ich von einem Hardware-Problem oder einem komplett zerschossenen NodeJS ausgehen.
Also würde ich die SD Karte neu formatieren, testen und dann das Ganze neu aufspielen. Und sicherstellen, dass das Dateisystem auf die ganze Karte erweitert ist. Und dass es wirklich die OS-Version für den Raspberry 2/3 ist.
Edit 17.7., 09:00: Obiges ist ein wenig zu apodiktisch. Eine JavaScript Anwendung kann dann einen Speicherzugriffsfehler (aka segmentation fault) werfen, wenn sie fehlerhaften native code aufruft. Welche library bzw. welcher Adapter dann aber schuld ist, kann sehr schwer herauszufinden sein. Somit bleibt die Empfehlung mit der Neuinstallation dieselbe. Dann auf "discovery" verzichten und einen Adpater nach dem Anderen manuell installieren.
-
RE: Iobroker auf raspi
Zumindest bei dem genannten Installations-Image braucht man nicht mal unbedingt nach /opt/iobroker zu wechseln:
pi@homepi:~ $ pwd
/home/pi
pi@homepi:~ $ which iobroker
/usr/bin/iobroker
pi@homepi:~ $ iobroker version
1.0.3
pi@homepi:~ $
Spart doch jedesmal ein paar Tastendrücke
-
RE: Iobroker auf raspi
Hallo zusammen.
Zur Image Erstellung benutze ich ein Tool namens ApplePi-Baker.
Bin halt Mac User… Hat auch bei diversen anderen Images ohne Probleme geklappt...
Gruß `
Hallo, bin zwar auch neu hier, aber ebenfalls auf dem Mac und mit ioBroker auf dem Raspi.
ich habe es so installiert, wie hier beschrieben:
https://iobroker.blogspot.ch/2017/07/ra … chten.html
(der dd-Befehl funktioniert auf dem Mac genauso gut wie auf Linux, man braucht kein separates Tool, um ein Image auf eine SD-Karte zu schreiben. Nur die Laufwerksnamen sind anders: Statt z.B. /dev/sdc eher etwas wie /dev/disk3, 'diskutil list' zeigt die Namen.)
Allerdings lief ioBroker dann in der Tat noch nicht. Auf dem Pi noch in einer Konsole eingegeben: 'iobroker start'. Dann ging es. (Auch nach einem Neustart startet ioBroker seither automatisch. Keine Ahnung, warum es beim ersten Start nach der Installation nicht klappte).