Ich habe mit der Entwicklung des Backends des RFlink-Dienstes begonnen (noch kein PR, weil ich ein schlechtes Niveau in JS habe und nicht dachte, dass ich es schaffen würde) und suche jemanden, der das Frontend machen möchte.
Ich kann mich selbst nicht darum kümmern, ich schaffe es nicht, React zu lernen, und ich kann auch nicht wirklich in JS entwickeln.
Das Frontend wäre einfach, ein Setup-Tab, der die USB-Ports auflistet, und ein Tab für die Geräte.
Falls niemand helfen kann, werde ich versuchen, die Seiten, die mich interessieren, aus den anderen Modulen zu kopieren.
Und ich nutze die Gelegenheit, um Fragen zu stellen:
Für die API reicht es, ein Object controllers zurückzugeben, das jeder Anfrage eine Funktion zuordnet?
RFlink verwaltet Milight und 433, wir werden also 2 Dienste für Milight und 2 für 433 haben, ist das nicht störend?
Sollte ich einen PR machen, auch wenn das Modul nicht sicher herauskommt und nicht nur von mir abhängt (für das Frontend)?
Eigentlich lerne ich JS, indem ich den Service mache (und das funktioniert wirklich gut ).
Bei Preact werde ich es versuchen.
Ich habe eine weitere Frage:
Warum bekomme ich eine Fehlermeldung, dass ich keine external_id angegeben habe, wenn ich ein Gerät erstelle, obwohl ich beim Loggen des Geräts die Eigenschaft external_id sehe?
Der Fehler:
2020-02-02T13:04:33+0100 <log> device.create.js:68 () {
device: {
service_id: undefined,
name: 'TriState switch',
selector: 'rflink:808a90',
external_id: 'rflink:808a90',
model: 'TriState',
features: [ [Object] ]
}
}
2020-02-02T13:04:33+0100 <warn> functionsWrapper.js:15 (EventEmitter.<anonymous>) Error while executing function () { [native code] }
2020-02-02T13:04:33+0100 <warn> functionsWrapper.js:16 (EventEmitter.<anonymous>) BadParameters [Error]: A device must have an external_id.
at E:\admin\Documents\MOI\Projets\Gladys\gladys\server\lib\device\device.create.js:70:13
Ich frage mich auch, wie ich herausfinden kann, ob ein Gerät bereits in der Datenbank existiert?
Ducoup muss ich den Dienst am Start hindern, wenn der Benutzer nicht rflinkpath definiert hat, aber wenn ich meinen Dienst Rflinkpath stoppe, kann rflinkpath dann nicht mehr geändert werden?
Ich denke, du solltest die Art und Weise, wie deine Klassen organisiert sind, überarbeiten. Dein Controller sollte ohne all das starten können, genauso wie dein RfLinkManager-Objekt!
Mach das alles außerhalb der Start-Funktion.
Die Start-Funktion sollte nur « .connect » mit dem Wert von RFLINK_PATH aufrufen
Ich empfehle dir, dich von den anderen Diensten inspirieren zu lassen
Alles klar, ich habe bereits eine Lösung gefunden .
Ich möchte nur wissen, ob du mir erklären kannst, warum ich 404-Fehler bekomme, wenn ich die Routen meines Controllers aufrufe.
Hier ist der Server-Fehler (sieht aus wie ein Authentifizierungsproblem):
2020-02-08T15:25:37+0100 <debug> index.js:95 (WebSocketServer.<anonymous>) Neuer Benutzer verbunden in WebSocket, [object Object]
2020-02-08T15:25:37+0100 <debug> index.js:117 (WebSocket.<anonymous>) JsonWebTokenError: ungültige Signatur
at E:\admin\Documents\MOI\Projets\Gladys\gladys\server\node_modules\jsonwebtoken\verify.js:133:19
at getSecret (E:\admin\Documents\MOI\Projets\Gladys\gladys\server\node_modules\jsonwebtoken\verify.js:90:14)
at Object.module.exports [as verify] (E:\admin\Documents\MOI\Projets\Gladys\gladys\server\node_modules\jsonwebtoken\verify.js:94:10)
at Session.validateAccessToken (E:\admin\Documents\MOI\Projets\Gladys\gladys\server\lib\session\session.validateAccessToken.js:15:23)
at WebSocket.<anonymous> (E:\admin\Documents\MOI\Projets\Gladys\gladys\server\api\websockets\index.js:109:49)
at WebSocket.emit (events.js:304:20)
at Receiver.receiverOnMessage (E:\admin\Documents\MOI\Projets\Gladys\gladys\server\node_modules\ws\lib\websocket.js:789:20)
at Receiver.emit (events.js:304:20)
at Receiver.dataMessage (E:\admin\Documents\MOI\Projets\Gladys\gladys\server\node_modules\ws\lib\receiver.js:422:14)
at Receiver.getData (E:\admin\Documents\MOI\Projets\Gladys\gladys\server\node_modules\ws\lib\receiver.js:352:17)
at Receiver.startLoop (E:\admin\Documents\MOI\Projets\Gladys\gladys\server\node_modules\ws\lib\receiver.js:138:22)
at Receiver._write (E:\admin\Documents\MOI\Projets\Gladys\gladys\server\node_modules\ws\lib\receiver.js:74:10)
at doWrite (_stream_writable.js:463:12)
at writeOrBuffer (_stream_writable.js:445:5)
at Receiver.Writable.write (_stream_writable.js:325:11)
at Socket.socketOnData (E:\admin\Documents\MOI\Projets\Gladys\gladys\server\node_modules\ws\lib\websocket.js:864:35)
at Socket.emit (events.js:304:20)
at addChunk (_stream_readable.js:341:12)
at readableAddChunk (_stream_readable.js:316:11)
at Socket.Readable.push (_stream_readable.js:250:10)
at TCP.onStreamRead (internal/stream_base_commons.js:186:23) {
name: 'JsonWebTokenError',
message: 'invalid signature'
}
Das ist die letzte Frage für heute, danach höre ich auf
Meiner Meinung nach sind das ganz andere Logs… Diese Logs treten nur auf, wenn du deinen Entwicklerserver neu startest. Die Zugriffstoken werden ungültig, das ist Debugging, keine Fehler
Sind deine Routen wirklich 404? Bist du sicher, dass dein Controller richtig exponiert ist?
Also versteht niemand, warum die „status“-Routen nicht funktionieren?
@pierre-gilles Ich würde gerne wissen, ob es in meinem Dienst möglich ist, eine Bedingung zu erstellen, um zu überprüfen, ob ein Gerät in der Datenbank existiert oder nicht?