NEWS
Meine ersten schritte mit JavaScript
-
also ich glaub ich hab es zu 80 % verstanden bleiben wir mal bei dem mit den variablen.
ich sag im in dem on befehl pass auf ob sich der verändert in idVorheizen wenn er sich ändert schreib den wert in die namenlose funktion und führe in aus richtig ?
Gesendet von meinem SM-G935F mit Tapatalk
-
ich sag im in dem on befehl pass auf ob sich der verändert in idVorheizen wenn er sich ändert schreib den wert in die namenlose funktion und führe in aus richtig ? `
Im Prinzip ja: … wenn sich der Wert ändert, Übergebe das Datenpunkt-Objekt unter dem gewählten Namen an die anonyme Funktion und führe die Funktion aus. -
okay dann glaub ich hab ich es jetzt.
und wie funktioniert das wenn ich 2 und mehr States überwachen möchte muss ich dann mehrere on funktionen in eine Funktion schreiben und wieder rum dann diese Funktion überwachen?
und wenn ich auf zeit triggern möchte statt auf zustand wechsel mach ich die geschweiften klammern rein?
grus Chris
Gesendet von meinem SM-G935F mit Tapatalk
-
und wenn ich auf zeit triggern möchte statt auf zustand wechsel mach ich die geschweiften klammern rein? `
Welche geschweifeten Klammern meinst Du ? Wenn eine anonyme Funktion deklariert wird, muss der Code der Funktion immer in geschweifte Klammern. Bei Triggern auf Zeit (schedule) wird allerdings kein Datenpunkt-Objekt übergeben, d.h. es ist auch kein Name zu übergeben:// Triggern jede Minute schedule('* * * * *', function() { hier kommt der Code der Funktion rein });
und wie funktioniert das wenn ich 2 und mehr States überwachen möchte `
Beispiel: Mittelwert aus 3 Datenpunkten:const idMittel = '...'; // ID des Datenpunktes für Mittelwert var a, b, c; function mittel() { setState(idMittel, (a + b + c) / 3): } on('ID Datenpunkt a', function(dp) { a = dp.state.val; mittel(); }); on('ID Datenpunkt b', function(dp) { b = dp.state.val; mittel(); }); on('ID Datenpunkt c', function(dp) { c = dp.state.val; mittel(); });
-
on ({idVorheizen}, function (dp){ });
jetzt schaut er wohl laut log im Sekundentakt ob sich ein Wert geändert hat anhand vom Zeitstempel.
-
jetzt schaut er wohl laut log im Sekundentakt ob sich ein Wert geändert `
:?: Dieses Konstrukt (ID in Klammern) habe ich noch nicht probiert. Die Klammern sind jedenfalls falsch. Richtig:on (idVorheizen, function (dp){ });
-
Dieses Konstrukt (ID in Klammern) habe ich noch nicht probiert `
Das macht auch keinen Sinn.{idVorheizen}
ist in ES6 eine Abkürzung für
{idVorheizen: idVorheizen}
-
Die https://github.com/ioBroker/ioBroker.javascript/blob/master/README.md kennst Du ? Und auch die http://www.iobroker.net/docu/?page_id=5385&lang=de ? `
Diese Einführung ist in der Tat sehr gut und empfehlenswert. Was ich aber nicht finde, sind genauere Erläuterungen zu Arrays. Habe ich etwas übersehen - oder ist die Einführung einfach noch nicht fertig? (….Was das ist, schauen wir uns im Abschnitt über Arrays im Detail an ...) -
Diese Einführung ist in der Tat sehr gut und empfehlenswert.
Aber leider fehlerhaft, die Tabelle zu den logischen Operatoren betreffend:
> Eingabe ErgebnisA B A && B A || B !A
false false true false true
false true false true false
true false false true false
true true true true false `
Richtig:Eingabe Ergebnis A B A && B A || B !A false false false false true false true false true true true false false true false true true true true false
Bitte korrigieren !
-
-
Bitte kontrollieren! `
PasstSuper schnelle Reaktion 8-)
-
so weit bin ich noch nicht.
um mit Arrays zu arbeiten.
ich hab mein Script ja jetzt am Laufen mit dem BadVorheizen und mir fiel da was auf.
var BadVorheizenSchalter = "javascript.0.VirSchalterBadVorheizen"; //Virtueller Schalter muss erstellt sein var BadVorheizenSchalterZustand = getState(BadVorheizenSchalter).val; // Status aus Virtuellem schaltter lesen // Funktion wo sie heizung aktivirt wenn BadVorheizenschalter True gesetzt wird function BadVorheizenAktivieren(){ switch(BadVorheizenSchalterZustand) { case true: setState("hm-rpc.0.BidCoS-RF.1.PRESS_SHORT"); setStateDelayed(BadVorheizenSchalter, false, 2000); break; } } // Überwachung des schalters und bei True wird geschaltet on(BadVorheizenSchalter, function(dp) { BadVorheizenSchalterZustand = dp.state.val; BadVorheizenAktivieren(); });
Da ich das mit dem schedule noch nicht hinbekomme bzw. noch nicht mit befasst habe.
habe ich das ganze über ein programm in der ccu gemacht das dann die Heizung nach 20min wieder ausgeht.
funktioniert auch alles wenn ich sage Alexa Bad Vorheizen springt die Heizung an und geht nach 20 min wieder aus aber nur 2 Tage lang wenn ich es dann mache sagt Alexa okay aber es passiert nichts mehr.
Wenn ich den schalter BadVorheizen händisch auf True setze passiert auch nichts mehr.
Der schalter wieder rum in der CCU funktioniert aber noch.
wenn ich dann aber hingehe und das Script stoppe und wieder starte funktioniert es wieder und dann plötzlich nicht mehr nach ca 2 Tagen.
Habt ihr eine Lösung? oder eine Idee?
hab es jetzt erst mal mit Blockly nach gestellt.
und jetzt läuft es seit gestern mal schauen ob es wieder aussteigt.
Gesendet von meinem SM-G935F mit Tapatalk
-
Nicht sicher, ob das was damit zu tun hat, aber sollte
setState("hm-rpc.0.BidCoS-RF.1.PRESS_SHORT");
nicht
setState("hm-rpc.0.BidCoS-RF.1.PRESS_SHORT", true);
heißen?
-
ähm ja bei meinen schaltern muss es so heisen
bei der ccu weis ich gerade nicht.
werd ich gleich mal reinschrieben
Gesendet von meinem SM-G935F mit Tapatalk