Skip to content

Blockly

Hilfe für Skripterstellung mit Blockly

6.5k Themen 79.3k Beiträge

NEWS

  • Script funktioniert nicht, Geschirrspüler.

    27
    2
    0 Stimmen
    27 Beiträge
    2k 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
    818 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
    3k 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
    5k 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
    327 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
    487 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
    462 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
    680 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
    784 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
    552 Aufrufe
    Michael SchützM
    @paul53 Danke jetzt klappt alles.
  • Außenlicht dämmerungsgesteuert aktivieren.

    6
    0 Stimmen
    6 Beiträge
    417 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
    228 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
    317 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
    453 Aufrufe
    K
    @cinimod said in Sonnenaufgang minus 11 Stunden berechnen: vermutlich hängt es in der Zeit Umstellung das wird es vermutlich sein...
  • Blockly Script Zeitgesteuert mit Bewegungsmelder

    blockly
    36
    1
    0 Stimmen
    36 Beiträge
    9k Aufrufe
    T
    @paul53 Danke (das "Problem" mit dem Tagesübergang umgehst du ja clever mit der Negierung und genutztem Zeitrahmen vom Sonnenaufgang bis Sonnenuntergang ;-) )
  • Nach Schaltung von Aktoren Bestätigung

    blockly monitoring
    11
    0 Stimmen
    11 Beiträge
    1k Aufrufe
    paul53P
    @drapo sagte: Auslösung durch bestätigte Änderung korrekt? Ja.
  • Hat mein iObroker einen Fehler?

    8
    1
    0 Stimmen
    8 Beiträge
    523 Aufrufe
    K
    @homoran wozu benötige ich einen Trigger, es waren nur Funktionen die getestet wurden. Den Trigger habe ich später eingebaut und dann die Funktionen aufgerufen
  • Überwachen ob Heizung anfängt zu heizen.

    3
    1
    0 Stimmen
    3 Beiträge
    310 Aufrufe
    O
    @paul53 said in Überwachen ob Heizung anfängt zu heizen.: Anmerkung: 2 K/min ist ein sehr schneller Temperaturanstieg. Liefert das der Sensor? Ja, innerhalb einer Minute wird die Temperatur um mindestens 2°C aktualisiert, es können aber auch Sprünge von mehr möglich sein. Es kommt auf die Heizleistung an, wie schnell die Heizung hochheizt. Möglich, dass noch feiner Einstellungen notwendig sind, die Tests werden es zeigen. Natürlich wieder ein dickes Danke an Dich und wie gewünscht ging auch ein Danke per PP an ioBroker
  • [Gelöst] Baustein Pause mit einer Variablen steuern

    10
    0 Stimmen
    10 Beiträge
    588 Aufrufe
    K
    Manchmal sieht man den Wald vor lauter Bäumen nicht. In den Block Pause kann man auch den Namen der Variablen eintragen :-) [image: 1743257019115-pause.jpg] VG Krodon

566

Online

32.7k

Benutzer

82.4k

Themen

1.3m

Beiträge