Weiter zum Inhalt

Blockly

6.6k Themen 79.8k Beiträge

Hilfe für Skripterstellung mit Blockly

NEWS

  • Datenauwertung von Sekunden in Stunden und Minuten umrechnen

    Gelöst
    8
    0 Stimmen
    8 Beiträge
    843 Aufrufe
    O
    Ich wollte nur kurz bescheid geben das alles funktioniert. Vielen dank nochmal.
  • Netatmo Presence wie Bewegungsmelder nutzen

    9
    2
    0 Stimmen
    9 Beiträge
    743 Aufrufe
    T
    @cinimod Das muss ich jetzt erstmal ausgiebig testen.
  • Sonos API shuffle mode

    blockly
    2
    1
    0 Stimmen
    2 Beiträge
    244 Aufrufe
    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 Stimmen
    6 Beiträge
    350 Aufrufe
    M
    @paul53 Alles klar, besten Dank.
  • Wenn Adapterlaufzeit ist > als

    7
    1
    0 Stimmen
    7 Beiträge
    746 Aufrufe
    R
    @paul53 nein entweder 1 oder 2
  • [gelöst] JSON auslesen. Punkt im Attribut

    3
    1
    0 Stimmen
    3 Beiträge
    317 Aufrufe
    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 Stimmen
    2 Beiträge
    326 Aufrufe
    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 Stimmen
    5 Beiträge
    126 Aufrufe
    FloFlaF
    Danke, das klappt. Vielen Dank für die rasche Hilfe.
  • Fehler javascript.1 (818) at Object.<anonymous>

    10
    0 Stimmen
    10 Beiträge
    705 Aufrufe
    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 Stimmen
    12 Beiträge
    1k Aufrufe
    1Topf1
    @nefetz Normal schon, es sollte jeder Enigma2 - Receiver mit dem Enigma2 - Adapter funktionieren.
  • [Gelöst] ADS1115 Analogwert in Volt umrechnen

    19
    1
    0 Stimmen
    19 Beiträge
    2k Aufrufe
    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 Stimmen
    12 Beiträge
    1k Aufrufe
    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 Stimmen
    4 Beiträge
    158 Aufrufe
    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 Stimmen
    5 Beiträge
    147 Aufrufe
    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 Stimmen
    11 Beiträge
    673 Aufrufe
    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 Stimmen
    3 Beiträge
    277 Aufrufe
    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 Stimmen
    7 Beiträge
    654 Aufrufe
    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 Stimmen
    19 Beiträge
    934 Aufrufe
    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 Stimmen
    4 Beiträge
    295 Aufrufe
    D
    @paul53 Danke Super das haut hin . Vielen Dank
  • Nach Änderung von Wert -> Timer, Re-Check & Aktion

    6
    1
    0 Stimmen
    6 Beiträge
    467 Aufrufe
    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.

270

Online

32.8k

Benutzer

82.8k

Themen

1.3m

Beiträge