Skip to content

Skripten / Logik

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

16.6k Themen 214.0k Beiträge

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Themen
    49k Beiträge
    azzkikrboyA
    @ArnoD sagte in E3DC Hauskraftwerk steuern: @azzkikrboy Verwendest du die Objekt-ID 0_userdata.0.Charge_Control.Allgemein.EigenverbrauchDurchschnitt ? Da sollten immer beide Werte angezeigt werden. Hallo, nur zur Info für alle. Ich musste das Widget tauschen. Mit einem "String-Widget" funktioniert es.
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Themen
    80k Beiträge
    B
    @Murphy-0 Wieder was dazu gelernt, dachte immer man soll die Akkus nur ab und zu zum kalibrieren mal ganz voll laden. Der Spannungsverlauf kurz vor erreichen der 3,5V sah bei mir ähnlich aus. Auch die Akku Temperaturen lagen auch in dem Bereich wie bei dir. Die hyperTmp lag so knapp unter 40°C. Muss ich mal beobachten, denke bis 40°C kann ich noch ohne Lüfter auskommen. Danke noch mal für deine super hilfreichen Rückmeldungen und die Unterstützung! Habe sehr viel dabei gelernt.
  • 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
  • HM-LC-Sw1PBU-FM Schalter per ioBroker steuern

    Verschoben
    12
    0 Stimmen
    12 Beiträge
    2k Aufrufe
    J
    Wenn das alle alle Datenpunkte und Kanäle sind, dann ist beim einlesen etwas schief gelaufen. Bitte die Objektansicht im iobroker aktualisieren (Button oben links, Kreis/Pfeil). Sollte das nicht ausreichen müssen die Geräte nochmals synchronisiert werden. So sieht die normale Ansicht aus: [image: 6696_bildschirmfoto_2018-12-23_um_10.14.28.png]
  • Blockly Homematic Wandthermostat Absenkung bei Fensteröffnung mit Xiaomi Fensterkontakt

    Verschoben
    14
    0 Stimmen
    14 Beiträge
    2k Aufrufe
    S
    Nein, bin leider nicht so ein Crack… :|
  • Schalter mit zwei unterschiedlichen Zuständen

    Verschoben
    4
    0 Stimmen
    4 Beiträge
    514 Aufrufe
    A
    Hallo zusammen, habe eine Lösung gefunden (war ein Betrag über Dimmen) Hier mein Code: const idLong = "javascript.0.Signale.Flur.Taster-Haustuer-OL"; const idLevel= "javascript.0.Zustand.EG.Licht-Schummer"; var state; on(idLong, function(dp) { if (getState(idLong).val) state=1; setTimeout(function() { // Es wird 500ms gewartet und überprüft, ob der Taster wieder Null wird if(!getState(idLong).val && state) { //kurz gedrückt setState(idLevel, 1); state = 0; } if(getState(idLong).val && state) { // Lang gedrückt setState(idLevel, 0); state = 0; } }, 1000); }); Wohl nicht die feine Programmoiervariante, aber es funktioniert. André
  • Function mit 2 Eingängen

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    296 Aufrufe
    R
    Nein Gesendet von iPhone mit Tapatalk
  • [Gelöst] Fenster offen manuell setzen?

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    273 Aufrufe
    G
    Ok, schlecht ausgedrückt. Es geht um die Heizkörperregler die ich über einen fremden Türsensor zu steuern. Bin inzwischen drauf gekommen. Es ist 0 (Close) und 1 (open) zu setzen. Nachtrag: Man muß das Modul "Steuere" verwenden, sonst erkennt es die CCU den Eintrag nicht und setzt das dazugehörige Objekt nicht auf "Fenster offen".
  • RF Bridge mit intertechno fb

    Verschoben
    1
    0 Stimmen
    1 Beiträge
    233 Aufrufe
    Niemand hat geantwortet
  • [Gelöst] Trigger Astro Funktion mittels Datenpunkt auswählen

    Verschoben
    3
    2
    0 Stimmen
    3 Beiträge
    390 Aufrufe
    DAN78D
    Hallo, danke für die Rückmeldung, ich werde es probieren. Alternativ wäre mit auch eingefallen, in der logik eine Datenpunkt mit der aktuellen Zeit von gewählten Astro Zeitpunkt zu schreiben. Darunter dann ein Cronjob Trigger. (ähnlich wie Beispiel Wecker in Anleitung Blockly) Dein Tip ist die bessere und sauberere Lösung
  • Mail mit 2-3 Anhängen - Live Kamera Bilder

    Verschoben
    1
    1
    0 Stimmen
    1 Beiträge
    204 Aufrufe
    Niemand hat geantwortet
  • *Gelöst* Fensterkontakte Blockly

    Verschoben
    11
    1
    0 Stimmen
    11 Beiträge
    2k Aufrufe
    H
    Es scheint jetzt zu funktionieren mit deinem Beispielskript (virtuell) Vielen Dank für eure Lösungsansätze, man sieht den Wald vor lauter Bäumen manchmal nicht mehr :lol:
  • IP Check Script ??

    Verschoben
    6
    0 Stimmen
    6 Beiträge
    975 Aufrufe
    ymurawskiY
    Hi Leute, also ich glaube ich bin einfach zu blöd dafür. Ich probiere jetzt seit stunden das Phantom.js aber er will einfach kein Bild machen. Das Parsen verstehe ich leider nicht. Habe leider kein Plan von Programmieren oder Scripten :roll: Ist es denn möglich das eine Website die Iframe benutzung sperren kann ?
  • Lampencheck bei verlassen des WLANs

    Verschoben
    6
    0 Stimmen
    6 Beiträge
    679 Aufrufe
    paul53P
    @jEEESTAR: Der Code sieht momentan wie folgt aus: ` Der Code funktioniert so nicht. Vorschlag: const idAnwesend = 'javascript.0.Datenpunkte.Anwesenheit'; const lights = getObject("enum.functions.lightstatus").common.members; function countLights() { var lichtAn = 0; var name = ''; for(let i = 0; i < lights.length; i++) { if (getState(lights[i]).val) { lichtAn++; name = name + getObject(lights[i]).common.name + ', '; } } var lichtAnText = 'Alle Lampen aus'; if(lichtAn > 0) lichtAnText = 'Lampe(n) ein: ' + name; setState('javascript.0.Datenpunkte.StatusLichtAnText', lichtAnText ); setState('javascript.0.Datenpunkte.StatusLichtAn', lichtAn ); } on({id: idAnwesend, change: 'ne', val: false}, countLights); lightstatus muss den betreffenden Datenpunkten zugeordnet sein
  • [gelöst] Sonos Adapter einfach nur ein aus?

    Verschoben
    10
    0 Stimmen
    10 Beiträge
    828 Aufrufe
    T
    Hallo skorpil, schön, dass es läuft. Ich kann dir nur empfehlen, von der CCU ganz wegzugehen (außer als Hub für die Homematic Sachen). Habe ich vor langer Zeit auch getan und es ist einfach viel einfacher und sinniger, Skripte und Co an nur einem Platz in nur einer Systematik zu haben. Mein erstes Skript bzw erster Kontakt mit JavaScript war übrigens damals auch mit dir :) viewtopic.php?f=21&t=3351&p=64569#p64569 Frohe Weihnachten
  • Homematic RPC Time Out

    Verschoben
    1
    0 Stimmen
    1 Beiträge
    675 Aufrufe
    Niemand hat geantwortet
  • ObjektID aus Bausteinen variabel gestalten.

    Verschoben
    4
    0 Stimmen
    4 Beiträge
    324 Aufrufe
    MikeEchoM
    @RappiRN: (…) Aber eigentlich musst du doch die Adressen in eine Adapterkonfiguration eintragen!? Was genau hast du denn vor, dass du solch eine Eingabe vorhast? ` Es geht mir um die Einbindung von diversen HomeMatic Aktoren. Jedes mal für 8 Rolläden die Adresse rauszusuchen (und mit Javascript/Blockly-Bug gleich zweimal pro Adresse) war mir zu müßig. ;) Ich will ein Gerüst anlegen und dann nur noch einmal die Adresse pro Aktor eintragen müssen. Ich habe die Adresse eben oft im Trigger und im if/then/else… Aber Dein Ansatz hilft mir schonmal, danke dafür!
  • *gelöst* Problem mit Heizungsskript (Heizung runter bei Fenster auf)

    Verschoben
    5
    2
    0 Stimmen
    5 Beiträge
    540 Aufrufe
    surfer09S
    Super, das werde ich dann gleich mal umstellen. Vielen Dank an euch! :)
  • Blockly Anfänger brauch Hilfe

    Verschoben
    4
    1
    0 Stimmen
    4 Beiträge
    811 Aufrufe
    J
    Wurde denn nun dein Problem mit der https://testsieger-waschmaschinen.de/waschmaschine-test-bis-500-euro/#Bosch_WAN28190_Waschmaschine_fuer_unter_500_Euro_mit_18_im_Stiftung_Warentest nun geklärt?
  • Zeitspanne, Trigger und if Abfrage

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    454 Aufrufe
    M
    Ahhhh jetzt habe ich verstanden wie man es machen muss. Vielen Dank für deine Hilfe! :)
  • Node-Red ändert Value, Schaltet aber nicht

    Verschoben
    12
    3
    0 Stimmen
    12 Beiträge
    4k Aufrufe
    K
    @Matzebhv: Einzig Scripte bekomme ich so nicht getriggert. Der Datenpunkt wird einwandfrei auf true oder false gesetzt, die zugehörigen Scripte triggern aber nicht. Setze ich den DP von Hand läuft das Script. Mir scheint es wird zwar true/false gesetzt, aber nicht als Logikwert. Hat jemand eine Idee? ` <u>Edit:</u> Mein Problem ist inzwischen behoben: im ioBroker-Ausgangsadapter stand bei Type value drin, dort muss aber command stehen. Dann ging es bei mir. Ich habe ein ähnliches Problem. Ich wollte die Lautstärke meines AV-Receivers per Alexa und Node-Red steuern. Habe ich den Wert im Datenpunkt manuell eingegeben, klappte es, aber nicht, wenn derselbe Wert über Alexa und Node-Red gesetzt wurde. Als workaround habe ich das jetzt so gelöst. Und zwar setze ich den Datenpunkt denon.0.zoneMain.volume über Node-Red, reagiere aber mittels Script nochmals darauf und setze den gleich Wert erneut. Klingt zwar unlogisch, aber anders bekomme ich es nicht zum laufen. on({id: 'denon.0.zoneMain.volume', change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; setState("denon.0.zoneMain.volume"/*Main Volume*/, getState("denon.0.zoneMain.volume").val); }); //JTNDeG1sJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjE5OTklMkZ4aHRtbCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm9uX2V4dCUyMiUyMGlkJTNEJTIyIVdhJTNGJTNGTzZVJTJCRCU0MDklMkMuM2hPVlklNUUlMjIlMjB4JTNEJTIyMzglMjIlMjB5JTNEJTIyMzglMjIlM0UlM0NtdXRhdGlvbiUyMGl0ZW1zJTNEJTIyMSUyMiUzRSUzQyUyRm11dGF0aW9uJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ09ORElUSU9OJTIyJTNFbmUlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFDS19DT05ESVRJT04lMjIlM0UlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMk9JRDAlMjIlM0UlM0NzaGFkb3clMjB0eXBlJTNEJTIyZmllbGRfb2lkJTIyJTIwaWQlM0QlMjJ+Z1JDUDVkYkVEKFlFJTJGeDYxQ19MJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyb2lkJTIyJTNFZGVub24uMC56b25lTWFpbi52b2x1bWUlM0MlMkZmaWVsZCUzRSUzQyUyRnNoYWRvdyUzRSUzQyUyRnZhbHVlJTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMlNUQVRFTUVOVCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2wlMjIlMjBpZCUzRCUyMiFQLVYlN0RBJTYwR3BZdyUzQTQlMjNMY0hJJTVEJTQwJTIyJTNFJTNDbXV0YXRpb24lMjBkZWxheV9pbnB1dCUzRCUyMmZhbHNlJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VkZW5vbi4wLnpvbmVNYWluLnZvbHVtZSUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyV0lUSF9ERUxBWSUyMiUzRUZBTFNFJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmdldF92YWx1ZSUyMiUyMGlkJTNEJTIyJTQwNGNrUmxJXyklMjNobiUzQVIlM0ElN0REJTVCLiolMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBVFRSJTIyJTNFdmFsJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJPSUQlMjIlM0VkZW5vbi4wLnpvbmVNYWluLnZvbHVtZSUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGc3RhdGVtZW50JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ4bWwlM0U= 4630_2018-12-20_23_03_09-javascript_-_iobroker.png
  • [gelößt] Frage zu Rückgabewert/Callback nach request

    Verschoben
    5
    0 Stimmen
    5 Beiträge
    471 Aufrufe
    SteffS
    Hier noch meine Lösung, falls jemand ein ähnliches Problem hat: ! ```` // Variablen deklarieren / ID´s einlesen var request = require ('request'); var bSetAusgang1 = "javascript.0.Netio230B.Set_Ausgang_1"; var bAusgang1 = "javascript.0.Netio230B.Ausgang_1"; ! // Ausgang 1 behandeln on({id: bSetAusgang1, val: true}, function() { log("1. Ausgang 1 soll geschaltet werden"); LeseStatus (1); setState(bSetAusgang1, false); // VIS-Variable wieder zurücksetzen }); ! // Status der Ausgänge lesen function LeseStatus (Out) { var url = "http://192.168.0.190/cgi/control.cgi?login=p:USER:PASSWORD&p=l"; var OutStatus; request(url, function (error, state, body) { if (body) { var abody = body.slice(6, 13).split(' '); // Status der 4 Ausgänge extrahieren und in Array splitten OutStatus = abody[Out-1]; // Übergebener Wert ist vom Typ string!! log("2. Ausgang " + Out + " hat Zustand " + OutStatus); if (OutStatus === "1") { log("3. Ausgang " + Out + " wird ausgeschaltet"); SchalteAusgang ("0uuu"); setState(bAusgang1, false); } if (OutStatus === "0") { log("3. Ausgang " + Out + " wird eingeschaltet"); SchalteAusgang ("1uuu"); setState(bAusgang1, true); } } }); } ! // Ausgänge schalten function SchalteAusgang (befehl) { var url = "http://192.168.0.190/cgi/control.cgi?login=p:USER:PASSWORD&p=" + befehl; log ("4. Sende Befehl: " + url); request(url, function(error, state, body) { log("5. Rückmeldung: " + state); }); } Gruß Steffen
  • [ VORLAGE ] Müll Warnung / Erinnerung via Telegram am Vorabend

    Verschoben
    5
    0 Stimmen
    5 Beiträge
    2k Aufrufe
    T
    Hallo, das Skript ist leider nicht mehr wirklich zu nutzen. Zu der Zeit als ich es geschrieben habe, war der Adapter noch auf Version 1.4.2 und hatte eien HTML Formatierung, die nun nicht mehr uneingeshränkt so gilt. D.h. die Suchfunktion funktioniert nicht mehr zuverlässig. Der neue Ical Adapter im Stand Version 1.7 ht aber neue Events an Bord, die solch ein Skript ohnehin unnötig machen bzw vereinfachen. Du kannst dort als Event deinen Müll eingeben und dann täglich um 18h (oder wann auch immer) schauen, ob eins der Events auf 1 steht. Dan wäre dieses Event morgen dran und du kannst dir ein Telegram mit der jeweiligen Info schicken lassen

407

Online

32.7k

Benutzer

82.5k

Themen

1.3m

Beiträge