Skip to content

Entwicklung

Diskussionen und Hilfe für die Entwicklung von ioBroker und Adaptern.

1.3k Themen 31.5k Beiträge

NEWS

  • [Frage] 'adapter' funktionen nicht überall verfügbar

    Verschoben
    8
    0 Stimmen
    8 Beiträge
    1k Aufrufe
    carsten04C
    Ich finde beide Lösungen zur Sichtbarmachung des Adapter-Instanzobjektes adpater in eigenen Modulen haben Ihre Berechtigung. Die Lösung von AlCalzone finde ich sehr elegant, insbesondere dann, wenn ich das instanzierte Adapterobjekt noch dynamisch anpassen möchte (z.B. einige Methoden promisifizieren möchte, etc.). Dann kann ich das schön übersichtlich in global.js machen. Wenn ich nur adapter in wenigen eigenen Modulen benötige, mache ich es eigentlich immer so, wie von apollon77 vorgeschlagen. Das geht schnell und ist sehr überschaubar. Bei der Lösung von AlCalzone muss mann sich immer bewusst machen, dass Klassen erst ab Nodeversion 4.8.3 zur Verfügung stehen, dass eine Kompatibilität zur Nodeversion 0.12.18, die ja auch noch vielfach genutzt wird, nicht gegeben ist. Im Umgang mit adapter sollte man auch wissen, dass mit const utils = require(path.join(__dirname, '/lib/utils')); var adapter = utils.adapter(options); am Anfang von main.js die Erzeugung von adapter asynchron erfolgt. Dies liegt an dem Aufruf von initObjects(callback); innerhalb des Adapter-Konstruktors. Hierdurch werden im adapter alle Methoden in adapter.objects adapter.states (in der Regel als ObjectsInMemClient und StatesInMemClient) für die Abstraktionsschicht zur Verfügung gestellt. Das hat zur Folge, dass z.B. folgender Aufruf am Anfang von main.js const Promise = require('bluebird'); const utils = require(path.join(__dirname, '/lib/utils')); var adapter = utils.adapter(options); adapter = Promise.promisifyAll(adapter); nicht vollständig funktionieren muss, da adapter.states zu diesem Zeitpunkt noch nicht erzeugt wurde. Man muss also immer das ready-Event abwarten, um Änderungen in adapter vorzunehmen, d.h. erst in main() ist wirklich sichergestellt, dass adapter vollständig zur Verfügung steht. Grüße Carsten
  • [Frage] Widget nicht schaltbar

    Verschoben
    1
    1
    0 Stimmen
    1 Beiträge
    2k Aufrufe
    Niemand hat geantwortet
  • Frage zu: adapter.on('unload', function (callback) {…})

    Verschoben
    7
    0 Stimmen
    7 Beiträge
    3k Aufrufe
    carsten04C
    Hi Bluefox, das war genau das fehlende Puzzleteil um mein Problem zu lösen. Vielen Dank für den Hinweis und Dein unglaubliches Engagement für ioBroker. Grüße Carsten
  • [Frage] reload Admin config

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    1k Aufrufe
    MeistertrM
    @apollon77: "iobroker upload <adaptername>"</adaptername> ` super danke . Wenn doch alles immer so einfach wäre :)
  • IoBroker.lightify

    Verschoben
    5
    0 Stimmen
    5 Beiträge
    2k Aufrufe
    BluefoxB
    Da soef nicht auf Anfragen reagiert, muss ich den Adapter ins iobroker.osram umbenennen. Noch mal an alle Entwickler: Bitte tragen sie mich als owner bei npm ein. cd iobroker.Adapter npm owner add bluefox Sonst muss ich immer wieder so was wie ioBroker.adapter2 und so weiter machen. Das mache ich nur wenn ihr lange Zeit nicht auf Anfragen reagiert.
  • Adapter-Entwicklung

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    1k Aufrufe
    J
    @apollon77: Hi jacek, willkommen in der Entwicklergemeinschaft. Am besten mach Dir als erstes noch nen Trello-Account und wäre super wenn Du deine Pläne/Ideen im Trello-Board einträgst damit man sieht wer an was arbeitet. http://forum.iobroker.net/viewtopic.php … lit=trello ` Vielen Dank für die Info. @apollon77: Modus-Wechsel sind nicht so einfach. Wenn es einmalig während der Entwicklung ist dann ist es am einfachsten Direkt das Objekt zu editieren. Unter "OBjekte" dazu Expertenmodus einschalten, dann kannst Du alle Objekte einsehen. Das was Du brauchst ist "system.adapter.<adaptername>.<indstanceid>" Dort dann rechts auf das Bleistift-Symbol und dort ändern. Dann iobroker neu starten, damit sollte das neu eingelesen werden. Ansonsten ist auch pot. ein manuelles "iobroker upload <adaptername>" auf der Kommandozeile nötig um alles in sync zu bringen. Wenn DU den Adapter schon Live und an Leute verteilt hast dann kann man einen Moduswechsel machen wie z.B. bei mir im NUT-Adapter https://github.com/Apollon77/ioBroker.n … nut.js#L85 ... aber auch das bracht manchmal nen iobroker neustart um richtig zu klappen.</adaptername></indstanceid></adaptername> ` Das hat mir gefehlt und jetzt klappt es auch. Vielen Dank. @apollon77: Das sollte nicht passieren. Die main.js ist ja der "Code". Da wird nix gecached. Das editierne musst Du in /opt/iobroker/node_modules/iobroker,.<adaptername>/main.js machen!! Dann eher schauen das das stoppen des Adapters auch wirklich geklappt hat. Also mit "ps" mal in den Prozessen schauen. Je nachdem was man so macht muss man schauen das es nicht hängenbleibt.</adaptername> ` Evtl. lag es noch am Modus oder daran, dass der Prozess nicht komplett beendet war. Werde das noch genauer testen. @apollon77: Ansonsten kann ich noch das als Überblick empfehlen: http://forum.iobroker.net/viewtopic.php?f=24&t=6383 ` Die Anleitung ist super. Damit komme ich nun sehr gut weiter. Vielen Dank für die Antworten. Viele Grüße Jacek
  • Eigenes Vis widget: Installation erfolgreich aber im edit-mode nicht sichtbar

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    2k Aufrufe
    Rene_HMR
    @Bluefox: Ohne Widget Set zu sehen schwer zu sagen, aber es hilft immer: iobroker restart vis iobroker upload vis ` Ja, das hilft. Danke. Jedes mal, wenn ich vis-weather nach einer Neu-Installation installiere, muss ich iobroker upload vis aufrufen. Nach was kann/muss ich suchen, um den Fehler zu beheben?
  • Lumi-gateway-v3 Mi Home

    Verschoben
    8
    0 Stimmen
    8 Beiträge
    4k Aufrufe
    arteckA
    läuft KLASSE… wieder mal zuvorgekommen.. und ich wollte mich morgen mal hinsetzten... :lol: 1518_mii.png
  • Adapter Update

    Verschoben
    9
    0 Stimmen
    9 Beiträge
    2k Aufrufe
    S
    Aaah, das war's :) Danke Dir für Deine Hilfe!
  • 0 Stimmen
    8 Beiträge
    3k Aufrufe
    Rene_HMR
    @Bluefox: Mache einen offiziellen Widget Set und der taucht dann in der neue App Version auf. ` Ich habe die beiden Adapter "DasWetter" und "vis-weather" auf NPM hochgeladen. Das war es, was du mit "mach ein offizielles widget set" gemeint hattest, oder?
  • Eigenen Adapter Entwickeln

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    1k Aufrufe
    apollon77A
    Da die Adapter in JavaScript geschrieben sind ist JavaScript natürlich das Mittel der Wahl. :-)
  • Ankündigung Motion - Adapter

    Verschoben
    23
    2
    0 Stimmen
    23 Beiträge
    9k Aufrufe
    S
    Ah…ok...hatte ich nicht auf dem Schirm....Danke für den Hinweis!
  • [Aufruf] Glossar alle zusammen schreiben!

    Verschoben
    35
    0 Stimmen
    35 Beiträge
    5k Aufrufe
    HomoranH
    Any native speakers here? Bluefox hat die englische Seite zum Abschuss, äähh Kontrollesen freigegeben ;-) Gruß Rainer
  • Wemos Schaltaktor/Relai wie aus dem IOBroker heraus betätigen?

    Verschoben
    17
    0 Stimmen
    17 Beiträge
    3k Aufrufe
    K
    Danke für Deine Bemühungen…. Ich konnte es mittels eines Adapters Hm-rpc.1 mit Hilfe von Hormoran und dem Kollegen Klassisch den Wemo in den IOBroker einzubinden. Jetzt wo es unter IOBroker unter Objekte aufgetaucht ist, lässt sich das Teil mit einem Widget ansteuern und sogar mit der Zustandsanzeige... Jetzt versuche ich es im Cloud vom Alexa einzubinden. Das ist aber eine andere Baustelle... danke Dir und dem Paul für die Hilfe! 1526_unbenannt16.png
  • Wetterstation mit ESP8266 Regenvorhersage

    Verschoben
    8
    0 Stimmen
    8 Beiträge
    4k Aufrufe
    K
    ich habe eine Wetterstation nachgebaut. Die Station überträgt die Temperatur, Feuchte, Luftdruck (relativ und absolut) und übeträgt über die WLan die Akkuspannung der Lion Zelle an die CCU als Variable… Geht auch für 30 min. in DeepSleep um Akku zu sparren. Die Daten werden alle 30 min. aktualisiert. Die Regenmenge würde ich dem weatherunderground Adapter entnehmen. @Apollon77, hast Du dein Bewässerungsskript fertig? 1526_1.jpg 1526_img_20170429_105621.jpg 1526_unbenannt1.png
  • Kennt sich wer mit Python aus?

    Verschoben
    10
    0 Stimmen
    10 Beiträge
    2k Aufrufe
    arteckA
    @kmxak: selbst wenn ich es so mache kommt die wartezeit erst wenn ich das script mit strg c abbreche: import MFRC522 import signal import time import urllib continue_reading = True MIFAREReader = MFRC522.MFRC522() # Karten konfigurieren karte1 = [1111111111] karte2 = [1111111111] def end_read(signal, frame): global continue_reading continue_reading = False print "Ctrl+C captured, ending read." MIFAREReader.GPIO_CLEEN() signal.signal(signal.SIGINT, end_read) # Script starten print "\x1b[2J" # Terminal leeren print "RFID Card Reader ioBroker Script" print "Zum Abbrechen des Skripts STRG-C druecken." while continue_reading: (status,TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL) if status == MIFAREReader.MI_OK: print "Card detected" (status,backData) = MIFAREReader.MFRC522_Anticoll() if status == MIFAREReader.MI_OK: print "Card read UID: "+str(backData[0])+","+str(backData[1])+","+str(backData[2])+","+str(backData[3])+","+str(backData[4]) # Hier werden die Karten abgefragt if backData == karte1: urllib.urlretrieve('http://ip/set/Test?value=true') # ioBroker URL print "Status True gesetzt! - Karte 1" elif backData == karte2: print "Karte 2" else: print "wrong Card" time.sleep(5) print "wartezeit" verstehe das einfach nicht. Scanne eine "falsche karte" nach meinem verständnis müsste nun wrong card kommen und nach 5 sec wartezeit. das tut es aber nicht. es kommt immer wieder im millisekundentakt wrong card und das wartezeit erst mit strg c ` wie währe es wenn du dich mit python ein wenig auseinander setzt.. wiki Python_(Programmiersprache) vor allem der Absatz #Syntax das while continue_reading: (status,TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL) if status == MIFAREReader.MI_OK: print "Card detected" (status,backData) = MIFAREReader.MFRC522_Anticoll() if status == MIFAREReader.MI_OK: print "Card read UID: "+str(backData[0])+","+str(backData[1])+","+str(backData[2])+","+str(backData[3])+","+str(backData[4]) # Hier werden die Karten abgefragt if backData == karte1: urllib.urlretrieve('http://ip/set/Test?value=true') # ioBroker URL print "Status True gesetzt! - Karte 1" elif backData == karte2: print "Karte 2" else: print "wrong Card" time.sleep(5) print "wartezeit" ist was andereas als das while continue_reading: (status,TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL) if status == MIFAREReader.MI_OK: print "Card detected" (status,backData) = MIFAREReader.MFRC522_Anticoll() if status == MIFAREReader.MI_OK: print "Card read UID: "+str(backData[0])+","+str(backData[1])+","+str(backData[2])+","+str(backData[3])+","+str(backData[4]) # Hier werden die Karten abgefragt if backData == karte1: urllib.urlretrieve('http://ip/set/Test?value=true') # ioBroker URL print "Status True gesetzt! - Karte 1" elif backData == karte2: print "Karte 2" else: print "wrong Card" time.sleep(5) print "wartezeit" aus die Einrückung kommt es an wann was ausgeführt wird zumidest Grundinformationen habe ich erwartet
  • Javascript Synchron

    Verschoben
    17
    0 Stimmen
    17 Beiträge
    3k Aufrufe
    AlCalzoneA
    Ahhh… Na dann ist der Name xxxSync erst recht passend. Find ich super!
  • Adapter: alle Objekte/States eines Adapters löschen

    Verschoben
    27
    0 Stimmen
    27 Beiträge
    9k Aufrufe
    MeistertrM
    [quote="Bluefox" - Device +---Channel 1 +------- State 1 +------- State 2 +------- State 3 +---Channel 2 +------- State 4 +------- State 5 +------- State 6 +------- State 7 Falls es so ist, dann kannst du es mit``` <code>adapter.getDevices(function (err, devices) { for(var d = 0; d < devices.length, d++) { adapter.deleteDevice(devices[d]._id); } }); ich habe die objekte nach dem schema aufgebaut, und mit der Funtion versucht zu löschen, alles ohne fehler, das device wird danach im adapter auch nciht mehr gefunden, jedoch die channels und states, und die states unter objekte sind auch noch vorhanden, weiß einer wo mein Fehler liegt? mit freundlichen Grüßen Tobi</code>
  • [gelöst] Taster für IR-Signal

    Verschoben
    8
    0 Stimmen
    8 Beiträge
    1k Aufrufe
    R
    Hallo, scheint so dass es jetzt funzt. Das Problem sind offensichtlich wirklich die nicht definierten Zustände der Broadlink Objekte. Ich habe Sie nun alle auf falsch gesetzt. Das Zeichen ist aber erst verschwunden als ich das Objekt im Widget gelöscht und neu eingebunden habe. Wäre vielleicht für die Zukunft ein Verbesserungsvorschlag, nur Objekte zuzulassen, die definiert sind. ICh werde parallel auch noch den Entwickler des Broadlink Adapters informieren
  • Profis gefragt - Entwicklungsumgebung

    Verschoben
    8
    0 Stimmen
    8 Beiträge
    5k Aufrufe
    AlCalzoneA
    Ich arbeite mit VS 2017 Community-Edition (vormals VS 2015 Enterprise (?) ) Funktioniert einwandfrei, inklusive Gulp-Tasks zur Transpilierung, Remote-Debugging aufm Raspi, Git-Anbindung, etc…

871

Online

32.4k

Benutzer

81.5k

Themen

1.3m

Beiträge