Skip to content

Skripten / Logik

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

16.5k Themen 213.4k Beiträge

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Themen
    49k Beiträge
    P
    @ArnoD sagte in E3DC Hauskraftwerk steuern: @azzkikrboy Hierfür brauchst du den Adapter ‚Energiefluss-erweitert‘. Damit lässt sich der Energiefluss richtig schick grafisch darstellen. Die Konfiguration ist zwar etwas zeitaufwendig, aber die Mühe lohnt sich definitiv für das Design! ;) [image: 1770554279240-video-project.gif] Sieht sehr gut aus, hab ich bei mir auch mal ausprobiert. Leider funktioniert das nicht mit der Android VIS-App. Lösung wäre nur der Kiosk Browser aber das ist mir zu umständlich. Schade :-(
  • Hilfe für Skripterstellung mit Blockly

    7k 79k
    7k Themen
    79k Beiträge
    B
    Hallo, ich möchte gerne mit meinen Solarflow 800 pro eine Null-Einspeisung realisieren. Würde das Blockly Script auch für den SF 800 Pro gehen?
  • Hilfe für Skripterstellung mit Node-RED

    953 13k
    953 Themen
    13k Beiträge
    Marc BergM
    Es gibt in der Verson 1.3.0 einen neuen Node: iob-setObject (Stand 10.02.26 noch beta) Mit dem neuen Node kann man ioBroker-Objektdefinitionen (Metadaten) direkt schreiben und ändern. Hauptfunktionen: Instanz-Konfigurationen ändern - z.B. MQTT publish-Pattern, Intervalle, etc. Objekt-Eigenschaften aktualisieren - Namen, Rollen, Einheiten, Min/Max-Werte ändern es gibt zwei Modi: Merge-Modus : Ändert nur die angegebenen Eigenschaften, alle anderen bleiben erhalten Replace-Modus: Überschreibt das komplette Objekt Typischer Workflow: Objekt mit iob-getobject holen Mit Change-Node gewünschte Properties ändern Mit iob-setobject zurückschreiben
  • Chatgpt funktioniert nicht mit Javascriptadapter

    2
    0 Stimmen
    2 Beiträge
    236 Aufrufe
    CodierknechtC
    @tomtom24 Guckst Du: https://forum.iobroker.net/topic/68671/chat-gpt-im-javascript-adapter-verwenden
  • [gelöst] Kann keinen Datenpunkt mehr anlegen

    3
    0 Stimmen
    3 Beiträge
    122 Aufrufe
    D
    @delphinis Habs herausgefunden: Der Datenpunkt wird ja ganz korrekt angelegt, ich hab ihn nur an der falschen Stelle gesucht :disappointed:! Hab ihn in der History gesucht anstatt unter den Objekten. Für die History muss er ja erst hinzugefügt werden....
  • Ansteuerung eines Digital-Potentiometers (z.B. MCP4151)

    3
    0 Stimmen
    3 Beiträge
    209 Aufrufe
    geschildG
    @kurti Vielleicht hilft das hier weiter: https://github.com/fivdi/spi-device
  • Sonos Einschaltlautstärke bzw bei Stop zurückstellen

    5
    0 Stimmen
    5 Beiträge
    371 Aufrufe
    S
    habe es hinbekommen, jedoch etwas "simpler" [image: 1709757869831-scrnshot-sonos.png] geile Sache, vielen Dank!
  • (Gelöst) Telefonbuch ohne Fritzbox

    17
    0 Stimmen
    17 Beiträge
    1k Aufrufe
    W
    @paul53 So, abschließend noch kurz die Vollzugsmeldung. Alles funktioniert wie gehabt. Um nicht zwei Skripte (mein Blockly und das neue) laufen haben zu müssen, habe ich einfach mein bisheriges Blockly als Javascript ausgeben lassen und einfach quick&dirty vor das neue Script kopiert. Datenpunkte nochmal angepasst und läuft. Ich hatte gestern Nacht, als meine Frau im Bett war, noch versucht, das irgendwie eleganter zu machen, insbesondere nur mit einem Trigger und sauber mit idNummer und idName durchgehend, anstatt wieder auf die Datenpunkte zuzugreifen, aber da bin ich in reinem Javascript irgendwie nicht fit genug. Spätestens beim Versuch, davon dann erst aber der vierten Stelle auszulesen habe ich mich dann irgendwo in den Klammern verzettelt... :anguished: Unten das Gesamt-Script, wie es läuft, falls jemand mal sowas in der Art braucht. Und nochmal Danke an Alle. Ohne Eure Hilfe wäre das Ganze sicher noch weitaus uneleganter geworden. So gefällt es mir richtig gut und ich mach mich nun an das Eintragen von meinen Nummern und Namen. Gruss, Jürgen function subsequenceFromStartLast(sequence, at1) { var start = at1; var end = sequence.length - 1 + 1; return sequence.slice(start, end); } on({ id: [].concat(['0_userdata.0.Zustand.Anrufer-Name']), change: 'any' }, async (obj) => { let value = obj.state.val; let oldValue = obj.oldState.val; if (compareTime('08:00', '22:00', 'between')) { if (('' + getState('0_userdata.0.Zustand.Anrufer-Name').val).indexOf('00') + 1 == 1) { if (('' + getState('0_userdata.0.Zustand.Anrufer-Name').val).indexOf('0049') + 1 == 1) { setState('javascript.0.Alexa-Text' /* Alexa-Text */, ('Anruf von 0' + String(subsequenceFromStartLast(('' + getState('0_userdata.0.Zustand.Anrufer-Name').val), 4))), true); } else { setState('javascript.0.Alexa-Text' /* Alexa-Text */, ('Anruf von 00' + String(subsequenceFromStartLast(('' + getState('0_userdata.0.Zustand.Anrufer-Id').val), 0))), true); } } else { setState('javascript.0.Alexa-Text' /* Alexa-Text */, ('Anruf von ' + String(getState('0_userdata.0.Zustand.Anrufer-Name').val)), true); } } }); const telBuch = { '1234567': 'Müller', '498934568': 'Heinz' }; const idNummer = '0_userdata.0.Zustand.Anrufer-Id'/*Anrufer-Id*/; const idName = '0_userdata.0.Zustand.Anrufer-Name'/*Anrufer-Name*/; on({ id: idNummer, change: 'any' }, function(dp) { let name = telBuch[dp.state.val]; if(!name) name = '00' + dp.state.val // unbekannter Name = Nummer setState(idName, name); }); EDIT: Script angepasst. Es muss bei den Telefonnummern 49 davor stehen.
  • Analogwerte via NodeRed an Loxone

    8
    3
    0 Stimmen
    8 Beiträge
    825 Aufrufe
    C
    @cocomp @cocomp Hallo, hoffe du liest das und kannst mir vielleicht helfen. Ich möchte Werte, so wie du, an Loxone senden aber irgendwie möchte das nicht so ganz bzw. ein mal sendet der iOBroker den Wert und dann nicht mehr. Hattest du das Problem auch schon mal ? Möchte gerne den Ladestand und die Reichweite meines ID.3 an Loxone senden, das funktioniert aber nur ein einziges mal und danach nicht mehr. Auch wenn ich das ganze manuell anstoße ändert sich zwar der Wert in Node-Red aber in Loxone ändert sich nichts. Erstelle ich dann wieder neue Virtuelle Eingänge und Konfiguriere diese in Node-Red funktioniert es wieder... aber nur das eine mal. [image: 1709576508361-9d4b772d-8bc5-4c09-bb13-6f10b90d00c4-grafik.png] Bin am verzweifeln. Vielleicht liest du das und kannst mir helfen =)
  • [gelöst] Javascript Testinstanz

    12
    1
    0 Stimmen
    12 Beiträge
    275 Aufrufe
    HomoranH
    @delphinis sagte in [gelöst] Javascript Testinstanz: Ach so! Deswegen die Frage @homoran sagte in [gelöst] Javascript Testinstanz: als Experte weisst du, was global bedeutet?
  • Einloggen auf Webseite und bedienen

    19
    8
    0 Stimmen
    19 Beiträge
    2k Aufrufe
    W
    Moin @all ✌🏼 Seit 3tagen wird nun auch keinen Wärmemenge mehr zur Smartset- App übertragen. Weder Fachmann noch auf normaler Ebene. Statistik ebenfalls negativ. Hat noch jemand das gleiche Problem? Nach Neustart der Heizung werden die Werte einmalig hochgeladen, aber nicht mehr aktualisiert. Wat is denn da bloß los bei denen 🫣 Grüße Tom
  • Fertiges Blockly zum Zählen der offenen Rolläden

    9
    3
    0 Stimmen
    9 Beiträge
    587 Aufrufe
    MartinPM
    @haus-automatisierung Schrieb ich ja, "akademische Diskussion"... Würde aber den Code auch sicher übersichtlicher machen, wenn man da gezielt nur die Deltas bearbeitet...
  • [gelöst] clearTimeout für Lichtsteuerung funktioniert nicht.

    Verschoben
    12
    0 Stimmen
    12 Beiträge
    1k Aufrufe
    PeoplesP
    @jojos Wenn du drin rum läufst wird stetig neu getriggert und es bleibt an
  • Mail Text Ausgabe True oder False mit eigenen Text ersetzen

    5
    1
    0 Stimmen
    5 Beiträge
    352 Aufrufe
    Jörg 5J
    @martinp Danke... So easy? Scheibenkleister! Da hätte ich selbst drauf kommen können! Hab ganz ganz lieben Dank für die entfernung meines Brett vorm Kopf!!! EDIT: Lösung klappt wie erwartet. Noch mal Danke! Viele Grüße Jörg
  • HEOS Skript funktioniert nicht mehr

    8
    0 Stimmen
    8 Beiträge
    555 Aufrufe
    Meister MopperM
    @jwedenig sagte in HEOS Skript funktioniert nicht mehr: eigentlich hab ich eh noch Platz, oder? RAM ist dafür da, genutzt zu werden. Es frisst kein Gras. Sollte halt nicht knapp werden!
  • Parser: DSL Vergleich

    8
    1
    0 Stimmen
    8 Beiträge
    669 Aufrufe
    OliverIOO
    @haus-automatisierung Ja, das ist immer das Problem, wenn die Anbieter ihre Daten schützen wollen Generell wäre es auch möglich, in API Key herauszufinden, da ja das Java Skript sich den auch holen muss(falls er nicht fix definiert ist). Aber da kommt man in den aufwändigen Bereich, da man alles re-engineeren muss.
  • Adapter Fahrplan json-Daten als Tabelle in Jarvis

    3
    2
    0 Stimmen
    3 Beiträge
    469 Aufrufe
    A
    @mcu Hallo, danke mit Deiner Lösung hast Du mir sehr geholfen. Es funktioniert jetzt so wie ich es wollte.
  • Blockly sudo mit Passworteingabe

    5
    0 Stimmen
    5 Beiträge
    368 Aufrufe
    M
    @haus-automatisierung Das war vorher: drwxr-xr-x 7 iobroker iobroker Jetzt: drwxrwxr-x 7 iobroker iobroker Der Ordner wird via NFS, ggf auch wieder über CIFS / SMB geteilt. Der Ordner wird von einer externen Kamera via FTPd gefüllt. Es gibt nur den Benutzer iobroker. Kein anderer soll Zugriff haben. Siehst du eine Möglichkeit Berechtigungen zu reduzieren, wenn ja auch was (750)?
  • Bitfield übersetzen/konvertieren

    javascript
    19
    1
    0 Stimmen
    19 Beiträge
    2k Aufrufe
    wendy2702W
    @darkbrain85 sagte in Bitfield übersetzen/konvertieren: Hi! Ich habe ein kniffeliges Problem, bei dem ihr mir sicher behilflich sein könnte. Ich lese meine Waterkotte Wärmepumpe per Modbus aus. Dabei erhalte ich auch diverse Werte. Funktioniert sehr gut. Den Zustand einzelner Komponenten kann ich allerdings nur als bitfield in einem gemeinsamen Register abrufen. Hier erhalte ich einen Integer Wert den ich entsprechend interpretieren müsste. Hier mal die Liste aus der Doku: [image: 1578511613103-521d80f2-9fb9-4fa1-8e78-15e4b396b5bb-image.png] Ich müsste also den Integer Wert übersetzen und dann die einzelnen Zustände zuordnen. Beim Betrieb der Heizungsumwälzpumpe erhalte ich z.B. den Wert 2. Gibt es dafür irgendwo ein Beispiel, oder kann mir da jemand auf die Sprünge helfen? Danke Euch jetzt schon! Ist zwar schon was älter aber gerade erst gesehen. Kannst du mir sagen welche WP das ist, welches Register und wie eingestellt im Adapter? Hast du eine Übersicht über alle Register die man lesen/schreiben kann?
  • iobroker mit Waterkotte Ecotouch 5029 Ai

    6
    0 Stimmen
    6 Beiträge
    764 Aufrufe
    K
    @wendy2702 nee das hatte ich alles probiert. Entweder hat Waterkotte die Register geändert oder deren eigene Software berechnet die Energiebilanzen einfach selber. Meine Vermutung ist, dass sich lediglich bei dem Modell die Leistungsdaten auslesen lassen (das funktioniert übrigens) und ggf. von einem eigenem Script aufintegriert werden müssen, um die Energiewerte zu erhalten.
  • Blockly: Timeout/Intervall - einmaliges Ausführen

    3
    1
    0 Stimmen
    3 Beiträge
    155 Aufrufe
    S
    @paul53 Danke dir für deine Tipps! Ich werde es gleich ausprobieren.
  • Datenpunkt in der Vergangenheit schreiben

    2
    0 Stimmen
    2 Beiträge
    334 Aufrufe
    paul53P
    @achim_m sagte: Gibt es eine Möglichkeit, beim Schreiben eines Datenpunktes einen Timestamp anzugeben? on(idSrc, function(dp) { let ts = 7200000 * Math.floor(dp.state.ts / 7200000); // Abrunden auf gerade Stunden UTC setState(idDst, {val: dp.state.val, ack: dp.state.ack, ts: ts}); });
  • [gelöst] Skript Funktion wiederverwendbar machen

    14
    1
    0 Stimmen
    14 Beiträge
    1k Aufrufe
    PackElendP
    @init5 ich stehe vor einer ähnlichen Herausforderung. Ich habe 9 Jalousien zum ansteuern, das Skript ist immer das gleiche. Wenn ich es richtig verstehe, können Skripte nicht instanziert werden, sprich wenn der Timer läuft aber das Skript von einem anderen Trigger (bei dir Fenster auf), startet der Timer von neuem?

515

Online

32.6k

Benutzer

82.3k

Themen

1.3m

Beiträge