Weiter zum Inhalt

JavaScript

2.5k Themen 49.8k Beiträge

Hilfe für Skripterstellung mit JavaScript

NEWS

  • .MOTION der Kamera in Skript zählen

    1
    0 Stimmen
    1 Beiträge
    239 Aufrufe
    Niemand hat geantwortet
  • Iot Service nutzen mit json

    3
    0 Stimmen
    3 Beiträge
    383 Aufrufe
    cashC
    2 Wörter funktioniert mit %20. Das ist ja schonmal ein Anfang.... Danke
  • gelöst-JS-Inhalt einer Variablen als Variable JSON

    javascript
    3
    0 Stimmen
    3 Beiträge
    491 Aufrufe
    liv-in-skyL
    @Mic danke für deine antwort - war nicht weit weg von der lösung - ich hatte noch punkt drin - und damit gehts nicht // Alternative A ........ log(resp.data[0].[myVar]); vielen dank nochmals- funktioniert im ersten schnelltest
  • iobroker und Firebase

    1
    0 Stimmen
    1 Beiträge
    294 Aufrufe
    Niemand hat geantwortet
  • Reaktion auf Fehlgeschlagenes SetState

    2
    0 Stimmen
    2 Beiträge
    234 Aufrufe
    paul53P
    @JinnBln sagte: Ich möchte einfach eine Funktion ausführen, die noch x mal erneut sendet. Ich sende mit 1 s und 5 s Verzögerung nochmal, falls nicht der Aktor mit Ack triggert (dann werden die Timer gestoppt). const actid = '...'; const ventid = '...'; var vent = getState(ventid).val; // Sollzustand var act = getState(actid).val; // Aktor var timer1 = null; var timer5 = null; function actor() { if(act === vent) { if(timer1) clearTimeout(timer1); if(timer5) clearTimeout(timer5); } else { setState(actid, vent); timer1 = setTimeout(function() {setState(actid, vent);}, 1000); timer5 = setTimeout(function() {setState(actid, vent);}, 5000); } } actor(); // script start on(ventid, function(dp) { vent = dp.state.val; actor(); }); on({id: actid, ack: true}, function(dp) { act = dp.state.val; actor(); });
  • Warnungen bei Script - Berechnung Calc

    javascript
    9
    2
    0 Stimmen
    9 Beiträge
    578 Aufrufe
    paul53P
    @GregorS sagte: Kann ich im Script den Wert "TEMP_Zielwert" : 21.75, durch eine Variable ersetzen? Keine Ahnung: Im meinem Skript gibt es keinen "TEMP_Zielwert".
  • [Frage] Verständnis "isAck" in setState()

    4
    0 Stimmen
    4 Beiträge
    434 Aufrufe
    DutchmanD
    @LevyKo sagte in [Frage] Verständnis "isAck" in setState(): @paul53 Ah, ok. Dann werde ich es mal so nutzen. Bin da halt pingelig. macht auch sin dan leuchten die "states" z.b. im admin nicht rot auf sonder grün (bestätigt)
  • JScript führt keine CMD-exe aus (W10P)

    10
    0 Stimmen
    10 Beiträge
    853 Aufrufe
    P
    Eieiei, das klingt natürlich logisch Vielen Dank!
  • Snips / MQTT - Session beenden

    1
    0 Stimmen
    1 Beiträge
    220 Aufrufe
    Niemand hat geantwortet
  • JS-Interface Fully Browser

    javascript
    8
    0 Stimmen
    8 Beiträge
    1k Aufrufe
    arteckA
    @sveni_lee <script> function reportKioskMotion() { window.open("http://ip:port/set/javascript.2.Anzeigen.fullyMotion?value=true", '_blank'); self.close(); } fully.bind('onMotion', 'reportKioskMotion();'); </script> so damit gehts in einem HTML widget gefällt mir aber nich nicht... es gab auch was mit XMLHttpRequest... muss ich mal schauen
  • Hilfe zum Alexa Hue Wecker

    25
    1
    0 Stimmen
    25 Beiträge
    3k Aufrufe
    HilwiH
    Hi! Sorry, ich war eine ganze Zeit lang hier im Forum nicht tätig und habe den Thread auch erst jetzt gesehen. Das mit der Endlosschleife ist ein Fehler im Script. Das muss ich mir einmal anschauen.
  • [gelöst]-JS-hilfe beim sortieren eines JSONs

    javascript
    9
    1
    0 Stimmen
    9 Beiträge
    1k Aufrufe
    liv-in-skyL
    hat sich erledigt
  • JS Script Engine stoppt immer wieder

    4
    2
    0 Stimmen
    4 Beiträge
    646 Aufrufe
    arteckA
    @TS das ist quack.. nicht in der 8.xx
  • Scripte debuggen

    3
    0 Stimmen
    3 Beiträge
    489 Aufrufe
    P
    Sonst keine hilfreichen Hinweise, ausser wo ich in Zukunft meine Bilder hochladen soll ?
  • [Gelöst] Logicwert nach State ändern

    7
    0 Stimmen
    7 Beiträge
    605 Aufrufe
    L
    So, hab den Fehler gefunden. Es waren natürlich mal wieder Klammern und Sonstiges. Jetzt Funktioniert es: on( { id:"sonoff.0.Sonoff_Bridge.RfReceived_Data", change: 'ne'}, function() { if(getState("sonoff.0.Sonoff_Bridge.RfReceived_Data").val == "9B766E") setState("Tüeren.0.Balkontüere.Status", true); else if(getState("sonoff.0.Sonoff_Bridge.RfReceived_Data").val == "9B7667") setState("Tüeren.0.Balkontüere.Status", false); }); Danke an alle für die Hilfe.
  • Daikin per Alexa steuern

    1
    0 Stimmen
    1 Beiträge
    1k Aufrufe
    Niemand hat geantwortet
  • Bei scharfschalten der Alarmanlage

    4
    0 Stimmen
    4 Beiträge
    306 Aufrufe
    ?
    Ich danke dir @paul53 Das hat geholfen. habe es jetzt folgend so gelöst. var Offene_Fenster; on({id: "Alarmanlage_.Alarm_code_an", change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("Alarmanlage_.Alarm_code_an").val == true) { Offene_Fenster = []; if (getState("mihome.0.devices.magnet_15ZTT000236fd23.state").val == true) { Offene_Fenster.push('Das große Schlafzimmerfenster'); log("value: " + obj.state.val) } if (getState("mihome.0.devices.magnet_158d236fd23.state").val == true) { Offene_Fenster.push('Das kleine Schlafzimmerfenster'); log("value: " + obj.state.val+ Offene_Fenster) } if (getState("mihome.0.devices.magnet_158d000236fe97.state").val == true) { Offene_Fenster.push('Das Küchenfenster'); } if (getState("hm-rpc.0.OEQ0423676.1.STATE").val == true) { Offene_Fenster.push('Die Balkontür'); } if (getState("hm-rpc.0.OEQ0425806.1.STATE").val == true) { Offene_Fenster.push('Die Wohnungstür'); } if (getState("mihome.0.devices.magnet_158d000236fd23.state").val == true) { Offene_Fenster.push('Die Kellertür'); } if (getState("mihome.0.devices.magnet_158d0002048400.state").val == true) { Offene_Fenster.push('Das Gefrierfach'); } if (getState("hm-rpc.0.NEQ1510598.1.STATE").val == true) { Offene_Fenster.push('die Haustür ist nicht abgeschlossen'); } if (getState("Alarmanlage_an").val == false) { Offene_Fenster.push('und Die Alarmanlage ist ausgeschalten'); } if (!Offene_Fenster.length) { setState("snips.0.devices.default.send.text", ('Es ist alles gesichert')); setState("Alarmanlage_.Alarm_code_aus", true); setState("Alarmanlage_.Alarm_code_an", false); setState("Alarmanlage_.Check_sensor", false); setState("Alarmanlage_.Tur1", true); } else { setState("snips.0.devices.default.send.text", (['Die folgenden Türen und Fenster sind offen und zwar',Offene_Fenster,'.'].join(''))); setState("Alarmanlage_.Check_sensor", false); } } });
  • Script Adapter neu Starten lassen

    6
    0 Stimmen
    6 Beiträge
    1k Aufrufe
    MicM
    @kasperfunsurfer Unten ein Beispiel. Musst halt mit den Zeiten spielen. Wird jede Minute ausgeführt, und prüft, ob State länger als 5 Minuten nicht geändert wurde. Empfehle Dir trotzdem, ein Github-Issue zu öffnen oder hier noch mal im Forum genau das Problem mit dem Adapter zu schildern (neuer Thread mit aussagekräftigem Betreff). const STATE_PATH = 'HIER PFAD ZU STATE EINTRAGEN'; let mSchedule; let wieOft = '* * * * *'; // Jede Minute clearSchedule(mSchedule); mSchedule = schedule(wieOft, function(){checkStateTs(STATE_PATH)}); function checkStateTs(statePath) { // Prüfe, ob sich innerhalb der letzten 5 Minuten der State geändert hat. let timestampState = new Date(getState(statePath).ts); let timestampStatePlusFiveMin = new Date(timestampState.getTime() + (5 * 60000)); // 5 Minuten Differenz let timeCurrent = new Date(); if(timestampStatePlusFiveMin > timeCurrent) { log('State hat sich innerhalb der letzten 5 Minuten geändert.') } else { log('State hat sich innerhalb der letzten 5 Minuten NICHT geändert.') } }
  • Andere ioBroker instanz ansteuern

    10
    0 Stimmen
    10 Beiträge
    888 Aufrufe
    M
    habe es jetzt folgend gelöst - da es sich eigentlich nur um ein Kodi-Mute switch handelt lese ich die werte jetzt nicht mehr aus sondern benutze den Toogle den simpleAPI bereitstellt : var DASHBUTTON = 'amazon-dash.0.mac-adresse-99.pressed'; var COMMAND = 'http://192.168.178.3:8087/toggle/kodi.0.mute?&prettyPrint'; on({id: DASHBUTTON, val: true}, function (obj) { request(COMMAND , function() { ; }); }); MOD Edit Jey Cee: Code/Log in Code Tags gepackt. Bitte benutzt die Code Tags Funktion -> </>
  • [Vorlage]Wechselschaltung mit Javascript

    16
    0 Stimmen
    16 Beiträge
    1k Aufrufe
    Tim LeuschnerT
    Nach einigen Änderungen nun umgestellt auf eine Javascript-Klasse, dadurch deutlich leichter zu verwenden und als Vorlage tauglich: Script für Wechselschaltung mit beliebig vielen Schaltern, Tastern, & Aktoren: // Ich benutze virtuelle Schalter (Datenpunkte) um z.B. VIS-Seiten aufzubauen, weil ich so // bei einem Austausch physischer Komponenten (Anderer Hersteller/Name etc.) nicht die // VIS-Visualisierung und Scripte anpassen muß // // Die sonoff-Touch-Schalter schalten die LED's der Touch-Schaltflächen ein, wenn das zugehörige Relais an ist. // Ich invertiere den Schaltzustand der sonoff-Touch-Schalter, damit die LED der jew. Touch-Schaltfläche // leuchtet, wenn die zu schaltende Lampe aus ist (so findet man sie im Dunkeln). // Abspeichern der Javascript-Instanz in Konstante, um in den // Event-Scubscriptions zu prüfen, woher der Aufruf kommt und // so Ping/Pong zu vermeiden ( CreditsTo: @paul53 ) const js = 'system.adapter.javascript.' + instance; class VirtualMultiSwitch { constructor (idVirtualSwitch='',msDelay=100) { this.aPowr = new Array(); // zu schaltende Aktoren this.aNorm = new Array(); // normale Schalter this.aInvt = new Array(); // zu invertierende Schalter this.aBttn = new Array(); // auslösende Tatser this.VirtS = idVirtualSwitch; this.Counter = 0; this.Delay = msDelay; } incS() { this.Counter +=1; } decS() { this.Counter -=1; } addP(Name){ this.aPowr = this.aPowr.concat(Name); } addN(Name){ this.aNorm = this.aNorm.concat(Name); } addI(Name){ this.aInvt = this.aInvt.concat(Name); } addB(Name){ this.aBttn = this.aBttn.concat(Name); } doSwitchPhysical(obj){ if (this.Counter <= 1){ this.Counter +=1; setState(this.VirtS,(this.aBttn.indexOf(obj.id )>=0 ? !getState(this.VirtS).val : this.aNorm.indexOf(obj.id)>=0 ? obj.state.val : !obj.state.val)); setTimeout(()=>this.decS(), this.Delay); } } doSwitchVirtual(obj){ if (this.Counter <= 1){ this.Counter +=1; this.aNorm.forEach(function (TargetId,idx) {setState(TargetId, obj.state.val);}); this.aInvt.forEach(function (TargetId,idx) {setState(TargetId, !obj.state.val);}); this.aPowr.forEach(function (TargetId,idx) {setState(TargetId, obj.state.val);}); setTimeout(()=>this.decS(), this.Delay); } } Start() { on ({id:this.aNorm, change:"ne", ack: true , fromNe: js}, (obj) =>this.doSwitchPhysical(obj)); on ({id:this.aInvt, change:"ne", ack: true , fromNe: js}, (obj) =>this.doSwitchPhysical(obj)); on ({id:this.aBttn, change:"ne", ack: true , fromNe: js}, (obj) =>this.doSwitchPhysical(obj)); on ({id:this.VirtS, change:"ne" }, (obj) =>this.doSwitchVirtual(obj)); } Stop() { unsubscribe(this.aNorm); unsubscribe(this.aInvt); unsubscribe(this.aBttn); unsubscribe(this.VirtS); } } // WechselSchalter01: var WS01 = new VirtualMultiSwitch('javascript.0.virtualDevice.Schalter.Eins.POWER'); WS01.addP('sonoff.0.Shelly01.Switch.Power' ); // z.B. ein Shelly 1, der die eigentliche Lampe schaltet WS01.addN('hm-rega.0.1111' ); // HomeMatic, realisiert mit CCU-Systemvariable, // die in CCU durch Funkschalter getoggelt wird // und in ioBroker als "hmRega.0.XYZ" auftaucht WS01.addI('sonoff.0.T1_Touch_01.POWER1' ); // die zu invertierenden Schalter hinzufügen WS01.addB('hm-rpc.0.ABCDEFGH.1.PRESS_SHORT' ); // ein Hommatic-Funkstaster WS01.Start(); // WechselSchalter02 (ohne Kommentare viel kürzer) var WS02 = new VirtualMultiSwitch('javascript.0.virtualDevice.Schalter.Zwei.POWER'); WS02.addP('sonoff.0.Lampe02.POWER' ); WS02.addN('hm-rega.0.2222' ); WS02.addI('sonoff.0.T1_Touch_03.POWER2' ); WS02.Start(); // WechselSchalter03 - schaltet eine ganze Reihe von Aktoren (=Szene) var WS03 = new VirtualMultiSwitch('javascript.0.virtualDevice.Schalter.Drei.POWER'); WS03.addP('sonoff.0.S4Pro_01.POWER1' ); WS03.addP('sonoff.0.S4Pro_01.POWER2' ); WS03.addP('sonoff.0.S4Pro_01.POWER3' ); WS03.addP('sonoff.0.S4Pro_02.POWER1' ); WS03.addP('sonoff.0.XYZ.POWER' ); WS03.addP('javascript.0.virtualDevice.Schalter.Eins.POWER'); // ja, auch der 1. Virtuelle Schalter wird mitgeschaltet WS03.addN('hm-rega.0.3333' ); // dafür nur ein auslösender Schalter ... WS03.Start(); Danke allen Inspirateuren ( insbesondere @Asgothian & @paul53 )!

456

Online

33.0k

Benutzer

83.6k

Themen

1.3m

Beiträge