Skip to content

Skripten / Logik

16.6k Topics 214.2k 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
    OliverIOO
    @legro Aufteilen von Skripte da gibt e mittlerweile mehrere threads. Eine so richtig gute standardlösung gibt es nicht, da das ablegen von extra Dateien im DAteisystem immer etwas schwierig ist. Die beste Lösung ist glaube ich die Funktionen auf verschiedene Skripte aufzuteilen und die Funktionen über das Messagingsystem (messageToAsync,onMessage) aufzurufen. Ein Besipiel siehst du hier https://forum.iobroker.net/topic/84000/skript-aufteilen-möglich/13?_=1775167478022 Debugger gibt/gab es schon (so ein käferknopf, den ich aber jetzt nicht mehr sehe), aber der ist glaube ich nicht wirklich gut zu bedienen. Wenn du, allerdings mit kleinen Einschränkungen, debuggen willst, dann verwende dazu vscode. für vscode gibt es auch eine extention die dir die scripte hin und her synchronisiert. Allerdings stehen dir in vscode die iobroker funktionen nicht zur Verfügung. Also setState ist dort unbekannt. Ich behelfe mich da immer mit stub-funktionen, die ich am Ende meines Skripts hinzufüge, also sowas wie //vscode stub functions for iob function on(/* event, callback */) { } function setState(/* id, value, ack */) { } function log(/* msg, level */) { } function schedule(/* event, callback */) { } Diese Funktionen machen einfach nichts. Wenn du zum testen dann das doch mal brauchst, kannst du das durch extra code einfach simulieren Am Beispiel von getState würde das dann so aussehen: Als erstes holt man sich den Rückgabewert von getState in einem skript im iobroker log(JSON.stringify(getState("0_userdata.0.val1"))); Das erzeugt dann im log den folgenden Eintrag {"val":"123","ack":false,"ts":1768518884892,"q":0,"from":"system.adapter.admin.0","user":"system.user.admin","lc":1768518884892} Den kopiert man und fügt ihn in eine stubfunktion wie folgt ein function getState(id) { if (id === "0_userdata.0.val1") { return JSON.parse( '{"val":"123","ack":false,"ts":1768518884892,"q":0,"from":"system.adapter.admin.0","user":"system.user.admin","lc":1768518884892}', ); } und schon hat man seine Stummelfunktion für getState, mit der man dann seine Skripte im iobroker auch debuggen und testen kann.
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Topics
    80k Posts
    M
    Hallo, ich habe den Solarflow 800 Plus, das ganze Regeln läuft bei mir momentan über die Cloud, ich kann die App über Cloud wechselweise auch noch verwenden. Habe das Laden erst seit gestern selbst mit Blocky mal profesorisch geregelt bekommen. Nun habe ich das Problem, dass, wenn ich mit einem anderen Skript entladen möchte (versuche es einzufügen) der Wert zwar in die control Liste übernommen wird, aber immer wieder mit den aktuell manuell gesetzten App-Entlade-Wert überschrieben wird. Dass da ein gewisser konflikt mit der App besteht scheint so, es wundert mich aber dass das Laden (Modus1) mit dem anderen Skript funktioniert. Am Ende möchte ich schon auf MQTT Verbindung umstellen, aber dort habe ich die Verbindung leider noch nicht schaffen können. (ein umstellen auf MQTT in der App bringt genau das selbe Überschreibephänomen wie beschrieben, ohne jemals einen Wert durchusteuern) Muss die Steuerung der App über WLAN auf bluetooth umgestellt werden? Hat jemand eine Idee was ich da machen könnte? [image: 1775056764925-1c208516-d118-41a0-9474-5df7b4d7c271-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
  • Gelöst -[Blockly] mit HM-IP 6-fach Wandtaster Lampe schalten

    Moved
    36
    0 Votes
    36 Posts
    7k Views
    HomoranH
    @Sebastian-S-0 sagte in Gelöst -[Blockly] mit HM-IP 6-fach Wandtaster Lampe schalten: Hat leider auch nichts genützt. dann kann der Entwickler da auch nichts dran ändern, dann ist dieses Verhalten wahrscheinlich von eQ-3 gewollt
  • Status einlesen und in einzelne Variablen zerlegen

    Moved
    21
    0 Votes
    21 Posts
    5k Views
    lobomauL
    @Ioniq-2018 und? go-echarger geholt und Programm geschrieben? Ich fange gerade damit an. @Elektro_G ich kann den go-echarger grundsätzlich empfehlen. Welcher Vorteil der OpenWB hat, ist dass man da auch 1-phasig auf 3-phasig per App(?) umschalten kann. Ich persönlich vermisse es nicht, da meine PV-Anlage nur 4 kWp groß ist. D.h. ich lasse den go-echarger nur auf einer Phase laufen. Ich habe festgestellt, dass ich mit 3,7 kW Ladeleistung (16A, 1p) locker hinkomme. Das ergibt immerhin 37 kWh in 10 Stunden und somit ca. 200km. Im Notfall kann ich immer noch kurz in Keller und manuell am Stromkasten auf drei Phasen und somit 11 kW umschalten.
  • Node Red import von nodes

    Moved
    19
    0 Votes
    19 Posts
    6k Views
    mickymM
    @Boardy Also wie gesagt da kann ich Dir nicht helfen - aber ich habe noch eine Seite gefunden, die vielleicht hilfreich ist, wie man noch DMX ansprechen kann - ob das mit Deinem NanoDMX kompatibel ist, weiß ich nicht: https://npm.io/search/keyword%3ADMX/1 Bei den unterschiedlichen Schnittstellen gibt es für Node Red auch einige Lösungen - aber keine Ahnung ob die Dir was helfen oder ob zum Beispiel OpenLightning mti NanoDMX kompatibel ist. HIer mal einige Schnittstellen die ich gefunden habe: https://flows.nodered.org/node/node-red-contrib-ola https://flows.nodered.org/node/node-red-contrib-sacn https://flows.nodered.org/node/node-red-contrib-prolights https://flows.nodered.org/node/iglass-nodes
  • ioBroker soll Raspberry PI System Befehl ausführen

    blockly
    37
    0 Votes
    37 Posts
    2k Views
    A
    kurzes Update: der Pi läuft wieder. Es liegt def. am Pi-hole adapter. Sobald ich den Adapter installiere, reagiert mein Pi kaum noch.
  • Arlo soll Bild schicken

    blockly
    1
    0 Votes
    1 Posts
    166 Views
    No one has replied
  • URL Request User-Agent mitschicken

    javascript blockly
    2
    2
    0 Votes
    2 Posts
    372 Views
    F
    @ZuLu here we go [image: 1601754068517-osm_adresse.png] GetOSMAddress <xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="grt.?VE.C](qy^E~~+RR">Adresse</variable> <variable type="timeout" id="timeout">timeout</variable> <variable id="QOuin$ta-CK#*y+yVaIO">coord</variable> </variables> <block type="procedures_defcustomnoreturn" id="P_Le*6`(eyK`v/aUqQTO" x="63" y="-137"> <mutation statements="false"> <arg name="Adresse" varid="grt.?VE.C](qy^E~~+RR"></arg> </mutation> <field name="NAME">osm</field> <field name="SCRIPT">dmFyIHJlcXVlc3QgPXJlcXVpcmUoJ3JlcXVlc3QnKTsNCg0KY29uc3Qgb3B0aW9ucyA9IHsNCiAgICB1cmw6ICdodHRwczovL25vbWluYXRpbS5vcGVuc3RyZWV0bWFwLm9yZy9zZWFyY2g/cT0nICsgZW5jb2RlVVJJKEFkcmVzc2UpICsgJyZmb3JtYXQ9anNvbicsDQogICAgaGVhZGVyczogeydVc2VyLUFnZW50JzogJ215LXJlcXVlc3QtY2xpZW50J30NCn0NCg0KcmVxdWVzdChvcHRpb25zLCBmdW5jdGlvbihlcnIscmVzcG9uc2UsYm9keSl7DQogICAgaWYoZXJyKSB7DQogICAgICAgIGNvb3JkID0gJ0ZlaGxlcic7DQogICAgICAgIHJldHVybjsNCiAgICB9DQogICAgbGV0IG8gPSBKU09OLnBhcnNlKGJvZHkpWzBdOw0KICAgIGNvb3JkID0gby5sYXQgKyAnLCcgKyBvLmxvbjsNCn0p</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> <block type="procedures_callcustomnoreturn" id="8Ga6|V(zZ}o2^8rDp[@+" inline="true" x="63" y="-113"> <mutation name="osm"> <arg name="Adresse"></arg> </mutation> <value name="ARG0"> <block type="text" id="yU=Ty%vCyRMSK7Uv~o0C"> <field name="TEXT">Platz der Republik, 10557 Berlin</field> </block> </value> <next> <block type="timeouts_settimeout" id="2Kzyy95-Ch^$[tk)dx0U"> <field name="NAME">timeout</field> <field name="DELAY">200</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="debug" id="5gc_0s=(c]!P@cgFV3H[" inline="true"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="[ygk;TlW%uDxwDp]FU|~"> <field name="TEXT">test</field> </shadow> <block type="variables_get" id="pgPgSJ}A+}kLRa{NATG1"> <field name="VAR" id="QOuin$ta-CK#*y+yVaIO">coord</field> </block> </value> </block> </statement> </block> </next> </block> </xml> @paul53 wie müsste die Funktion gebaut sein, damit man mit Rückgabeparameter arbeiten kann. Ich bekomme es nicht hin :-(
  • Bei Bewegung Tablet screen anschalten (Neuling)

    template
    4
    0 Votes
    4 Posts
    593 Views
    Mono990M
    @liv-in-sky Danke das ist genau das was ich gesucht hatte
  • Steckdose per html Befehl yahka/Homekit

    javascript
    2
    0 Votes
    2 Posts
    305 Views
    M
    @maikm Stell mal bitte die Befehle ein, mit denen du hoch und aus schalten kannst. Meinst aber nicht zufällig ein http-Befehl? Was ist ein html-Befehl?
  • Wie current werte und in target werte schreiben

    blockly javascript
    14
    0 Votes
    14 Posts
    1k Views
    F
    Ok ich werde es mal testen sobald ich meinen Pi neustarten muss was ich mal am Wochende mache, unter der Woche das bewust machen ist immer so ne sache ...mit der Zeit :) Auf jeden fall erstmal vielen Dank
  • Mehrfache Aufrufe JS führt zu seltsamen Verhalten

    javascript
    5
    0 Votes
    5 Posts
    478 Views
    R
    @paul53 said in Mehrfache Aufrufe JS führt zu seltsamen Verhalten: log("("+hour_day+") "+"Post half hour loop","debug"); Interessant, heute scheint das Phänomen nicht aufzutreten... habe nur die Zeile von Dir geändert, aber das sollte ja dbzgl nichts ändern. Kein Restart, nichts... Mal weiter beobachten, danke erstmal:) Was mir auch aufgefallen ist, meine Schedules registrieren sich nicht mehr (Astro ist natürlich eingerichtet) // Normaler Aufruf, Sonnenaufgang bis Untergang schedule('{"time":{"start":"sunrise","end":"sunset","mode":"minutes","interval":45},"period":{"days":1}}', function() { main(); }); // Einmal Nachts schedule('{"time":{"start":"00:00","end":"00:30","mode":"hours","interval":1},"period":{"days":1}}', function() { notmain(); }); Hab dann zwei "einfache" dazugemacht, die laufen... // Normaler Aufruf via cron schedule('13 0,5-20 * * *', function() { main(); }); schedule('43 0,11-14 * * *', function() { main(); }); Irgendeine spontane Idee was ich da falsche mache? Kann mich nicht erinnern daran rumgespielt zu haben...
  • sht21 htu 21

    blockly javascript node-red monitoring
    5
    0 Votes
    5 Posts
    466 Views
    UncleSamU
    @stevensen sagte in sht21 htu 21: Aber gibt es ein Workararound bis dahin, könnte ich die Eerte in eine Datei schreiben und die Datei über prüfen lassen oder sowas? Wie gesagt Anfänger in raspberry und iobroker. Am schönsten wäre, wenn du in Python die Werte per simple-api Adapter in den ioBroker schreiben könntest. Simple api kannst du einfach per HTTP request ansprechen. Ich habe das aber noch nie gemacht, kann dir also nicht wirklich weiter helfen.
  • Aqara Cube Skript Beispiel

    Moved javascript multimedia template
    10
    0 Votes
    10 Posts
    3k Views
    U
    @Kugelkopf Hallo Kugelkopf Würde auch gerne mal dein Cube Skript testen. Kannst du bitte dein vollständiges Skript bitte noch einmal posten. Das oben kann ich leider nicht importieren. Kommt eine Fehlermeldung beim Import. Danke
  • VIS Schalter erst einschalten wenn Bedingung erfüllt ist.

    javascript blockly
    4
    0 Votes
    4 Posts
    471 Views
    N
    @Njdfg said in VIS Schalter erst einschalten wenn Bedinung erfüllt ist.: @Homoran Hast du da ggf. ein Beispiel wie ich das umsetzte? Habe es hinbekommen, Danke super TIpp
  • [Frage] log severity level debug

    Moved
    11
    0 Votes
    11 Posts
    4k Views
    liv-in-skyL
    @Mojito-Joe oh - das ist lange her - ich habe das nicht länger verfolgt, da ich damals nicht genug ahnung hatte und keiner es für gut befand, farbige logs zu haben - was mein hauptanliegen war ich müßte mich da erst wieder reindenken, weil ich nicht mal wer weiß, ob ich das script noch habe falls du da was machst, bitte halte mich auf den laufenden ich glaube das müßte es sein -es ist eine tabelle mit farben - aber wie gesagt - ist lange her [image: 1601301405629-image-12.png] und da fällt mir ein - das problem ist , dass ich bei jeden blockly mit einem eingebund. script arbeiten mußte - war zu nervig - wäre super, sowas im blockly-block zu haben - aber das kann ich nicht umsetzen
  • TR64 aktive Geräte

    blockly monitoring
    1
    1
    0 Votes
    1 Posts
    159 Views
    No one has replied
  • EVSE WIFI JSON String mit JS auswerten

    javascript
    5
    0 Votes
    5 Posts
    708 Views
    WiednitzW
    @paul53 Ja Danke, die Änderung war die Ursache, das Script hatte ich so auch probiert. Dachte der Start des Scriptes reicht schon aus. Nochmals Vielen Dank !!!
  • Heizlastanalyse mit WMZ + Simulierung WP

    blockly monitoring javascript heating climate
    33
    0 Votes
    33 Posts
    3k Views
    H
    @paul53 Servus Paul, kannst du mir bitte nochmal zu der Vorgehensweise für "Simple API" einen Link schicken? Habe zu den WMZ noch einen Mbus Stromzähler dran, dessen werte ich vom OrangePi auf den Raspi schicken muss... Finde die verdammte Beschreibung nicht mehr :( EDIT: Gerade gefunden^^
  • Tür abgeschlossen oder nicht

    scenes
    10
    0 Votes
    10 Posts
    1k Views
    ?
    @joachim-knape hallo, da gibt es doch solche Riegelschaltkontakt (Schließblechkontakt, Verschluss- / Schließzustandsmelder). aber ob auch für Terassentür geeignet ?? Einfach mal nach Riegelschaltkontakt Tür googeln. LG Klaus
  • Alexa2 Adapter über RESTapi ansprechen

    javascript
    4
    0 Votes
    4 Posts
    359 Views
    S
    noch ein Nachtrag: Ich denke ich hab den Fehler identifiziert: bei dem Wecker der korrekt gestellt wurde stand im Befehl den der Alexa2-Adapter gesendet hat: "notificationIndex":"265b0b37-1a7b-45ac-8823-89edb20ddbc9","originalDate":"2020-09-28","originalTime":"06:30:00.000", also morgen früh um 6:30 der fehlgeschlagene Befehl sah so aus: "notificationIndex":"266ffcbf-1f44-49ba-b0e3-e1c87cd6f1f8","originalDate":"2020-09-27","originalTime":"07:30:00.000", also HEUTE um 7:30. Das kann natürlich nicht klappen, da das in der Vergangenheit liegt. Mir ist nur nicht klar, warum der Alexa2 Adapter das so gesendet hat. Weder über die Admin-Oberfläche noch über die API wird irgendwo das Datum übergeben. Nachdem ich den Wecker einmal über die Alexa-App aktiviert und deaktiviert habe, ging das Schalten auch über den Alexa2 Adapter wieder wie gewohnt. Der Fehler ist leider nicht reproduzierbar. Habe den Wecker gelöscht und von der API wieder neu anlegen lassen und es klappt jetzt problemlos. Werde das weiter beobachten...
  • *gelöst*Hilfe bei Javascript Bool setzen

    javascript
    5
    0 Votes
    5 Posts
    321 Views
    ChaotC
    @paul53 Danke dir - die Version klappt auch Ich wusste doch das mit den Spezialisten hier das schnell geht.

284

Online

32.7k

Users

82.6k

Topics

1.3m

Posts