Weiter zum Inhalt

Skripten / Logik

16.7k Themen 215.9k Beiträge

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

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    3k 50k
    3k Themen
    50k Beiträge
    maxclaudiM
    @Daniel-8 sagte: Aber beides braucht man ja eigentlich nicht... Richtig, beides benötigt man nicht. @Daniel-8 sagte: ....oder gibt es da einen Vorteil? Vorteile mit Cloud-Ersatz-Broker MQTT: MQTT ist komfortabler und schneller, weil es dann nicht reglementiert ist, wie das offizielle lokale MQTT. Es bietet viel mächtigere Möglichkeiten. (Was auch eine Gefahr birgt, wenn man nicht weiß, welche Topics beschrieben werden, was sie als Antwort erwarten usw.) MQTT ist schneller, weil nicht gepollt werden muss. Wenn Werte sich ändern, wird es automatisch published. Man muss nur Änderungen triggern und nicht alle x Sek. die Werte abfragen. WiFi / HTTP(S) wird entlastet. Man bekommt alle wahren Topics und kann Werte setzen, die sonst nicht gesetzt werden können. (Birgt auch eine Gefahr in sich, wenn man wild experimentiert oder Werte setzt, die normaler Weise für Funktionen bestimmt sind, die die Cloud nur im HEMS setzen würde. Am besten man nutzt nur zum Schreiben "properties" wie mit zenSDK.) Vorteil von zenSDK mit Cloud-Ersatz-Broker: Bei der Umstellung erst mal alles bleiben kann wie es ist und läuft dann wirklich lokal. Schneller wie bisher, weil es keine Cloud gibt, die permanent irgendwas abfragen, senden oder "dazwischen funken" kann. zenSDK prüft immer wieder, ob die Verbindung zur Cloud besteht. Das ist sie ja – in Form eines lokalen Brokers. Kann ich es riskieren mit dem direkten mqtt Adapter vom iobroker den Speicher auf lokal umzustellen? Müsste man erst testen. Ich verwende nur mosquitto. Ausgereift, zuverlässig, schlank, ressourcenarm und schnell.. @Daniel-8 sagte: Aber dafür muss ich mir mal Zeit nehmen. Das geht nicht mehr vor dem Urlaub. Schönen Urlaub Deiner Familie und Dir.
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Themen
    80k Beiträge
    W
    erledigt
  • Hilfe für Skripterstellung mit Node-RED

    964 13k
    964 Themen
    13k Beiträge
    A
    @OliverIO ich kopiere morgen mal die Meldungen die mir Node-Red auswirft. Es steht meistens, ....ist kein String....
  • CGI Befehl an Kamera senden

    Verschoben
    4
    0 Stimmen
    4 Beiträge
    2k Aufrufe
    P
    Hatte das auch bereits gemerkt, das es Val: sein muss, ist wohl irgendwie da reingerutscht. Komme der Sache aber gerade näher, da mein Safari sich die Passwörter und Benutzer merkt, hatte er es bei der Eingabe direkt immer mit eingeben. Gerade den Link mal im firefox eingegeben und zack, da kommt die Anmeldung. Also liegt es wohl dadran. Jetzt mal schauen wie ich das mit in den Link mit einbringen muss. Update: so, jetzt geht es. http://xxx.xxx.xxx.xxx/param.cgi?cmd=ma … n&-time=10-usr=xxxxxxx&-pwd=xxxxxxxxxx Ich lasse aber das Script von Pix, da kann man noch was lernen ;-) Danke euch
  • [Frage] Blockly Datenpunkt schaltet das Skript aber nicht

    Verschoben
    14
    2
    0 Stimmen
    14 Beiträge
    3k Aufrufe
    C
    Ah Hallo rellik also das Problm war nicht das Blockly sondern der Datenpunkt. Ich hatte diesen nicht in einem Ordner sondern auf der Hauptebene. Siehe hier: [image: 1901_datenpunktebene.png] MG Maggi
  • [gelöst] Blockly Object value in Homematic Variable schreiben und Berechnungen

    Verschoben
    32
    0 Stimmen
    32 Beiträge
    7k Aufrufe
    S
    Genial!!!!! Danke an alle, es klappt! :D :D :D :D :D :D :D :D :D :D
  • Gardena R70li über Alexa steuern

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    918 Aufrufe
    T
    Ich bin ein Stück weiter. Jetzt kann der Mäher an und ausgeschaltet werde über alexa. Jetzt fehlt mir noch eine Überprüfung der Erreichbarkeit des Mähers. Das werde ich mal über den Ping Adapter probieren und schaue wie ich den in das Blockly bekomme. Weiter würde ich gern die Antwort des Mähers testen. Es kommt ein xml zurück (wahlweise auch json). Dieses müsste ich parsen, leider habe ich keine Ahnung wie das geht. 451_m_her_starten.png
  • [Frage] Blockly einfaches Zeitschalten für Lampen

    Verschoben
    10
    0 Stimmen
    10 Beiträge
    3k Aufrufe
    K
    Hat funktioniert! Vielen Dank für den Tipp! :D
  • Skript zum def. setzen von Parametern (Objekten) beim Start von ioBroker

    Verschoben
    4
    0 Stimmen
    4 Beiträge
    1k Aufrufe
    R
    Hallo, erst einmal Danke. Damit muss ich mich einmal einwenig auseinander setzen ob ich damit meine Anforderungen erfüllen kann. Ich denke schon. Ich melde mich dann wieder Andreas
  • OPC UA Server add Item

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    2k Aufrufe
    F
    Kann mir den niemand hier aus dem Forum weiterhelfen? :o dabei dachte ich das mein Problem gar nicht so schwer sein kann… nun gut ;) Also ich habe in der Zeit etwas weiter gemacht... [{"id":"5739b30d.c7200c","type":"OpcUa-Item","z":"f0269d14.2c554","item":"ns=4;s=MyVariable2","datatype":"Double","value":"","name":"Write Value","x":369,"y":97,"wires":[["bd2b0968.da3c88"]]},{"id":"6480c5e3.a14f5c","type":"inject","z":"f0269d14.2c554","name":"","topic":"","payload":"1","payloadType":"num","repeat":"","crontab":"","once":false,"x":151,"y":79,"wires":[["5739b30d.c7200c"]]},{"id":"bd2b0968.da3c88","type":"OpcUa-Client","z":"f0269d14.2c554","endpoint":"a02514b5.4c99b8","action":"write","time":10,"timeUnit":"s","name":"Write in MyVariable2","x":639,"y":97,"wires":[object Object]},{"id":"478db615.467938","type":"inject","z":"f0269d14.2c554","name":"","topic":"","payload":"2","payloadType":"num","repeat":"","crontab":"","once":false,"x":149,"y":156,"wires":[["5739b30d.c7200c"]]},{"id":"a02514b5.4c99b8","type":"OpcUa-Endpoint","z":"","endpoint":"opc.tcp://localhost:51234/","secpol":"None","secmode":"NONE","login":false}] Habe nun in Node-Red einen OPC UA Server erstellt und auf diesem Server gibt es bereits ein paar Items (Counter, FreeMemory und MyVariable2). ich habe es bisher auch nur geschafft auf "MyVariable2" zuschreiben via Node-Red (siehe dazu Code von Oben), das klappt soweit super, jetzt benötige ich jedoch auf dem Server weitere Variablen, die können auch gern den gleichen aufbau wie "MyVariable2" haben, das würde passen. Jedoch klappt keiner meiner Versuche dort ein Item hinzuzufügen. Achja als Client zum Überwachen des Servers und zum Kontrollieren ob meine Werte dort auch ankommen habe ich UAExpert-Client verwendet. Ich hoffe ihr habt etwas Zeit für mich und könnt euch meinem Problem annehmen. Ich hoffe auf Unterstützung vielen Dank. Gruß Fizzo361
  • Vergleich Innen- zu Außentemperatur

    Verschoben
    6
    0 Stimmen
    6 Beiträge
    1k Aufrufe
    B
    Hallo Paul, danke für dein Skript. Funktioniert sehr gut, vor allem die Idee mit der Hysterese gefällt mir :!: Gruß Martin
  • Dialogfenster mit Pinabfrage möglich?

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    640 Aufrufe
    rantanplanR
    Hallo deifel Ich habe dafür eine extra View für die Pin-Buttons. Zum Aufruf der View benutze ich "jqui - container html". Das habe ich über ein Metro Widget gelegt. Ein Beispiel für PIN-Code-Eingabe gibt's hier. http://forum.iobroker.net/viewtopic.php … pin#p47264 Grüße
  • Zeitsteuerung geht nicht

    Verschoben
    12
    0 Stimmen
    12 Beiträge
    2k Aufrufe
    blauholstenB
    @paul53: @blauholsten: aber ich glaube hier hast du dich vermacht, oder? ` Das glaube ich nicht. @blauholsten: Ich hatte ja heute morgen schon geschrieben, das getState der variablen in der Zeitschaltung() nochmal per getState().val abgefragt werden müssen. ` Das müssen sie nicht, wenn die globalen Skriptvariablen (aktor, temp) bei jeder Wertänderung des zugehörigen Datenpunktes aktualisiert werden. Deine Version funktioniert ebenfalls, belastet aber die CPU stärker, da jede Minute 2 getState(id)-Operationen ausgeführt werden. ` Als ich den Rechner aus gemacht habe, ist mir deine Logik auch klar geworden….. :shock:
  • Fenster offen Script, Drehgriffkontakte einbinden

    Verschoben
    6
    0 Stimmen
    6 Beiträge
    3k Aufrufe
    P
    Hallo Frank, dieser Thread ist gelöst. Bitte öffne einen neuen Thread mit deinem Anliegen. Allerdings mache ich mir wenig Hoffnung, dass dir ohne Dokumentation geholfen werden kann. Denn hier können wir nur ergänzende Hilfe zu den Dokus geben. Wenn dir die Doku, nicht ausreicht, mache einen Thread auf "Frage zur Doku: THEMA". Trotzdem Doku-Links: Einsteiger: http://www.iobroker.net/docu/?page_id=6317&lang=de Einführung Programmieren mit Javascript http://www.iobroker.net/docu/?page_id=2786&lang=de Adapter JavaScript Script http://www.iobroker.net/docu/?page_id=6818&lang=de Gruß Pix
  • Blockly - Nach Installation fehlt der Scripts-Reiter

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    1k Aufrufe
    D
    Hallo Rainer, ach Du SCH*** :lol: Stundenlang gesucht… Und dann sowas... Ich danke Dir vielmals! So einfach sollte das immer sein... Sorry für den unnötigen Thread - aber wer weiß, vielleicht hat irgendwann jemand selbiges Problem. LG
  • Funktion zum umrechnen

    Verschoben
    8
    0 Stimmen
    8 Beiträge
    2k Aufrufe
    M
    Eigentlich will ich das Ergebnis in einem Adapter weiter verwenden , weil dieser leider genau den umgekehrten Wert erwartet wie er geliefert bekommt. Er sagt das Fenster ist auf obwohl es zu ist. Weil in meinem Fall der Wert 0% aus dem Aktor kommt das heisst offen und HomeKit bei 0% denkt es wäre zu. Gesendet von iPhone mit Tapatalk
  • [Frage] Wie den Counter unterbrechen

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    593 Aufrufe
    paul53P
    @peoples: Ich möchte durch einen "Off-Button" das ganze stoppen und meinen Counter anhalten und auf 0 setzen. ` Das erste Skript (Zeitvorwahl) in http://forum.iobroker.net/viewtopic.php?f=21&t=5067&start=20#p77980 zeigt, wie es geht.
  • [gelöst]Zeitschaltung Bewässerung

    Verschoben
    33
    1
    0 Stimmen
    33 Beiträge
    8k Aufrufe
    S
    Also meine Seite sieht jetzt so aus. [image: 1653_vorgarten.jpg] Das ist das Widget für die Restlaufzeit: [{"tpl":"tplHqCircle","data":{"visibility-cond":">","visibility-val":"0","oid":"javascript.0.Countdown.countdown","min":"0","max":"{javascript.0.Countdown.countdown}","step":"1","displayPrevious":true,"readOnly":true,"unit":"","visibility-oid":"","name":"Countdown","caption":"Restzeit min.","hideNumber":false,"color":"#ffffff","thickness":"0.15","cursor":"","bgcolor":"#f00f36","linecap":true,"anticlockwise":false,"oid-working":"javascript.0.Countdown.countdown","oid-signal":"","angleArc":"360","angleOffset":"0","comment":"","digits":"0","is_comma":"true","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"visibility-groups-action":"hide","gestures-offsetY":"-6","descriptionLeft":"countdown"},"style":{"left":"963px","top":"117px","width":"200px","height":"200px","z-index":"77","text-align":"center","color":"#e7f5f9","font-family":"","font-style":"","font-weight":"","font-size":"","background-color":"rgba(0,140,200,1)","border-radius":"490px"},"widgetSet":"hqwidgets"}] Das Script für die Zeitvorwahl: // Countdown Brunnen // http://forum.iobroker.net/viewtopic.php?f=21&t=5067 var count,timer; function countdown(){ count--; if(count > 0) setState('javascript.0.Countdown.countdown', count); else { setState('javascript.0.Countdown.countTrigger', false ); } } on({id: "javascript.0.Countdown.countTrigger", change: "ne"}, function(obj){ if(obj.state.val) { count = getState('javascript.0.Countdown.Zeitvorgabe').val; // in Minuten setState('javascript.0.Countdown.countdown', count); timer = setInterval(countdown, 60000); // 1000 = 1 Sek. ; 60000 = 60 Sek. } else { clearInterval(timer); setState('javascript.0.Countdown.countdown', 0 ); } }); Das Widget dazu: [{"tpl":"tplJquiRadioList","data":{"oid":"javascript.0.Countdown.Zeitvorgabe","g_fixed":true,"g_visibility":false,"g_css_font_text":true,"g_css_background":true,"g_css_shadow_padding":true,"g_css_border":false,"g_gestures":false,"g_signals":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","values":"0;10;15;30;45;60;120","texts":"0;10;15;30;45;60;120","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false},"style":{"left":"611px","top":"345px","width":"385px","height":"40px","background":"","background-color":""},"widgetSet":"jqui"}] Das Widget für z.Bsp. Kreis1: [{"tpl":"tplHqButton","data":{"g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":true,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"oid":"javascript.0.AnAus","min":"0","max":"1","iconName":"/icons-icons8/objects/white/Watering Can.png","btIconWidth":"97","offsetAuto":"true","leftOffset":"15","topOffset":"55","timeAsInterval":false,"infoLeftFontSize":"20","infoFontRightSize":"12","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"oid-working":"javascript.0.AnAus","oid-battery":"","iconOn":"/icons-icons8/objects/white/Watering Can Filled.png","styleActive":"hq-button-green-active","styleNormal":"hq-button-red-active","usejQueryStyle":false,"descriptionLeft":"Kreis1","infoColor":"white","visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","infoLeftPaddingLeft":"15","infoLeftPaddingRight":"50","infoRightPaddingRight":"15","infoBackground":"red"},"style":{"left":"676px","top":"429px","width":"107px","height":"108px"},"widgetSet":"hqwidgets"}] Das Script für Kreis1: // Pumpe: Ausschalten nach x Minuten // http://forum.iobroker.net/viewtopic.php?f=21&t=5067 function weiter() { var Zeitvorgabe = getState('javascript.0.Countdown.Zeitvorgabe').val ; // Zeit auswählen //############################################################# // Bewässerung zunächst ausschalten beim erstmaligen Skriptstart // um im Falle eines Reboots den zuvor laufenden Bewässerungstimer auszuschalten (Not-Aus), // da er nach Reboot den zuvor gesetzten Ausschalttrigger nicht mehr ausführen kann setState("hm-rpc.0.NEQ1316670.1.STATE", false); setState("hm-rpc.0.NEQ1316670.4.STATE", false); //############################################################# log (Zeitvorgabe); if (Zeitvorgabe === 0 || Zeitvorgabe === isNaN) Zeitvorgabe = 30; setStateDelayed("hm-rpc.0.NEQ1316670.1.STATE", true); // Kreis 1 Ventil einschalten setStateDelayed("hm-rpc.0.NEQ1316670.4.STATE", true, 1000); // nach 1 Sek. Pumpe ein setState("hm-rpc.0.NEQ1316670.1.ON_TIME", Zeitvorgabe); // OnTime setzen // Countdown starten für Anzeige der Zeit auf View setState('javascript.0.Countdown.countTrigger', true); // Countdown Brunnen starten setStateDelayed("javascript.0.AnAus", 0, (Zeitvorgabe*60*1000)); // nach x Min. ausschalten -> Pumpe setStateDelayed("hm-rpc.0.NEQ1316670.2.STATE", false); // Ventil 2 auf false setzen setStateDelayed("hm-rpc.0.NEQ1316670.3.STATE", false); // Ventil 3 auf false setzen //sendTo('telegram', "Brunnen eingeschaltet. \nNach " + (Zeitvorgabe*60*1000) + " Minuten wird er wieder automatisch ausgeschaltet."); //log ("Brunnen eingeschaltet. Nach " + (Zeitvorgabe*60*1000) + " Minuten wird er wieder automatisch ausgeschaltet."); } function weiter2() { setState("hm-rpc.0.NEQ1316670.1.STATE", false); // Brunnen Ventil aus setState("hm-rpc.0.NEQ1316670.4.STATE", false); // Brunnen Pumpe aus //sendTo('telegram', "Brunnen ausgeschaltet."); //log ("Brunnen ausgeschaltet."); setState('javascript.0.Countdown.countTrigger', false); // Countdown Pumpe aus setState('javascript.0.Countdown.Zeitvorgabe', 0); // Zeitvorwahl auf Null setzen setState('javascript.0.Countdown.countdown', 0); // Countdown auf Null setzen setState("hm-rpc.0.NEQ1316670.1.ON_TIME", 0); // OnTime auf Null } on({id: "javascript.0.AnAus", change: "ne", val: 1}, function() { // Bewaesserung Kreis1 einschalten //log("Auslöser Schalter - Cux: Brunnen ein"); weiter(); event("Gartenpumpe Kreis1 läuft"); // in eventlist schreiben // Sprachausgabe nachricht = 'Kreis eins ist eingeschalten ' setState("sayit.2.tts.text"/*Text to speech*/, nachricht); // Sprachausgabe Kreis 1 ein }); on({id: "javascript.0.AnAus", change: "ne", val: 0}, function() { // Bewaesserung Kreis1 ausschalten weiter2(); event("Gartenpumpe Kreis1 aus"); // Sprachausgabe nachricht = 'Kreis eins ist ausgeschalten ' setState("sayit.2.tts.text"/*Text to speech*/, nachricht); // Sprachausgabe Kreis 1 aus }); Dazu unter Objekte/Javascript.0 eine Variable anlegen: [image: 1653_variable_anlegen.jpg] Das Widget für Kreis 1 muss dann auf javascript.0.AnAus verweisen. Gruss
  • [Frage] Blockly Blöcke Position festlegen

    Verschoben
    1
    0 Stimmen
    1 Beiträge
    418 Aufrufe
    Niemand hat geantwortet
  • On-Funktion: Brauche Hilfe

    Verschoben
    6
    0 Stimmen
    6 Beiträge
    2k Aufrufe
    S
    @paul23: Danke für die Korrektur. Sehe jetzt etwas klarer. Gruß Strizz
  • [gelöst] Raum abfragen

    Verschoben
    6
    0 Stimmen
    6 Beiträge
    2k Aufrufe
    M
    Danke paul53, das hat geholfen bzw. das habe ich gesucht!!
  • Werte umkehren?

    Verschoben
    5
    0 Stimmen
    5 Beiträge
    2k Aufrufe
    C
    Wie hast du den SmartName erstellt denn ich kann dort nichts eintragen wenn ich etwas hinzufügen will und dann eben den Befehl dort eintrag sieht das irgendwie anders aus. MFG Maggi
  • Hilfe Feueralarm Skript

    Verschoben
    4
    0 Stimmen
    4 Beiträge
    2k Aufrufe
    P
    So: var cacheSelectorState = $('channel[state.id=*.STATE](functions=Rauchmelder)'); Gruß Pix

363

Online

33.0k

Benutzer

83.6k

Themen

1.3m

Beiträge