Skip to content

Skripten / Logik

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

16.5k Topics 213.4k Posts

NEWS

Subcategories


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Topics
    49k Posts
    P
    @ArnoD sagte in E3DC Hauskraftwerk steuern: @azzkikrboy Hierfür brauchst du den Adapter ‚Energiefluss-erweitert‘. Damit lässt sich der Energiefluss richtig schick grafisch darstellen. Die Konfiguration ist zwar etwas zeitaufwendig, aber die Mühe lohnt sich definitiv für das Design! ;) [image: 1770554279240-video-project.gif] Sieht sehr gut aus, hab ich bei mir auch mal ausprobiert. Leider funktioniert das nicht mit der Android VIS-App. Lösung wäre nur der Kiosk Browser aber das ist mir zu umständlich. Schade :-(
  • Hilfe für Skripterstellung mit Blockly

    7k 79k
    7k Topics
    79k Posts
    L
    Ja, sollte gehen.
  • Hilfe für Skripterstellung mit Node-RED

    953 13k
    953 Topics
    13k Posts
    Marc BergM
    Es gibt in der Verson 1.3.0 einen neuen Node: iob-setObject (Stand 10.02.26 noch beta) Mit dem neuen Node kann man ioBroker-Objektdefinitionen (Metadaten) direkt schreiben und ändern. Hauptfunktionen: Instanz-Konfigurationen ändern - z.B. MQTT publish-Pattern, Intervalle, etc. Objekt-Eigenschaften aktualisieren - Namen, Rollen, Einheiten, Min/Max-Werte ändern es gibt zwei Modi: Merge-Modus : Ändert nur die angegebenen Eigenschaften, alle anderen bleiben erhalten Replace-Modus: Überschreibt das komplette Objekt Typischer Workflow: Objekt mit iob-getobject holen Mit Change-Node gewünschte Properties ändern Mit iob-setobject zurückschreiben
  • Javascript Wecker (1 Std vor Beginn eines Kalendereintrags)

    Moved
    2
    0 Votes
    2 Posts
    1k Views
    E
    Habe es hinbekommen (über Cronjob x Minuten vor dem Event). Falls noch jemand ähnliches vor hat, hier der Code. ! schedule("15 5 * * *", function () { // Weckzeit hier einstellen (Bsp: 05:15) - Dann wird der Cronjob gestartet ! var kalender = getState("ical.0.data.html").val; ! var suche_heute = kalender.indexOf('Heute'); ! var wecker = kalender.slice((suche_heute + 6), (suche_heute + 11)); ! if (wecker == "06:00") ! { ! setState('hue.0.Philips_hue.Schlafzimmer.on', true); ! } ! log(kalender); ! log(suche_heute); ! log(wecker); ! }); Im Codebeispiel wird davon ausgegangen dass das Event (Frühschicht) als einziges Event für den heutigen Tag im Kalender mit Startzeit 06:00 Uhr eingetragen ist und "Zeit als Wort anzeigen" in den Adaptereinstellungen aktiviert ist. Der Wecker soll um 05:15 Uhr das Licht im Schlafzimmer anschalten. Dazu wird um 05:15 Uhr der Cronjob gestartet und geprüft ob ein Event mit Beginn 6 Uhr existiert, wenn ja dann geht das Licht an. Wenn nicht, dann passiert nichts. Für weitere Wecker einfach ein weiteres Script mit anderen Zeiten erstellen.
  • (Gelöst) Blockly - wahrscheinlich bin ich zu doof

    Moved
    3
    0 Votes
    3 Posts
    798 Views
    E
    Das war´s. Wieder was gelernt :) . Danke Dutch.
  • JSON

    Moved
    4
    0 Votes
    4 Posts
    1k Views
    R
    Danke. Das funktioniert. Ich habe nach bestem wissen nach der korrekten Syntax gesucht data[0] in eckige Klammer zu setzen habe ich nicht vericht. Ich habe runden klammern verwendet. Jetzt komme ich weiter. Prima.
  • [gelöst] JSON - prüfen ob Wert vorhanden ist

    Moved
    7
    0 Votes
    7 Posts
    3k Views
    bahnuhrB
    Hallo, danke für eure Hinweise. Habe es jetzt so gelöst: if (obj.timer.next) { setState('javascript.0.Status.Mähroboter.Timer.next_date', obj.timer.next.date.substr(0,obj.timer.next.date.length-4)); setState('javascript.0.Status.Mähroboter.Timer.next_time', obj.timer.next.time.substr(0,obj.timer.next.time.length-3)); } else { log ('Mähroboter: - next: date und time - kann nicht gelesen werden.'); } Klappt wunderbar. mfg Dieter
  • [gelöst] Blockly Auslöser 0 Prozent

    Moved
    3
    1
    0 Votes
    3 Posts
    964 Views
    S
    Hallo Rantanplan, manchmal ist die Lösung so einfach. Aber ich habe Sie halt nicht gefunden. Danke für deinen Tipp :-) Funktioniert nun einwandfrei… Danke Gruß Sven
  • [Gelöst] Wie Geo-Position (Länge/Breite) in Javascript abfragen?

    Moved
    3
    0 Votes
    3 Posts
    944 Views
    D
    Jupp, das klappt. Dank!
  • 0 Votes
    1 Posts
    491 Views
    No one has replied
  • Wie einfache Zeitschaltung?

    Moved
    34
    1
    0 Votes
    34 Posts
    9k Views
    M
    Hallo. Da es in dem ursprünglichen Beitrag ebenfalls um eine Blocky Zeitschaltuhr ging hatte ich gedacht ich klinke mich in das Thema mit ein. Wollte hier ja nicht für Unordnung sorgen. Was ich genau möchte hatte ich ja bereits geschrieben. Aus der Reihe manuell schalten und die Zeitschaltuhr soll erst nach einer Zeit x den Zustand erneut prüfen und ggf korrigieren. Nicht bereits nach 1 Minute. Werde selber noch mal versuchen die Sache auf die Kette zu bekommen. Ansonsten muss ich halt einen neuen Thread auf machen. Gruß Markus Gesendet von meinem HUAWEI NXT-L29 mit Tapatalk
  • [gelöst]Daten splitten und Ausgängen zuweisen

    Moved
    2
    1
    0 Votes
    2 Posts
    1k Views
    T
    Ich denke ich habe es gefunden… Durch weglassen der eckigen Klammern bei " return [ outputMsgs ]; " werden die Daten entsprechend der Ausgänge zugewiesen.
  • Allgemeine Frage zur Umsetzung / Bin ich hier richtig?

    Moved
    3
    0 Votes
    3 Posts
    856 Views
    apollon77A
    Um die originale Frage zu beantworten: Du brauchst ein einfaches JavaScript-chen oder Blockly-Skript um genau das von Dir genannte "aufbereiten" der Daten zu machen, Das Ergebnis schreibst Du in neue States die dann unter z.B. javascript.0.xyz liegen und die kannst Du dann in VIS anzeigen
  • Blockly runterdimmen

    Moved
    8
    1
    0 Votes
    8 Posts
    2k Views
    P
    Danke für die Antwort. Ja die Variable ist zu Anfang leer (habe sie jetzt aber sicherhaltshalber mal auf 0 gesetzt zu Anfang.) Im Prinzip ist das ja richtig (wenn ich z.B. die Streifen mit dem Tablet anmache überschreibt der Schalter diesen Wert sonst), aber in diesem Fall wäre es erstmal egal. Ich bin dem Problem aber weiter auf der Spur und habe nun evtl. eine Lösung. Und zwar habe ich zwave.0.NODE2.CONFIGURATION.Time_to_complete_the_entire_transition_(for_MODE_2) von 68 auf 10 gesetzt. Dadurch läuft das Dimmen beim Einschalten viel schneller ab, aber das Programm funktioniert nun. Evtl. dimmt der Fibaro Controller zu langsam hoch, sodass iobroker "denkt" das der Befehl nicht ausgeführt wurde und dann wieder zurücknimmt? Naja nun gibt es aber ein neues Problem: Die Zeit bis der LED Controller auf den Tastendruck reagiert ist sehr lang. Beim ersten Tastendruck ( 0 => 10% reagiert der Controller quasi sofort, aber dann läuft es teilweise mit 10 Sekunden verzögerung ab. An was kann es liegen? Macht es einen Unterschied, ob ich direkt den Zustand beim Taster abfrage ("Falls Objekt XY ist wahr") oder Abfrage ob es eine Änderung gibt (wurde aktualisiert) und danach nochmal mit einem If Prüfe ob der Taster gedrückt wurde? Edit: Nachdem es mittlerweile gar nicht mehr reagiert hat (Die Ausgangswerte in iobroker haben sich zwar geändert, die Controller aber nicht mehr reagiert) und ich alles neugestartet habe (nur die Controller neuzustarten bzw. den Adapter zu resetten etc. reichte nicht) geht es nun recht und ohne Zeitverzögerung. Ich werde nun mal weiter testen ;)
  • Homematic LED Dimmer HM-LC-Dim1PWM-CV mittels Taster dimmen

    Moved
    4
    0 Votes
    4 Posts
    4k Views
    S
    Hi Pix, hatte ich leider schon erfolglos probiert. Siehe verlinktes Thema im Startpost.
  • [gelöst]Script nicht unter Objekte sichtbar

    Moved
    31
    0 Votes
    31 Posts
    4k Views
    HomoranH
    @Superdad: Betreff lässt sich ja nicht ändern? ` Doch! Deinen Initialpost editieren und vorne dran [gelöst] schreiben
  • EBus Befehl über script absetzen

    Moved
    1
    0 Votes
    1 Posts
    897 Views
    No one has replied
  • [gelöst] net.connect() Fehler lässt Javascript Adapter abstürzen.

    Moved
    5
    0 Votes
    5 Posts
    1k Views
    D
    Problem gelöst. Aufrufe von nicht erreichbaren Dienste innerhalb von net.connect() führt zum Absturz des Javascript Adapters. Ich habe es nun etwas umformuliert. Hierbei greift nun auch der Error Handler. Auf diesem Wege habe ich auch direkt einen Timeout-Schutz hinzugefügt. Vielleicht kann es jemand gebrauchen ;-) var net = require('net'); function readTelnet3083() { var client = new net.Socket(); client.setTimeout(1000, function() { client.destroy(); }); client.connect(3083, function() { console.log("Verbunden"); }); client.on('data', function(data) { ... ... Hier wird die Telnet Ausgabe geparsed ... }); client.on('end', function () { console.log('Daten ausgelesen'); }); client.write('command 1\n'); client.write('command 2\n'); client.end(); client.on('error', function(err) { client.destroy(); console.log('Telnet Server nicht erreichbar. Telnet Neustart'); exec('/etc/init.d/telnetservice restart'); }); } setInterval(function() { readTelnet3083(); }, 60000); Werde noch den Thread-Titel anpassen, da dieser ja nun überhaupt nicht mehr passt ;-)
  • 433 Mhz Funksteckdose mit Skript will nicht

    Moved
    12
    0 Votes
    12 Posts
    2k Views
    AlCalzoneA
    @Matze1708: Aber braucht man diese Konstellation überhaupt? Kann man das nicht über ein skript erledigen? ` Du kannst natürlich ein Skript bauen "Steckdose_an", in dem nur die exec-Befehle stehen und eins "Steckdose_aus", in dem die Befehle zum Ausschalten sind. Die kannst du von Hand starten und wieder stoppen. Die sauberere Variante (wie in artecks Skript) ist aber ein Datenpunkt, der entweder true oder false ist (an oder aus) und von einem Skript überwacht wird. Erkennt das Skript, dass der Datenpunkt true ist, werden die an-Befehle gesendet, sonst die aus-Befehle. –- "javascript.0.scriptEnabled.Skripte.Funksteckdosen.2Dose_dummy" als Datenpunkt-Name ist aber ungünstig. Wo hast du das her? scriptEnabled.*** steht eigentlich für den Zustand (aktiviert /deaktiviert) von Scripts. Geeigneter wäre ein Name wie "javascript.0.Funksteckdosen.2Dose_Status".
  • [GELÖST] id Übergabe an Function klappt nicht

    Moved
    8
    0 Votes
    8 Posts
    1k Views
    M
    Danke an alle für die Hilfe. Da hatte ich am Anfang wohl Tomaten auf den Augen. Die Idee mit den 5s habe ich direkt auch übernommen. Gruß Michael
  • Frage zu Blockly, MP3 Gong und Dimmer

    Moved
    6
    0 Votes
    6 Posts
    2k Views
    rellikR
    Manchmel steht man einfach nur auf dem Schlauch, oder sieht den Wald vor lauter Bäumen nicht! ;-) Danke!
  • [gelöst] Homematic Systemvariable / State nicht auslesbar?

    Moved
    6
    0 Votes
    6 Posts
    1k Views
    DutchmanD
    @peter_muc_one: @Blackmike: deineVariable= getState ("IDvonDeinerSystemvariablen").val; dann tuts des. greetz black der bei object.object darauf wettet, das das .val fehlt. ` Ganz blöde Anfänger frage, wo muss ich das hinschreiben? ` -Javascript Adapter installieren Dan bekommst du eine Instanz um derartige scripte zu implementieren –----------------------- Send from mobile device
  • [Gelöst] Wird das Script bei Neustart ausgeführt ?

    Moved
    14
    0 Votes
    14 Posts
    2k Views
    paul53P
    @dwm: Aber: Triggert das on() auch, wenn evt. der S7 schon da wäre? ` Habe das Skript ergänzt. @dwm: Das alive kommt alle 5 Sekunden…Evtl noch ein change:"ne" in das on() rein ` Ja, ist ebenfalls ergänzt.

438

Online

32.6k

Users

82.3k

Topics

1.3m

Posts