Weiter zum Inhalt

Entwicklung

1.3k Themen 31.9k Beiträge

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

NEWS

  • [gelöst mit workarround] "lokaler" Adapter funktioniert nicht mehr

    Verschoben
    8
    0 Stimmen
    8 Beiträge
    1k Aufrufe
    paul53P
    @htrecksler: es läuft ja jetzt wieder ` Dann markiere bitte das Thema im Betreff des ersten Beitrags als [gelöst].
  • [beantwortet] adapter.getChannelsOf mit Spaces scheint nicht zu funktionieren

    Verschoben
    5
    0 Stimmen
    5 Beiträge
    551 Aufrufe
    foxriver76F
    @apollon77: Also 1.4.2: Ja scheint absicht gewesen zu sein: https://github.com/ioBroker/ioBroker.js … r.js#L2459 In der 1.5.x wird es anders sein ` Danke ;-)
  • Request in Adapter verliert Daten

    Verschoben
    6
    0 Stimmen
    6 Beiträge
    1k Aufrufe
    WebrangerW
    Ich hätte auch interesse! Seit heute hängt der discovergy Zähler bei mir im Keller. Gruß
  • Mqtt Überholt

    Verschoben
    21
    0 Stimmen
    21 Beiträge
    6k Aufrufe
    R
    Hallo. Habe auch diese Fehler im Log: mqtt.0 2018-09-22 09:35:48.931 warn Cannot resolve topic name for ID: web.0.connected (object not found) mqtt.0 2018-09-22 09:35:48.926 warn Cannot resolve topic name for ID: web.0.connected (object not found) Ist da etwas falsch konfiguriert oder ist das ein Fehler vom mqtt Adapter? Vielen Dank
  • Vorschlag für die nächste Version - Test-Team

    Verschoben
    18
    0 Stimmen
    18 Beiträge
    1k Aufrufe
    arteckA
    na das ist ja schon mal was..Resonanz ist da und Verständniss auch…klasse... ich mach mir paar Gedanken..
  • IoBroker.iogo test schlägt fehl bei node 4

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    437 Aufrufe
    ?
    Danke, dann nehm ich das als Hinweis mit in die Readme auf.
  • Homematic IP / CUxD Alpha 2

    Verschoben
    14
    0 Stimmen
    14 Beiträge
    3k Aufrufe
    EisbaeeerE
    @Slimmy: Und wo genau soll ich in der Weboberfläche schauen? Im Raumsetup finde ich nichts vom Mode ` Beim Raumregler müsste irgendwo Auto, Manuell oder Nacht stehen. Leider habe ich im Moment keine Alpha mehr zum testen. Bekomme aber bald wieder eine. Gruß Eisbaeeer Gesendet von meinem SM-G950F mit Tapatalk
  • System-IP auslesen

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    1k Aufrufe
    smaragdschlangeS
    Hi, danke für den Tipp. Da es so aber nicht in meinem Adapter funktionierte hab ich es über das IP-Modul in ioBroker gelöst: var ipInfo = require('ip'); var sysIp = ipInfo.address(); Gruß, Sven
  • Ecovacs Deebot Vacuum //NPM Package Verfügbar! Python Library

    Verschoben
    9
    0 Stimmen
    9 Beiträge
    2k Aufrufe
    A
    Super - ich werde heute Nachmittag direkt mal testen. Herzlichen dank für eine Bemühungen! :-)
  • [Frage] state history

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    297 Aufrufe
    paul53P
    Auch der History-Adapter hinterläßt seine Spur: obj.common.custom['history.0'].enabled
  • Parameter in vis widget ausblenden

    Verschoben
    1
    0 Stimmen
    1 Beiträge
    387 Aufrufe
    Niemand hat geantwortet
  • Status-Skript

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    459 Aufrufe
    StabilostickS
    Also, das mit den 10s könnte ich so angehen: timeout 10s /my/script/command paramter if [ "$?" -gt 0 ]; then exit 7 fi
  • Mehrere requests syncron laufen lassen

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    393 Aufrufe
    MeistertrM
    da ich mit der zeit gehen will und mich promises interessiert, versuche ich das mal…
  • [Gelöst] Discovery Adapter

    Verschoben
    5
    0 Stimmen
    5 Beiträge
    845 Aufrufe
    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?

    Verschoben
    5
    0 Stimmen
    5 Beiträge
    642 Aufrufe
    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

    Verschoben
    14
    0 Stimmen
    14 Beiträge
    11k Aufrufe
    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

    Verschoben
    14
    0 Stimmen
    14 Beiträge
    1k Aufrufe
    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

    Verschoben
    4
    0 Stimmen
    4 Beiträge
    579 Aufrufe
    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

    Verschoben
    7
    0 Stimmen
    7 Beiträge
    1k Aufrufe
    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

    Verschoben
    3
    1
    0 Stimmen
    3 Beiträge
    397 Aufrufe
    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!

232

Online

33.0k

Benutzer

83.5k

Themen

1.3m

Beiträge