Weiter zum Inhalt

Skripten / Logik

16.6k Themen 214.5k Beiträge

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

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    3k 49k
    3k Themen
    49k Beiträge
    D
    Ich logge gerade die Variable pass mit. Irgendwie schaltet die so ziemlich oft am Tag. In der früh ist das ja noch ok. Aber ab ca. 10 Uhr hat der Akku eigentlich genug SOC das der Speicher nicht in den Bypass schalten muss. Ich bin mir auch nicht sicher ob der Wirklich schaltet oder das nur ein Anzeigefehler ist. Hat jemand ein ähnliches Verhalten. Ich habe einen 800Pro 0 = Bypass aus 2 = Bypass ein Die Zahl dazwischen ist nur eine addierte Zahl, das ich sehe wie oft er geschalten hat [image: 1777318055753-cf4f54c0-7176-482a-95e6-5e320dcb4e06-image.jpeg]
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Themen
    80k Beiträge
    HomoranH
    @Berlon sagte: wieso gibt es bei true und false kleiner und größer? Zusätzlich zu der Info von @paul53 Binär ist false=0 und true=1. EDIT: @asgothian war schneller und genauer
  • Hilfe für Skripterstellung mit Node-RED

    956 13k
    956 Themen
    13k Beiträge
    S
    Hallo Zusammen, ich bin gerade am überlegen, wie ich folgende Aufgabe umsetzen könnte: Ein true an einer (Trigger)Node lässt einen Zähler laufen und setzt einen eigenen Ausgang auf true. Ein false der Trigger Node stoppt den Zähler setzt diesen aber nicht auf false. Ein true lässt den Zähler einfach weiterlaufen... Nach Ablauf der Zeit im Zähler wird der Ausgang des Zählers auf false gesetzt. Mehr soll nicht passieren. Ein separater Eingang am Zähler setzt diesen auf 0 zurück. Was ich damit anfangen möchte: Die Laufzeit der Poolpumpe wird auf eine Mindestlaufzeit von bspw. 4h überwacht -kann aber manuell bedient bei Bedarf länger laufen. Ein Trigger um 00:01Uhr setzt die Laufzeit zurück. Die Zählernode gilt hier als "Anforderung Pumpe wegen Mindestlaufzeit unterschritten". Ich habe noch keine brauchbaren Ideen, wie ich dass sauber und mit wenig Aufwand umsetzen könnte... Vielen Dank und VG Torsten
  • JSON Parsen Weenect CAT 2 mit 2 GPSTracker

    javascript
    6
    3
    0 Stimmen
    6 Beiträge
    853 Aufrufe
    H
    @oliverio Erstmal Danke für die Hilfe Ich habe es hinbekommen. Heute Abend werde ich den Weg hier beschreiben. Mit diesem Blockly hole ich die Daten und wandle ich sie in lesbares JSON um. ...sagt mir Payload to large..... Sorry kann ich nicht hochladen.. ??? als Javascript: var originalText, suchText, tauschText, Text2, AnzZeichenSuchtext, timeout, MeinText, Stelle, pos_daten, result, neuerText, klammerauf1, klammerauf2, Teil_1, Teil_2, klammerzu1, klammerzu2, Tracker1, Tracker2, timeout2; // Beschreibe diese Funktion … async function changeText(originalText, suchText, tauschText) { Text2 = originalText; AnzZeichenSuchtext = suchText.length; Stelle = Text2.indexOf(suchText) + 1; while (Stelle > 0) { if (Stelle == 1) { // steht am Textanfang Teil_1 = tauschText; } else { Teil_1 = Text2.slice(0, Stelle - 1); } Teil_2 = Text2.slice(((Stelle + AnzZeichenSuchtext) - 1), Text2.length); Text2 = [Teil_1,tauschText,Teil_2].join(''); Stelle = Text2.indexOf(suchText) + 1; } return Text2; } on({id: 'javascript.0.Weenect.buttons.get_pos_butt', change: "any"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; exec('bash /home/iobroker/pos_get_sh.sh', async function (error, result, stderr) { timeout = setTimeout(async function () { pos_daten = result; setState("javascript.0.Weenect.js_rohdaten"/*Weenect.js_rohdaten*/, pos_daten, true); }, 1000); }); MeinText = String(pos_daten).toLowerCase(); if (!!MeinText.length) { neuerText = await changeText(MeinText, '\'', '"'); neuerText = await changeText(neuerText, 'none', '"unbekannt"'); } klammerauf1 = neuerText.indexOf('{') + 1; klammerauf2 = neuerText.lastIndexOf('{') + 1; klammerzu1 = neuerText.indexOf('}') + 1; klammerzu2 = neuerText.lastIndexOf('}') + 1; Tracker1 = neuerText.slice((klammerauf1 - 1), klammerzu1); Tracker2 = neuerText.slice((klammerauf2 - 1), klammerzu2); console.log(('Daten Tracker 1')); console.log(('Daten Tracker 2')); await wait(500); timeout2 = setTimeout(async function () { setStateDelayed('javascript.0.Weenect.js_Tracker1', Tracker1, true, 0, false); setStateDelayed('javascript.0.Weenect.js_Tracker2', Tracker2, true, 0, false); }, 1000); }); Dann hole ich jeweils für einen Tracker die Daten raus und schreibe sie in die Objekte. const idJson = 'javascript.0.Weenect.js_Tracker1'; const path = 'Weenect.Tracker1.'; const js = 'javascript.0.'; on(idJson, function(dp) { // triggert bei Wertänderung let obj = JSON.parse(dp.state.val); for(let prop in obj) { if(existsState(js + path + prop)) setState(path + prop, obj[prop], true); else createState(path + prop, obj[prop], {type: typeof obj[prop]}); } });
  • Blockly Intervall ordentlich stoppen

    4
    2
    0 Stimmen
    4 Beiträge
    832 Aufrufe
    Basti97B
    @denis-wodtke Funktioniert es bei dir richtig?
  • zentraler Licht-Aus-Schalter

    6
    0 Stimmen
    6 Beiträge
    552 Aufrufe
    paul53P
    @mathopa1973 sagte: alle aktuell eingeschalteten Lampen ausschalte $(selector).setState(false)
  • [gelöst] Skript Ausführung ohne Trigger?

    20
    1
    0 Stimmen
    20 Beiträge
    2k Aufrufe
    treff and NIXT
    Scheint nun alles zu funktionieren wie gewünscht, Vielen dank euch allen
  • [Gelöst] Hilfe bei MQTT Daten String / Parsen

    blockly communication javascript
    10
    2
    0 Stimmen
    10 Beiträge
    721 Aufrufe
    YodaY
    @paul53 super klasse es läuft - ich Danke dir für die Hilfe!!! Der Shelly Motion kann so nun über mqtt weiter verwendet verwendet werden. So Richtig lief dieser leider nicht im Shelly Adapter, Ich hatte dieses dort zuletzt als Gerät entfernt, und bekam ihn dort seit dem auch nicht wieder rein. Über dieses Umweg klappt es nun aber auch. Ich hoffe das Ding hat nur kein weg - musste Ihn nun grade erst wieder überreden das er Online geht - mal abwarten. [image: 1617660726938-26.jpg] [image: 1617660744062-27.jpg] [image: 1617660966072-28.jpg] <xml xmlns="https://developers.google.com/blockly/xml"> <block type="comment" id="PuvRy#0hgHV,?G;E_laZ" x="113" y="-137"> <field name="COMMENT">status</field> <next> <block type="on_ext" id="Yo#F?^4-0=GZ6^)MpcRc"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="p;PD%8nm~Exy_*S6~rQ9"> <field name="oid">mqtt.0.shellies.shellymotionsensor-60A42396038E.status</field> </shadow> </value> <statement name="STATEMENT"> <block type="update" id="Cf%35qRbv`!_:sS)r;M$"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.Shelly.Motion</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_attr" id="hSLi_es)=h1K,M|66xZ/"> <value name="PATH"> <shadow type="text" id="a6XOXOwYi=1{zJv#,Xw?"> <field name="TEXT">motion</field> </shadow> </value> <value name="OBJECT"> <block type="on_source" id="yqE%o(Y}4aWCA2vBk4,q"> <field name="ATTR">state.val</field> </block> </value> </block> </value> <next> <block type="update" id="LBg+;y=*=8zJQDH|uj0e"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.Shelly.Lux</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_attr" id="Ndk,bvgHAQOBunf!?j^1"> <value name="PATH"> <shadow type="text" id="+n.O)g9Vx@#/DKS6/,vK"> <field name="TEXT">lux</field> </shadow> </value> <value name="OBJECT"> <block type="on_source" id="mPbXlKh-j-5YSKe@KTho"> <field name="ATTR">state.val</field> </block> </value> </block> </value> <next> <block type="update" id="wM+r2=S3waZ?M.:f.QFE"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.Shelly.Bat</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_attr" id="i_P:79X~f[7MF{vG:%N4"> <value name="PATH"> <shadow type="text" id="N1LMn=AbwunK_2wV|rCY"> <field name="TEXT">bat</field> </shadow> </value> <value name="OBJECT"> <block type="on_source" id="pl[!U+-KU;@4*^1hOy8^"> <field name="ATTR">state.val</field> </block> </value> </block> </value> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </xml>
  • Sonos Addon / in welchen Pfad kommt eine mp3

    3
    0 Stimmen
    3 Beiträge
    347 Aufrufe
    J
    @webmaik hast du die Antwort schon gefunden, ich stehe gerade vor der gleichen Frage...
  • Cron wird ignoriert

    3
    1
    0 Stimmen
    3 Beiträge
    306 Aufrufe
    I
    @mcu DANKE!!
  • Fehler seit javascript 5.x.x: node_ssh is not a constructor

    javascript
    10
    0 Stimmen
    10 Beiträge
    363 Aufrufe
    S
    @glasfaser @paul53 Das sind die error im log bei simple-ssh. Der raspi wird runtergefahren, aber es kommt der error „then is not a function“. Wisst ihr an was das liegen könnte? 2021-04-04 11:52:10.757 - error: javascript.0 (3037) Error in callback: TypeError: (intermediate value).then is not a function 2021-04-04 11:52:10.767 - error: javascript.0 (3037) at Object. (script.js.funktioniert.Volumio_shutdown_test:16:8) 2021-04-04 11:52:10.768 - error: javascript.0 (3037) at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1070:38) 2021-04-04 11:52:10.769 - error: javascript.0 (3037) at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:487:29) 2021-04-04 11:52:10.770 - error: javascript.0 (3037) at Immediate._onImmediate (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:5555:41) 2021-04-04 11:52:10.770 - error: javascript.0 (3037) at processImmediate (internal/timers.js:461:21)
  • Probleme mit der Zeitumstellung?

    javascript blockly
    27
    0 Stimmen
    27 Beiträge
    4k Aufrufe
    M
    Hallo, bei mir hat sie auch wieder letzte Nacht ausgesetzt, zum 3 mal diese Woche keine Routine mehr ausgeführt. Aber nach einem Neustart des Adapter geht alles wieder, der immer noch ohne Fehler lief. Glaube auch das Amazon wieder was am Basteln ist, apollon77 wird es schon richten wenn er erst weiß was es ist. Gruß Michael allen schöne Ostern, und bleibt Gesund
  • Virtuellen Schalter erstellen und steuern

    23
    1
    0 Stimmen
    23 Beiträge
    3k Aufrufe
    S
    @mcu Hmpf, da hast du wohl recht, das war mir nicht bewusst. Dort wird der letzte Befehl (bei Ausführung) als Text eingetragen, entsprechend könnte ich ihn im Skript abfragen nach dem Motto: "Wenn 'Gute Nacht' dann dimmen"... dann werde ich das mal so versuchen. Danke sehr!
  • [gelöst] Zeit und Datum an Objekte der ETS senden

    13
    3
    0 Stimmen
    13 Beiträge
    1k Aufrufe
    B
    @frankthegreat "Morgenstund hat Gold im Mund!" [image: 1617420778772-1bfc4b44-aad4-43fd-a9f5-62e8f5573067-grafik.png] Ich habe mal "An die lokale Netzwerkschnittstelle binden" auf "Auto" gestellt. Ferner habe ich in der KNX-Adapter-Instanz unter "lokale Netzwerkschnittstelle" die "phys. EIB Adresse" auf "15.15.22" statt "1.1.0" gestellt. Irgendetwas hat funktioniert, da meine Berker BiQ nund Datum und Uhrzeit anzeigen. Ich werde mal ein bisschen mit "trial&error" rumspielen, um dem Thema komplett auf den Grund zu gehen. Interessanter war zwischenzeitlich ohne eine mir bewußte Einstellungsänderung auch einmal ein "vernünftiges" Datumsformat unterhalb der beiden "nodes" zu sehen (jezt steht da wieder ein großer ganzzahliger Wert). Unter den Objekten des iobrokers ist weiterhin ein "blank" - egal was sich da tut. Ich glaube, dass ich auch noch eine suboptimale Einstellung meines KNX-Gateways habe. Ich habe mir selbst (und ich bin kein Elektriker) ein EIB-Gateway vom eibmarkt (Weinzierl) eingebaut. Wenn im iobroker die Instanzen mit Verbindung zum Gateway laufen (KNX, JS, SCENES, SKRIPTE), dann ist die Schnittstelle in meiner ETS-APP blockiert. Früher lief alles über den Gira Homeserver und IP-Tunneling. Kann ich das auch über den iobroker "tunneln"?
  • Intervall stoppt nicht (mehr)

    3
    1
    0 Stimmen
    3 Beiträge
    307 Aufrufe
    S
    @crunchip Absolut richtig, vielen Dank!!! Manchmal ist man a) blind und b) ist es so einfach... Der Screenshot zeigt tatsächlich nur einen Teil (wie es anfangs war), hinzugekommen sind weitere Temperatur- und Zeitabstufungen. Top! LG
  • Script Uhrzeit auf KNX senden

    1
    0 Stimmen
    1 Beiträge
    247 Aufrufe
    Niemand hat geantwortet
  • Starten von Skripten (Blocklys)

    9
    0 Stimmen
    9 Beiträge
    305 Aufrufe
    I
    @paul53 Danke, aber ich glaube, das überfordert mich noch bisschen ;) Ich finde es so, wie ich es jetzt habe, übersichtlicher.
  • Blockly: Staubsauer starten

    11
    1
    0 Stimmen
    11 Beiträge
    981 Aufrufe
    E
    Hab den jetzt via [image: 1617303757244-279069e8-9ff6-4c47-820c-cc73c88d3dfd-image.png] in die VIS eingebunden. Da geht auch der direkte Button. Warum auch immer. Immerhin hab ich was bei Blockly gelernt. Dank Euch allen.
  • Wer ruft an, wer wird angerufen.

    7
    0 Stimmen
    7 Beiträge
    913 Aufrufe
    Matze1976M
    @wendy2702 Jeder hat so seine Vorstellungen.
  • Skript funktioniert nicht mehr

    7
    1
    0 Stimmen
    7 Beiträge
    289 Aufrufe
    I
    @arteck Ah, okay, danke! Ist ja exakt, wie meines, nur habe ich am Ende im zweiten "falls"-Zweig "Heizung_aktiv? = wahr" abgefragt, anstatt "Heizung_aktiv? = falsch" und "setze Heizung_aktiv? auf falsch", anstatt "setze Heizung_aktiv? auf wahr", richtig? Sonst hast Du doch nichts geändert?
  • Schedule Fragen

    6
    3
    0 Stimmen
    6 Beiträge
    562 Aufrufe
    K
    @paul53 mir war die CRON Notation nicht bekannt - Meine Notation kommt von der kleinen Uhr in der IDE - Ist diese Notation falsch? Heute morgen löste das Ereignis nur einmal aus - ???
  • [OFFEN]* [Blockly] EXEC CP klappt nicht

    blockly
    9
    0 Stimmen
    9 Beiträge
    995 Aufrufe
    FenianF
    @gyroslav Für sudo ist normalerweise das Passwort notwendig. Es gibt einige Befehle die iobroker ohne Passwort ausführen kann/darf. Zu finden sind die in der Datei iobroker unter /etc/sudoers.d/ Wenn du cp ohne Passwort nutzen willst: iobroker ALL=(ALL) NOPASSWD: /bin/cp zu der o.g. Datei hinzufügen Danach darf iobroker "sudo cp ..." ohne Passwort ausführen. Und was den Fehler angeht sehe ich das wie @MCU
  • [gelöst] Skript Fenster offen mit ZWave Sensoren

    23
    3
    0 Stimmen
    23 Beiträge
    841 Aufrufe
    S
    @paul53 ok, ist gelöscht. Das andere probiere ich, sobald die anderen Fenstersensoren angebracht sind :-)

275

Online

32.8k

Benutzer

82.8k

Themen

1.3m

Beiträge