Weiter zum Inhalt

Blockly

6.6k Themen 80.5k Beiträge

Hilfe für Skripterstellung mit Blockly

NEWS

  • httpGet / self-signed certificate

    10
    0 Stimmen
    10 Beiträge
    1k Aufrufe
    haus-automatisierungH
    @robitobi Habe ich für Blockly aktuell nicht geplant. Geht ja per JavaScript für die erfahrenen Nutzer.
  • Zeitplan Woche immer Sonntags um 23:00 Uhr

    5
    0 Stimmen
    5 Beiträge
    398 Aufrufe
    ubeckerU
    @codierknecht und allen anderen, danke hab es verstanden. Nur die Auswahl (Fall1) ist nicht selbst erklärlich. Kam immer etwas anderes raus. Habe es aber jetzt verstanden. Für Fall 2 kommt ein Test hinzu, schade das es das nicht so gibt.
  • Frage zu "licht an solange Bewegung" bzw PV-Überschuss

    9
    1
    0 Stimmen
    9 Beiträge
    857 Aufrufe
    paul53P
    @rikdrs sagte: der originale DP ist vom Typ "boolean" Den Alias hast du hoffentlich auch auf Typ "boolean" geändert?
  • Automatisierung auch manuel schalten ist das möglich?

    5
    1
    0 Stimmen
    5 Beiträge
    300 Aufrufe
    paul53P
    @nico-1 sagte: Blockly automatisirung gebaut Das Setzen von timeout auf null macht Blockly seit JS-Version 7.0.5 nach Ablauf der Verzögerung automatisch.
  • Blockly - Wert über einen Zeitraum prüfen *gelöst*

    8
    0 Stimmen
    8 Beiträge
    1k Aufrufe
    W
    @surfer09 sagte in Blockly - Wert über einen Zeitraum prüfen *gelöst*: @codierknecht Sorry, aber sonst bekommt man immer Kommentare zurück, dass man den Code posten soll und keine Screenshots. Irgendwie weiß man manchmal nicht, wie man es richtig machen soll.. Blockly ist da die Ausnahme, weil sonst jeder, der Dir helfen will, das XML bei sich importieren müsste, um zu sehen, was da genau wie passieren soll, oder fähig ist, sich aus dem XML die Bilder passend im Kopf zusammenzubauen. Da ist ein Bild ausnahmsweise einfacher zu lesen. Gruss, Jürgen
  • Script funktioniert nicht, Geschirrspüler.

    27
    2
    0 Stimmen
    27 Beiträge
    3k Aufrufe
    O
    Okay, danke, werde ich mir morgen mal in Aktion anschauen und wenn es nicht funktioniert, werde ich mal "Device Reminder" testen.
  • Einfache Timersteuerung mit rekursiver Prüfung

    14
    3
    0 Stimmen
    14 Beiträge
    1k Aufrufe
    paul53P
    @m1r0o sagte: so umgesetzt und auch verstanden Das Stoppen eines (nicht vorhandenen) Intervalls ist unnütz. Stattdessen muss die Schleife abgebrochen werden, wenn 50 Wiederholungen gelaufen sind. [image: 1744229103068-blockly_temp.jpg]
  • Round ohne Dezimalstellen

    31
    0 Stimmen
    31 Beiträge
    4k Aufrufe
    HALH
    @homoran ok, werde ich mir komplett durchlesen und Danke für Deine Geduld und Hilfe.
  • Pool Dosierscript PH und Chlor

    42
    1
    0 Stimmen
    42 Beiträge
    6k Aufrufe
    Q
    @ralf-2 Alles klar. Ich hab das mal entsprechend rausgenommen. Warum da 2x zirkuliere_ph" drin ist, ist eine gute Frage. Das ist mir noch gar nicht aufgefallen. @D3ltoroxp hat das einen speziellen Grund oder ist das beim Import/Export etwas schief gelaufen ? Eine zweite Frage zu deinem Script hätte ich ebenfalls noch: Warum fragst du beim Chlor Dosieren den PH Wert OK ab ? [image: 1744021236020-fc478674-e75a-4f70-a1aa-64f694fa7b07-image.png] Ich hatte dadurch heute den Effekt, dass eine Chlor Dosierung notwendig war, diese aber nicht gestartet hat, weil der PH Wert NICHT OK war. Beste Grüße
  • Anfänger - Wie mit Script beginnen

    21
    1
    0 Stimmen
    21 Beiträge
    2k Aufrufe
    CodierknechtC
    @doppellhelix sagte in Anfänger - Wie mit Script beginnen: Ich komme aus der SPS Welt. Da muss man sich dann umgewöhnen. Wie @BananaJoe schon schriebt, läuft im ioBroker (fast) alles ereignisorientiert ab. Das kann eine Änderung an einem State sein, oder z.B. auch ein Zeitereignis. GUI-Programme für Windows funktionieren übrigens genauso ... da passiert nix, solange nicht ein Ereignis eintritt. Mausklick auf einen Button, Mausbewegung, Tastatureingabe usw. Das ist letzendlich auch deutlich ressourcenschonender als ständig irgendwelche Schleifen abzuarbeiten. Wozu sollte ein Programm etwas tun, wenn gerade nix zu tun ist`? In der SPS Welt hat man eine einfachere Sprache Ansichtssache. Wer in der großen Nicht-SPS-Welt eine (fast beliebige) Sprache beherrscht, findet sich da eigentlich sofort zurecht. SPS ist nicht die Regel, sondern eher die Ausnahme. Proframmierung in FUP (Funktionsplan) kommt der Blockly Geschicht recht nahe. Ist aber in der SPS Welt m.M. nah besser gelöst Du musst Dich leider von Dingen wie Funktions- oder Ablaufplänen verabschieden. Fange an, ereignisorientiert an die Sache heranzugehen. Was ist der Auslöser (Trigger) und welche zusätzlichen Bedingungen müssen beim Eintritt desselben erfüllt sein, um etwas zu tun. und wenn jetzt noch ein "UND" oder ein "ODER" dabei kommt ....... brrrr Das ist die eigentliche Kunst. Nennt sich "bool'sche Algebra". Hat viel mit der einst so gehassten "Mengenlehre" zu tun. Das Problem hat man aber grundsätzlich mit allen modernen Sprachen. Egal ob Basic, C, Pascal, JavaScript etc.p.p. By the way (zu Deinem Screenshot): In einem Trigger muss man den Wert des "triggernden" DP nicht nochmal lesen. Der Trigger kennt "seinen Wert" bereits (wie auch alle anderen Eigenschaften des State). Für sowas verwendet man den Block "Wert" aus dem Bereich "Trigger". Vielleicht schaust Du Dir "Blockly für Dummies" nochmal an ;-)
  • Minuten Timer bis Sonnenuntergang

    8
    1
    0 Stimmen
    8 Beiträge
    403 Aufrufe
    T
    @paul53 Im Prinzip ja. Bi noch etwas am testen für die besten Offset
  • exec befehl mit root Berechtigung (SONOSAPI)

    6
    1
    0 Stimmen
    6 Beiträge
    671 Aufrufe
    J
    Hi, Ich hatte ein ähnliches Problem. Bei einem Neustart sollte ein Befehl an raspberry gesendet werden. Das PW sollte dabei mitgegeben werden. Mit blockly habe ich es nicht hinbekommen, mit Java gings. Das Skript macht folgendes. Es überprüft den Datenpunkt mpd info connect auf false. Ist dieser auf false, wird sich auf dem raspberry mit pw eingeloggt jnd der sudo Befehl abgewendet. Vielleicht hilft dir das Skript weiter. Habe dir noch einige Anmerkungen reingeschri3ben const { Client } = require('ssh2'); // Importiere die ssh2 Bibliothek // Konfiguration für den Raspberry Pi MPD (IP, Benutzername und Passwort) const raspberryMPDConfig = { host: '192.168.XXX.XX', // IP-Adresse von Raspberry Pi MPD port: 22, username: 'pi', // Benutzername auf Raspberry Pi MPD password: 'XXX' // Passwort für den Benutzer }; let sshErrorLogged = false; // Flag, um Fehler nur einmal zu protokollieren // Funktion, die den Befehl an Raspberry Pi MPD sendet function sendCommandToRaspberryMPD() { const conn = new Client(); // Verbindung zu Raspberry Pi MPD herstellen conn.on('ready', () => { // Den Befehl "sudo service mpd start" ausführen conn.exec('sudo service mpd start', (err, stream) => { if (err) { if (!sshErrorLogged) { console.error('Fehler beim Ausführen des Befehls:', err); // Fehler nur einmal loggen sshErrorLogged = true; // Fehler flag setzen } conn.end(); return; } stream.on('data', () => { // Keine Ausgabe mehr aufzeichnen }); stream.on('close', () => { conn.end(); // Verbindung schließen }); }); }).on('error', () => { if (!sshErrorLogged) { console.error('Fehler bei der SSH-Verbindung.'); // Fehler nur einmal loggen sshErrorLogged = true; // Fehler flag setzen } }).connect(raspberryMPDConfig); } // Event-Listener für den Datenpunkt mpd.0.info.connection on({ id: 'mpd.0.info.connection', val: false }, async (obj) => { let value = obj.state.val; // Der aktuelle Wert des Datenpunkts let oldValue = obj.oldState.val; // Der vorherige Wert des Datenpunkts if (value === false) { sendCommandToRaspberryMPD(); } else { sshErrorLogged = false; // Fehlerflag zurücksetzen, wenn der Wert nicht mehr false ist } });
  • Ladepriorisierung Auto / Heizstab

    6
    0 Stimmen
    6 Beiträge
    836 Aufrufe
    J
    @paul53 ich danke und werde es mir mal durchdenken, auch wenn ich es wieder nicht verstehen werde
  • Einfaches aber kluge Steuerung einer Pumpe

    9
    1
    0 Stimmen
    9 Beiträge
    855 Aufrufe
    L
    @paul53 @Codierknecht Hey, ich habe es nochmals mit dem Timeout am Anfang überprüft, dass geht auch! Warum es zuerst nicht funktioniert hat, kann ich nicht sagen. Viele Grüße
  • "Nachricht an anderes Script" - mit Ergebnissen [gelöst]

    blockly
    14
    1
    0 Stimmen
    14 Beiträge
    1k Aufrufe
    CodierknechtC
    @paul53 sagte in "Nachricht an anderes Script" - mit Ergebnissen [gelöst]: Das ist das ursprüngliche ioBroker-Konzept, das ich ausschließlich verwende. Dem schließe ich mich an. "Nachricht an Script" kann man sinnvoll eigentlich nur nach dem Motto "fire and forget" verwenden, wenn man ohne Verwendung eines State ein anderes Script "anschubsen" will aber keinen Rückgabewert benötigt.
  • MQTT über Blockly Script steuern

    12
    2
    0 Stimmen
    12 Beiträge
    926 Aufrufe
    Michael SchützM
    @paul53 Danke jetzt klappt alles.
  • Außenlicht dämmerungsgesteuert aktivieren.

    6
    0 Stimmen
    6 Beiträge
    541 Aufrufe
    da_WoodyD
    @balu-0 ich mach solche sachen über smartcontrol einschalten der terrasse versetzt der 3 lampen mit sunset. zwar kein helligkeits sensor, sondern ping über anwesenheit. sollte aber auch klappen...
  • Hilfe mit JSON-Auswertung

    3
    0 Stimmen
    3 Beiträge
    256 Aufrufe
    G
    @paul53 Ich wusste, dass es ganz einfach ist... :-) Danke für die Hilfe!
  • Blockly script funktioniert nicht mit Shelly Plug s Gen 2

    5
    1
    0 Stimmen
    5 Beiträge
    443 Aufrufe
    HomoranH
    @asgothian sagte in Blockly script funktioniert nicht mit Shelly Plug s Gen 2: Hier bist du auf den einen Fall getroffen wo Trigger im Trigger doch gehen sollte deswegen die verschwurbelte Formulierung ;-) Ich denke trotzdem, dass es einfacher zu behalten ist, dass Trigger in Triger nicht verwendet werden soll, als Einsteiger mit einzelnen Spezialitäten zu verwirren.
  • Sonnenaufgang minus 11 Stunden berechnen

    5
    1
    0 Stimmen
    5 Beiträge
    581 Aufrufe
    K
    @cinimod said in Sonnenaufgang minus 11 Stunden berechnen: vermutlich hängt es in der Zeit Umstellung das wird es vermutlich sein...

416

Online

33.0k

Benutzer

83.6k

Themen

1.3m

Beiträge