Skip to content

Entwicklung

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

1.3k Topics 31.6k Posts

NEWS

  • Mehrere requests syncron laufen lassen

    Moved
    3
    0 Votes
    3 Posts
    347 Views
    MeistertrM
    da ich mit der zeit gehen will und mich promises interessiert, versuche ich das mal…
  • [Gelöst] Discovery Adapter

    Moved
    5
    0 Votes
    5 Posts
    639 Views
    unltdnetworxU
    Ich habe das o.g. Problem jetzt anders gelöst. Die vorgerfertige Function "tools.httpGet" brachte mich leider zu keinem Ergebnis, daher habe ich "http.get" direkt eingebunden.
  • JavaScript - GREP?

    Moved
    5
    0 Votes
    5 Posts
    451 Views
    apollon77A
    Mit regex ist man ein bissl flexibler in Bezug auf Änderungen. Aber ist aufwändiger. Ich nutze immer regex101.com zum bauen/experimentieren. Gesendet vom Handy …
  • Samsung TV H series - Problem

    Moved
    14
    0 Votes
    14 Posts
    11k Views
    H
    mach mal dazu einen neuen beitrag auf und lass uns dort darüber reden kurze info zu tv und türanlage gleich rein
  • [Gelöst] Discovery über Ping

    Moved
    14
    0 Votes
    14 Posts
    912 Views
    foxriver76F
    @unltdnetworx: Jetzt hab ichs glaub ich: ! ``` `function enumAdapters(repository) { var dir = fs.readdirSync(__dirname + '/lib/adapters'); for (var f = 0; f < dir.length; f++) { var parts = dir[f].split('.'); if (parts[parts.length - 1] === 'js') { parts.pop(); var moduleName = __dirname + '/lib/adapters/' + dir[f]; var aName = parts.join('.'); if (adapters && adapters[aname] && adapters[aname].reloadModule) { var module = require.resolve(moduleName); delete require.cache[module]; delete adapters[aname]; } ! // check if this adapter available in repository if (!adapters[aname] && (!repository || repository.indexOf(aName) !== -1)) { adapters[aname] = require(moduleName); } } } }! In der letzte if-Zeile muss[code]&& (!repository || repository.indexOf(aName) !== -1)[/code]entfernt werden. Ich hab mir die Zeile kopiert und ausgeklammert im Entwicklungssystem. ! Wow, da ist ja sogar nen Comment im Code --> dann bin ich selbst schuld :D ! Ist auf jeden Fall der Ursprung des Problems, vielen Dank.[/aname][/aname][/aname][/aname][/aname] ```
  • [Frage] Debuggen von child Prozessen mit WebStorm

    Moved
    4
    0 Votes
    4 Posts
    476 Views
    arteckA
    @Stabilostick: Brauchst du die setup.js vorher für was? Warum startest du den js-controler.js nicht direkt mit Webstorm? ` das währe auch meine Frage gewesen..
  • Automatischer Adapter Neustart

    Moved
    7
    0 Votes
    7 Posts
    1k Views
    D
    Ok, das wars. Wird nun alle N Sekunden aktualisiert. /* jshint -W097 */ // jshint strict:false /*jslint node: true */ 'use strict'; var utils = require(__dirname + '/lib/utils'); // Get common adapter utils var adapter = new utils.Adapter('stiebel-lwz'); // is called when adapter shuts down - callback has to be called under any circumstances! adapter.on('unload', function (callback) { try { adapter.log.info('cleaned everything up...'); callback(); } catch (e) { callback(); } }); // is called if a subscribed object changes adapter.on('objectChange', function (id, obj) { // Warning, obj can be null if it was deleted adapter.log.info('objectChange ' + id + ' ' + JSON.stringify(obj)); }); // SENDE DATEN AN ISG adapter.on('stateChange', function (id, state) { // Debug Ausgabe im Log const debugging = adapter.config.debugging; // Warning, state can be null if it was deleted //adapter.log.info('stateChange ' + id + ' ' + JSON.stringify(state)); /** * SENDE PARAMETER AN ISG */ // https://nodejs.org/api/child_process.html const {exec} = require('child_process'); // Sende Parameter an ISGweb var parameter, wert; function set_isg_para(isgweburl, parameter, wert) { exec('bash /opt/iobroker/node_modules/iobroker.stiebel-lwz/isg_set.sh ' + isgweburl + ' ' + parameter + ' ' + wert, (err, stdout, stderr) => { if (err) { console.error(err); return; } if (debugging === true) console.log(stdout); }); } // BETRIEBSART if (id == adapter.name + '.' + adapter.instance + '.Start.Betriebsart') { if (debugging === true) adapter.log.info('Setze Betriebsart auf: ' + state.val); set_isg_para(adapter.config.isgIP, 'BETRIEBSART', state.val); } // LUEFTUNGSSTUFEN else if (id == adapter.name + '.' + adapter.instance + '.Einstellungen.Lueften.Lueftungsstufen.STUFE_TAG') { if (debugging === true) adapter.log.info('Setze Lueftungsstufe STUFE-TAG auf: ' + state.val); set_isg_para(adapter.config.isgIP, 'LUEFTERSTUFETAG', state.val); } // RAUM TEMP TAG else if (id == adapter.name + '.' + adapter.instance + '.Einstellungen.Heizen.Raumtemperaturen_HK1.RAUMTEMP_TAG') { if (debugging === true) adapter.log.info('Setze Raumtemperaturen_HK1 RAUMTEMP. TAG auf: ' + state.val); set_isg_para(adapter.config.isgIP, 'RAUMTEMPTAG', state.val); } // WARMWASSER TEMP TAG else if (id == adapter.name + '.' + adapter.instance + '.Einstellungen.Warmwasser.WW-Temperaturen.WW_SOLL_TAG') { if (debugging === true) adapter.log.info('Setze WW-Temperaturen WW SOLL TAG auf: ' + state.val); set_isg_para(adapter.config.isgIP, 'WARMWASSERTEMPTAG', state.val); } }); // is called when databases are connected and adapter received configuration. adapter.on('ready', function () { main(); }); function main() { // Debug Ausgabe im Log const debugging = adapter.config.debugging; // TODO: cron? automatischer adapter restart? // Ausgabe der eingestellten IP im Log if (debugging === true) adapter.log.info('isgIP: ' + adapter.config.isgIP); // TODO: Abbruch bei keiner eingetragenen IP /* if (adapter.config.isgIP === "0.0.0.0") { adapter.log.error('Keine IP Adresse eingetragen! Adapterstart wird abgebrochen!'); fail; } */ // LADE cheerioReq // https://github.com/IonicaBizau/cheerio-req const cheerioReq = require('cheerio-req'); function getISGwebParameters() { /* cheerio & request const cheerio = require('cheerio'); const request = require('request'); request('http://' + adapter.config.isgIP + '/?s=1,0', function (error, response, body) { var $ = cheerio.load(body); ..... } */ // Funktion um die letzten Stellen des Strings zu entfernen: °C || m³/h || Hz || % function removeUnit(input, unitLength, unit) { if (unit) unit.valueOf = unit.toSource = unit.toString = input.substring(input.length - unitLength, input.length); var value = input.substring(0, input.length - unitLength); value = value.replace(/,/, "."); return parseFloat(value); } function removeSign(input, length, unit) { return removeUnit(input, length, unit); } /** * DATENQUELLE: START */ cheerioReq('http://' + adapter.config.isgIP, (err, $) => { // BETRIEBSART var value = $('input#aval39').val(); adapter.setState('Start.Betriebsart', value, true); if (debugging === true) adapter.log.info('BETRIEBSART: ' + value); // SYSTEMSTATUS var value = $('#box_start_status_system div > p.info').text().trim(); adapter.setState('Start.Systemstatus', value, true); if (debugging === true) adapter.log.info('SYSTEMSTATUS: ' + value); // PORTALSTATUS Letzter Kontakt var value = $('#box_start_status_portal div p').eq(0).text().trim(); adapter.setState('Start.Portalstatus_letzter_Kontakt', value, true); if (debugging === true) adapter.log.info('PORTALSTATUS: ' + value); // PORTALSTATUS Schlüssel var value = $('#box_start_status_portal div > p.info').text().trim(); adapter.setState('Start.Portalstatus_Schluessel', value, true); if (debugging === true) adapter.log.info('PORTALSTATUS: ' + value); // ISGweb VERSION var value = $('#versionsNummer').text().trim(); adapter.setState('Start.ISGwebVersion', value, true); if (debugging === true) adapter.log.info('ISGwebVersion: ' + value); // LUEFTERSTUFE fuer DP zum setzen der Luefterstufe --> Später 4,2 // ==> AUS JS auslesen var value = $('script').text().trim(); adapter.log.info('TEST' + value); /* */ }); /** * DATENQUELLE: INFO -> ANLAGE */ cheerioReq('http://' + adapter.config.isgIP + '/?s=1,0', (err, $) => { var d = $("td.value"); //console.log('tds: ' + d); // The parseFloat() function parses a string and returns a floating point number. // The text property sets or returns the text of an option element. // The trim() method removes whitespace from both sides of a string. // The .eq() selector selects an element with a specific index number. The index numbers start at 0, so the first element will have the index number 0 (not 1). var parameter, select, dp; function setStateRemoveUnits(parameter, select, dp) { var value = d.eq(select).text().trim(); //adapter.log.info(parameter + ': ' + value); value = removeSign(value, 2); if (isNaN(value)) value = 0; if (debugging === true) adapter.log.info(parameter + ': ' + value); adapter.setState(dp, value, true); } // RAUMTEMPERATUR setStateRemoveUnits('RAUMISTTEMP_HK1', 0, 'Info.Anlage.Raumtemperatur.RAUMISTTEMP_HK1') setStateRemoveUnits('RAUMSOLLTEMP_HK1', 1, 'Info.Anlage.Raumtemperatur.RAUMSOLLTEMP_HK1') setStateRemoveUnits('RAUMFEUCHTE_HK1', 2, 'Info.Anlage.Raumtemperatur.RAUMFEUCHTE_HK1') setStateRemoveUnits('RAUMISTTEMP_HK2', 3, 'Info.Anlage.Raumtemperatur.RAUMISTTEMP_HK2') setStateRemoveUnits('RAUMSOLLTEMP_HK2', 4, 'Info.Anlage.Raumtemperatur.RAUMSOLLTEMP_HK2') setStateRemoveUnits('RAUMFEUCHTE_HK2', 5, 'Info.Anlage.Raumtemperatur.RAUMFEUCHTE_HK2') // HEIZEN setStateRemoveUnits('AUSSENTEMPERATUR', 6, 'Info.Anlage.Heizen.AUSSENTEMPERATUR') setStateRemoveUnits('ISTWERT_HK1', 7, 'Info.Anlage.Heizen.ISTWERT_HK1') setStateRemoveUnits('SOLLWERT_HK1', 8, 'Info.Anlage.Heizen.SOLLWERT_HK1') setStateRemoveUnits('ISTWERT_HK2', 9, 'Info.Anlage.Heizen.ISTWERT_HK2') setStateRemoveUnits('SOLLWERT_HK2', 10, 'Info.Anlage.Heizen.SOLLWERT_HK2') setStateRemoveUnits('VORLAUFTEMPERATUR', 11, 'Info.Anlage.Heizen.VORLAUFTEMPERATUR') setStateRemoveUnits('RUECKLAUFTEMPERATUR', 12, 'Info.Anlage.Heizen.RUECKLAUFTEMPERATUR') // WARMWASSER setStateRemoveUnits('WW_ISTTEMP', 13, 'Info.Anlage.Warmwasser.WW_ISTTEMP') setStateRemoveUnits('WW_SOLLTEMP', 14, 'Info.Anlage.Warmwasser.WW_SOLLTEMP') // LÜFTEN setStateRemoveUnits('ZULUFT_IST_LUEFTERDREHZAHL', 15, 'Info.Anlage.Lueften.ZULUFT_IST_LUEFTERDREHZAHL') setStateRemoveUnits('ZULUFT_SOLL_VOLUMENSTROM', 16, 'Info.Anlage.Lueften.ZULUFT_SOLL_VOLUMENSTROM') setStateRemoveUnits('ABLUFT_IST_LUEFTERDREHZAHL', 17, 'Info.Anlage.Lueften.ABLUFT_IST_LUEFTERDREHZAHL') setStateRemoveUnits('ABLUFT_SOLL_VOLUMENSTROM', 18, 'Info.Anlage.Lueften.ABLUFT_SOLL_VOLUMENSTROM') // WÄRMEERZEUGER setStateRemoveUnits('HEIZSTUFE', 19, 'Info.Anlage.Waermeerzeuger.HEIZSTUFE') }); // end of cheerioReq() /** * DATENQUELLE: INFO -> WAERMEPUMPE */ cheerioReq('http://' + adapter.config.isgIP + '/?s=1,1', (err, $) => { var d = $("td.value"); var parameter, select, dp; function setStateRemoveUnits(parameter, select, dp) { var value = d.eq(select).text().trim(); //adapter.log.info(parameter + ': ' + value); value = removeSign(value, 2); if (debugging === true) adapter.log.info(parameter + ': ' + value); if (isNaN(value)) value = 0; adapter.setState(dp, value, true); } // PROZESSWERTE setStateRemoveUnits('HEISSGASTEMPERATUR', 0, 'Info.Waermepumpe.Prozesswerte.HEISSGASTEMPERATUR') setStateRemoveUnits('VERDAMPFERTEMP', 1, 'Info.Waermepumpe.Prozesswerte.VERDAMPFERTEMP') setStateRemoveUnits('VERFLUESSIGERTEMP', 2, 'Info.Waermepumpe.Prozesswerte.VERFLUESSIGERTEMP') setStateRemoveUnits('FORTLUFT_IST_LUEFTERDREHZAHL', 3, 'Info.Waermepumpe.Prozesswerte.FORTLUFT_IST_LUEFTERDREHZAHL') setStateRemoveUnits('FORTLUFT_SOLL_VOLUMENSTROM', 4, 'Info.Waermepumpe.Prozesswerte.FORTLUFT_SOLL_VOLUMENSTROM') // WAERMEMENGEN setStateRemoveUnits('WM_HEIZEN_TAG', 5, 'Info.Waermepumpe.Waermemengen.WM_HEIZEN_TAG') setStateRemoveUnits('WM_HEIZEN_SUMME', 6, 'Info.Waermepumpe.Waermemengen.WM_HEIZEN_SUMME') setStateRemoveUnits('WM_WW_TAG', 7, 'Info.Waermepumpe.Waermemengen.WM_WW_TAG') setStateRemoveUnits('WM_WW_SUMME', 8, 'Info.Waermepumpe.Waermemengen.WM_WW_SUMME') setStateRemoveUnits('WM_NE_HEIZEN_SUMME', 9, 'Info.Waermepumpe.Waermemengen.WM_NE_HEIZEN_SUMME') setStateRemoveUnits('WM_NE_WW_SUMME', 10, 'Info.Waermepumpe.Waermemengen.WM_NE_WW_SUMME') setStateRemoveUnits('WM_WRG_TAG', 11, 'Info.Waermepumpe.Waermemengen.WM_WRG_TAG') setStateRemoveUnits('WM_WRG_SUMME', 12, 'Info.Waermepumpe.Waermemengen.WM_WRG_SUMME') // LEISTUNGSAUFNAHME setStateRemoveUnits('P_HEIZUNG_TAG', 13, 'Info.Waermepumpe.Leistungsaufnahme.P_HEIZUNG_TAG') setStateRemoveUnits('P_HEIZUNG_SUMME', 14, 'Info.Waermepumpe.Leistungsaufnahme.P_HEIZUNG_SUMME') setStateRemoveUnits('P_WW_TAG', 15, 'Info.Waermepumpe.Leistungsaufnahme.P_WW_TAG') setStateRemoveUnits('P_WW_SUMME', 16, 'Info.Waermepumpe.Leistungsaufnahme.P_WW_SUMME') // LAUFZEITEN setStateRemoveUnits('VERDICHTER_HEIZEN', 17, 'Info.Waermepumpe.Laufzeiten.VERDICHTER_HEIZEN') setStateRemoveUnits('VERDICHTER_WW', 18, 'Info.Waermepumpe.Laufzeiten.VERDICHTER_WW') setStateRemoveUnits('ELEKTR_NE_HEIZEN', 19, 'Info.Waermepumpe.Laufzeiten.ELEKTR_NE_HEIZEN') setStateRemoveUnits('ELEKTR_NE_WW', 20, 'Info.Waermepumpe.Laufzeiten.ELEKTR_NE_WW') }); // end of cheerioReq() setTimeout(function () { getISGwebParameters(); }, 10000); } // end of getISGwebParameters() if (adapter.config.loadISGwebParameters === true) { getISGwebParameters(); } // in this stiebel-lwz all states changes inside the adapters namespace are subscribed adapter.subscribeStates('*'); /* setTimeout(function () { getISGwebParameters(); adapter.stop(); }, 10000); */ } // end of main()
  • [Erledigt] Änderung vom index_m sofort sichtbar machen

    Moved
    3
    1
    0 Votes
    3 Posts
    344 Views
    M
    @apollon77: iobroker upload adaptername lädt die admin files und io-package.sjon Änderungen intern hoch sodass sie verwendet werden ` Das war es schon… Vielen Dank!
  • Widget style.css wird nicht beachtet bei Änderung

    Moved
    1
    0 Votes
    1 Posts
    176 Views
    No one has replied
  • States-DB

    Moved
    19
    0 Votes
    19 Posts
    1k Views
    apollon77A
    socket.io in neueren Versionen gabmmehr Probleme als alles andere … leider. keine Ahnung was die da kaputt gemacht haben. Ich denke optimierter ist nur ein "TCP basierters eigenes protokoll". Ich könnte da auch ein paar verrückte Ideen kommen ... aber die Diskutier ich lieber erstmal direkt mit Bluefox :-)
  • Adapter Judo I-Soft plus

    Moved
    12
    0 Votes
    12 Posts
    2k Views
    R
    Das wird natürlich bei einer Wasseraufbereitung nicht gehen. Da gibt es Optionen wie z.b Urlaubsmodus , Wasserstop usw..
  • Adapter Entwicklung - cheerio - $ is not defined

    Moved
    5
    0 Votes
    5 Posts
    601 Views
    D
    Ok Super, vielen Dank!! Komme aktuell bei dem Adapter relativ schnell weiter - wäre super wenn du nochmal drüber schauen könntest und mir meine TODO entsprechend erweitern könntest damit der irgendwann mal offiziell Aufgenommen werden kann. Grüße, Thorsten
  • Information für Datenpunkt aus Javascript auslesen

    Moved
    1
    0 Votes
    1 Posts
    312 Views
    No one has replied
  • [Frage] Wie lautet der Syntax für adapter.getState

    Moved
    11
    0 Votes
    11 Posts
    2k Views
    apollon77A
    Menno … stimmt ... du hast recht ... ohje ... :-)
  • [gelöst] Adapter Instanzen auslesen

    Moved
    10
    0 Votes
    10 Posts
    960 Views
    apollon77A
    ;-)) Bitte auf gelöst setzen. Danke. Gesendet vom Handy …
  • Versuch Adapterentwicklung - Scheitere an Github

    Moved
    9
    0 Votes
    9 Posts
    1k Views
    BuZZyB
    Ich verwende "Github Desktop" (Offizieller Windows Github Client) zum Pushen / Pullen etc und programmiere in VS Code.. Funktioniert alles wunderbar! Du kannst einfach die iobroker.template Repo runterladen (als Zip), in einen Ordner entpacken und dann alles da drin programmieren.. Im Github Desktop sagst du ihm dann dass dieser Ordner eine neue Repo ist und schon kannst du den Ordner als neue Repo auf Github veröffentlichen.. (Shit.. Ich wusste ich hätte lieber ein Tutorial dafür schreiben sollen.. :( :lol: ) Gruß
  • Analytics-Adapter / DB-Harmonisierung

    Moved
    23
    0 Votes
    23 Posts
    2k Views
    StabilostickS
    Ich sag ja: "Ich lass das mal auf mich einige Zeit wirken…" :lol:
  • Erinnerung: Adapter auch im Stable Repo updaten!

    Moved
    1
    0 Votes
    1 Posts
    281 Views
    No one has replied
  • Homee Adapter - ein homee Brain wartet auf einen Entwickler

    Moved
    30
    0 Votes
    30 Posts
    5k Views
    apollon77A
    So … ... ... ... ... here you go ... --> viewtopic.php?f=36&t=15247
  • Words.js erzeugen

    Moved
    3
    0 Votes
    3 Posts
    373 Views
    simatecS
    Ich habe das Problem gelöst … es gab ein Problem mit dem Paket gulp-cli

652

Online

32.7k

Users

82.3k

Topics

1.3m

Posts