JavaScript Javascript - Objekt instanziieren und options mitgeben

Sithys

Captain Pro
Registriert
Dez. 2010
Beiträge
3.484
Moin zusammen,
ich bin leider nicht der Profi, würde aber gerne dieses NPM-Paket nutzen: Shelly-Iot

Der Autor schweigt sich mit Beispielcode leider aus und ich bekomme das Paket nicht zum laufen. Vielleicht kann von Euch mal jemand erklären oder schreiben, wie ich dem ShellyIot({}) bspw. den logger als Option mitgebe oder wie ich das callback aus callDevice(192.168.178.42) bekomme?

Ich brech mir hier seit über einer Stunde einen ab :/

Beste Grüße
 
Ja, wie gebe ich denn da den logger mit, so das dieser aktiv ist?
 
Der Logger scheint einfach nur eine normale Funktion zu sein.
Code:
function logger(message) {
  console.log(message);
}

new ShellyIot({ logger });
 
  • Gefällt mir
Reaktionen: Sithys
Vielen Dank :) Mit Deiner Hilfe hab ichs jetzt hinbekommen, nun sind alle Steckdosen einzeln steuerbar.
 
Möglichkeiten:
  • Versuche den Autor anzuschreiben.
  • Eventuell enthält das Package eine Readme.
  • Einfach aufrufen, Break Point setzen und schauen, was es macht. Reverse Engineering.
 
@QXARE kannst Du mir eventuell noch beantworten, wie ich aus

getDeviceStatus(deviceId, callback)
Contacts a known device by Device-ID or by IP to request the device status update. Callback is called with the following parameters: error, deviceId, payload, deviceIp

das callback rausbekomme?

Hatte das jetzt so geschrieben: const status = Shelly.getDeviceStatus('192.168.178.48');

Dachte, dann wird das Callback in status gespeichert, dem ist aber nicht so.
 
Herzlich willkommen in der Welt von JavaScript :freaky:

Callbacks sind Funktionen die du einer anderen Funktion mitgibst. Diese rufen dann den übergebenen Callback auf, sobald die Funktion ihre Arbeit verrichtet hat. Im Callback kannst du dann weiter arbeiten.

Javascript:
Shelly.getDeviceStatus('192.168.178.48', function (errorId, deviceId, payload, deviceIp) {
  console.log('Error: ' + errorId)
  console.log('ID: ' + deviceId)
  console.log('IP: ' + deviceIp)
  console.log('Payload: ' + payload)
});

Etwas moderner (je nachdem wo du es nutzt auf Kompatibilität achten):
Javascript:
Shelly.getDeviceStatus('192.168.178.48', (errorId, deviceId, payload, deviceIp) => {
  console.log('Error: ' + errorId)
  console.log('ID: ' + deviceId)
  console.log('IP: ' + deviceIp)
  console.log('Payload: ' + payload)
});
 
Zurück
Oben