Weiter zum Inhalt

Skripten / Logik

16.7k Themen 216.0k Beiträge

Hilfe zu JavaScript, Blockly, TypeScript, Node-RED, Scenes und text2command

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    3k 50k
    3k Themen
    50k Beiträge
    D
    @maxclaudi Bei wieviel volt schaltest du die einspeisung ab? Und wieviel soc ist das ca? Bei mir ist es grad häufig so, das der soc nach dem abschalten bei 8% ca ne halbe Stunde bis stunde später gerne mal um 3-4% nach unten springt und dann aber weiter langsam 1-2% sinkt. Somit habe ich in der früh nur noch ca.3% drinnen. Könnte es auch daran liegen das die Zellen dann kalt werden, weil es ja jetzt abends und nachts bisschen abkühlt und dann die spannung und der soc schlagartig einbricht? Spannung habe ich jetzt nicht beobachtet und geloggt
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Themen
    80k Beiträge
    Murphy 0M
    Nachdem mein Blockly zum Steuern meines Hyper 2000 seit Monaten perfekt läuft habe ich mich mal dem Problem mit meinem Elektroherd angenommen. Wen der Herd eingeschaltet ist und die Vorwärmphase beendet ist fängt er an zu pulsen. Das heist er schaltet alle ca. 30 Sekunden die Last ab und dann wieder nach ca, 30 Skunden die Last aus. Das ist für meinen Hyper suboptimal da der dann wenn die Sonne scheint dauernd zwischen Laden und Einspeisen hin und her schaltet. Auch Abends ohne Sonne schaltet er ständig das Einspeisen ein und aus. Dafür habe ich jetzt mal ein JS erstellt. Wärend dem Pulsen des Herdes hört der Hyper auf zu Laden oder Einzuspeißen. /************************************************************ Elektroherd - Pulserkennung über Hausverbrauch ioBroker JavaScript ************************************************************/ // ============================================================ // EINSTELLUNGEN // ============================================================ const HERD_LEISTUNG_W = 2000; const SCHWELLWERT_W = 1000; // Zeit nach dem letzten Puls bis zum Ende des Pulsens const ZEIT_NACHLAUF_SEKUNDEN = 15; // Anzahl notwendiger Wechsel const MIN_PULSE_WECHSEL = 4; // Zeit ohne Wechsel -> vollständiger Reset const ZEIT_OHNE_WECHSEL_SEKUNDEN = 60; // ============================================================ // OBJEKTE // ============================================================ const HAUSVERBRAUCH = '0_userdata.0.Hausverbrauch'; const AKKU = '0_userdata.0.Laden_Schalter'; const EINSPEISEN = '0_userdata.0.Einspeisen_Schalter'; // ============================================================ // VARIABLEN // ============================================================ let letzterStatus = 'start'; let pulseWechsel = 0; // Pulserkennung aktuell aktiv? let herdPulst = false; // Timer für das Ende des Pulsens let nachlaufTimer = null; // Timer für 60-Sekunden-Reset let wechselResetTimer = null; // Ursprüngliche Schalterzustände let urspruenglicherAkkuZustand = null; let urspruenglicherEinspeisenZustand = null; // ============================================================ // AUSGANGSSTELLUNG WIEDERHERSTELLEN // ============================================================ function ausgangsstellungWiederherstellen() { // Nur wenn vorher tatsächlich ein Pulsbetrieb // aktiviert wurde if (!herdPulst) { return; } // -------------------------------------------------------- // AKKU // -------------------------------------------------------- if (urspruenglicherAkkuZustand !== null) { setState( AKKU, urspruenglicherAkkuZustand ); } // -------------------------------------------------------- // EINSPEISEN // -------------------------------------------------------- if (urspruenglicherEinspeisenZustand !== null) { setState( EINSPEISEN, urspruenglicherEinspeisenZustand ); } log( 'Ausgangsstellung wiederhergestellt: ' + 'Laden=' + urspruenglicherAkkuZustand + ', Einspeisen=' + urspruenglicherEinspeisenZustand, 'warn' ); // Pulserkennung AUS herdPulst = false; // Gespeicherte Zustände löschen urspruenglicherAkkuZustand = null; urspruenglicherEinspeisenZustand = null; } // ============================================================ // VOLLSTÄNDIGER RESET // ============================================================ function vollstaendigerReset() { log( '60 Sekunden kein neuer Wechsel -> ' + 'vollständiger Reset', 'warn' ); // -------------------------------------------------------- // TIMER LÖSCHEN // -------------------------------------------------------- if (nachlaufTimer !== null) { clearTimeout(nachlaufTimer); nachlaufTimer = null; } // -------------------------------------------------------- // AUSGANGSSTELLUNG WIEDERHERSTELLEN // -------------------------------------------------------- if (herdPulst) { ausgangsstellungWiederherstellen(); } // -------------------------------------------------------- // PULSZÄHLER ZURÜCKSETZEN // -------------------------------------------------------- pulseWechsel = 0; // -------------------------------------------------------- // STATUS ZURÜCKSETZEN // -------------------------------------------------------- letzterStatus = 'start'; log( 'Pulserkennung AUS / Wechselzähler = 0', 'warn' ); } // ============================================================ // PULSEN STARTEN // ============================================================ function pulsenStarten() { if (herdPulst) { return; } // -------------------------------------------------------- // AUSGANGSSTELLUNG SPEICHERN // -------------------------------------------------------- urspruenglicherAkkuZustand = getState(AKKU).val; urspruenglicherEinspeisenZustand = getState(EINSPEISEN).val; log( 'Pulsen erkannt -> Ausgangsstellung gespeichert: ' + 'Laden=' + urspruenglicherAkkuZustand + ', Einspeisen=' + urspruenglicherEinspeisenZustand, 'warn' ); // -------------------------------------------------------- // PULSERKENNUNG EIN // -------------------------------------------------------- herdPulst = true; // Während des Pulsens beide AUS setState(AKKU, false); setState(EINSPEISEN, false); log( 'HERD PULST -> Laden_Schalter AUS / Einspeisen AUS', 'warn' ); } // ============================================================ // PULSEN NORMAL BEENDEN // ============================================================ function pulsenBeenden() { if (!herdPulst) { return; } log( 'Herdpulsen beendet', 'warn' ); // Ausgangsstellung wiederherstellen ausgangsstellungWiederherstellen(); // Zähler zurücksetzen pulseWechsel = 0; letzterStatus = 'start'; // Reset-Timer löschen if (wechselResetTimer !== null) { clearTimeout(wechselResetTimer); wechselResetTimer = null; } } // ============================================================ // 60-SEKUNDEN-RESET-TIMER // ============================================================ function wechselResetTimerStarten() { // Alten Timer löschen if (wechselResetTimer !== null) { clearTimeout(wechselResetTimer); } // Neuen Timer starten wechselResetTimer = setTimeout(function () { wechselResetTimer = null; // Nur wenn tatsächlich Wechsel gezählt wurden if (pulseWechsel > 0) { vollstaendigerReset(); } }, ZEIT_OHNE_WECHSEL_SEKUNDEN * 1000); } // ============================================================ // NACHLAUF-TIMER // ============================================================ function nachlaufTimerStarten() { if (nachlaufTimer !== null) { clearTimeout(nachlaufTimer); } nachlaufTimer = setTimeout(function () { nachlaufTimer = null; const aktuell = Number( getState(HAUSVERBRAUCH).val ); if (aktuell <= SCHWELLWERT_W) { pulsenBeenden(); } }, ZEIT_NACHLAUF_SEKUNDEN * 1000); } // ============================================================ // HAUSVERBRAUCH ÜBERWACHEN // ============================================================ on( { id: HAUSVERBRAUCH, change: 'ne' }, function (obj) { const leistung = Number(obj.state.val); if (isNaN(leistung)) { log( 'Ungültiger Hausverbrauch: ' + obj.state.val, 'warn' ); return; } // ==================================================== // HOHER VERBRAUCH // ==================================================== if (leistung >= HERD_LEISTUNG_W) { // Wechsel NIEDRIG -> HOCH if (letzterStatus === 'niedrig') { pulseWechsel++; log( 'Puls HOCH: ' + leistung.toFixed(0) + ' W | Wechsel=' + pulseWechsel, 'warn' ); // 60-Sekunden-Timer neu starten wechselResetTimerStarten(); } letzterStatus = 'hoch'; // Nachlauf abbrechen if (nachlaufTimer !== null) { clearTimeout(nachlaufTimer); nachlaufTimer = null; } // ================================================= // 4 WECHSEL ERREICHT // ================================================= if ( pulseWechsel >= MIN_PULSE_WECHSEL && !herdPulst ) { pulsenStarten(); } return; } // ==================================================== // NIEDRIGER VERBRAUCH // ==================================================== if (leistung <= SCHWELLWERT_W) { // Wechsel HOCH -> NIEDRIG if (letzterStatus === 'hoch') { pulseWechsel++; log( 'Puls NIEDRIG: ' + leistung.toFixed(0) + ' W | Wechsel=' + pulseWechsel, 'warn' ); // 60-Sekunden-Timer neu starten wechselResetTimerStarten(); } letzterStatus = 'niedrig'; // Wenn Herd bereits pulst, // Nachlauf starten if (herdPulst) { nachlaufTimerStarten(); } return; } } ); // ============================================================ // STARTMELDUNG // ============================================================ log( '============================================', 'warn' ); log( 'Elektroherd-Pulserkennung gestartet', 'warn' ); log( 'Herdleistung: ' + HERD_LEISTUNG_W + ' W', 'warn' ); log( 'Schwellwert: ' + SCHWELLWERT_W + ' W', 'warn' ); log( 'Nachlauf: ' + ZEIT_NACHLAUF_SEKUNDEN + ' Sekunden', 'warn' ); log( 'Benötigte Wechsel: ' + MIN_PULSE_WECHSEL, 'warn' ); log( 'Reset nach ' + ZEIT_OHNE_WECHSEL_SEKUNDEN + ' Sekunden ohne Wechsel', 'warn' ); log( '============================================', 'warn' );
  • Hilfe für Skripterstellung mit Node-RED

    964 13k
    964 Themen
    13k Beiträge
    A
    @OliverIO ich versuche morgen noch etwas mehr raus zu holen. Eben es verwirrt mich das es manchmal durchläuft und dann plötzlich nicht mehr. Für mich als Laie sieht es irgendwie so aus, wie wenn das BMS irgendwie auf was warten würde und daher nicht mehr.
  • Node Red Script für Temperatur Ausgabe

    Verschoben
    4
    0 Stimmen
    4 Beiträge
    3k Aufrufe
    D
    Hi Aber dafür hast du der Nachwelt wieder ein nettes Snippet da gelassen. Thank u well :-)
  • Blockly - jetzt ich auch noch ;-)

    Verschoben
    6
    1
    0 Stimmen
    6 Beiträge
    1k Aufrufe
    HomoranH
    @rantanplan: Das Du da noch Zeit für findest ` Das hatte Bluefox vor zwei Jahren in Kassel vorgestellt. Für mich als js-Legastheniker genau das richtige. Leider gibt es dort auch Bausteine in denen wieder js eingegeben werden muss :( Deswegen hatte ich es irgendwann nicht weiter verfolgt. Wahrscheinlich liegt es auch jetzt daran, dass ich in einem node die payload aus zweien weiteren nodes nicht verarbeitet bekomme. Gruß Rainer
  • Umlaute in Javascript Var -> Homematic

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    1k Aufrufe
    M
    Meine Lösung: Bin jetzt den Umweg über simpleAPI adapter gegangen … Abfrage über http://server:8090/getPlainValue/yr.0.f … .day0.text liefert richtige Umlaute.
  • Parameterübergabe an Callback-Function

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    713 Aufrufe
    ThisoftT
    Danke blauholsten - so funktionierts. Ich habe eben diese Anonymen Funktionen (ich glaub, so heißen die??) und auch die asynchrone Verarbeitung bei Javascript noch nicht wirklich verinnerlicht.
  • Blockly Request Problem

    Verschoben
    1
    1
    0 Stimmen
    1 Beiträge
    534 Aufrufe
    Niemand hat geantwortet
  • Blockly -> IoBroker -> Osram Lightify

    Verschoben
    9
    1
    0 Stimmen
    9 Beiträge
    2k Aufrufe
    M
    Hi Black, ja der Gruppen-Ansatz war mein erster Ansatz aber das erfüllt halt nicht so wirklich die Anforderungen. Unser Flur ist recht lang und ist abgewinkelt. Ich habe daher insgesamt 3 Bewegungsmelder im Einsatz um die unterschiedlichen Bereiche, wo Bewegung entsteht abzufangen und entsprechende Lampen für den Bereich zu schalten. Wenn ich nun mehrere Gruppen anlege stehe ich vor dem gleichen Problem. Mit nur einer Gruppe "Alle" bin ich dann da wo ich vorher war - immer alles an obwohl nicht nötig. Durch den Hinweis mit dem "Command" sind die Schaltzustände nun aber deutlich schneller, so dass ich 250ms als sichererer Schaltabstand von Lampe zu Lampe getestet habe (vorher 2sek). Damit sollte sich leben lassen. Beim Testen mit der CCU ist aufgefallen, dass auch dort ein geringer Zeitversatz beim Schalten der Lampen ist. Also vermutlich wirklich eher etwas "normales" wenn man die Lampen extern schaltet. Über den Alex Skill und Gruppen ist es genau so. Danke auf alle Fälle für den Denkansatz mit dem Command und den Hinweis zum Trigger, den habe ich schon angepasst. Viele Grüße Mario
  • [gelöst] Backup - Blockly

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    1k Aufrufe
    M
    Hallo, Danke, das ist die Lösung! Ich glaub ich brauch doch langsam ne Brille…. :geek: Viele Grüße Mario
  • Script problem bei abfrage von HM Systemvariablen

    Verschoben
    4
    0 Stimmen
    4 Beiträge
    780 Aufrufe
    B
    Hallo Paul53, es funktioniert. 1000 Dank. ich war wohl schon zu müde um zu lesen. :-)
  • Blockly Script soll nur tatsächlich geschaltete Geräte per Telegram senden

    Verschoben
    16
    0 Stimmen
    16 Beiträge
    4k Aufrufe
    S
    Hey rantanplan, vielen Dank an dich. Deine Lösung hat das Ziel gebracht. Wie auch immer du darauf gekommen bist es ist der Hammer. Gruß Sven
  • Blockly / Sayit Ansage mit Namen

    Verschoben
    6
    1
    0 Stimmen
    6 Beiträge
    2k Aufrufe
    S
    ACHTUNG das Ziel ist erreicht…. ich hatte nur einen Fehler gemacht und habe die Namen nicht klein geschrieben, deshalb funktionierte es nicht. Nun geht es zu 100 % TOP vielen Dank an euch und besonderen Dank @ rantanplan Ich lasse den Fred noch ein wenig auf, fall ich noch weitere fehler bei den Bloklys habe und Hilfe benötige. Gruß Sven
  • [Erledigt] Hilfe Script Smartmeter Wert in CCU2 SV schreiben

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    642 Aufrufe
    Z
    Das wars. Danke
  • IRobot980 npm

    Verschoben
    4
    0 Stimmen
    4 Beiträge
    2k Aufrufe
    H
    OK, danke euch für die Antwort, dann mal abwarten was iRobot sich so einfallen lässt in Zukunft.
  • [gelöst] HM <-> Osram Lightify - Steuerung per Script?

    Verschoben
    1
    0 Stimmen
    1 Beiträge
    725 Aufrufe
    Niemand hat geantwortet
  • [gelöst] RegEx Hilfe

    Verschoben
    8
    0 Stimmen
    8 Beiträge
    1k Aufrufe
    htreckslerH
    ` > …oder ^hm-rpc.0..+.0.LOWBAT$ ` der funktioniert auch…DANKE
  • Absturz Javascript Adapter bei request

    Verschoben
    5
    0 Stimmen
    5 Beiträge
    779 Aufrufe
    coyoteC
    Dann öffnet sich das WebInterface des Wiffi Pump und das Relais des Wiffi Pump wird getriggert. Wenn ich den Javascript Datenpunkt über VIS auf true triggere, schaltet auch das Relais des Wiffi Pump, aber es kommt eben der parse Error
  • On(RegExp) Problem

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    900 Aufrufe
    OstfrieseUnterwegsO
    @fsjoke: Was soll das eigentlich einschränken? Ich wollte nur dass nicht alles automatisch aboniert wird aber ich sollte ja trotzdem noch im script abonnieren können? ` Abstürzen darf natürlich nichts. Beschrieben ist die Option hier: https://github.com/ioBroker/ioBroker.ja … s-on-start
  • Script ein/aus erweitern - aber wie ?

    Verschoben
    20
    0 Stimmen
    20 Beiträge
    3k Aufrufe
    justrJ
    Ich habe keine Ahnung, was dein Datenpunkt 'knx.0.Sonos_PlugIn.Sonos_ZP0.ZP0_LineIn_mit_1' macht und ich kenne auch knx nicht. Aber wenn du versuchst, damit den "current_type" deiner Sonos zu setzen, wird das nicht klappen, da dieser Status "read-only" ist. Zum Umschalten der Sonos von TV auf Radio nutze ich den "favorite_set": setState("sonos.0.root.192_168_xx_yy.favorites_set", "Bayern 3"); Dafür musst du in der Sonos-App natürlich einen entsprechenden Favoriten angelegt haben. Übrigens, da du oben mehrfach nachgehakt hast: Mit "if (statement)" wird das statement auf true abgefragt, also z.B. ob a größer b (a>b) oder c gleich d (c==d). Wenn das statement für sich bereits eine Variable vom Typ boolean ist, steht der Wert ja bereits auf true oder false, d.h. die Abfrage auf true kannst du weglassen. "if (a == true)" ist das gleiche wie "if(a)".
  • Wie muss eine Zeitverzögerung innerhalb einer function im Skript aussehen?

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    749 Aufrufe
    justrJ
    Beispiel: Restart nach 10s der cloud-Instanz bei Änderung der externen Router-IP-Adresse: on({ id: "tr-064.0.states.externalP", change: "ne", ack: true }, function (obj) { log('mylog: Restart cloud instance due to new external IP address'); extendObject('system.adapter.cloud.0', {common: {enabled: false}}); setTimeout(function(){extendObject('system.adapter.cloud.0', {common: {enabled: true}})}, 10000); }); Übrigens, das Script macht zwar laut log genau was erwartet wird und die cloud-Instanz sagt auch "connected", aber seltsamerweise funktioniert Alexa trotzdem erst nach manuellem cloud-Restart oder per cron-Job. :?
  • [gelöst] Mehrere Daten an "eine" Funktion übergeben

    Verschoben
    28
    0 Stimmen
    28 Beiträge
    4k Aufrufe
    P
    Hi Paul, Sorry das ich mich jetzt erst melde. Tausend Dank nochmal, jetzt klappt es und langsam steig ich auch dahinter. Hier mal mein fertiges Produkt `/* ************************************************************************* */ /* Script zum Übertragen der DWD-Wetterwarnungen über */ /* Telegram, Pushover, Home24-Mediaplayer oder SayIt */ /* mit freundlicher Unterstützung von Paul53 (Tausend Dank nochmals) */ /* Stand: 070022017 PrinzEisenherz1 */ /* ************************************************************************* */ var request = require('request'); /* Nachrichten-Dienst festlegen */ /* aus=0 ; alle=1 ; Pushover=2 ; Telegram=3 */ var pushdienst = 3; // Auswahl Nachrichtendienst /* Konfiguration Sprachausgabe über Home24-Mediaplayer */ var idSprachausgabe = false; // Wenn zusätzlich eine Sprachausgabe erfolgen soll dann auf true var idMediaplayer = "192.168.178.70:50000"; // Eingabe IP-Adresse incl. Port für Home24-Mediaplayer /* Konfiguration Sprachausgabe über SayIt */ var idSprachausgabeSayIt = false; // Wenn zusätzlich eine Sprachausgabe über SayIt erfolgen soll dann auf true var idSayIt = "sayit.0.tts.text"; var lautstaerke = 100; /* Trigger für Wetterwarnungen */ var idDescription0 = "dwd.0.warning.description"; var idDescription1 = "dwd.0.warning1.description"; var idDescription2 = "dwd.0.warning2.description"; /* Arrays festlegen */ var newDescriptions = [3]; var oldDescriptions = [3]; var newHeadlines = [3]; var oldHeadlines = [3]; var newBegins = [3]; var oldBegins = [3]; var newEnds = [3]; var oldEnds = [3]; var timer = null; function check() { /* Bereich für 'Alle Wetterwarnungen wurden aufgehoben' */ if(newDescriptions[0] === "") { if ((pushdienst === 3) || (pushdienst === 1) ) { setTimeout((sendTo ("telegram.0", 'Alle Warnmeldungen des DWD wurden aufgehoben')), 3 * 1000); } if ((pushdienst === 2) || (pushdienst === 1) ) { sendTo("pushover.0", 'Alle Warnmeldungen des DWD wurden aufgehoben'); } /* alle Sicherungen Wetterwarnung löschen */ oldHeadlines = newHeadlines.slice(); oldDescriptions = newDescriptions.slice(); oldBegins = newBegins.slice(); oldEnds = newEnds.slice(); return; } var headline; var description; var begin; var end; var i; var warn; /* Variablen für Meldungen Text */ var MeldungOld; var MeldungNew; /* Variablen für Meldungen Sprache */ var MeldungSpracheDWD = ''; var MeldungNewSprache = ''; var MeldungOldSprache = ''; /* Bereich für 'Wetterwarnung gültig bis wurde aufgehoben' */ for(i = 0; i < 3; i++) { warn = 'dwd.0.warning'; if(i) warn = warn + i; headline = oldHeadlines[i]; description = oldDescriptions[i]; begin = oldBegins[i]; end = oldEnds[i]; if(newDescriptions.indexOf(description) == -1 && description !== "" && description !== undefined) { MeldungOld = oldHeadlines[i] + ' gültig bis ' + oldEnds[i] + ' Uhr wurde aufgehoben'; MeldungOldSprache = oldHeadlines[i] + ' gültig bis ' + oldEnds[i] + ' Uhr wurde aufgehoben' + ' . '; if ((pushdienst === 3) || (pushdienst === 1) ) { setTimeout((sendTo ("telegram.0", "Die Wetterwarnung " +"'"+ oldHeadlines[i] + " gültig bis " + oldEnds[i] + "'" + " des DWD wurde aufgehoben")), 3 * 1000); } if ((pushdienst === 2) || (pushdienst === 1) ) { sendTo("pushover.0", "Die Wetterwarnung " +"'"+ oldHeadlines[i] + " gültig bis " + oldEnds[i] + "'" + " des DWD wurde aufgehoben"); } } /* Verknüpfen aller aufgehobenen Wetterwarnungen */ MeldungSpracheDWD = MeldungSpracheDWD + MeldungOldSprache; } /* Bereich für 'Neue Amtliche Wetterwarnung' */ for(i = 0; i < 3; i++) { warn = 'dwd.0.warning'; if(i) warn = warn + i; headline = newHeadlines[i]; description = newDescriptions[i]; begin = newBegins[i]; end = newEnds[i]; if(oldDescriptions.indexOf(description) == -1 && description !== "" && description !== undefined) { MeldungNew = headline + "\ngültig vom " + begin + " Uhr bis " + end + " Uhr\n" + description; /* Entfernen °C für Sprachausgabe */ var replaceDescription0 = entferneDatenpunkt(description); MeldungNewSprache = headline + " gültig vom " + begin + " Uhr, bis " + end + " Uhr. " + replaceDescription0 + ' . '; if ((pushdienst === 3) || (pushdienst === 1) ) { setTimeout((sendTo ("telegram.0", MeldungNew)), 3 * 1000); } if ((pushdienst === 2) || (pushdienst === 1) ) { sendTo("pushover.0", MeldungNew); } } /* Verknüpfen aller neuen Warnmeldungen */ MeldungSpracheDWD = MeldungSpracheDWD + MeldungNewSprache; } /* Verknüpfen aller neuen und abgelaufenen Warnmeldungen */ MeldungSpracheDWD = 'Achtung . ' + MeldungSpracheDWD; /* Bereich für Sprachausgabe über Home24-Mediaplayer */ if((idSprachausgabe === true) && (MeldungSpracheDWD !== "")){ var Url = "http://" + idMediaplayer + "/track=4fachgong.mp3|tts=" + MeldungSpracheDWD; log('Url :' + Url); request(Url); } /* Bereich für Sprachausgabe über SayIt */ if((idSprachausgabeSayIt === true) && (MeldungSpracheDWD !== "")){ setState(idSayIt, lautstaerke + ";" + MeldungSpracheDWD); } /* Neue Werte sichern */ oldHeadlines = newHeadlines.slice(); oldDescriptions = newDescriptions.slice(); oldBegins = newBegins.slice(); oldEnds = newEnds.slice(); } /* Entfernt "°C" aus Sprachmeldung und ersetzt es durch "Grad" */ function entferneDatenpunkt(beschreibung) { var rueckgabe; rueckgabe = beschreibung; try {rueckgabe = rueckgabe.replace(/\°C/g, "Grad");} catch(e) {} return rueckgabe; } on(idDescription0, function(dp) { newDescriptions[0] = dp.state.val; var warn = 'dwd.0.warning'; setTimeout(function() { newHeadlines[0] = getState(warn + '.headline').val; newBegins[0] = getState(warn + '.begin').val; newEnds[0] = getState(warn + '.end').val; }, 3000); if(timer) clearTimeout(timer); timer = setTimeout(check, 7000); }); on(idDescription1, function(dp) { newDescriptions[1] = dp.state.val; var warn = 'dwd.0.warning1'; setTimeout(function() { newHeadlines[1] = getState(warn + '.headline').val; newBegins[1] = getState(warn + '.begin').val; newEnds[1] = getState(warn + '.end').val; }, 3000); if(timer) clearTimeout(timer); timer = setTimeout(check, 7000); }); on(idDescription2, function(dp) { newDescriptions[2] = dp.state.val; var warn = 'dwd.0.warning2'; setTimeout(function() { newHeadlines[2] = getState(warn + '.headline').val; newBegins[2] = getState(warn + '.begin').val; newEnds[2] = getState(warn + '.end').val; }, 3000); if(timer) clearTimeout(timer); timer = setTimeout(check, 7000); });` Also nochmal Tausend Dank Johnny[/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]
  • Daten aus einer .js verwenden (Suntrol Datenlogger STL200)

    Verschoben
    4
    0 Stimmen
    4 Beiträge
    3k Aufrufe
    M
    Hi, der aktuelle Verbrauch entspricht dem von mir ausgelesenen Wert PacArr. Ich lese den aktuellen Ertrag über die Webseite meines PIKO WR. Ist hier ebenfalls im Forum beschrieben. Wenn du noch Bedarf hast kann ich mir ansehen wie man den aktuellen Ertrag über Node-Red ausliest. Gruß, Matze

224

Online

33.0k

Benutzer

83.6k

Themen

1.3m

Beiträge