Weiter zum Inhalt

Skripten / Logik

16.6k Themen 214.4k Beiträge

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

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    3k 49k
    3k Themen
    49k Beiträge
    E
    Bekomme hier folgende Meldung [image: 1776491806507-screenshot_20260418_075433_telegram.jpg] Das sind noch über 50 % RAM frei. Ist das so gewollt? Edit: HAbe es gefunden und angepasst. Hoffe das ist richtig HOSTRAMFREEWARNINGMB: 6144, //8192 HOSTRAMFREECRITICALMB: 2048, //4096
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Themen
    80k Beiträge
    vowillV
    Offenbar schaltet Amazon nach und nach die Zugänge für Fremdanbieter sukzessive ab. Letzte Woche lief auch mein Plex-Skill nicht mehr im Multiroom, sondern nur noch auf 1 Lautsprecher. Und jetzt gibt es den Plex-Skill gar nicht mehr zur Installation. Also: Entweder Amazon unlimited, oder weg damit.
  • Hilfe für Skripterstellung mit Node-RED

    954 13k
    954 Themen
    13k Beiträge
    F
    Hallo ich habe ein Problem mit Nodered und Alexa Echo. Ich habe in Nodered die Wemo Emulation installiert und eine Wemo Steckdose emuliert um an einer Zigbeesteckdosenleiste einen Platz der Leiste zu schalten. "node-red-contrib-wemo-emulator" Das klappt auch wunderbar leider nicht länger als ein zwei Tage. Wenn ich dann den Echo der mit der emulierten Steckdose verbunden ist neu starte geht es wieder. Leider ist das sehr nervig. Hat schon mal jemand gehabt? Durch die Forumssuche habe ich leider nicht gefunden. Gruss Achim
  • Licht geht allein aus !!

    javascript
    7
    0 Stimmen
    7 Beiträge
    712 Aufrufe
    B
    @smarthome2020 Danke Dir nach 19:00 Uhr will ich auch die Option mit schalter schalten solange bis ich aussschalte ! @ticaki Danke Dir teste das 2te script mal weil Shelly
  • [gelöst] Datenpunkt per MQTT publishen

    javascript communication
    3
    0 Stimmen
    3 Beiträge
    1k Aufrufe
    Rene55R
    @paul53 Danke für die Antwort. Ja, MQTT (mosquitto) läuft auf einem separaten Rechner. Eine Instanz des MQTT Broker/Client läuft auch schon (wenn auch ohne Authentifizierung [hiermit habe ich auch noch meine Probleme]) auf dem ioB. Dank des gestrigen Updates des MQTT-Adapters habe ich die Lösung hierfür gefunden. Ich kann im Javascript folgende Zeile benutzen: code_text ```sendTo('mqtt.0', 'sendMessage2Client', {topic: 'SmartHome/Text', message: message});``` code_text Somit können wir meine Anfrage als gelöst ansehen.
  • [gelöst] (vorübergehend) Luftgütesensor BME 680

    Verschoben
    12
    1
    0 Stimmen
    12 Beiträge
    7k Aufrufe
    G
    @Chaot Besten Dank für das Teilen deines Scriptes. Als Tipp für Newbies die evtl. genau so fragend vor dem PC sitzen und sich wundern warum immer nur 100 als Wert erscheint: Ihr müsst den Zahlenbereich des angelegten Datenpunktes "Luftguete" entsprechend anpassen ;)
  • Script läuft einfach nicht!

    javascript
    20
    0 Stimmen
    20 Beiträge
    720 Aufrufe
    paul53P
    @fischi87 sagte: ergänzen? Ja.
  • Waschmaschine / Trockner blockly

    blockly monitoring javascript
    6
    1
    0 Stimmen
    6 Beiträge
    2k Aufrufe
    D
    Vielen Dank an alle, der erste Tipp hat schon zum Erfolg geführt
  • JS lokal bearbeiten - hochladen - service restarten

    javascript
    9
    0 Stimmen
    9 Beiträge
    1k Aufrufe
    J
    Ich meine den cli-Befehl "mv". Also jetzt, nachdem ich die Mirror-ordner via chmod auf 777 (shame on me) geändert habe, sind die Skripte wieder da O_o kA ob das Absicht ist? Scheint auf jedenfall irgendein perm-thema gewesen zu sein.
  • Blockly - Ausgabe eines Feldes in ein Anderes kopieren

    blockly
    19
    0 Stimmen
    19 Beiträge
    1k Aufrufe
    E
    Danke. Aber wenn das so einfach nicht geht, dann verzichte ich drauf. Da ich nicht mal weiß, wer oder was der Logparser ist, müsste ich wieder von vorn anfangen Fragen zu stellen. Nachdem ich mich lange Zeit mit Neo beschäftigt habe, welches dann plötzlich zu einem Abo System gemacht wurde, habe ich keine Lust in die Materie allzu weit einzusteigen um wieder auf die Schnauze zu fallen. Dafür bin ich langsam zu alt. Im Gunde genommen habe ich mein Dashboard, so wie ich es haben wollte und alles Andere wären jetzt Add Ons. Ich bin gern bereit zu learning by doing. Aber es sollte sich auf eine Sache beschränken und ich habe an der Stelle jetzt Blockly gewählt, weil mir Java direkt zu aufwändig erscheint. Am liebsten wäre mir was in Python oder Bash, da ich mich damit ein wenig auskenne, aber da habe ich nichts passenden gefunden. Vielen Dank für Eure Geduld und schönes Wochenende.
  • Beispiel alle ioBroker Prozesse / Speicherverbrauch

    Verschoben
    60
    1
    0 Stimmen
    60 Beiträge
    8k Aufrufe
    Basti97B
    Wie kann man das Script erweitern das auch die iobroker Slave Adapter angezeigt werden?
  • [Gelöst] Adapter Status und Ramverbrauch in vis integrieren

    javascript communication
    20
    0 Stimmen
    20 Beiträge
    767 Aufrufe
    Basti97B
    @Glasfaser Achso
  • Alarm Foto per Telegram senden [gelöst]

    blockly
    26
    1
    0 Stimmen
    26 Beiträge
    2k Aufrufe
    I
    @Glasfaser Sorry, aber nein momentan funktioniert es noch nicht korrekt. Das mit dem Bild speichern und senden funktioniert jetzt, aber ich vermute ich triggere verkehrt. Ich triggere über den Alarmserver und setze dort den Punkt: Alarm_Cam_Terrasse auf true, somit wird das Script ausgeführt. [image: 1589480678426-alarm-trigger.jpg] Unter den Objekten der Kamera finde ich kein anderen Trigger-Punkt. Da dort die meisten Objekte keine Werte liefern außer die Status Objekte. Problem ist aber er triggert ca. jede Minute
  • [Vorlage] Google Tabelle in ioBroker-Datenpunkte

    javascript
    18
    2
    1 Stimmen
    18 Beiträge
    5k Aufrufe
    N
    So, wenn ich im Script den Namen leer lasse, dann geht es. Über IFTTT wird die Google Tabelle immer wieder aktualisiert. Dabei wird immer eine Reihe hinzugefügt. Hat jemand eine Idee wie man es lösen kann, dass das Script immer nur nie letzte oder die letzten 4 Zeilen zieht? Mit Range geht es ja nicht weil immer eine neue Zeile hinzukommt. Grüße Oliver
  • RGB Werte TRADFRI bulb E27 CWS opal 600lm zigbee

    javascript
    2
    1
    0 Stimmen
    2 Beiträge
    286 Aufrufe
    F
    Konnte das Problem lösen: es geht mit HEX code z.b. blau #0000FF
  • Node-Red Javascript Node - Berechnung ungewünscht doppelt

    node-red javascript
    15
    1
    0 Stimmen
    15 Beiträge
    2k Aufrufe
    L
    @mickym sagte in Node-Red Javascript Node - Berechnung ungewünscht doppelt: var tempf = context.get('tempf')|| 0; var humidity = context.get('humidity')|| 0; var oldTp = context.get('contexttp') || 0; var tp = 0; if (msg.topic === "tempf") { tempf= msg.payload; context.set('tempf',msg.payload); } else if (msg.topic === "humidity") { humidity= msg.payload; context.set('humidity',msg.payload); } // Quelle: https://www.chemie-schule.de/KnowHow/Taupunkt // Gültigkeitsbereich Taupunkt: -30°C <= tmp <= 70°C if (!(isNaN(tempf) || isNaN(humidity))) { tp = ((241.2 * Math.log(humidity/100)) + ((4222.03716 * tempf) / (241.2 + tempf))) / (17.5043 - Math.log(humidity/100) - ((17.5043*tempf)/(241.2+tempf))); tp = Math.round( tp * 100 ) / 100; context.set("contexttp",tp); } if (oldTp !== tp) { msg.payload = tp; msg.topic = "Taupunkt"; return msg } else { return null; } Funktioniert auch... nun habe ich estmal was zum weiterspielen/testen... Vielen Dank erstmal! Den Link/Quelle zu diesem Beitrag werde ich gleich mal im Script notieren....
  • Script triggert nicht bei Temperaturänderung

    javascript
    6
    0 Stimmen
    6 Beiträge
    358 Aufrufe
    M
    @paul53 Das Ereignis Regen sollte dynamisch sein, daher das "any". Bei jeder Zustandsänderung des Sensor DP sollte getriggert werden und dann festgestellt werden ob 1 oder 0.
  • Homematic IP Ventilstände auslesen

    heating climate communication
    8
    0 Stimmen
    8 Beiträge
    4k Aufrufe
    D
    @Homoran korrekt, mangels HMIP-USB-Stick habe ich noch keine CCU als VM aufgsetzt und nutze den HMIP-Adapter Dem Hinweis mit den Gruppen muss ich dir recht geben. das macht wirklich keinen Sinn - grade nachgesehen, auch in einer Gruppe mit nur einem Heizkreis kommt keine Rückmeldung - warum auch immer das Objekt dann existiert ?!? ich habe noch "hmip.o -> Device FBH-Zentrale -> channels -> (0 bis 15)" hier sind auch die 12 Kanäle der Heizkreise drin, jedoch ausschließlich mit dem Objekt "functionalChannelType --> FLOOR_TERMINAL_BLOCK_MECHANIC_CHANNEL" als Rolle "info" EDIT: Ich habe nochmal darüber nachgedacht, so blödsinnig ist eine gemeinsame Ventilstellung für z.B. 3 Motoren nicht. Denn alle 3 Heizkreise / Motoren werden schließlich nur über ein gemeinsames Raumthermostat geregelt - entsprechend können / sollten die 3 zugehörigen Heizkreise ja auch nur gleich geregelt werden (können) ...
  • Telegram Wettermeldung

    communication
    5
    0 Stimmen
    5 Beiträge
    703 Aufrufe
    paul53P
    @ticaki sagte: Verstehe das / 3 nicht? Es werden nur für alle 3 Stunden die Werte in "Hour_1" bis "Hour_8" geschrieben. So ist es zumindest bei mir seit einem Update (30.03.20).
  • Exec unter JavaScript führt Shell Script nicht aus

    javascript blockly
    15
    0 Stimmen
    15 Beiträge
    4k Aufrufe
    AlCalzoneA
    @WurstDLX sagte in Exec unter JavaScript führt Shell Script nicht aus: wenn man jetzt den Ordner woanders anlegen lassen will Du könntest sowas probieren: exec("cd /woanders && /home/iobroker/testscript.sh", ...)
  • Fehler beim States einlesen

    javascript
    4
    0 Stimmen
    4 Beiträge
    255 Aufrufe
    PeoplesP
    @paul53 Hi Paul anbei das ganze Script: Spoiler // ******************************************************************************************************* // // Bewässerungsautomatik // // // ******************************************************************************************************* // ----------------------------------------------------------------------------- // allgemeine Variablen // ----------------------------------------------------------------------------- var logging = false; // Logging on/off var debugging = false; var telegram_benachtrichtigung = true; var instanz = 'javascript.0'; instanz = instanz + '.'; // var geraeteInstanz = 'hm-rpc.0.'; // Geräteinstanz //var pfad1 = 'Automation.'; // Pfad innerhalb der Instanz - Status allgemien var pfad0 = 'Bewaesserung.'; var pfad1 = '_Zeiten.'; var pfad2 = '_History.'; var bwZeit_Schedule1 = []; // Array für die Gieß Zeit1 var bwZeit_Schedule2 = []; // Array für die Gieß Zeit2 var Enum_ids =[]; // Array für die ID's die später in der enum.function erstellt werden var bwTage = ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag']; // Wochentage f. Autobewässerung var time; var runtimer = false; var bwModus = 'manu'; var bwPumpe = geraeteInstanz + 'OEQxxxxxxxx.1'; // Bewässerungszonen var bwZone = []; bwZone[0] = []; bwZone[0][0] = '1'; // Ventil Nummer fortlaufend bwZone[0][1] = 'Hinten'; // Name der Zone bwZone[0][2] = 'OEQxxxxxxxx.1'; // Ventil Geräte ID bwZone[1] = []; bwZone[1][0] = '2'; // Ventil Nummer fortlaufend bwZone[1][1] = 'Terasse'; // Name der Zone bwZone[1][2] = 'OEQxxxxxxxx.2'; // Ventil Geräte ID bwZone[2] = []; bwZone[2][0] = '3'; // Ventil Nummer fortlaufend bwZone[2][1] = 'Vorne'; // Name der Zone bwZone[2][2] = 'OEQxxxxxxxx.3'; // Ventil Geräte ID /* bwZone[3] = []; bwZone[3][0] = '4'; // Ventil Nummer fortlaufend bwZone[3][1] = 'HeckeBlumen'; // Name der Zone bwZone[3][2] = 'xxxxxxxxxxxx'; // Ventil Geräte ID */ // ----------------------------------------------------------------------------- // Objekte // ----------------------------------------------------------------------------- // Objekt für Zufalls-Farbwechsel an oder aus function createObjects() { createState(instanz + pfad0 + '_Konfig_abgeschlossen', {def: 'false', type: 'boolean', name: 'Konfiguration abgeschlossen'}); createState(instanz + pfad0 + 'bwSchalter', {def: 'false', type: 'boolean', name: 'Schalter Bereiche Bewaessern start/stop'}); createState(instanz + pfad0 + 'bwAktivZone', {def: '', type: 'string', name: 'Aktuell bewaesserte Zone'}); createState(instanz + pfad0 + 'bwTimeCounter', {def: '0', type: 'number', name: 'Bewaesserung Timer'}); createState(instanz + pfad0 + pfad2 + 'bwZeitGesamtMin', {def: '0',type:'number',name: 'Bewässerungszeit gesammt alle Bereiche'}); createState(instanz + pfad0 + pfad2 + 'bwZeitHeuteMin', {def: '0',type:'number',name: 'Bewaesserungszeit Heute alle Bereiche'}); createState(instanz + pfad0 + pfad2 + 'bwZeitZuletztMin', {def: '0',type:'number',name: 'Bewaesserungszeit Zuletzt alle Bereiche'}); bwTage.forEach(function(wtg){ createState(instanz + pfad0 + pfad1 + wtg +'_bwAutomatik1', {def: 'false',type: 'boolean',name: 'Bewaesserungsautomatik 1 ein/aus '+wtg}); createState(instanz + pfad0 + pfad1 + wtg +'_bwAutomatik2', {def: 'false',type: 'boolean',name: 'Bewaesserungsautomatik 2 ein/aus '+wtg}); createState(instanz + pfad0 + pfad1 + wtg +'_bwScheduleTime1', {def: '09:00',type: 'string',name: 'Uhrzeit 1 für Auto Bewaessern '+wtg}); createState(instanz + pfad0 + pfad1 + wtg +'_bwScheduleTime2', {def: '20:00',type: 'string',name: 'Uhrzeit 1 für Auto Bewaessern'+wtg}); if(!getState(instanz + pfad0 + '_Konfig_abgeschlossen').val) { Enum_ids.push(instanz + pfad0 + pfad1 + wtg +'_bwAutomatik1'); Enum_ids.push(instanz + pfad0 + pfad1 + wtg +'_bwAutomatik2'); Enum_ids.push(instanz + pfad0 + pfad1 + wtg +'_bwScheduleTime1'); Enum_ids.push(instanz + pfad0 + pfad1 + wtg +'_bwScheduleTime2'); } }); bwZone.forEach(function(bwz) { // ----------------------------------------------------------------------------- // Erstellen Datenpunkte // ----------------------------------------------------------------------------- createState(instanz + pfad0 + bwz[1] + '.bwAktiv', {def: 'false', type: 'boolean', name: 'Bewaesserung für Zone:'+bwz[1]+' Aktiv/Inaktiv'}); createState(instanz + pfad0 + bwz[1] + '.bwVorgabeZeit', {def: '2', type: 'number', name: 'Bewaesserungsvorgabezeit für Zone:'+bwz[1]}); createState(instanz + pfad0 + bwz[1] + '.bwZeitHeuteSek', {def: '0',type:'number',name: 'Bewaesserungszeit Heute in Sek'}); createState(instanz + pfad0 + bwz[1] + '.bwZeitZuletztSek', {def: '0',type:'number',name: 'Bewaesserungszeit Zuletzt in Sek'}); createState(instanz + pfad0 + bwz[1] + '.bwVentilSchalten', {def: 'false', type: 'boolean', name: 'Ein / Aus Ventil für Zone:'+bwz[1]}); if(!getState(instanz + pfad0 + '_Konfig_abgeschlossen').val) { Enum_ids.push(instanz + pfad0 + bwz[1] + '.bwVentilSchalten'); Enum_ids.push(instanz + pfad0 + bwz[1] + '.bwAktiv'); } }); } // Objekte erstellen createObjects(); // ############################################################################# // # # // # fahren der Jalousien # // # # // ############################################################################# function bwJalousien(VentilNr) { // Jalosie in küche und wohnzimmer herunter während gießen, // beim hochfahren welches level? if(VentilNr === 2){ // log('____________________________________________________________________________________________') setStateDelayed('hm-rpc.0.NEQxxxxx.1.LEVEL', 15, getState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwVorgabeZeit').val * 60000); setStateDelayed('hm-rpc.0.NEQxxxx.1.LEVEL', 15, (getState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwVorgabeZeit').val * 60000)+1000); } if(VentilNr === 3){ // var jalLevelWohnz = getState('hm-rpc.0.NEQxxxx.1.LEVEL').val; // var jalLevelKueche = getState('hm-rpc.0.NEQxxxx.1.LEVEL').val; setStateDelayed('hm-rpc.0.NEQxxxx.1.LEVEL', getState('javascript.0.Jalousien.Jalousie_Wunschlevel_Wohnen').val, (getState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwVorgabeZeit').val * 60000)+1000); setStateDelayed('hm-rpc.0.NEQxxxx.1.LEVEL', getState('javascript.0.Jalousien.Jalousie_Wunschlevel_Kueche').val, (getState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwVorgabeZeit').val * 60000)+3000); // jalLevelKueche = 100; // jalLevelWohnz = 100 } } // ############################################################################# // # # // # Durchschalten der verfügbaren Bewässerungszonen # // # # // ############################################################################# function bwBereiche(VentilNr) { bwJalousien(VentilNr); // if(getState(instanz + pfad0 + "bwSchalter").val !== false){ if(logging === true && VentilNr < bwZone.length) log('Aktuell bewässerter Bereich:' + VentilNr); if(debugging === true ) log('VentilNr-----------------------------------------------: '+VentilNr); setState(instanz + pfad0 + 'bwAktivZone', VentilNr.toString()); if(VentilNr <= bwZone.length) setState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwZeitZuletztSek', 0); if(VentilNr <= bwZone.length){ // Nachschauen ob die Variable verfügbar ist. // log(getState(instanz + pfad0 + bwz[VentilNr-1] + '.bwVorgabeZeit').val * 60000) if(VentilNr == '1'){ // BewaessernStart(); if(debugging === true ) log('Alle Ventile ausgeschalten'); setState(instanz + pfad0 + pfad2 + 'bwZeitZuletztMin', 0); bwZone.forEach(function(bwz) { if(debugging === true ) log('Ventil '+bwz[2]+' ausgeschalten'); // Ventil ausschalten if(getState(geraeteInstanz + bwz[2]+ ".STATE").val) setState(geraeteInstanz + bwz[2]+ ".STATE", false); }); } if(VentilNr >1){ if(debugging === true ) log('Ventil Nr.:'+bwZone[VentilNr-2][2]+' ausgeschalten'); if(getState(geraeteInstanz + bwZone[VentilNr-2][2]+ ".STATE").val === true) setState(geraeteInstanz + bwZone[VentilNr-2][2]+ ".STATE", false); } if(debugging === true ) log('Pumpe einschalten'); // Pumpe Schalten if(getState(bwPumpe + ".STATE").val === false) setState(bwPumpe + ".STATE", true); //Pumpe // Ventil ausschalten, nächstes nach 5 Sekunden einschalten if(getState(geraeteInstanz + bwZone[VentilNr-1][2]+ ".STATE").val === false) setStateDelayed(geraeteInstanz + bwZone[VentilNr-1][2]+ ".STATE", true, 5000); if(debugging === true ) log('Ventil Nr.:'+bwZone[VentilNr-1][2]+' eingeschalten'); setState(instanz + pfad0 + 'bwTimeCounter', getState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwVorgabeZeit').val * 60);// noch ändern auf 60 bwZeitCountdown(VentilNr); } else{ BewaessernEnde(VentilNr); } // } else { // if(logging) log('Zonenbewaesserung ausgeschalten'); // } } // ############################################################################# // # # // # Endefunktion nach dem Bewässern # // # # // ############################################################################# function BewaessernEnde(VentilNr){ if(time) clearTimeout(time); if(VentilNr < bwZone.length) bwWerteSpeichern(VentilNr); if(getState(geraeteInstanz + bwZone[VentilNr-2][2]+ ".STATE").val === true) setState(geraeteInstanz + bwZone[VentilNr-2][2]+ ".STATE", false); if(debugging === true ) log('Ventil Nr.:'+bwZone[VentilNr-2][2]+' ausgeschalten'); if(debugging === true ) log('Übergebene Ventilnummer: '+VentilNr); if(getState(instanz + pfad0 + "bwSchalter").val !== false) setState(instanz + pfad0 + "bwSchalter", false); setState(instanz + pfad0 + 'bwAktivZone',''); if(debugging === true ) log('Pumpe ausgeschalten'); if(getState(bwPumpe + ".STATE").val === true) setState(bwPumpe + ".STATE", false); //Pumpe if(telegram_benachtrichtigung === true) telegram_versenden('BewaessernEnde'); } // ############################################################################# // # # // # Counter der die Bewässerungszeit herunter zählt # // # # // ############################################################################# function bwZeitCountdown(VentilNr) { time = setTimeout(function () { var bwtimer = getState(instanz + pfad0 + 'bwTimeCounter').val; // || (getState(instanz + pfad0 + bwz[VentilNr-1] + '.bwVorgabeZeit').val * 60000); if(VentilNr > bwZone.length) bwtimer = 0; if (bwtimer >= 1) { setState(instanz + pfad0 + 'bwTimeCounter', bwtimer - 1); bwZeitCountdown(VentilNr); setState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwZeitHeuteSek', parseInt(getState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwZeitHeuteSek').val) + 1); setState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwZeitZuletztSek', parseInt(getState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwZeitZuletztSek').val) + 1); if(debugging) log(bwtimer); } else{ bwWerteSpeichern(VentilNr); bwBereiche(parseInt(VentilNr) + 1); } }, 1000); } // ############################################################################# // # # // # Speichert die ZonenWerte in die Gesamtwerte # // # # // ############################################################################# function bwWerteSpeichern(VentilNr){ setState(instanz + pfad0 + pfad2 + 'bwZeitZuletztMin', parseInt(getState(instanz + pfad0 + pfad2 + 'bwZeitZuletztMin').val) + (Math.floor(parseInt(getState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwZeitZuletztSek').val)))/60); setState(instanz + pfad0 + pfad2 + 'bwZeitHeuteMin', parseInt(getState(instanz + pfad0 + pfad2 + 'bwZeitHeuteMin').val) + (Math.floor(parseInt(getState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwZeitZuletztSek').val)))/60); setState(instanz + pfad0 + pfad2 + 'bwZeitGesamtMin', parseInt(getState(instanz + pfad0 + pfad2 + 'bwZeitGesamtMin').val) + (Math.floor(parseInt(getState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwZeitZuletztSek').val)))/60); setState(instanz + pfad0 + 'bwTimeCounter', 0); } // ############################################################################# // # # // # Timer der die Bewässerungszeit herauf zählt # // # # // ############################################################################# function bwStopUhr(VentilNr){ time = setTimeout(function () { bwtimer = 0; setState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwZeitHeuteSek', parseInt(getState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwZeitHeuteSek').val) + 1); setState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwZeitZuletztSek', parseInt(getState(instanz + pfad0 + bwZone[VentilNr-1][1] + '.bwZeitZuletztSek').val) + 1); /* setState(instanz + pfad0 + 'bwZeitHeuteMin',Math.floor(getState(instanz + pfad0 + 'BetriebszeitHeuteSek').val/60)); setState(instanz + pfad0 + 'bwZeitZuletztMin',Math.floor(getState(instanz + pfad0 + 'BetriebszeitZuletztSek').val/60)); setState(instanz + pfad0 + 'bwZeitGesamtMin',Math.floor(getState(instanz + pfad0 + 'BetriebszeitHeuteSek').val/60)); */ if(logging) log(bwtimer); }, 1000); } // ############################################################################# // # # // # Timer der die Bewässerungszeit herauf zählt # // # # // ############################################################################# function bwAutoBewaesserungszeiten() { bwTage.forEach(function(wtg){ if(getState(instanz + pfad0 + pfad1 + wtg +'_bwScheduleTime1').val){ var bwZeit1 = getState(instanz + pfad0 + pfad1 + wtg +'_bwScheduleTime1').val.split(':'); if(logging) log(getState(instanz + pfad0 + pfad1 + wtg +'_bwAutomatik1').val); if(getState(instanz + pfad0 + pfad1 + wtg +'_bwAutomatik1').val === true){ if(bwZeit_Schedule1[wtg]) clearSchedule(bwZeit_Schedule1[wtg]); bwZeit_Schedule1[wtg] = schedule('10 '+bwZeit1[1].trim() + ' ' + bwZeit1[0].trim() + ' * * '+ bwTage.indexOf(wtg), function (){ setState(instanz + pfad0 + "bwSchalter", true); }); if(logging) log('Automatisches Gießen 1 am '+wtg+' um '+bwZeit1[0]+': '+bwZeit1[1]+' Uhr aktiviert'); } else{ if(bwZeit_Schedule1[wtg]) clearSchedule(bwZeit_Schedule1[wtg]); if(logging) log('Automatisches Gießen 1 am '+wtg+' wurde deaktiviert'); } } if(getState(instanz + pfad0 + pfad1 + wtg +'_bwScheduleTime2').val){ var bwZeit2 = getState(instanz + pfad0 + pfad1 + wtg +'_bwScheduleTime2').val.split(':'); if(debugging === true ) log(getState(instanz + pfad0 + pfad1 + wtg +'_bwAutomatik2').val); if(getState(instanz + pfad0 + pfad1 + wtg +'_bwAutomatik2').val === true){ if(bwZeit_Schedule2[wtg]) clearSchedule(bwZeit_Schedule2[wtg]); bwZeit_Schedule2[wtg] = schedule('10 '+bwZeit2[1].trim() + ' ' + bwZeit2[0].trim() + ' * * '+ bwTage.indexOf(wtg), function (){ setState(instanz + pfad0 + "bwSchalter", true); }); if(logging) log('Automatisches Gießen 2 am '+wtg+' um '+bwZeit2[0]+': '+bwZeit2[1]+' Uhr aktiviert'); } else{ if(bwZeit_Schedule2[wtg]) clearSchedule(bwZeit_Schedule2[wtg]); if(logging) log('Automatisches Gießen 2 am '+wtg+' wurde deaktiviert'); } } }); } // ############################################################################# // # # // # sonstiges # // # # // ############################################################################# if(!getState(instanz + pfad0 + '_Konfig_abgeschlossen').val) { var Enum_obj = {}; Enum_obj.type = 'enum'; Enum_obj.common = {}; Enum_obj.common.name = 'Bewaesserung'; Enum_obj.common.members = Enum_ids; setObject('enum.functions.Bewaesserung', Enum_obj); setState(instanz + pfad0 + '_Konfig_abgeschlossen', true); } // ############################################################################# // # # // # Zurücksetzen dert Tageswerte um 0:00 Uhr täglich # // # # // ############################################################################# schedule("0 0 * * *", function (){ bwZone.forEach(function(bwz) { setState(instanz + pfad0 + bwz[1] + '.bwZeitHeuteSek', 0); }); setState(instanz + pfad0 + pfad2 + 'bwZeitHeuteMin', 0); }); // Beobachten des Schalters für die automatik Bewässerung on({id: instanz + pfad0 + 'bwSchalter', change: "ne"}, function (dp) { if(dp.state.val === true){ bwBereiche('1'); } else { bwBereiche(bwZone.length +1); } }); if(!getObject('enum.functions.Bewaesserung')) { log('objekt fehlt'); } function ScriptStart() { // if(getState(instanz + pfad0 + 'Konfiguration.IoRestart_komp_Bkp').val === true){ // setStateDelayed(instanz + pfad0 + 'Konfiguration.IoRestart_komp_Bkp', false, 5000); // } bwScheduleAktuallisieren(); log('hier wurde der schedule-befehl ausgeführt'); } function bwScheduleAktuallisieren() { // runScript(name); log('Werte wurden aktualisiert'); bwAutoBewaesserungszeiten(); } // ############################################################################# // # # // # Beobachten aller Enum Funcions Datenpunkte # // # # // ############################################################################# $('state(functions=Bewaesserung)').on(function(dp) { bwAutoBewaesserungszeiten(); var flog = dp.id.split('.'); if(logging === true ) log('Folgender Datenpunkt hat sich geändert: '+flog[3]); bwZone.forEach(function(findstring){ if(findstring.indexOf(flog[3]) != '-1') log('Ventil Nr.:'+findstring[0]); }); }); ScriptStart();
  • Bose Multiroom/AutoSync

    blockly multimedia javascript
    1
    1
    0 Stimmen
    1 Beiträge
    299 Aufrufe
    Niemand hat geantwortet
  • Warum geht das Licht einfach aus ?

    blockly
    6
    1
    0 Stimmen
    6 Beiträge
    671 Aufrufe
    O
    Ja, jetzt geht es- Danke !

371

Online

32.8k

Benutzer

82.7k

Themen

1.3m

Beiträge