Weiter zum Inhalt

Skripten / Logik

16.7k Themen 216.0k 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
    @Murphy-0 sagte: @maxclaudi Habe dein zURLtool geladen und installiert. Die Freischaltung mit den von dir gesendeten Daten funzt perfekt. zURLtool funktioniert ! Vielen Dank für deine Arbeit !!! Hallo Murphy, vielen Dank für deine Rückmeldung und den erfolgreichen Testlauf. Genau so soll es sein: Eintragen, Freischalten und direkt loslegen! Viel Spaß beim Optimieren deines Scripts!
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Themen
    80k Beiträge
    Murphy 0M
    @tourer4778 Das ist ganz einfach. Du addierst die Leistung deiner Wechselrichter als maxSolarPower. Dieser Wert wird dann für die Formel zur Berechnung genommen und du bekommst automatisch die Leistung die jeder deiner Wechselrichter haben muss. [image: 1786870575867-img_4130.jpeg] Diese Leistung übergibst du dann nacheinander an deine Wechselrichter. In meinem Blockly unten benutze ich noch einen Korrekturwert für die Leistung. Das liegt an der unterschiedlichen Ausrichtung der Panele und berücksichtigt die unterschiedlich Leistung der Wechselrichter. Der Multiplikator ist mit Pfeil markiert. [image: 1786870876025-img_4128.jpeg] Den Multiplikator brauche ich um die erzielte Leistung jedes Wechselrichters mit dem Bedarf abzugleichen. Meine Nulleinspeisung ist auf ca. -50 Watt ausgelegt. Akku wird nicht geladen. [image: 1786871273695-img_4132.jpeg] Akku wird geladen. Wegen Wolken reicht die Leistung gerade nicht für die gesamt benötigte Menge an Strom. [image: 1786871362148-img_4133.jpeg]
  • Hilfe für Skripterstellung mit Node-RED

    964 13k
    964 Themen
    13k Beiträge
    A
    @OliverIO Danke für die Analyse und der grundsätzlichen Bestätigung, dass es eigentlich richtig ist und auch funktionieren sollte. Unterdessen ist es so, dass ich den wiederholzykluss auf 20min gestellt habe und zwischen jeder Anfrage 1 Minute warte. Zusätzlich habe ich ja die udev-Regel entfernt und das Portweiterleiten mit den Proxmox eigenen Mitteln gemacht. Es läuft nun seit 25h so, und Fehler mit keinem String ist noch 2x aufgetreten, hat sich unterdessen aber sogar selber gefixt und läuft seither ohne erkennbar Fehlermeldungen durch. Weil es ja so merkwürdig reagiert hat, habe ich den Pylontechadapter nochmals installiert und die neue Schnittstelle eingerichtet. Nach sehr langem warten wurde der Adapter sogar grün und er hat tatsächlich die BMS Infos rausgelesen, aber die Zelleninfos kamm nicht. Ich habe zwar keine Ahnung wie das Pytes BMS Tool das wirklich macht, aber ich habe den Eindruck, dass der Abfragezyklus nicht mehr als 1x pro Minute gestartet werden darf. Das Pytes Tool bringt alle infis eigentlich recht schnell. Bei meinem 12V System mit den DALI ist es so beschrieben, dass man nur 1x pro Minute Abfragen, kann weil der Prozessor sonst seine Aufgabe nicht machen kann. Aktuell läuft es und ich beobachte das sehr intensiv, weil ich der Sache noch nicht ganz traue.
  • MAX Fensterkontakte Batterieprüfung

    Verschoben
    4
    1
    0 Stimmen
    4 Beiträge
    1k Aufrufe
    M
    Hallo, ich habe mal Homegear installiert und verzweifle an der Verbindung. [image: 721_lsusb.jpg] [image: 721_homegear.jpg] [image: 721_homegear2.jpg] Er findet den CUL-Stick nicht. Was muss ich in den physicalinterfaces.conf ändern? Gruß MArco
  • URL aus E-Mail (HTML-Format) in ioBroker Objekt schreiben

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    2k Aufrufe
    BluefoxB
    @andre: Hallo, nachdem ich mich jetzt bereits erfolgreich in Javascript versucht habe, habe ich mich gestern einmal ein wenig um Node Red gekümmert und schon das ein oder andere darüber gelesen bzw. gelernt. Trotzdem will mein erster Versuch nicht so recht gelingen. :( Folgende Aufgabe habe ich mir gestellt: Ziel soll es sein, eine URL aus einer automatisch generierten E-Mail (im HTML -Format) in ein ioBroker Objekt zu schreiben. Das "Abrufen" der E-Mail über die E-Mail-Node funktioniert bereits. Die Daten kommen an und werden in den entsprechenden Variablen übergeben. Allerdings bin ich dabei jetzt auf die erste Hürde gestoßen, dich mich schon den ganzen Nachmittag verzweifeln lässt… Die Daten die mir die E-Mail-Node in msg.payload oder msg.html übergibt, werden im Format base64 übergeben (Debug: Content-Transfer-Encoding: base64...). Mein Versuch die Daten mittels einer Funktion in utf8 zu wandeln sind (vermutlich mangels Hintergrundwissen) kläglich gescheitert. Auch der Versuch die Daten mittels base84-Node zu konvertieren hat nicht gefruchtet. Soweit ich das ergründen konnte, waren die Werte anschließend zwar in einem Anderen format (binary???) aber trotzdem für mich nicht zu verwenden.... :) Was kann ich tun um die Daten wieder in ein (für mich) "verarbeitbares" Format zu bekommen? Meine weiteren Schritte wären dann, den HTML-Code der E-Mail mit z.b. der HTML-Node zu analysieren und dann die extrahierte URL an ioBroker zu senden (letzteres habe ich während meiner Tests auch schon geschafft). Gibt es vielleicht sogar einen noch besseren Weg/ einen anderen Ansatz? Vielen Dank. MfG, André ` Eigentlich muss es einfach sein. Kannst du hier einen Beispiel posten?
  • Netzausfall und Akku bei einer S.USV überwachen

    Verschoben
    1
    0 Stimmen
    1 Beiträge
    2k Aufrufe
    Niemand hat geantwortet
  • (gelöst) Buffer-Behandlung?

    Verschoben
    5
    0 Stimmen
    5 Beiträge
    1k Aufrufe
    ruhr70R
    @Headroom68: Hallo, ja, ich fürchte nur, dass danach noch etwas zu tun ist. '4c00' it z.b. Apple https://www.bluetooth.com/specification … dentifiers Ich habe mich noch nicht näher damit beschäftigt. Ich hatte versucht eine Anwesenheitserkennung mit btwatch zu machen. Leider nur mit begrenztem Erfolg. Leider wird das iPhone von noble beim scannen nicht erkannt. ` Hi Headroom68, Deine Antwort ist in meinem Urlaub untergegangen. Es ist wirklich einfach Hex. Danke! Unabhängig davon, hatte ich das mittlerweile auch gefunden und eingebaut :-) Zu Deinem Problem: Vorab. Sind das nicht zwei Themen? iPhone und btwatch? Wir die btwatch nicht gefunden? Wenn doch, kannst Du doch schon damit arbeiten. Zum iPhone: Das BLE Skript sucht nur BLE Geräte (Geräte, die dauern Ihre Info per Bluetooth senden, z.B. das Gigaset G-Tag, solange es nicht an der App angemeldet ist). Sehr gut sind da die diversen Fitnesstrecker geeignet. Deine btwatch nicht? Beim iPhone kannst Du es umgekehrt machen. Du benötigst ein Bacon, bzw. ein iBeacon, auf welches Du dann mit Geofency und dem Geofency Adapter reagieren kannst. So nutze ich das bisher schon länger mit einem Raspberry 2 als iBeacon, Geofency und dem Geofency Adapter. Wenn ich mit meinem BLE Skript durch bin, kommt noch ein viel kürzeres Skript, mit dem Du aus dem Raspberry Pi 3 (oder andere kompatible Geräte, wie bei noble) ein Beacon/iBeacon machen kannst, sowie einen Bacon Scanner. Dafür gibt es das node.js Modul bleacon, vom gleichen Entwickler, der auch noble veröffentlicht hat. Ist ganz Simpel zu nutzen. Bei meinem Tests hat der BLE Scanner und das Skript für das iBeacon auch parallel auf einem Pi 3 funktioniert. Vorab die Kurzversion für ein iBeacon Skript (Bluez (wenn es ein Linux Rechner ist) und und das node Modul "bleacon" müssen installiert sein): ! var Bleacon = require('bleacon'); ! var uuid = 'e2c56db5dffb48d2b060d0f5a71096e0'; var major = 0; // 0 - 65535 var minor = 0; // 0 - 65535 var measuredPower = -59; // -128 - 127 (measured RSSI at 1 meter) ! Bleacon.removeAllListeners('discover'); ! Bleacon.startAdvertising(uuid, major, minor, measuredPower); Bleacon.startScanning(); logs("#### START BEACON ####","warn"); ! Bleacon.on('discover', function(bleacon) { logs("uuid: " + bleacon.uuid + ", Major: " + bleacon.major + ", Minor: " + bleacon.minor,"info","darkorange"); }); ! /* setTimeout(function () { Bleacon.stopAdvertising(); logs("#### STOP BEACON ####","warn"); Bleacon.stopScanning(); //Bleacon.removeListener('discover'); Bleacon.removeAllListeners('discover'); }, 100000); ! */ ! Ohne das aaskommentierte Timeout am Ende sendet es dann dauerhaft, bis zum Neustart der Javascript-Instanz. Was man sehr einfach machen kann: kurzes zweites Skript als Watchdog, welches den Listener ausschaltet, wenn das iBeacon Skript gestoppt wird. Die im Skript eingestellt iBeacon Kennung findest Du auch in der iPhone App "Beccon". Dort ist es das Haustier :-) Wenn Du das Skript inkl. dem Timeout am Ende startest, wird das Haustier für 10 Sekunden vom iPhone mit Beecon gefunden. Danach würde ich Geofency probieren. Von mir wird mit der Zeit folgendes kommen: BLE Scanner als Skript in der Aerotouch Version (komplett automatisch, jede Instanz, ohne Eingriffe) BLE Scanner Adapter (hoffentlich g9 iBeacon/Beacon Skript für ein Beaconn und als Scanner und dann der Adapter dafür (mache ich wohl vor den BLE Adapter, da das schneller geht) bleacon findest Du hier: https://github.com/sandeepmistry/node-bleacon
  • MiLight Ansteuerung per node-red

    Verschoben
    1
    1
    0 Stimmen
    1 Beiträge
    3k Aufrufe
    Niemand hat geantwortet
  • Bei Druck eines Tasters Toggeln

    Verschoben
    7
    0 Stimmen
    7 Beiträge
    2k Aufrufe
    paul53P
    @pix: Steht das ! fürs Umkehren des Wertes? ` Ja, ! vor einem Wert (boolean) bedeutet https://wiki.selfhtml.org/wiki/JavaScript/Operatoren/Logische_Operatoren.
  • [gelöst] setStateDelayed

    Verschoben
    16
    0 Stimmen
    16 Beiträge
    8k Aufrufe
    R
    Nach einigem Herumprobieren und testen habe ich jetzt glaube ich eine Lösung die funktioniert. Kann man vielleicht Code-mäßig noch optimieren, aber im Moment bin ich nur froh, dass es so geht, wie ich will :) var temp_switch = 2.5; //über welcher Differenztemperatur die Sonne scheint var timer_ein; var timer_aus; on({id: "hm-rpc.0.LEQ0244813.3.TEMPERATURE"/*Sonnensensor_3.TEMPERATURE*/, change: "any"}, function(dp) { if(dp.state.val >= temp_switch) { log("----------------test sonne_temp true"); setState("javascript.1.Variablen.Sonne_temp"/*Sonne_temp*/, true); } else { log("----------------test sonne_temp false"); setState("javascript.1.Variablen.Sonne_temp"/*Sonne_temp*/, false); } }); on({id: "javascript.1.Variablen.Sonne_temp"/*Sonne_temp*/, change: "any"}, function(dp) { var old = dp.oldState.val; log("------------------ test sonne old: "+old+" new: "+dp.state.val, "info"); if(dp.state.val === true && old === false) { log("-------------------test sonnenvar auf ein"); clearTimeout("hm-rega.0.64510"/*Sonne_ccu*/); setStateDelayed("hm-rega.0.64510"/*Sonne_ccu*/, true, 300000); } if(dp.state.val === false && old === true) { log("-------------------test sonnenvar auf aus"); clearTimeout("hm-rega.0.64510"/*Sonne_ccu*/); setStateDelayed("hm-rega.0.64510"/*Sonne_ccu*/, false, 900000); } }); und so hat der heutige Tag dazu ausgeschaut: [image: 421_unbenannt.jpg]
  • Erste Gehversuche…Hilfe

    Verschoben
    16
    0 Stimmen
    16 Beiträge
    3k Aufrufe
    V
    Hallo, du musst zuerst den Wert holen und kannst ihn dann prüfen: FALSCH: if(obj.newState.val && getState(TAG2 === false).val) RICHTIG: if(obj.newState.val && getState(TAG2).val === false) Mit getState(XXX).val bekommst du den Inhalt der Variable und danach auf Inhalt prüfen. LG Christian
  • Sysinfo Flow - node-red-contrib-os

    Verschoben
    1
    0 Stimmen
    1 Beiträge
    2k Aufrufe
    Niemand hat geantwortet
  • [gelöst]HTTP Get Problem

    Verschoben
    17
    0 Stimmen
    17 Beiträge
    5k Aufrufe
    S
    So nun alles probiert und funktioniert alles. Warum es nur mit der MyFritz Freigabe als URL funktioniert weiß ich leider immer noch nicht. Danke nochmal an alle die sich für mich ins grübeln gebracht haben. Grüße
  • [gelöst]Anfängerfragen

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    3k Aufrufe
    M
    Vielen Dank für die schnelle und ausführliche Antwort! Das hilft mir sehr weiter. Gesendet von meinem A0001 mit Tapatalk
  • Meldung von Bewegung bei Abwesenheit

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    878 Aufrufe
    T
    Klasse! Danke dir Bluefox läuft jetzt!
  • Script zum umschalten der Werte

    Verschoben
    18
    1
    0 Stimmen
    18 Beiträge
    3k Aufrufe
    M
    [{"tpl":"tplSegmentClock","data":{"oid":"modbus.0.inputRegisters.30865_Bezug","visibility-cond":"==","visibility-val":"1","clock":false,"seconds":false,"pattern":"#####","colorOn":"#fd1717","colorOff":"rgba(0, 0, 0, 0.1)","runStepInterval":"0","segmentCount":"7","displayAngle":"9","digitHeight":"25","digitWidth":"20","digitDistance":"2","segmentWidth":"2","segmentDistance":"0.5","cornerType":"PointedCorner","gestures-offsetX":"0","gestures-offsetY":0,"gestures-swiping-value":"","gestures-rotating-value":"","gestures-pinching-value":"","gestures-swipeRight-value":"","gestures-swipeLeft-value":"","gestures-swipeUp-value":"","gestures-swipeDown-value":"","gestures-rotateLeft-value":"","gestures-rotateRight-value":"","gestures-pinchIn-value":"","gestures-pinchOut-value":"","text":"","locked":false,"visibility-oid":"javascript.0.Displayzaehler"},"style":{"left":"796px","top":"6px","width":"334px","height":"92px","text-align":"","color":"#fd0808"},"widgetSet":"timeandweather"},{"tpl":"tplSegmentClock","data":{"oid":"modbus.0.inputRegisters.30775_PVLeistung","visibility-cond":"==","visibility-val":"2","clock":false,"seconds":false,"pattern":"#####","colorOn":"#fd1717","colorOff":"rgba(0, 0, 0, 0.1)","runStepInterval":"0","segmentCount":"7","displayAngle":"9","digitHeight":"25","digitWidth":"20","digitDistance":"2","segmentWidth":"2","segmentDistance":"0.5","cornerType":"PointedCorner","gestures-offsetX":"0","gestures-offsetY":0,"gestures-swiping-value":"","gestures-rotating-value":"","gestures-pinching-value":"","gestures-swipeRight-value":"","gestures-swipeLeft-value":"","gestures-swipeUp-value":"","gestures-swipeDown-value":"","gestures-rotateLeft-value":"","gestures-rotateRight-value":"","gestures-pinchIn-value":"","gestures-pinchOut-value":"","text":"","locked":false,"visibility-oid":"javascript.0.Displayzaehler"},"style":{"left":"796px","top":"7px","width":"334px","height":"92px","text-align":"","color":"#fd0808","font-style":"normal"},"widgetSet":"timeandweather"},{"tpl":"tplSegmentClock","data":{"oid":"modbus.0.inputRegisters.30867_Einspeisung","visibility-cond":"==","visibility-val":"3","clock":false,"seconds":false,"pattern":"#####","colorOn":"#fd1717","colorOff":"rgba(0, 0, 0, 0.1)","runStepInterval":"0","segmentCount":"7","displayAngle":"9","digitHeight":"25","digitWidth":"20","digitDistance":"2","segmentWidth":"2","segmentDistance":"0.5","cornerType":"PointedCorner","gestures-offsetX":"0","gestures-offsetY":0,"gestures-swiping-value":"","gestures-rotating-value":"","gestures-pinching-value":"","gestures-swipeRight-value":"","gestures-swipeLeft-value":"","gestures-swipeUp-value":"","gestures-swipeDown-value":"","gestures-rotateLeft-value":"","gestures-rotateRight-value":"","gestures-pinchIn-value":"","gestures-pinchOut-value":"","text":"","locked":false,"visibility-oid":"javascript.0.Displayzaehler"},"style":{"left":"798px","top":"7px","width":"334px","height":"92px","text-align":"","color":"#fd0808"},"widgetSet":"timeandweather"}]
  • [gelöst]Wie Variablen einlesen

    Verschoben
    5
    0 Stimmen
    5 Beiträge
    858 Aufrufe
    BluefoxB
    @Patrick: perfekt vielen dank so einfach wahr es ` Punkt 1: http://forum.iobroker.net/viewtopic.php?f=8&t=2451 8-)
  • Duplicate Name bei speichern eines Scripts !

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    603 Aufrufe
    W
    Hallo Bluefox, durch den großen Sprung von der Javascript Version und dem neuen Aufbau mit linker Spalte Namen der Scripte und rechte Spalte das geöffnete Script mußte ich mich erstmal zurechtfinden. Das Problem was ich jetzt hatte war das z.B das Script Waschmaschine rechts geöffnet war und ich nochmals links in der Spalte auf das 3.Symbol von links geklickt habe und das Script Waschmaschine wurde nochmals erstellt…somit war es 2mal vorhanden. Das habe ich nicht sofort mitbekommen und durch das abspeichern der Änderung im 1.Script kam das Popup Fenster mit Duplicate Name. Schau mal ob du es reproduzieren kannst und ob es ein Fehler ist oder das Symbol bedeutet einfach Script kopieren. Wenn ja dann Asche auf mein Haupt !!! Gruß Sebastian
  • Javascript Adapter 2.0.4 nach update - Anzeige im Skript-Tab fehlerhaft

    Verschoben
    22
    2
    0 Stimmen
    22 Beiträge
    4k Aufrufe
    BluefoxB
    Probier mal mit: iobroker object del "_alle_10_Minutenfunction_MHS()_{___createState(\'Meterhomeserver_Datum\');_createState(\'Meterhomeserver_Stunde\');_createState(\'Meterhomeserver_Minuten\');_createState(\'Zaehler_views\');___}_schedule(\"*/10_*_*_*_*\",_function_()_{____________________________________________________//oder!!_soll_entweder_ausgelöst_werden_alle_10_Minuten____log(\"===>Start_neues_Skript\");_____log(\"===>Solar_-_Werte_berechnen_-_Start_all_10_minutes!\");_____MHS_();_});"
  • [beantwortet] createChannel ?

    Verschoben
    9
    0 Stimmen
    9 Beiträge
    2k Aufrufe
    BluefoxB
    @ruhr70: @Bluefox: @ruhr70: Bluetooth Scanner -> muss viel abgefangen werden -> Bedarf? Eventuell für Anwesenheitserkennung und Geräteüberwachung ohne IP -> als Script ist es fast fertig :-) Danke für die Hinweise! Diesen will ich sogar machen. Problem ist es muss klick, klick gehen und wenn man anfängt zu denken: welche module ich installieren muss, wie konfiguriere ich das… Da wird man es lieber nicht machen. ` > Als Script ist es schon so weit, dass man im Prinzip nur "noble" in der Instanz des Javascript-Adapters eintragen muss. Dann kann das Script ohne Änderung mit den Default-Einstellungen auf einem Raspberry Pi 3 laufen. Ich stell es nachher mal rein, auch wenn es erst bei 90% des geplanten Ergebnis ist. Aber hätte ich das vorher gewusst, dass da noch ein Adapter kommt, hätte ich mir die Arbeit gesparrt :lol: :lol: Als Adapter wären meine Ansprüche zu hoch. Das Script hat jetzt zwei Tage gebraucht. Für den Adapter würde ich bei meine Kenntnisstand ein paar Wochen benötigen. > Aber hätte ich das vorher gewusst, dass da noch ein Adapter kommt, hätte ich mir die Arbeit gesparrt Ich will den schreiben, aber es heißt lange nicht, dass ich die Zeit dafür habe :)
  • [beantwortet] mehrfach Reaktion bei externen Subscription

    Verschoben
    8
    0 Stimmen
    8 Beiträge
    1k Aufrufe
    ruhr70R
    @Bluefox: removeAllListeners wird dein Problem lösen. ` Danke! :) :) Versuche ich gleich. Ansonsten schaut es schon ganz gut aus ;-)
  • Skripte schreiben geht nicht mehr

    Verschoben
    1
    1
    0 Stimmen
    1 Beiträge
    706 Aufrufe
    Niemand hat geantwortet
  • Zeilennummer Javascript Fehler im Log?

    Verschoben
    4
    0 Stimmen
    4 Beiträge
    949 Aufrufe
    ruhr70R
    @ruhr70: es gibt auch wichtigeres. Wenn man weiss woran es liegt ist es OK. :-) ` [EDIT] Ich habe mittlerweile recht viele globale Scripte und auch einige Daten (JSON) global abgelegt, so dass ich die Daten und die Funktionen von jedem Script nutzen kann. Wenn diese nun alle vor allen andren Skripten hinzugefügt werden und es viele kleine nicht globale Script gibt… ...wird sich das irgendwie auf die Performance auswirken oder macht das nichts aus?

312

Online

33.0k

Benutzer

83.6k

Themen

1.3m

Beiträge