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 sagte: @Daniel-8 sagte: Aber beides braucht man ja eigentlich nicht... Richtig, beides benötigt man nicht. @Daniel-8 sagte: ....oder gibt es da einen Vorteil? Vorteile mit Cloud-Ersatz-Broker MQTT: MQTT ist komfortabler und schneller, weil es dann nicht reglementiert ist, wie das offizielle lokale MQTT. Es bietet viel mächtigere Möglichkeiten. (Was auch eine Gefahr birgt, wenn man nicht weiß, welche Topics beschrieben werden, was sie als Antwort erwarten usw.) MQTT ist schneller, weil nicht gepollt werden muss. Wenn Werte sich ändern, wird es automatisch published. Man muss nur Änderungen triggern und nicht alle x Sek. die Werte abfragen. WiFi / HTTP(S) wird entlastet. Man bekommt alle wahren Topics und kann Werte setzen, die sonst nicht gesetzt werden können. (Birgt auch eine Gefahr in sich, wenn man wild experimentiert oder Werte setzt, die normaler Weise für Funktionen bestimmt sind, die die Cloud nur im HEMS setzen würde. Am besten man nutzt nur zum Schreiben "properties" wie mit zenSDK.) Dann sollte ja nichts passieren wenn man nur die properties nutzt. Mehr brauche ich ja sowieso nicht. Eigentlich brauche ich nur die einspeiseleistung und den min soc. Vorteil von zenSDK mit Cloud-Ersatz-Broker: Bei der Umstellung erst mal alles bleiben kann wie es ist und läuft dann wirklich lokal. Schneller wie bisher, weil es keine Cloud gibt, die permanent irgendwas abfragen, senden oder "dazwischen funken" kann. zenSDK prüft immer wieder, ob die Verbindung zur Cloud besteht. Das ist sie ja – in Form eines lokalen Brokers. Kann ich es riskieren mit dem direkten mqtt Adapter vom iobroker den Speicher auf lokal umzustellen? Müsste man erst testen. Ich verwende nur mosquitto. Ausgereift, zuverlässig, schlank, ressourcenarm und schnell.. Das kann ich ja mal machen. Ich kann ja zur Not mit deinem Programm immer wieder auf die cloud umstellen falls es nicht geht. @Daniel-8 sagte: Aber dafür muss ich mir mal Zeit nehmen. Das geht nicht mehr vor dem Urlaub. Schönen Urlaub Deiner Familie und Dir. Danke.
  • 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.
  • [Problem] Ansteuerung aller Dimmer im Haus

    Verschoben
    10
    0 Stimmen
    10 Beiträge
    2k Aufrufe
    AlCalzoneA
    stimmt… hatte ich nicht bedacht!
  • [Frage] Schleife über alle Komponenten eines Typs

    Verschoben
    5
    0 Stimmen
    5 Beiträge
    1k Aufrufe
    F
    Danke, das hat mir sehr geholfen
  • [Problem] Zeitverzögerte Wiedergabe mit Sayit

    Verschoben
    2
    1
    0 Stimmen
    2 Beiträge
    730 Aufrufe
    T
    Auf was für einem System erfolgt denn die Ausgabe der mp3? Sonos? Grundsätzlich erscheint mir inzwischen, nachdem ich in anderen Bereichen auch mit SayIt rumprobiert habe, es sinniger, sayit zu umgehen wenn es um eine ohnehin vordefinierte mp3 geht und nicht ein variabler Text gesprochen werden soll.
  • [Frage] HTTP POST - Cookie einfügen ? (Sony TV)

    Verschoben
    5
    0 Stimmen
    5 Beiträge
    1k Aufrufe
    AlCalzoneA
    Wenn ich das richtig sehe, solltest du die manuelle Cookie-Zuweisung nicht brauchen, wenn du beim initialen Request jar:true festlegst. Aber wenns funktioniert, ist das schon mal was.
  • [Gelöst] Objecte erstellen aus JSON tabelle

    Verschoben
    7
    0 Stimmen
    7 Beiträge
    2k Aufrufe
    DutchmanD
    @ruhr70: @Dutchman: sowohl wen ich direct aus dem request lesen mochte als wen ich die daten vorher in einen state wegschreibe un daraus lese. ` Du versucht wahrscheinlich einen String zu verarbeiten? Probier mal in Deiner Abfrage: var objekt = JSON.parse(results); Auch wenn Du den Wert mit getState liest solltest Du den String in ein Objekt umwandeln: JSON.parse(getState(javascript.0.objekt).val); Wenn Du ein Objekt schreibst: setState(javascript.0.objekt,JSON.stringify(obj)); ```` ` Danke dir, waren vast zeitgleich :) Mit JSON.parse hat sich das problem erledigt.
  • [Gelöst] Trigger auf state change innerhalb einer gruppe mit rueckgabe der id

    Verschoben
    5
    1
    0 Stimmen
    5 Beiträge
    1k Aufrufe
    DutchmanD
    @ruhr70: probier mal: on({id: /^javascript\.\d\.domoticz\.\d+\.STATE$/ , change: "ne"}, function (obj) { var value = obj.state.val; var objArr = obj.id.match(/(^.+)\.(.+)\.(.+)$/, ""); //Aufteilung in Pfad + Device + CMD var device = objArr[2]; log("device: " + device +" - State: " + value); }); ```` ` Super danke das hat geklappt ! Falls es jemand gebrauchen kan, script reagiert auf trigger innerhalb der gruppe und abhaenging von status verschikt er ein commando per URL: // on({id: /javascript\.0\.domoticz\..*\.STATE/, change: "ne"}, function (obj) { on({id: /^javascript\.\d\.domoticz\.\d+\.STATE$/ , change: "ne"}, function (obj) { var value = obj.state.val; var objArr = obj.id.match(/(^.+)\.(.+)\.(.+)$/, ""); //Aufteilung in Pfad + Device + CMD var device = objArr[2]; log("device: " + device +" - State: " + value); log(device); var URL = 'http://192.168.1.152'; var port = '8080'; if (getState("javascript.0.domoticz." + device + ".STATE").val == '1') { try { require("request")( URL + ':' + port + '/json.htm?type=command¶m=switchlight&idx=' + device + '&switchcmd=On'); } catch (e) { console.error(e); } console.log("request: " + URL + ':' + port + '/json.htm?type=command¶m=switchlight&idx=' + device + '&switchcmd=On'); } else { try { require("request")(URL + ':' + port + '/json.htm?type=command¶m=switchlight&idx=' + device + '&switchcmd=Off'); } catch (e) { console.error(e); } console.log("request: " + URL + ':' + port + '/json.htm?type=command¶m=switchlight&idx=' + device + '&switchcmd=Off'); } });
  • [gelöst] Komisches Verhalten bei HM-Rolläden

    Verschoben
    4
    0 Stimmen
    4 Beiträge
    858 Aufrufe
    ldittmarL
    Ich hatte mein Raspi neu gestartet, ioBroker stop/start, die RPC-Adaptern neu gestartet und nichts ging.. jetzt habe ich die neue Version 1.4.6 vom RPC installiert und schon funktioniert alles wieder :-) - Danke euch Grüße, ldittmar
  • [Frage] Telegram Bot mit Buttons ausstatten.

    Verschoben
    5
    0 Stimmen
    5 Beiträge
    2k Aufrufe
    kmxakK
    ich kann das script ja nur auf true oder false setzen. habe ich da gerade einen denkfehler? würde mit texttocommand nun das script auf true setzen und danach rennt es ja weiter nochmal true setzen bringt doch nix. müsste es dann intern im script sich selber wieder ausschalten lassen. oder?
  • [Gelöst] UDP Befehl über Node-Red

    Verschoben
    13
    0 Stimmen
    13 Beiträge
    5k Aufrufe
    S
    Ich schau mir das Wochenende mal an. . Für Node-red gibt es inzwischen auch eine Loxone Erweiterung. . Gruß Holger. Gesendet von meinem SM-G930F mit Tapatalk
  • Exec Funktioniert nicht

    Verschoben
    5
    0 Stimmen
    5 Beiträge
    3k Aufrufe
    kmxakK
    ! ```` [ { "id": "7419bfb6.fe762", "type": "exec", "z": "e608e40d.eacc3", "command": "python /opt/test/iobroker.rfid/script/rfid.py", "addpay": false, "append": "", "useSpawn": false, "timer": "", "name": "python /opt/test/iobroker.rfid/script/rfid.py", "x": 440, "y": 200, "wires": [ [ "6a522737.9a8b58" ], [ "4aeaa22d.0f8e24" ], [ "c1e524b1.858bf" ] ] }, { "id": "6a522737.9a8b58", "type": "debug", "z": "e608e40d.eacc3", "name": "", "active": true, "console": "true", "complete": "true", "x": 750, "y": 143, "wires": [] }, { "id": "c1e524b1.858bf", "type": "debug", "z": "e608e40d.eacc3", "name": "", "active": true, "console": "true", "complete": "true", "x": 820, "y": 240, "wires": [] }, { "id": "4aeaa22d.0f8e24", "type": "debug", "z": "e608e40d.eacc3", "name": "", "active": true, "console": "true", "complete": "true", "x": 890, "y": 180, "wires": [] }, { "id": "57b8f669.2b64f", "type": "inject", "z": "e608e40d.eacc3", "name": "", "topic": "", "payload": "true", "payloadType": "bool", "repeat": "", "crontab": "", "once": true, "x": 130, "y": 220, "wires": [ [ "7419bfb6.fe762" ] ] } ] Hier der Code im Debug steht rein gar nix. Habe nun mal den Debug auf dem Injekt gesetzt und geschaut ob da was kommt und das tut es. also läuft das exec nicht wie vermutet EDIT: So geht es und es kommt eine Ausgabe! Ob es alles richtig ist weiß ich allerdings noch nicht :mrgreen: >! ```` [ { "id": "7419bfb6.fe762", "type": "exec", "z": "e608e40d.eacc3", "command": "python", "addpay": false, "append": "/opt/test/iobroker.rfid/script/rfid.py", "useSpawn": true, "timer": "", "name": "python /opt/test/iobroker.rfid/script/rfid.py", "x": 440, "y": 200, "wires": [ [ "44e6c2bc.2f9934" ], [ "cf0e0d61.e0f6b" ], [ "a81ff54e.6a04f8" ] ] }, { "id": "57b8f669.2b64f", "type": "inject", "z": "e608e40d.eacc3", "name": "", "topic": "", "payload": "true", "payloadType": "bool", "repeat": "", "crontab": "", "once": true, "x": 130, "y": 220, "wires": [ [ "7419bfb6.fe762" ] ] }, { "id": "44e6c2bc.2f9934", "type": "debug", "z": "e608e40d.eacc3", "name": "", "active": true, "console": "true", "complete": "true", "x": 800, "y": 160, "wires": [] }, { "id": "cf0e0d61.e0f6b", "type": "debug", "z": "e608e40d.eacc3", "name": "", "active": true, "console": "true", "complete": "true", "x": 900, "y": 200, "wires": [] }, { "id": "a81ff54e.6a04f8", "type": "debug", "z": "e608e40d.eacc3", "name": "", "active": true, "console": "true", "complete": "true", "x": 880, "y": 340, "wires": [] } ]
  • Photovoltaik Script

    Verschoben
    41
    0 Stimmen
    41 Beiträge
    7k Aufrufe
    apollon77A
    Spontan tippe ich das es Fälle gibt wo dein Request in einen Fehler läuft. Dann ist "body" leer. Das wird aktuell im Skript aber nicht abgefangen. Und scheinbar fängt es die cheerio-Library beim Aufruf $ = cheerio.load(body); auch nicht ab. Ich würde ja noch ein "if (body) { …}" in den request einbauen oder wenigstens noch den responsecode prüfen - der ist bei den Fehlerfällen bestimmt auch nicht 200 ... Also hier fehlt einfach Fehlerhandling :-)
  • [Frage] In eine Datei Schreiben

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    901 Aufrufe
    M
    RPI funktioniert mit Orange Pi nicht richtig. Ich habe es ausprobiert.
  • SetState() nach createState() schreibt nichts?

    Verschoben
    31
    0 Stimmen
    31 Beiträge
    8k Aufrufe
    ruhr70R
    Puh… Danke!!! na, da habe ich ja was zu tun ;-)
  • Problem mit Bewegungsmelder

    Verschoben
    8
    0 Stimmen
    8 Beiträge
    2k Aufrufe
    S
    Das Script "Foto von Cam an Telegram" ist unter common angelegt. Das Script "Licht schalten" unter der Gruppe Haus. Falls das hilft?
  • [Frage] CURL Befehl ausführen

    Verschoben
    15
    0 Stimmen
    15 Beiträge
    9k Aufrufe
    AlCalzoneA
    @afroasiate: Verstehe nicht wie ich in JavaScript die Hochkomas setzen muss damit er den String annimmt. ` // nmap 192.168.100.0/24 -sP | grep report | awk '{print $5 " " substr($6,2,15) }' var abfrage = 'nmap 192.168.100.0/24 -sP | grep report | awk \'{print $5 " " substr($6,2,15) }\''; Du musst die einfachen Anführungszeichen deines Strings escapen mit Backslash, damit sie nicht als Ende des Strings aufgefasst werden.
  • [Gelöst] Memory Problem beim ausführen von Javascript Code

    Verschoben
    4
    0 Stimmen
    4 Beiträge
    842 Aufrufe
    A
    Leider ist das Problem damit nicht gelöst. Der RAM ist heute Nacht wieder vollgelaufen.
  • [Gelöst] Schleife langsamer ausführen

    Verschoben
    5
    0 Stimmen
    5 Beiträge
    2k Aufrufe
    T
    VIELEN DANK ^^ Funktioniert bestens. Noch eine Frage nebenbei. Ich habe einen Datenpunkt als Zahl, die Unit habe ich leer gelassen, da nicht nötig. Min 0 Max 100. So kann ich sagen Alexa Stelle Stufe auf 7. Das komische ist, dass dann als Wert 7.0000001 übergeben wird. Aber warum??? Bei 3 ist es genau 3. Habe das im Code mit Math.round gelöst. Kann man einem Objekt im vorraus Nachkommastellen streichen lassen? Ist das mit der 1 am Ende ein Fehler von Alexa oder dem Cloud Adapter? Falls noch jemand Infrarot Geräte hat und so ein Code benötigt: ! ```` var Stufe; var interval; var timer = null; var anzahl; function CountDownPlus(s) { //Funktion Taste Plus im Abstand 1 Sekunde drücken. setState("broadlink.0.learnedSignals.Ventiplus",true); s--; timer = setInterval(function () { if (s > 0) { setState("broadlink.0.learnedSignals.Ventiplus",true); s--; } else { if(timer) clearInterval(timer); } }, 1000); } ! function CountDownMinus(s) { //Funktion Taste Minus im Abstand 1 Sekunde drücken. setState("broadlink.0.learnedSignals.Ventiminus",true); s--; timer = setInterval(function () { if (s > 0) { setState("broadlink.0.learnedSignals.Ventiminus",true); s--; } else { if(timer) clearInterval(timer); } }, 1000); } ! on({id: "javascript.0.Wind"/javascript.0.Wind/, change: "any"}, ! function (obj) { var x = obj.state.val; //Übergebener Wert von der .Wind ID x = Math.round(x); //Nachkommastellen wegkürzen Stufe = (getState("javascript.0.Stufe").val); //Aktuelle Stufe Stufe = Math.round(Stufe); ! if (Stufe < x) { anzahl = x - Stufe; ! CountDownPlus(anzahl); ! Stufe = x; setState("javascript.0.Stufe", Stufe); //Neue aktuelle Stufe ! } else if (Stufe > x) { anzahl = Stufe - x; CountDownMinus(anzahl); Stufe = x; setState("javascript.0.Stufe", Stufe); }});
  • Script für Klingel

    Verschoben
    42
    0 Stimmen
    42 Beiträge
    11k Aufrufe
    D
    Jemand eine Idee wie er die einzelnen Klingelvorgänge addiert??
  • HTML parsen

    Verschoben
    4
    1
    0 Stimmen
    4 Beiträge
    2k Aufrufe
    WalW
    Danke, funzt. :lol:
  • Fade LED?

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    1k Aufrufe
    AlCalzoneA
    Prinzipiell macht das Sinn. Wenn du auf dem Raspberry Pi unterwegs bist, sieh zu, dass du einen der PWM-fähigen GPIO-Ports verwendest (die können ein analoges Signal simulieren). Die meisten GPIO-Ports können nämlich nur an und aus. Alternativ kannst du einen externen RGBW-Dimmer z.B. über zWave ansteuern. Da kommt aber ein bisschen Hardware dazu. Der Fibaro RGBW kann z.B. einzelne Ports über einen konfigurierbaren Zeitraum ein- und ausfaden.

397

Online

33.0k

Benutzer

83.6k

Themen

1.3m

Beiträge