Skip to content

Skripten / Logik

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

16.6k Topics 214.2k Posts

NEWS

Subcategories


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Topics
    49k Posts
    T
    KI Antwort: Das Problem in deinem Skript ist klar: Du versuchst remote.start abzufangen und mit setState(MOWER_START, false) zurückzusetzen. Das funktioniert nicht, weil der Navimow-Adapter den Startbefehl sofort an die API sendet, bevor dein Skript ihn zurücksetzen kann. Deshalb fahren Tor und Mäher gleichzeitig los. Die Lösung: Einen eigenen Trigger-Button verwenden statt remote.start abzufangen. Hier das korrigierte Skript: // Garage + Mäher Steuerung const ROLLO = 'hm-rpc.0.OEQ0550361.1.LEVEL'; const MOWER_START = 'navimow.0.21EAB2545Y4281.remote.start'; const MOWER_STATUS = 'navimow.0.21EAB2545Y4281.status.state'; const TRIGGER = '0_userdata.0.Garage_Maeher_Start'; // Trigger-Datenpunkt erstellen (diesen Button auf dein Tablet legen) createState(TRIGGER, false, { name: 'Mäher mit Garagentor starten', type: 'boolean', role: 'button', read: true, write: true }); let running = false; let watcher = null; on({id: TRIGGER, change: "any", ack: false}, async function (obj) { if (obj.state.val !== true || running) return; running = true; // 1. Tor öffnen setState(ROLLO, 100); log("Tor öffnet"); // 2. Warten bis Tor komplett offen (2 Minuten) await wait(120000); // 3. Mäher starten log("Starte Mäher"); setState(MOWER_START, true); // 4. Rückkehr überwachen if (watcher) unsubscribe(watcher); watcher = on({id: MOWER_STATUS, change: "ne"}, async function (state) { if (state.state.val === "isDocked" && state.state.ack) { log("Mäher ist zurück"); unsubscribe(watcher); watcher = null; // 5. Warten bis Mäher in Garage (2 Minuten) await wait(120000); // 6. Tor schließen setState(ROLLO, 0); log("Tor schließt"); running = false; } }); }); Was ist anders: Eigener Trigger-Button (0_userdata.0.Garage_Maeher_Start) -- diesen Datenpunkt legst du auf dein Tablet statt remote.start. Der Mäher wird erst nach 2 Minuten Wartezeit gestartet, nicht sofort. change: "ne" beim Status-Watcher -- reagiert nur auf tatsächliche Statusänderungen, nicht auf wiederholte Werte. ack-Prüfung -- state.state.ack === true stellt sicher, dass nur bestätigte Statusänderungen vom Gerät verarbeitet werden. running-Flag -- verhindert, dass der Ablauf doppelt gestartet wird. So richtest du es ein: Skript in ioBroker JavaScript-Adapter einfügen und starten Der Datenpunkt 0_userdata.0.Garage_Maeher_Start wird automatisch erstellt Diesen Button auf dein Tablet (z.B. in VIS oder Lovelace) legen remote.start direkt nicht mehr als Auslöser verwenden -- wenn du den Mäher ohne Garage starten willst, kannst du remote.start weiterhin normal nutzen
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Topics
    80k Posts
    R
    OK, Danke.
  • Hilfe für Skripterstellung mit Node-RED

    954 13k
    954 Topics
    13k Posts
    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
  • [gelöst] channelID hat keinen Wert

    javascript blockly
    23
    2
    0 Votes
    23 Posts
    1k Views
    M
    @paul53 Super. Mache ich. Vielen Dank.
  • 0 Votes
    4 Posts
    585 Views
    N
    So ich setzte den Thread mal auf closed. Ich habe den Fehler zwar nicht gefunden, aber ich habe alle Datenpunkte, alle Aufzählungen und das Script einfach nochmal neu aufgebaut und nun funktioniert es. Es sieht eigentlich genauso aus wie vorher aber das Verhalten ist jetzt ein anderes. Ich kann selbst nicht erklären wieso. Liebe Grüße
  • Subscribe wenn Wert gleich

    javascript
    3
    0 Votes
    3 Posts
    337 Views
    D
    Danke, probier ich mal aus
  • [gelöst] Alexa spricht nicht, Wert SPEAK wird aber gesetzt

    node-red
    5
    0 Votes
    5 Posts
    323 Views
    F
    @deriobroker Markiere bitte noch das Thema in der Überschrift des ersten Beitrags als [gelöst].
  • Waschmaschinen Skript - alte Waschmaschine

    blockly monitoring
    21
    1
    0 Votes
    21 Posts
    2k Views
    paul53P
    @Sebastian-0 sagte: dass jedes mal sobald die Maschine auf 2W gesprungen ist eine Nachricht kam. Dann ist die Verzögerungszeit von 20 s zu kurz. Sie muss größer sein als die längste Pause (2 W).
  • Tasmota Pulsetime per Script oder Widget?

    javascript blockly node-red template
    10
    0 Votes
    10 Posts
    2k Views
    D
    @FredF top, danke
  • Hilfe für Schleife

    Moved javascript
    22
    0 Votes
    22 Posts
    4k Views
    NegaleinN
    @pix sagte in Hilfe für Schleife: Habs geändert: neuer Code für Wunderground 3.1.1 Hallo Pix! Mir ist gerade aufgefallen, dass das Script seit 4.8. 21:50 Uhr nicht mehr aktuakisiert. Beim DP javascript.0.Wunderground.Regenvorschausteht noch immer der Wert vom 4.8. [image: 1596897164022-objects-iobroker-8.png] Unter weathunderground.0wird jedoch der aktuelle Wert angezeigt. [image: 1596897349651-objects-iobroker-7.png] Script /* Wunderground Regen {1} Abfrage des Weatherunderground Adapters im Bereich Vorhersage, wann der nächste Regen erwartet wird. {1} Findet in den forecastHourly-Datenpunkt den ersten Regen-Eintrag Ausgabe in Text ("kein Regen", "X Stunden (X% [Wahrscheinlichkeit])") {1} {1} {1} http://forum.iobroker.net/viewtopic.php?f=21&t=3447#p31858 {1} 01.08.2016 erstellt von Pix unter Nutzung des obigen Skriptes 28.06.2017 Korrekturen 12.07.2017 Fehler abfangen und Typ Variable auf String geändert 06.03.2019 Code optimiert berücksichtigt Niederschlag in der aktuellen Stunde (Stunde 0) 11.06.2019 auf neue Datenpunkte angepasst für weatherground-Adapter (getestet V3.0.11) 04.08.2019 geändert für Wunderground Adapter 3.1.1 */ const vorstd = 36; // Vorschau in Stunden (weatherundergroudn bietet neuerdings bis 36h Vorschau), kann hier auch kleiner sein const idRegen = "javascript."+ instance + ".Wunderground.Regenvorschau"; // Ziel-Datenpunkt const wunder_inst = "weatherunderground.0."; // Weatherground-Adapter Instanz const logging = false; const fC = false; // nicht dauerhaft auf true stehen lassen. Wegen AAsynchronität dann keine Werte. createState(idRegen, "kein Regen", fC, { name: "Regenvorschau", dec: "Wann gibt es den nächsten Regen", type: "string", role: "text" }); function berechneZeit() { if (logging) log("Berechne Dauer in Stunden bis zum nächsten Regen"); let i = 0; let data; // leer let pop; // leer for (i=0 ; i<vorstd; i++) { if (getState(wunder_inst + "forecastHourly." + i + "h.precipitation").val > 0) { data = getState(wunder_inst + "forecastHourly." + i + "h.precipitation").val; pop = getState(wunder_inst + "forecastHourly." + i + "h.precipitationChance").val; if (logging) log("Regeneintrag gefunden bei " + i + "h " + data + "mm"); if (i == 0) { // wenn jetzt Regen if (logging) log("In dieser Stunde werden " + data + "mm Regen erwartet (Wahrscheinlichkeit " + pop + "%)"); setState(idRegen, "jetzt (" + pop + "%)"); } else { if (logging) log("In " + i + " Stunden werden " + data + "mm Regen erwartet (Wahrscheinlichkeit " + pop + "%)"); setState(idRegen, i + " Stunden (" + pop + "%)"); } i=vorstd; // beim ersten Auftreten der Regenwahrscheinlichkeit über 0 abbrechen } if ((i == vorstd) && (pop === 0)) { setState(idRegen, "Kein Regen erwartet (" + pop + "%)"); if (logging) log("Kein Regen erwartet (" + pop + "%)"); } } } // bei jeglicher Aktualisierung von Weatherunderground Berechnung starten on({ id: /^weatherunderground\.[0-9]+\.forecast.*\.[0-9]+h\.precipitation$/, // forecastHourly, forecastDaily, forecast change: "any" }, berechneZeit); // bei Skriptstart berechneZeit(); Weatherunderground läuft in 3.2.1 Hast du eine Idee?
  • Lichtsteuerung mit Bewegungsmelder und Vis-Button

    blockly scenes
    18
    1
    0 Votes
    18 Posts
    2k Views
    P
    @paul53 Ich konnte nun das Script komplett zum Laufen bringen. Und zwar steuere ich nicht mehr den dimmer state sondern den bri (brightness) state der Lampen. Dieser wird beim synchronisieren nicht mehr abgeändert. Ich danke dir für deine Hilfe :)
  • Text2Command "Ich verstehe [xxx] nicht" in Gruppen

    communication
    2
    0 Votes
    2 Posts
    327 Views
    J
    Gibts hier keine Möglichkeit das abzustellen? Würde in der Gruppe gerne normal kommunizieren können ohne, dass der Bot ständig dazwischenfunkt!
  • Osram Smart+ - Einschalten erkennen

    javascript monitoring
    1
    0 Votes
    1 Posts
    204 Views
    No one has replied
  • Gelöst - Eigene States unter 0_userdata.0 ohne Workar ...

    javascript
    4
    0 Votes
    4 Posts
    266 Views
    GlasfaserG
    @Peoples sagte in Eigene States unter 0_userdata.0 ohne Workaround möglich?: Dann war ich wohl doch zu dumm zum suchen. Nein ... alles gut ;)
  • [GELÖST][Hilfe] Acer V7850 Beamer ansteuern HTTP request

    Moved
    6
    0 Votes
    6 Posts
    1k Views
    R
    @Kev0 Was hast du für Einstellungen verwendet, bei meinem P5530 krieg ich nix rein... bin mir aber auch nicht sicher ob mein Projektor PJLink unterstützt...?
  • TP-Link Schalter schalten in Abhängigkeit von Marker

    blockly
    3
    3
    0 Votes
    3 Posts
    164 Views
    E
    @paul53 Hallo, danke, ich habe es gerade hinbekommen. Es ist auch nicht steuere sondern umschalten, wahrscheinlich weil die Steckdose als Rolle "switch" hat. Hier mal wie es geht (ein wenig aufgebläht mit einer Vorabfrage über den augenblicklichen Zustand): [image: 1596572966973-bc648599-ff3c-46f8-8e9f-921fe1b5115c-image.png]
  • verschiedene Datenpunkte in eine Tabelle schreiben

    blockly javascript monitoring
    14
    0 Votes
    14 Posts
    2k Views
    Basti97B
    Hat jemand eine Lösung um die true und false "Datenpunkte" in grün und rot umzuwandeln. Was muss man im JavaScript dafür ändern.
  • Npm Modul kann nicht gefunden werden

    javascript
    7
    0 Votes
    7 Posts
    410 Views
    N
    Hallo Das habe ich auch schon versucht aber das hat nicht geholfen. Ich nehme mal an das das Modul nicht zur aktuellen API passt. Gruß NetFritz
  • Anfänger wie skript ob rock und iobroker alive

    monitoring
    3
    0 Votes
    3 Posts
    224 Views
    B
    @paul53 OK, hätte ich mit einem Raspberry 4 mit Pihole wie geht dies dann für "blöde"? Danke.
  • Kamera Motion (onvif) triggert script zu schnell

    javascript
    4
    0 Votes
    4 Posts
    492 Views
    paul53P
    @ToxiN sagte: er nur max alle 2 Sekunden trigger darf/kann ? const fs = require('fs'); var timer = null; on({id: "onvif.0.192_168_178_69_80.message.ruleengine.cellmotiondetector.motion.value", change: "any"}, function (obj) { if(!timer) { timer = setTimeout(function() { timer = null; }, 2000); // 2 s // Hier der Rest } });
  • Torsummer von extern öffnen

    blockly javascript security communication
    6
    0 Votes
    6 Posts
    461 Views
    Thomas BraunT
    Ich glaube auch nicht, dass der Postbote Bock hätte sich per Telefon irgendwo einzuloggen um das Tor aufzumachen.
  • Timestamp in Skript mit aktueller Zeit vergleichen

    blockly
    10
    1
    0 Votes
    10 Posts
    2k Views
    NovalisN
    @paul53 Alles klar. Ich danke euch. Mal gucken, ob hier morgen gesaugt wurde, wenn ich heim komme. :blush: Ergänzung: Funktioniert, wie geplant!
  • (gelöst) Shelly 1 zur Rollladenbedienung

    javascript blockly
    2
    1
    0 Votes
    2 Posts
    196 Views
    C
    @chrbo80 Hallo, habe nochmal den morgen gegooglet und folgendes über die Konsole des shellys eingestellt SwitchMode 3 pulsetime 1 Damit habe ich jetzt den Taster, indem ich den DP Power auf true setze und er innerhalb 100ms wieder auf false umspringt. Falls es noch jemanden gibt, der das so umsetzen will, wäre das meine Lösung... Schönen Sonntag!

497

Online

32.7k

Users

82.6k

Topics

1.3m

Posts