Skip to content

Skripten / Logik

16.6k Topics 214.3k Posts

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

NEWS

Subcategories


  • Hilfe für Skripterstellung mit JavaScript

    3k 49k
    3k Topics
    49k Posts
    G
    Ich habe einen Akku für mein Bosch EBike mit 650 Wh. Es gibt die Empfehlung Akkus immer zwischen 20% und 80% Ladezustand zu halten um die Lebensdauer maximal zu halten. Den unteren Wert zu beachten ist relativ einfach, das wird am Kiox ständig angezeigt. Aber dann steckt man den Akku ans Ladegerät und müsste ständig vorbeischauen um nicht zuviel zu laden. Ich habe mir das jetzt automatisiert über eine MEROSS smarte Steckdose. Die zeigt die abgegebene Energie ja pro Tag an. Ich habe nun dazu ein Script und Eingriffsmöglichkeit über VIS. Das Script springt an, wenn ich das Ladegerät in den MEROSS Stecker stecke. Es setzt als Anfangswerte die Kapazität auf 650Watt, den IST-Ladezustand auf 20% und den Soll Ladezustand auf 70%. Das heißt umgerechnet, um den Soll-Ladezustand zu erreichen, müssen 325Wh geladen werden. Das wird über das Script erreicht, in dem es jede Minute die abgegebene Energie an der Steckdose prüft. Ich kann als einfach einstecken und laden, und muss nichts weiter machen, um nicht zu voll zu laden. Ob ich da von 10% auf 60% oder 30% auf 80% lade ist mir meist egal. Über VIS kann ich den IST-Ladezustand und den SOLL-Ladzustand des Akkus ändern. Das wird vom ersten Script berücksichtigt. So kann ich also auch gezielt gewünschte Werte erreichen. Das Ganze hatte ich selber schon mal zeitgesteuert gemacht. Das Ladegerät läuft (meist) mit einer Leistung von 175Watt. Daraus hatte ich mir dann errechnet wie lange ich brauche, den gewünschten Ladezustand zu erreichen. Das ist aber denkbar ungenau, weil die Ladekurve in Wirklichkeit nicht linear ist. Erst jetzt mit der MEROSS-Messung kann ich richtig zielen. Das neue Script habe ich mir komplett mit der KI "Claude" erstellen lassen. Da ist nicht eine Zeile von mir. Ich bin begeistert (und erschüttert). akku_ladesteuerung.ts
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Topics
    80k Posts
    V
    Hi @babl , vielen Danke für deine super Arbeit. Ich hatte bis vor kurzem schon deine erste Version in Betrieb. Nun wollte ich mir die neue anschauen, aber leider lassen sich die Skripte nicht importieren. Ich habe leider dazu nichts gefunden. Wäre es Möglich, die Skripte als .txt Dateien zu teilen? Deine Anpassungen (Grundlastberechnung.txt und PV-Ertrag_Durchschnitt.txt) konnte ich Problemlos importieren. Hier die Fehlermeldung, evtl. kann mir dabei jemand weiterhelfen oder ich steh völlig auf dem Schlauch... [image: 1775637577292-f7cecb8d-5d5e-45dc-b45f-aebef1dfb0b0-image.jpeg]
  • 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
  • Source-Quelle

    javascript
    3
    0 Votes
    3 Posts
    157 Views
    arteckA
    @Eggi was ???????????????????? und dann noch doppelpost .........
  • Source

    javascript
    1
    0 Votes
    1 Posts
    87 Views
    No one has replied
  • Variable an Cron übergeben

    javascript
    3
    0 Votes
    3 Posts
    271 Views
    dontobiD
    @paul53 Danke für die schnelle Antwort. Ich hatte das mit der Variable direkt im schedule schon getestet, aber die variable vorher nicht initialisiert. Vielleicht liegt es daran. Hab es gerade mal eingetragen und lasse es morgen testen.
  • Schalter Saugroboter mit HomeKit

    communication
    3
    0 Votes
    3 Posts
    160 Views
    S
    @Asgothian Danke schön für die Info! Haben wir für so einen Script ein Beispiel? Muss mir das mal anschauen. Bin absoluter Neuling :-)
  • IF .. THEN .. ELSE versus SWITCH .. CASE ..

    javascript
    17
    1
    0 Votes
    17 Posts
    2k Views
    AlCalzoneA
    @legro sagte in IF .. THEN .. ELSE versus SWITCH .. CASE ..: also auf die Welt an Programmiersprachen aus der ich komme 🎉🎉🎉 Diese Scriptsprache wird ja auch von ioBroker unterstützt und somit sollte ich mich ggf. auch hiermit einmal beschäftigen. Dann verweise ich dich mal auf https://forum.iobroker.net/topic/36493/09-09-20-30-einsteiger-cursus-demonstration-von-typescript und das TypeScript Handbook https://www.typescriptlang.org/docs/handbook/ welches übrigens auch einen guten Einstiegspunkt für Nicht-JS-Programmierer hat.
  • XOR über Byte Array - wie?

    javascript
    4
    0 Votes
    4 Posts
    494 Views
    S
    @paul53 Danke, funzt einwandfrei!
  • Alle objekte die xxx.color heißen mit Wert yyy belegen

    blockly
    10
    0 Votes
    10 Posts
    622 Views
    J
    @paul53 genau so gehts! vielen Dank, ich denk ich habe es nun kapiert
  • Wie Lautstärke regeln mit SayIt via Sonos?

    multimedia
    1
    0 Votes
    1 Posts
    158 Views
    No one has replied
  • Javascript Funktion triggert ungewollt, wie verhindern?

    javascript
    11
    0 Votes
    11 Posts
    853 Views
    M
    @spaceduck Kannst du dann bitte Deine Lösung hier dokumentieren. Danke.
  • [gelöst] Daten per Telnet abgreifen.

    communication
    2
    1
    0 Votes
    2 Posts
    238 Views
    capitaenzC
    Problem gelöst, habe diesen Code gefunden von www.letscontrolit.com Damit baut man einfach meine (ursprünglich) gewünschte Serial2MQTT Brücke auf. #include <ESP8266WiFi.h> #include <PubSubClient.h> const char* ssid = "SSID"; const char* password = "PWD"; const char* mqtt_server = "192.168.XXX.XXX"; const char* topic_rx = "uart/rx"; const char* topic_tx = "uart/tx"; const byte numChars = 100; char receivedChars[numChars]; // an array to store the received data boolean newData = false; WiFiClient espClient; PubSubClient client(espClient); void setup() { pinMode(BUILTIN_LED, OUTPUT); // Initialize the BUILTIN_LED pin as an output Serial.begin(9600); setup_wifi(); client.setServer(mqtt_server, 1885); client.setCallback(callback); } void setup_wifi() { delay(10); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); } } void callback(char* topic, byte* payload, unsigned int length) { for (int i = 0; i < length; i++) { Serial.print((char)payload[i]); } Serial.println(); } String macToStr(const uint8_t* mac) { String result; for (int i = 0; i < 6; ++i) { result += String(mac[i], 16); if (i < 5) result += ':'; } return result; } void reconnect() { String clientName; clientName += "esp8266-"; uint8_t mac[6]; WiFi.macAddress(mac); clientName += macToStr(mac); clientName += "-"; clientName += String(micros() & 0xff, 16); while (!client.connected()) { if (client.connect((char*) clientName.c_str())) { // random client id digitalWrite(BUILTIN_LED, LOW); // low = high, so this turns on the led client.subscribe(topic_rx); // callback: mqtt bus -> arduino } else { digitalWrite(BUILTIN_LED, HIGH); // high = low, so this turns off the led delay(5000); } } } void loop() { if (!client.connected()) { reconnect(); } client.loop(); recvWithEndMarker(); showNewData(); } void recvWithEndMarker() { static byte ndx = 0; char endMarker = '\n'; char rc; while (Serial.available() > 0 && newData == false) { rc = Serial.read(); if (rc != endMarker) { receivedChars[ndx] = rc; ndx++; if (ndx >= numChars) { ndx = numChars - 1; } } else { receivedChars[ndx] = '\0'; // terminate the string ndx = 0; newData = true; } } } void showNewData() { if (newData == true) { client.publish(topic_tx, receivedChars); // publish: arduino -> mqtt bus newData = false; } }
  • efergy API auslesen und in wert umwandeln

    monitoring
    9
    0 Votes
    9 Posts
    1k Views
    S
    @paul53 nach Neustart des Brokers funktioniert es . Dankeschön für die Hilfe.
  • Sonso Coordinator mittels Script setzen

    blockly javascript
    1
    1
    0 Votes
    1 Posts
    191 Views
    No one has replied
  • Anrufe auf FritzBox per Telegram auf Handy ankündigen

    blockly
    48
    1
    0 Votes
    48 Posts
    6k Views
    I
    Hallo Leute, da mir ja scheinbar keiner sagen kann, wie man (wenn überhaupt) die Anrufankündigungen für ein bestimmtes Telefonbuch (in dem Spamanrufer stehen) ausklammern kann: Wie kann ich sagen, daß Anrufe nur angekündigt werden, wenn im Anrufnamen nicht das Wort "Spam" vorkommt? Danke! EDIT: Habe es endlich hinbekommen. Wenn ich selbst oder einer derer Spammer, die ich in einem extra Telefonbuch in der FritzBox hinterlegt habe, und die alle mit "Arsch", gefolgt von einer Nummer, benamt wurden, bei meiner Mama auf Festnetz anrufen, bekomme ich keine Telegram-Meldung mehr: [image: 1605966324842-bildschirmfoto-2020-11-21-um-14.44.04.jpg]
  • On / Off Frage

    template
    7
    0 Votes
    7 Posts
    574 Views
    amg_666A
    @Homoran Auf die Idee muss man erstmal kommen :-)
  • Termine in Google Kalender eintragen

    multimedia javascript node-red
    3
    0 Votes
    3 Posts
    385 Views
    Gurke258G
    @MCU Ja hier -> https://developers.google.com/calendar/overview
  • Scripte einzeln oder lang/groß

    blockly javascript
    6
    2
    0 Votes
    6 Posts
    594 Views
    dslraserD
    @AlCalzone sagte in Scripte einzeln oder lang/groß: Monster-Blockly 😂✌🙋‍♂️
  • Anwesenheitsscript HZ bei offenem Fenster aussetzen

    heating
    6
    0 Votes
    6 Posts
    310 Views
    C
    @Fizh-Kopp Ich gehe davon aus, dass dein FK im iobroker ist. Dann gibt es einen State open, der auf true steht. Ausgehend von deinem Script, würde ich dein if-Statement wie folgt umschreiben... if FK.open.val Thermostat ausschalten else if deine if-statement gefolgt vom bisherigen else. Deinen Trigger wirst du aber auch nochmal überdenken müssen... Stand jetzt, kann das Fenster 4:59 offen sein, bevor der Cron wieder läuft und es erkennt. Auch bleibt dein Thermostat bei 16 stehen, wenn du um 23:00 Uhr das Fenster öffnest. Ich persönlich gehe etwas anders an solche Aufgaben ran. Ich nutze eigene States im iobroker. Mit den Scripten überwache ich diese dann auf Veränderung und reagiere entsprechend darauf. Beispiel: Angenommen es gibt einen State ZielTemperatur. Dann brauchst du ein Script, welche bei einer Änderung des States ZielTemperatur den neuen Wert an das Themostat übermittelt. (Damit ist deine Heizungssteuerung schon mal fast fertig.) Was jetzt noch fehlt, sind Scripte, welche den Wert von ZielTemperatur ändern, in Abhängigkeit von Ereignissen die Eintreten (Fenster offen, An-/Abwesenheit, Uhrzeit) Beispiel: Bei Änderung von ZielTemperatur, neuen Wert an das Thermostat const ZielTemp = "javascript.0.ZielTemperatur"; const idTarget = "fritzdect.0.Comet_14078017xxxx.targettemp"/Target Temp/; //Wohnzimmer on({id: ZielTemp,change:'ne'}, function (obj) { setState(idTarget, obj.state.val); });
  • Datenpunkt Update vor Änderung verarbeiten

    javascript node-red
    2
    0 Votes
    2 Posts
    231 Views
    paul53P
    @S84 sagte: Wie kann ich diese 100% verarbeiten/manipulieren BEVOR der Datenpunkt aktualisiert wird. Das ist nicht möglich, es sei denn, man kann den Adapter daran hindern, den Datenpunkt zu setzen. Andernfalls benötigt man einen weiteren Datenpunkt.
  • CRON Trigger

    blockly
    3
    0 Votes
    3 Posts
    305 Views
    K
    @paul53 Danke! Schade eigentlich.
  • Routine mit Alexa / Sonoff / Philips Hue / Yeelight

    multimedia javascript
    2
    0 Votes
    2 Posts
    351 Views
    M
    @badplay sagte in Routine mit Alexa / Sonoff / Philips Hue / Yeelight: Alternativen Firmware Was bedeutet alternative Firmware ? Tasmota? Welche Version? Wenn ja, dann Sonoff-Adapter installieren. Einstellungen für den Sonoff-Adapter müssen dann zu den einzelnen Steckdosen umgestellt werden. Für Yeelight Lampen gibt es den Yeelight-Controller-Adapter! (Habe ich nicht, weiß nicht, welche Einstellungen notwendig sind, meistens selbsterklärend)

584

Online

32.8k

Users

82.7k

Topics

1.3m

Posts