Skip to content

Skripten / Logik

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

16.6k Topics 213.6k Posts

NEWS

Subcategories


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Topics
    49k Posts
    A
    @Dave69-CH Binding ist das Zauberwort :-) Ersetze das basic-Number Widget durch ein basic-HTML Widget und füge bei HTML folgende Zeile ein: {v1:0_userdata.0.Charge_Control.Allgemein.IstPvErtragLM0_kWh;v2:0_userdata.0.Charge_Control.Allgemein.IstPvErtragLM1_kWh;(Math.round(v1*1+v2*1))} kWh [image: 1771871148798-8016dce7-e059-4a32-bf4f-d68a29163f4f-grafik.png]
  • Hilfe für Skripterstellung mit Blockly

    7k 79k
    7k Topics
    79k Posts
    T
    @ste_glei sagte in Sonos Adapter // Radiosender // Lautstärke: So mal einen Selbstversuch gestartet. Blockly: [image: 1771869508062-97ddc240-3b91-439e-b10a-d06123161cc2-image.png] ergibt: [image: 1771869637274-523f8aeb-953d-498e-b051-6cd9826ac568-image.png] Also hat deine Logik vielleicht einen Fehler Ist es eine Vorbedingung, dass der Datenpunkt sonos.0.root.xxx_xxx_xxx_xx.favorites_list nur einen Radiosender bzw. Sonas Radio beinhalten darf?
  • Hilfe für Skripterstellung mit Node-RED

    953 13k
    953 Topics
    13k Posts
    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
  • Console gibt keine Ausgabe aus

    Moved
    10
    0 Votes
    10 Posts
    5k Views
    S
    Vielen Dank für Eure hilfreichen Antworten.
  • [gelöst] Sript zu Zeiten ausführen

    Moved
    8
    0 Votes
    8 Posts
    3k Views
    P
    Hallo @ all, ich bin jetzt erst dazu gekommen mich wieder damit zu beschäftigen. Leider bin ich gar kein guter Scripter. Ich brauch immer eine kleine Vorlage. @ Pix dein Script hat geklappt. Ich musste lediglich die Cron Notation anpassen. Die von dir lief nicht richtig. Danke nochmal auch an die anderen. LG
  • Zeitsteuerung will nicht

    Moved
    11
    1
    0 Votes
    11 Posts
    2k Views
    T
    Danke, das sieht gut aus :-)
  • Hilfe: Via Javascript URL abesenden

    Moved
    3
    0 Votes
    3 Posts
    1k Views
    M
    Hallo Leute, ich eure Hilfe, ich bin ein absoluter Neuling was das programmieren mit JavaSrcipt angeht. Und zwar möchtige ich eine Variable anlegen, die ich durch den Cloud-Adapter mit true und false beschreiben kann, um dann jeweils einen Befehl per URL an mein Mediola-Gateway zu schicken das wiederum meine Geräte per IR ansteuert. Die URL ist mir bekannt. Hintergrund: Ich möchte diverse IR-Geräte per Alexa steuern Ich habe keinen Plan wie ich das anstellen kann und hoffe ihr könnt mir helfen. Gruß Marc
  • Mein erstes Script (Sayit) bräuchte Hilfe :-)

    Moved
    6
    0 Votes
    6 Posts
    966 Views
    M
    nein, wurde nichts geschrieben. der javascript adapter war off :idea: ich bin schon viele schritte weiter. ;) allerdings probiere ich gerade über hm-rpc eine getState abfrage, welche noch noch nicht so funktioniert wie ich will. ich melde mich, wenn ich absolut nicht mehr weiterkomme. logfile ist sehr rot. 8-) lg.
  • Wunderground Wetter Abfrage über script

    Moved
    16
    0 Votes
    16 Posts
    6k Views
    B
    @ykuendig: Hi Bob Da Du auf einen einjährigen Post reagierst, wollte ich es mir nicht nehmen lassen, Dich darüber zu informieren, dass mittlerweile ein Weatherunderground Adapter geführt wird. Denn kann man benutzen, muss man aber nicht ;-) ` Oh man, den Adapter hab ich echt übersehen :roll: Aber danke für den Tip! ` > Das Script ist für javascript.1 eingestellt. Bei dir läuft es unter der Instanz 0. Du musst ganz oben im Script die Instanz anpassen. ` Auch danke dafür. Damit läuft das Skript. Und ich hab wieder was dazugerlernt ;)
  • Wo finde ich Variablen der VIS Oberfläche

    Moved
    9
    0 Votes
    9 Posts
    2k Views
    HomoranH
    Ich taste mich jetzt auch erst über Blockly an javascript ran. In einem ähnlichen Fall habe ich statt des "Schreibe", den "aktualisiere" Block genutzt aktualisiere (Objekt ID) mit (Wert) in deinem Falle also "true" als Wert Gruß Rainer
  • Daten über CAN-Bus senden

    Moved
    5
    1
    0 Votes
    5 Posts
    2k Views
    M
    msg.payload = [0xa1,0xb2]
  • BestPractis für "doppeltes on"?

    Moved
    8
    0 Votes
    8 Posts
    1k Views
    paul53P
    @Fitti: schreibt man val und true jeweils OHNE ' (einfaches Anführungszeichen) , richtig? ` Ja, die Bezeichner (z.B. val) werden ohne Anführungszeichen geschrieben (vielleicht funktioniert es auch mit ' ?). true ist ein boolscher Wert, kein String. change: 'lt' 'lt' ist ein String; es kann keine boolscher Wert (boolean) und keine Zahl (number) sein.
  • Anrufansage & Nachricht mit Blockly

    Moved
    6
    1
    0 Votes
    6 Posts
    2k Views
    S
    Hier der aktuelle funktionierende Stand… ! <xml 1999/xmlns="<URL url=" http:/www.w3.org/xhtml"="">http://www.w3.org/1999/xhtml"> ! <block type="on" id="D-]gKr{S6nMnK~Da4-z?" x="88" y="88"><field name="OID">tr-064.0.callmonitor.inbound.timestamp</field> ! <field name="CONDITION">ne</field> ! <statement name="STATEMENT"><block type="timeouts_settimeout" id="{wuJ3NuDI(4[{ye3j~dn"><field name="NAME">timeout</field> ! <field name="DELAY">500</field> ! <statement name="STATEMENT"><block type="controls_if" id="P(a)Y:K0wpRnM/q5(}l"><mutation else="1"></mutation> ! <value name="IF0"><block type="logic_compare" id="1D+T-RF2EDZ]K.@@v_H6"><field name="OP">EQ</field> ! <value name="A"><block type="get_value" id="zGok2Xs:!;,o(cNQcwpS"><field name="ATTR">val</field> ! <field name="OID">tr-064.0.callmonitor.inbound.callerName</field></block></value> ! <value name="B"></value></block></value> ! <statement name="DO0"><block type="sayit" id="L:c+_.z9)q9oCcpxREr-"><field name="INSTANCE">.0</field> ! <field name="LANGUAGE">de</field> ! <value name="VOLUME"><block type="math_number" id="OGpAMalB@dUpxuo_=Ay"><field name="NUM">100</field></block></value> ! <value name="MESSAGE"><shadow type="text" id="zk+69/O]Wn5QiOS={%J="><field name="TEXT">text</field></shadow> ! <block type="text_join" id="/aTtDlgAtMMFqH.RN6TE"><mutation items="2"></mutation> ! <value name="ADD0"><block type="text" id="Nep.Vu=,+(e}b/w7(sNS"><field name="TEXT">Anruf von Nummer</field></block></value> ! <value name="ADD1"><block type="get_value" id="O!yi{EAjnOMl5toHgdu)"><field name="ATTR">val</field> ! <field name="OID">tr-064.0.callmonitor.inbound.caller</field></block></value></block></value></block></statement> ! <statement name="ELSE"><block type="comment" id="LA6K/IS3q#y!uU=B:O7g"><field name="COMMENT">sayit mit Namen</field> ! <next><block type="sayit" id="4_uFDZo=99#_th/I|j1"><field name="INSTANCE">.0</field> ! <field name="LANGUAGE">de</field> ! <value name="VOLUME"><block type="math_number" id="%agKngXzUzhO;^x:j*Zl"><field name="NUM">100</field></block></value> ! <value name="MESSAGE"><shadow type="text" id="h6_/@CY+4s/{abGe?Kd,"><field name="TEXT">text</field></shadow> ! <block type="text_join" id="Fo,RhD@*WMeAu;3hm[:g"><mutation items="2"></mutation> ! <value name="ADD0"><block type="text" id="aqu}1e|RiNeC+ebp2Bec"><field name="TEXT">Anruf von</field></block></value> ! <value name="ADD1"><block type="get_value" id="T9=g0@eTP2o{6;WXKIiE"><field name="ATTR">val</field> ! <field name="OID">tr-064.0.callmonitor.inbound.callerName</field></block></value></block></value></block></next></block></statement> ! <next><block type="controls_if" id="[h~#}T~EYq|%zOS1f)36"><mutation else="1"></mutation> ! <value name="IF0"><block type="logic_compare" id="?nW%5,F9qdYo-/~iL8rj"><field name="OP">EQ</field> ! <value name="A"><block type="get_value" id="ip#M!UFj@gHr1tOMpCt{"><field name="ATTR">val</field> ! <field name="OID">tr-064.0.callmonitor.inbound.callerName</field></block></value> ! <value name="B"></value></block></value> ! <statement name="DO0"><block type="pushover" id="9}=1gd)3|pvDE^OHKf(S"><field name="PRIORITY">0</field> ! <value name="MESSAGE"><shadow type="text" id="8aS7f-IBzM^.q*;[{G"><field name="TEXT">text</field></shadow> ! <block type="text_join" id="R~8qxH%/7P8fdUN{It@"><mutation items="4"></mutation> ! <value name="ADD0"><block type="text" id="=+8,5-[Vn2=~_jKF4Z5"><field name="TEXT">Name unbekannt - Tel:</field></block></value> ! <value name="ADD1"><block type="get_value" id="Fqb{QAc_RCOEhvLU9Fi_"><field name="ATTR">val</field> ! <field name="OID">tr-064.0.callmonitor.inbound.caller</field></block></value> ! <value name="ADD2"><block type="text" id="c+mAi(^%_MPAW5C[(XH"><field name="TEXT">- am:</field></block></value> ! <value name="ADD3"><block type="get_value" id="DNkn?|Nl|A}Us4^Z[ds"><field name="ATTR">val</field> ! <field name="OID">tr-064.0.callmonitor.inbound.timestamp</field></block></value></block></value> ! <value name="TITLE"><block type="text" id="J4?g4z#2lm~+;yDR8cQ"><field name="TEXT">Anruf von:</field></block></value></block></statement> ! <statement name="ELSE"><block type="pushover" id="AsqMoI4]3ER{z8#g:-"><field name="PRIORITY">0</field> ! <value name="MESSAGE"><shadow type="text" id="8aS7f-IBzM^.q;[{G"><field name="TEXT">text</field></shadow> ! <block type="text_join" id="#3AWc1va;bG]AA9bs^l"><mutation items="5"></mutation> ! <value name="ADD0"><block type="get_value" id="C2d]lIN)B,!6D{Ho/]rn"><field name="ATTR">val</field> ! <field name="OID">tr-064.0.callmonitor.inbound.callerName</field></block></value> ! <value name="ADD1"><block type="text" id="P_4T%4zNei/-K^a9I%O0"><field name="TEXT">- Tel:</field></block></value> ! <value name="ADD2"><block type="get_value" id="R(2]3hcDQtF!rB[ry~.{"><field name="ATTR">val</field> ! <field name="OID">tr-064.0.callmonitor.inbound.caller</field></block></value> ! <value name="ADD3"><block type="text" id="^5m:W7PWh8;j7XJ/}^cO"><field name="TEXT">- am:</field></block></value> ! <value name="ADD4"><block type="get_value" id="y2H-bQyb=StWAJFHOV#C"><field name="ATTR">val</field> ! <field name="OID">tr-064.0.callmonitor.inbound.timestamp</field></block></value></block></value> ! <value name="TITLE"><block type="text" id="XOyHv|H3ed2i2,5sQ.;R"><field name="TEXT">Anruf von:</field></block></value></block></statement></block></next></block></statement></block></statement></block> ! <block type="comment" id="Ck[=ssU#?W|4Dx@91d3g" x="88" y="113"><field name="COMMENT">Änderung bei Anruf</field></block></xml> leider ohne die Funktion der Wiederholung der Ansage. Der Block wiederholen solange - scheint nicht zu funktionieren. Dabei stürzt immer der Java Script Adapter ab. PS die Debug Ausgaben habe ich in diesem Blockly bereits entfernt. Gruß Sven
  • Schleife für Wired DImmer

    Moved
    4
    0 Votes
    4 Posts
    838 Views
    paul53P
    Hier noch eine Variante (nicht getestet), die weniger Belastung für die CPU bringt, da nicht alle 300 ms getState(id) aufgerufen wird: var timer = null; var idTaste = 'hm-rpc.0.XXX1234567.N.PRESS_SHORT'; var idLevel = 'hm-rpc.0.XXX1234567.N.LEVEL'; var level = getState(idLevel).val; function dunkler() { if(level) { level = level - 5; if(level < 0) level = 0; setState(idLevel, level); } if(timer && level === 0) clearInterval(timer); } on({id: idTaste, val: true}, function() { level = getState(idLevel).val; dunkler(); timer = setInterval(dunkler, 300); });
  • Json Objekt in Blockly weiter bearbeiten

    Moved
    1
    0 Votes
    1 Posts
    986 Views
    No one has replied
  • [gelöst] Anrufer Ansage wiederholen, bis Gespäch angenommen wurde

    Moved
    11
    0 Votes
    11 Posts
    2k Views
    A
    Hi, Für Android gibt es was ähnliches, läuft allerdings nicht über iobroker. Vielleicht kann man das ja irgendwie einbinden. http://www.sonofy.co
  • Nach 2h keine Bewegung im Raum schalten

    Moved
    9
    0 Votes
    9 Posts
    1k Views
    htreckslerH
    var idFensterAuf = "hm-rpc.0.NEQ11000000.1.STATE"; var timer = null; subscribe(idFensterAuf, function (obj) { if (obj.newState.val) { // Starte timer für 2 Minuten if (!timer) { timer = setTimeout(function () { timer = null; log("Fenster im Bad länger als 2 Minuten auf"); }, 120000); } } else { // Fenster zugemacht. Falls timer läuft = stopp log('Fenster im Bad geschlossen!'); if (timer) { clearTimeout(timer); timer = null; } } }); so funktioniert es bei mir mit einem Fenster. (Ist nur für einen Test auf 2 Minuten gesetzt :-))
  • Sayit -> mp3-Ausgabeprobleme

    Moved
    4
    2
    0 Votes
    4 Posts
    882 Views
    S
    Erst mal eine Teilmeldung aus der Ferne. Mein Wandtablet (mit Firefox) macht den Ankündigungston wenn sayit auf Browser gestellt ist. Mein zweites Tablet (mit Boat Browser) macht es trotzdem nicht wenn sayit auf Browser gestellt ist. Den Boat-Browser muss ich aber für die weitere Funktionalität des Tablet verwenden. Scheint also das die Einstellung "Browser" zwingend Voraussetzung im sayit-Adapter ist. Nachtrag: Dieter, wie sieht dein Script mit request aus ? Bei mir steht im Log: ReferenceError: request is not defined at Object.
  • Sayit - Sprachrückmeldung

    Moved
    27
    0 Votes
    27 Posts
    3k Views
    H
    Vielen Dank, für Deine Hilfe.
  • Node Red Script für Temperatur Ausgabe

    Moved
    4
    0 Votes
    4 Posts
    3k Views
    D
    Hi Aber dafür hast du der Nachwelt wieder ein nettes Snippet da gelassen. Thank u well :-)
  • Blockly - jetzt ich auch noch ;-)

    Moved
    6
    1
    0 Votes
    6 Posts
    1k Views
    HomoranH
    @rantanplan: Das Du da noch Zeit für findest ` Das hatte Bluefox vor zwei Jahren in Kassel vorgestellt. Für mich als js-Legastheniker genau das richtige. Leider gibt es dort auch Bausteine in denen wieder js eingegeben werden muss :( Deswegen hatte ich es irgendwann nicht weiter verfolgt. Wahrscheinlich liegt es auch jetzt daran, dass ich in einem node die payload aus zweien weiteren nodes nicht verarbeitet bekomme. Gruß Rainer
  • Umlaute in Javascript Var -> Homematic

    Moved
    3
    0 Votes
    3 Posts
    1k Views
    M
    Meine Lösung: Bin jetzt den Umweg über simpleAPI adapter gegangen … Abfrage über http://server:8090/getPlainValue/yr.0.f … .day0.text liefert richtige Umlaute.
  • Parameterübergabe an Callback-Function

    Moved
    3
    0 Votes
    3 Posts
    664 Views
    ThisoftT
    Danke blauholsten - so funktionierts. Ich habe eben diese Anonymen Funktionen (ich glaub, so heißen die??) und auch die asynchrone Verarbeitung bei Javascript noch nicht wirklich verinnerlicht.

739

Online

32.7k

Users

82.4k

Topics

1.3m

Posts