Skip to content

Blockly

6.6k Topics 79.8k Posts

Hilfe für Skripterstellung mit Blockly

NEWS

  • Datenauwertung von Sekunden in Stunden und Minuten umrechnen

    Solved
    8
    0 Votes
    8 Posts
    843 Views
    O
    Ich wollte nur kurz bescheid geben das alles funktioniert. Vielen dank nochmal.
  • Netatmo Presence wie Bewegungsmelder nutzen

    9
    2
    0 Votes
    9 Posts
    743 Views
    T
    @cinimod Das muss ich jetzt erstmal ausgiebig testen.
  • Sonos API shuffle mode

    blockly
    2
    1
    0 Votes
    2 Posts
    244 Views
    FredFF
    Eine Lösung habe ich keine bzw. habe mich aber nicht weiter damit beschäftigt Das ist das Problem... @linedancer sagte in Sonos API shuffle mode: Der Player wird bei Abwesenheit Stromlos gemacht.
  • [gelöst] bool-zu-string-skript ressourcen schonend erstellen

    6
    1
    0 Votes
    6 Posts
    351 Views
    M
    @paul53 Alles klar, besten Dank.
  • Wenn Adapterlaufzeit ist > als

    7
    1
    0 Votes
    7 Posts
    746 Views
    R
    @paul53 nein entweder 1 oder 2
  • [gelöst] JSON auslesen. Punkt im Attribut

    3
    1
    0 Votes
    3 Posts
    317 Views
    G
    Hallo Paul, super Danke hat geklappt. Hätte mal auf englisch suchen sollen :). Musste nur noch einen Schritt zusätzlich machen weil das JSON verschachtelt ist. Gruß Jörg
  • Yahka Homekit Taster als Türöffner mit Homematic

    2
    4
    0 Votes
    2 Posts
    326 Views
    paul53P
    @drloksoft sagte: passiert da ohnehin automatisch? Ja, aktivierte Skripte werden bei Neustart wieder gestartet. @drloksoft sagte in Yahka Homekit Taster als Türöffner mit Homematic: Hinweise zu meinem Türöffner? Besser mit nur einem Timer (Ressourcen): [image: 1674562819120-bild_2023-01-24_132018478.png] Muss der Taster-Datenpunkt auf false gesetzt werden?
  • [gelöst] Schreiben in Variablen Datenpunkt

    5
    0 Votes
    5 Posts
    126 Views
    FloFlaF
    Danke, das klappt. Vielen Dank für die rasche Hilfe.
  • Fehler javascript.1 (818) at Object.<anonymous>

    10
    0 Votes
    10 Posts
    705 Views
    wauzziW
    Hallo Zusammen, vielen lieben Dank für Eure zahlreichen Rückmeldungen. Sorry, natürlich hätte ich den Blockly Export in ein Code Tag einbetten müssen. Ich habe den Datenpunkt ACSetpointOVR von String in Number geändert. Jetzt scheint es zu passen. Ihr seid klasse ! Vielen Dank !!!!
  • Rauchmelder Blockly Sonoff-Bridge

    12
    1
    0 Votes
    12 Posts
    1k Views
    1Topf1
    @nefetz Normal schon, es sollte jeder Enigma2 - Receiver mit dem Enigma2 - Adapter funktionieren.
  • [Gelöst] ADS1115 Analogwert in Volt umrechnen

    19
    1
    0 Votes
    19 Posts
    2k Views
    A
    @zarello Das hängt sicher vom Anwendungsfall ab. Aber wenn ich damit z.B. die Ladekurve eine Akkuzelle steuern möchte, dann würde ich mich auf keinen Fall blind darauf verlassen. Das Datenblatt bezieht sich auch auf den IC selbst und berücksichtigt keinerlei Umgebungsparameter. Ich würde folgendes tun: Vollgeladene Zelle anschließen (Leerlaufspannung liegt am nächsten an der Ladeschlussspannung) Eine Messreihe aufzeichnen, z.B. 100 Werte bei einer Abtastung mit 10Hz Messwerte vergleichen (mit einem möglichst genauen Messgerät) und ggf. normalisieren LBS Size berechnen Liegt die gemessene LSB Size bei der erwarteten ist alles gut. Ansonsten müsste man prüfen warum nicht. Weist die Messreihe signifikante Ausreißer auf, dann würde ich das in die Auswertung einfließen lassen. Wenn nicht, dann wäre es auch ok. Ich habe mir aber angewöhnt das immer zu tun, falls sich über die Zeit Fehler einschleichen. Außerdem verbessert es die Lesbarkeit von Diagrammen wenn die Werte nicht "zittern".
  • wahr oder falsch, es erscheint die gleiche Meldung

    12
    1
    0 Votes
    12 Posts
    1k Views
    paul53P
    @xyolyp Es spart RAM, weil sendTo('pushover.0') nur einmal aufgerufen (eingefügt) wird. Es ist eine komplexe Funktion. Auf die CPU-Last, die bei Node.js ohnehin gering ist, hat es keinen Einfluss,
  • Sprachausgabe Sonos

    4
    1
    0 Votes
    4 Posts
    158 Views
    T
    @djmarc75 hallo genau habe es jetzt so gelöst: Wenn beim starten vom Skipt der Lautsprecher aus ist soll nach Verzögerung von 15 sec wieder ein false kommen.
  • [gelöst] Gestriges Datum zu best. Uhrzeit als Unix-Timestamp

    5
    0 Votes
    5 Posts
    148 Views
    David G.D
    @paul53 Cool, so klappt es. War mein Ansatz ja garnicht sooo falsch. Danke
  • BTC Benachrichtigung wenn Tausenderstelle sich ändert.

    11
    1
    0 Votes
    11 Posts
    673 Views
    paul53P
    @cinimod sagte: Hab ne Sperre gebastelt Ich dachte an solch eine Sperre: [image: 1674402657499-bild_2023-01-22_165055833.png]
  • Motioneye Bewegungserkennung abschalten

    3
    0 Votes
    3 Posts
    277 Views
    WszeneW
    @crunchip sagte in Motioneye Bewegungserkennung abschalten: @wszene sagte in Motioneye Bewegungserkennung abschalten: möchte ich gern vorher auf der VIS das ganze Abschalten https://forum.iobroker.net/post/613698 Das hat mir die Suche garnicht ausgespuckt Danke dir
  • Heizöltank Füllstand

    7
    0 Votes
    7 Posts
    654 Views
    K
    @semmy wo kommen denn die Sensordaten an? Der Sensor misst von oben auf die Öloberfläche? Der Sensor gibt den Abstand in cm aus? Dann braucht es noch den Sensorwert in cm bei vollem Tank. Man trigget auf den Datenpunkt des Sensorwerts https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#on---subscribe-on-changes-or-updates-of-some-state Man rechnet dann von Abstand Sensor zur Öloberfläche auf Füllstandshöhe (Level) um und füttert damit die function getVolume Das könnte funktionieren, konnte es aber nicht testen. Habe ja andere Datenpunkte. Und es ist meine Tanktabelle drin, mußt durch Deine ersetzen // Interpolation Tanktabelle // Tabelle Hans Tank 10 000 Liter /* Testscript currently not needed var res = null; { for (let x=-1; x<182; x=x+17.3){ res = getVolume(x); console.log('x: ' + x + ' Volume: ' + res); }; console.log('Test program executed'); }; Testscript currently not needed */ const sensorValueInCmId = 'hierMussDieAdresseDesDatenpunktsRein'; // richtige Adresse eintragen const tankVolumeLiterId = '0_userdata.0.power.tank.tankinhalt'; const abstandSensorZuOeloberflaecheWennVollInCm = 30; // richtigen Wert eintragen const maximaleTankfuellHoehe = 119; // aus Peiltabelle // Datenpunkt für Tankinhalt erzeugen createState(tankVolumeLiterId, undefined , false, { name: tankVolumeLiter, desc: 'total quantity in liter', type: 'number', unit: 'Liter', role: 'value' }); on(sensorValueInCmId, function (dp) { let sensorDistanceValue = dp.state.val; let distanceSensorToSurface = sensorDistanceValue - abstandSensorZuOeloberflaecheWennVollInCm; let fuellHoehe = maximaleTankfuellHoehe - distanceSensorToSurface; let tankInhalt = getVolume(fuellHoehe); setState(tankVolumeLiterId, tankInhalt); }); function getVolume(myLevel){ const tankVolume = [0, 8.409859784, 23, 43.5318943, 65, 93.30470164, 119, 153.9586423, 184, 223.5705811, 257, 300.8977322, 337, 385.04257, 424, 475.3122288, 510, 571.1472806, 615, 672.0811422, 718, 777.7149676, 827, 887.7011452, 939, 1001.731933, 1056, 1119.531332, 1177, 1240.849092, 1301, 1365, 1429, 1494, 1559, 1624, 1691, 1760, 1829, 1898, 1968, 2039, 2110, 2182, 2255, 2328, 2402, 2477, 2552, 2627, 2702, 2778, 2855, 2932, 3010, 3088, 3166, 3244, 3323, 3402, 3482, 3562, 3642, 3722, 3803, 3884, 3965, 4046, 4127, 4209, 4291, 4373, 4455, 4537, 4619, 4701, 4783, 4865, 4947, 5029, 5111, 5193, 5275, 5357, 5439, 5521, 5603, 5685, 5767, 5849, 5931, 6013, 6094, 6175, 6256, 6337, 6418, 6498, 6578, 6658, 6738, 6817, 6896, 6974, 7052, 7130, 7208, 7300, 7362, 7438, 7513, 7588, 7663, 7738, 7812, 7885, 7958, 8030, 8101, 8172, 8242, 8311, 8380, 8449, 8516, 8581, 8646, 8711, 8775, 8839, 8902, 8963, 9024, 9084, 9143, 9201, 9258, 9313, 9368, 9422, 9474, 9525, 9575, 9624, 9671, 9716, 9760, 9803, 9844, 9883, 9921, 9956, 9990, 10021, 10049, 10075, 10098, 10117, 10132, 10140, ]; const minLevel = 0; // min index const maxLevel = tankVolume.length -1; // max index let volume = 0; if(myLevel >= minLevel && myLevel <= (maxLevel +0.5)){ let truncLevel = Math.trunc(myLevel); if(truncLevel == maxLevel) { volume = tankVolume[truncLevel]; // top of table. Interpolation neither necessary nor possible } else { // inertpolation according https://en.wikipedia.org/wiki/Line_(geometry) ; https://de.wikipedia.org/wiki/Zweipunkteform /* y = (x-x1) * (y2-y1)/(x2-x1) +y1 y : volume */ let x = myLevel; let x1 = truncLevel; let x2 = truncLevel + 1; let y1 = tankVolume[x1]; let y2 = tankVolume[x2]; volume = (x-x1) * (y2-y1)/(x2-x1) +y1; }; return volume; } else{ // level out of range console.log('Error, level out of range: ' + myLevel); return null; }; };
  • [gelöst] DP beschreiben, wenn Wert zwischen >x und < y ist

    19
    2
    0 Votes
    19 Posts
    934 Views
    bahnuhrB
    @darkblu sagte in DP beschreiben, wenn ein Wert zwischen >x und < y ist: könntest du mir noch kurz erklären, was gegen den MHZ19B spricht ? Ich hatte immer Aussetzer nach oben; deshalb nehm ich diesen nicht mehr. Bin jetzt umgestiegen auf senseair S8; klappt viel besser.
  • Ständig änderte zahlen Addieren

    4
    0 Votes
    4 Posts
    295 Views
    D
    @paul53 Danke Super das haut hin . Vielen Dank
  • Nach Änderung von Wert -> Timer, Re-Check & Aktion

    6
    1
    0 Votes
    6 Posts
    467 Views
    H
    Als Abschluss für den Thread und weil ich mich bedanken möchte und interessierten Lesern später zeigen möchte, wie ich das zb. für meine Spülmaschine gelöst habe: [image: 1674285906569-e45dc7df-9d84-4250-8d5c-f60b6bfb3da3-image.png] Da ich zum einen ab und an komische Werte > 0W hatte, die entweder an dem Gerät, der Steckdose oder einfach daran liegen, dass jemand kurz die Maschine startet und das Programm dann doch nicht aktiviert, habe ich mich entschlossen einen Mechanismus einzubauen, der eben auch berücksichtigt, ob die Maschine bzw. das Programm ernsthaft gelaufen ist: Wenn ein Wert sich ändert und er ist über 100W (als Beispiel), dann können wir davon ausgehen, dass ein Programm läuft => Wir setzen eine definierte Variable auf "WAHR". Wenn ein Wert >0 aber < 100W als Veränderung gesehen wird, wird ein ggfs. laufender Timer gestoppt - ansonsten passiert nichts. Wenn eine Veränderung des Wertes dazu führt, dass der Wert 0 ist UND die definierte Variable "WAHR" ist, wird eine Nachricht geschickt - die Variable wird dann wieder auf "FALSCH" gesetzt. In dem Stil werde ich es auch mit der Waschmaschine machen und anderen Geräten, die in einem Programm ablaufen und als Kennzeichen haben einen gewissen Schwellwert (zb. für das Heizen) stets zu überschreiten - kleine Verbräuche die aus unterschiedlichsten Gründen auftauchen können, werden ignoriert.

348

Online

32.8k

Users

82.8k

Topics

1.3m

Posts