Skip to content

Skripten / Logik

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

16.6k Topics 214.1k Posts

NEWS

Subcategories


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Topics
    49k Posts
    crunchipC
    @rallef siehe https://forum.iobroker.net/post/1330170
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Topics
    80k Posts
    M
    @Berges01 getAlias als Function nutzen [image: 1774522983362-a1b16bd9-ea6a-4346-834d-ac21c70573f2-image.png] getAlias Blockly Export <xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="VG%:/Iy]f`:D?^RG|E;D">dp</variable> </variables> <block type="procedures_defcustomreturn" id="06;h.e/%Z./|{S@#_,_$" x="163" y="63"> <mutation statements="false"> <arg name="dp" varid="VG%:/Iy]f`:D?^RG|E;D"></arg> </mutation> <field name="NAME">getAlias</field> <field name="SCRIPT">bGV0IGFsbEFsaWFzRFBzID0gJCgnYWxpYXMuMC4qJykNCmxldCBhbGlhc0RQID0gbnVsbDsNCmZvcihsZXQgaT0wO2k8YWxsQWxpYXNEUHMubGVuZ3RoO2krKyl7DQogICAgbGV0IG9iaiA9IGdldE9iamVjdChhbGxBbGlhc0RQc1tpXSkNCiAgICBpZihvYmouY29tbW9uLmFsaWFzLmlkID09IGRwKXsNCiAgICAgICAgYWxpYXNEUCA9IGFsbEFsaWFzRFBzW2ldDQogICAgICAgIGJyZWFrOw0KICAgIH0NCn0NCnJldHVybiBhbGlhc0RQOw==</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> <block type="debug" id="#p?e-vbG)t5Ii#dc|s/?" x="163" y="163"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="|K8;#[UoM(oBimq1bvmr"> <field name="TEXT">test</field> </shadow> <block type="procedures_callcustomreturn" id="P)J?u.?Y3Y/+UJ-++-uA"> <mutation name="getAlias"> <arg name="dp"></arg> </mutation> <value name="ARG0"> <block type="text" id="u:(b%y^@lqE|78CC.l5*"> <field name="TEXT">pirate-weather.0.weather.daily.00.moonPhase</field> </block> </value> </block> </value> </block> </xml>
  • 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
  • mqtt via blockly

    blockly
    1
    0 Votes
    1 Posts
    286 Views
    No one has replied
  • File auslesen und auf Datenpunkte legen

    javascript
    13
    0 Votes
    13 Posts
    456 Views
    paul53P
    @Homoran sagte: "undefined" gäbe, wäre das jedoch dann auch "falsch" Was der Logik von Javascript entspricht (implizite Typwandlung).
  • [gelöst] Prüfen, ob ein State existiert

    Moved
    11
    0 Votes
    11 Posts
    3k Views
    ScroungerS
    Wenn der state existiert aber keinen Wert hat wird trotzdem eine warn ins log geschrieben. Lösung ist existsState zu verwenden, da bekommt dann auch false zurück wenn kein Wert vorhanden ist, siehe: https://forum.iobroker.net/topic/23548/getstate-warning-log-js-dokumentation/10 Musste ich hier noch dokumentieren ;)
  • Time Of Day - Design Pattern

    template javascript
    2
    2
    3 Votes
    2 Posts
    1k Views
    ?
    @Tirador Vielen Dank für das tolle Skript, dass diverse Zeiten einfach über einen DP verfügbar macht :)
  • Befehl Komandozeile als Script

    communication
    2
    0 Votes
    2 Posts
    269 Views
    H
    Ich habe es schon selber hinbekommen. Für meinen Anwendungsfall sieht das dan so aus: var schreibeVorlauf; schreibeVorlauf = "ebusctl -s localhost w -c bai SetModeOverride '2;" + getState("hm-rega.0.3298").val +";-;-;0;0;0;0;0;0'" ; console.log(schreibeVorlauf); console.log(getState("hm-rega.0.3298").val); exec(schreibeVorlauf);
  • Auslesen von Daten einer Webseite

    monitoring
    8
    0 Votes
    8 Posts
    627 Views
    HomoranH
    @floet sagte in Auslesen von Daten einer Webseite: ch möchte allerdings auch "mittel" und "spitze" haben. Mit Num geht es jedenfalls nicht. Das stimmt, da muss dann ein anderes RegEx rein. Mache ich dir heute abend EDIT: ind[^\d\-]+(\-?\d+\.?\d+)\s\/\s(\-?\d+\.?\d+)\s\/\s(\-?\d+\.?\d+) für die drei Windgeschwindigkeiten (Num0-2)
  • Skript für DarkSky Wetterdaten

    javascript climate
    11
    1 Votes
    11 Posts
    2k Views
    J
    Hallo, deute ich das hier richtig: schedule("*/5 * * * *", function (data) { das die 5 bedeutet alle 5 Minuten werden die aktuellen Daten geholt? Weil ich mich gewundert habe in der Darksky API, das da schon über 200 Aufrufe waren, wobei das Script erst ein paar Stunden lief. Kann man hier einen kleineren Intervall einstellen? So oft muss das ja nicht sein die Daten abzurufen, auch wenn 1000 Aufrufe kostenfrei sind. Grüße JB
  • Liste aller CRON Jobs

    Moved
    8
    0 Votes
    8 Posts
    4k Views
    T
    @Blackbat72 gibt noch keine Funktion in Javascript-Adapter dafür. Adapter Code in dem die Funktionen definiert sind
  • Staubsauger bei Abwesenheit 1xReinigen

    blockly
    6
    1
    0 Votes
    6 Posts
    582 Views
    L
    @paul53 Funktioniert nicht. Musste das script abändern da mein Anwesenheit Datenpunkt bei niemand zuhause falsch ist, siehe unten. Funktioniert aber nicht. [image: 1582362713335-staubsauger.png]
  • Bewegungsmelder temporär deaktivieren

    javascript blockly
    4
    1
    0 Votes
    4 Posts
    403 Views
    T
    @Berchemer In allen von dir genannten Fällen sind die Variablen leer/undefiniert. Vorteil von Variablen ist, das sie effizienter als States sind.
  • 0 Votes
    2 Posts
    445 Views
    HomoranH
    @Bostil sagte in Logik-Programmierung abseits von Blockly / Szenen möglich ?: einen anderen schönen Adapter, der "falls ... wenn" Blöcke einfacher & flexibel programmieren lassen kann ? einfacher als in Blockly geht es doch wirklich nicht. Was ist denn dir da zu kompliziert? [image: 1582234078531-blockly_pure.png] Die States sind willkürlich und müssen natürlich aus deinen ausgewählt werden @Bostil sagte in Logik-Programmierung abseits von Blockly / Szenen möglich ?: aber die Optionen in den Szenen sind mir wirklich nicht eindeutig das wird aber einfacher wenn du Szenen nur in "eine Richtung" nutzst. Den Haken bei setze Sollwert für falsch einfach weg lässt. Eventuell liegt es auch an deinen States.
  • Blockly Timeout in Schleife

    blockly
    3
    1
    0 Votes
    3 Posts
    817 Views
    C
    @dslraser Ok, super. Danke dass hat mir schon geholfen :) Es ging um eine einfache LED-Lampe, welche mit eigener Infrarot Fernbedienung kommt, und ich über den Harmony Hub ansteuere. Heller und Dunkler sind hier einfach jedes mal ein Tastendruck und ich wollte von einem "Normalen Dimmer" (0-100%) die entsprechende Anzahl der Tastendrücke senden. Aber mit dem Intervall klappt es. Danke!
  • IRobot Roomba Steuerung

    Moved
    19
    0 Votes
    19 Posts
    4k Views
    smarthomegirlS
    @eric2905 sagte in IRobot Roomba Steuerung: Am node-red-Flow für die Statusinfos habe ich noch was angepasst - die Uhrzeit der Statusabfrage wird nun auch in einen Datenpunkt geschrieben und im Widget mit angezeigt. So sieht man immer, wie alt der angezeigte Status ist. Hier der überarbeitete Flow "Roomba Status" (ist auch im Posting oben angepasst): [{"id":"a5a2adf.f5a5d5","type":"inject","name":"Full Status jede 1 Minute","topic":"","payload":"","payloadType":"date","repeat":"60","crontab":"","once":true,"x":180,"y":62,"z":"7859072e.87a6f8","wires":[["504181f6.afbe8","182e191.fe7d1e7"]]},{"id":"504181f6.afbe8","type":"http request","name":"Roomba command","method":"GET","ret":"txt","url":"http://192.168.178.55/full_status.xml","x":408,"y":63,"z":"7859072e.87a6f8","wires":[["b7123aff.48edc8","3050ead5.cfaf16","6c22b045.93dd5","c8c15059.373eb","205772fb.dfa88e","bee92f3c.4116d","f8aef704.075108","a899536.f5766b","666e081d.9991f8"]]},{"id":"b7123aff.48edc8","type":"function","name":"Name auswerten","func":"var quelle = msg.payload;\n\nmsg1 = {};\n\nsuche = \"<name>\";\nsuche_laenge = (suche && suche.length);\n\n// Suchwort \"suche\" finden \n// var daten_startpos = quelle.indexOf('cleaning_distance');\nvar daten_startpos = quelle.indexOf(suche);\nvar daten = quelle.substr(daten_startpos + suche_laenge, 50);\n\n\n// Finde \"<\" und merke dir die Position. Schneide aus von 0 bis Position\nvar daten_endpos = daten.indexOf('<');\ndaten = daten.substring(0, daten_endpos);\nmsg1.payload = daten; // String\n\nreturn [msg1];","outputs":"1","noerr":0,"x":658,"y":63,"z":"7859072e.87a6f8","wires":[["5f503576.a0afcc"]]},{"id":"5f503576.a0afcc","type":"ioBroker out","name":"","topic":"node-red.0.Roomba.name","ack":"false","autoCreate":"true","x":990,"y":64,"z":"7859072e.87a6f8","wires":[]},{"id":"3050ead5.cfaf16","type":"function","name":"Strecke auswerten","func":"var quelle = msg.payload;\n\nmsg1 = {};\n\nsuche = \"<cleaning_distance>\";\nsuche_laenge = (suche && suche.length);\n\n// Suchwort \"suche\" finden \n// var daten_startpos = quelle.indexOf('cleaning_distance');\nvar daten_startpos = quelle.indexOf(suche);\nvar daten = quelle.substr(daten_startpos + suche_laenge, 50);\n\n\n// Finde \"<\" und merke dir die Position. Schneide aus von 0 bis Position\nvar daten_endpos = daten.indexOf('<');\ndaten = daten.substring(0, daten_endpos);\nmsg1.payload = daten; // String\n\nreturn [msg1];","outputs":"1","noerr":0,"x":664,"y":133,"z":"7859072e.87a6f8","wires":[["b475f945.4b8a08"]]},{"id":"b475f945.4b8a08","type":"ioBroker out","name":"","topic":"node-red.0.Roomba.strecke","ack":"false","autoCreate":"true","x":996,"y":134,"z":"7859072e.87a6f8","wires":[]},{"id":"6c22b045.93dd5","type":"function","name":"Schmutzbehälter auswerten","func":"var quelle = msg.payload;\n\nmsg1 = {};\n\nsuche = \"<bin_status>\";\nsuche_laenge = (suche && suche.length);\n\n// Suchwort \"suche\" finden \n// var daten_startpos = quelle.indexOf('cleaning_distance');\nvar daten_startpos = quelle.indexOf(suche);\nvar daten = quelle.substr(daten_startpos + suche_laenge, 50);\n\n\n// Finde \"<\" und merke dir die Position. Schneide aus von 0 bis Position\nvar daten_endpos = daten.indexOf('<');\ndaten = daten.substring(0, daten_endpos);\nmsg1.payload = daten; // String\n\nreturn [msg1];","outputs":"1","noerr":0,"x":693,"y":191,"z":"7859072e.87a6f8","wires":[["11db5550.ee24ab"]]},{"id":"11db5550.ee24ab","type":"ioBroker out","name":"","topic":"node-red.0.Roomba.schmutzbehaelter","ack":"false","autoCreate":"true","x":1029,"y":193,"z":"7859072e.87a6f8","wires":[]},{"id":"c8c15059.373eb","type":"function","name":"Akkuladung auswerten","func":"var quelle = msg.payload;\n\nmsg1 = {};\n\nsuche = \"<battery_charge>\";\nsuche_laenge = (suche && suche.length);\n\n// Suchwort \"suche\" finden \n// var daten_startpos = quelle.indexOf('cleaning_distance');\nvar daten_startpos = quelle.indexOf(suche);\nvar daten = quelle.substr(daten_startpos + suche_laenge, 50);\n\n\n// Finde \"<\" und merke dir die Position. Schneide aus von 0 bis Position\nvar daten_endpos = daten.indexOf('<');\ndaten = daten.substring(0, daten_endpos);\nmsg1.payload = daten; // String\n\nreturn [msg1];","outputs":"1","noerr":0,"x":666,"y":259,"z":"7859072e.87a6f8","wires":[["8c8c5798.7373a8"]]},{"id":"8c8c5798.7373a8","type":"ioBroker out","name":"","topic":"node-red.0.Roomba.akkuladung","ack":"false","autoCreate":"true","x":1030,"y":260,"z":"7859072e.87a6f8","wires":[]},{"id":"205772fb.dfa88e","type":"function","name":"Akkukapazität (Soll) auswerten","func":"var quelle = msg.payload;\n\nmsg1 = {};\n\nsuche = \"<capacity>\";\nsuche_laenge = (suche && suche.length);\n\n// Suchwort \"suche\" finden \n// var daten_startpos = quelle.indexOf('cleaning_distance');\nvar daten_startpos = quelle.indexOf(suche);\nvar daten = quelle.substr(daten_startpos + suche_laenge, 50);\n\n\n// Finde \"<\" und merke dir die Position. Schneide aus von 0 bis Position\nvar daten_endpos = daten.indexOf('<');\ndaten = daten.substring(0, daten_endpos);\nmsg1.payload = daten; // String\n\nreturn [msg1];","outputs":"1","noerr":0,"x":688,"y":319,"z":"7859072e.87a6f8","wires":[["5c1179c1.a3ee88"]]},{"id":"5c1179c1.a3ee88","type":"ioBroker out","name":"","topic":"node-red.0.Roomba.akkusoll","ack":"false","autoCreate":"true","x":1036,"y":319,"z":"7859072e.87a6f8","wires":[]},{"id":"bee92f3c.4116d","type":"function","name":"Akkukapazität (Ist) auswerten","func":"var quelle = msg.payload;\n\nmsg1 = {};\n\nsuche = \"<charge>\";\nsuche_laenge = (suche && suche.length);\n\n// Suchwort \"suche\" finden \n// var daten_startpos = quelle.indexOf('cleaning_distance');\nvar daten_startpos = quelle.indexOf(suche);\nvar daten = quelle.substr(daten_startpos + suche_laenge, 50);\n\n\n// Finde \"<\" und merke dir die Position. Schneide aus von 0 bis Position\nvar daten_endpos = daten.indexOf('<');\ndaten = daten.substring(0, daten_endpos);\nmsg1.payload = daten; // String\n\nreturn [msg1];","outputs":"1","noerr":0,"x":690,"y":378,"z":"7859072e.87a6f8","wires":[["334dc150.ccb23e"]]},{"id":"334dc150.ccb23e","type":"ioBroker out","name":"","topic":"node-red.0.Roomba.akkuist","ack":"false","autoCreate":"true","x":1026,"y":380,"z":"7859072e.87a6f8","wires":[]},{"id":"f8aef704.075108","type":"function","name":"Temperatur auswerten","func":"var quelle = msg.payload;\n\nmsg1 = {};\n\nsuche = \"<temperature>\";\nsuche_laenge = (suche && suche.length);\n\n// Suchwort \"suche\" finden \n// var daten_startpos = quelle.indexOf('cleaning_distance');\nvar daten_startpos = quelle.indexOf(suche);\nvar daten = quelle.substr(daten_startpos + suche_laenge, 50);\n\n\n// Finde \"<\" und merke dir die Position. Schneide aus von 0 bis Position\nvar daten_endpos = daten.indexOf('<');\ndaten = daten.substring(0, daten_endpos);\nmsg1.payload = daten; // String\n\nreturn [msg1];","outputs":"1","noerr":0,"x":692,"y":436,"z":"7859072e.87a6f8","wires":[["2712b369.d8ed4c"]]},{"id":"2712b369.d8ed4c","type":"ioBroker out","name":"","topic":"node-red.0.Roomba.temperatur","ack":"false","autoCreate":"true","x":1028,"y":438,"z":"7859072e.87a6f8","wires":[]},{"id":"a899536.f5766b","type":"function","name":"Status auswerten","func":"var quelle = msg.payload;\n\nmsg1 = {};\n\nsuche = \"<cleaner_state>\";\nsuche_laenge = (suche && suche.length);\n\n// Suchwort \"suche\" finden \n// var daten_startpos = quelle.indexOf('cleaning_distance');\nvar daten_startpos = quelle.indexOf(suche);\nvar daten = quelle.substr(daten_startpos + suche_laenge, 50);\n\n\n// Finde \"<\" und merke dir die Position. Schneide aus von 0 bis Position\nvar daten_endpos = daten.indexOf('<');\ndaten = daten.substring(0, daten_endpos);\n\nif (daten == \"st_base\"){\n daten = \"Auf Basis, nicht ladend\";\n}\n\nif (daten == \"st_base_recon\"){\n daten = \"Auf Basis, Auffrischungsladung\";\n}\n\nif (daten == \"st_base_full\"){\n daten = \"Auf Basis, normal aufladend\";\n}\n\nif (daten == \"st_base_trickle\"){\n daten = \"Auf Basis, Erhaltungsladung\";\n}\n\nif (daten == \"st_base_wait\"){\n daten = \"Auf Basis, wartend\";\n}\n\nif (daten == \"st_plug\"){\n daten = \"Eingesteckt, nicht ladend\";\n}\n\nif (daten == \"st_plug_recon\"){\n daten = \"Eingesteckt, Auffrischungsladung\";\n}\n\nif (daten == \"st_plug_full\"){\n daten = \"Eingesteckt, normal aufladend\";\n}\n\nif (daten == \"st_plug_trickle\"){\n daten = \"Eingesteckt, Erhaltungsladung\";\n}\n\nif (daten == \"st_plug_wait\"){\n daten = \"Eingesteckt, wartend\";\n}\n\nif (daten == \"st_stopped\"){\n daten = \"Angehalten\";\n}\n\nif (daten == \"st_clean\"){\n daten = \"Reinigung läuft\";\n}\n\nif (daten == \"st_cleanstop\"){\n daten = \"Reinigung gestoppt\";\n}\n\nif (daten == \"st_clean_spot\"){\n daten = \"Spot-Reinigung\";\n}\n\nif (daten == \"st_clean_max\"){\n daten = \"Max-Reinigung\";\n}\n\nif (daten == \"st_delayed\"){\n daten = \"Reinigung verzögert, startet gleich\";\n}\n\nif (daten == \"st_dock\"){\n daten = \"Suche Basis\";\n}\n\nif (daten == \"st_pickup\"){\n daten = \"Roomba hochgehoben\";\n}\n\nif (daten == \"st_remote\"){\n daten = \"Ferngesteuertes fahren\";\n}\n\nif (daten == \"st_wait\"){\n daten = \"Warte auf Befehle\";\n}\n\nif (daten == \"st_off\"){\n daten = \"Aus\";\n}\n\nif (daten == \"st_error\"){\n daten = \"Fehler\";\n}\n\nif (daten == \"st_locate\"){\n daten = \"Finde mich\";\n}\n\nif (daten == \"st_unknown\"){\n daten = \"Status unbekannt\";\n}\n\n\nmsg1.payload = daten; // String\n\nreturn [msg1];","outputs":"1","noerr":0,"x":692,"y":497,"z":"7859072e.87a6f8","wires":[["f6e00de3.091ff"]]},{"id":"f6e00de3.091ff","type":"ioBroker out","name":"","topic":"node-red.0.Roomba.status","ack":"false","autoCreate":"true","x":1028,"y":499,"z":"7859072e.87a6f8","wires":[]},{"id":"666e081d.9991f8","type":"function","name":"Saugt gerade auswerten","func":"var quelle = msg.payload;\n\nmsg1 = {};\n\nsuche = \"<cleaning>\";\nsuche_laenge = (suche && suche.length);\n\n// Suchwort \"suche\" finden \n// var daten_startpos = quelle.indexOf('cleaning_distance');\nvar daten_startpos = quelle.indexOf(suche);\nvar daten = quelle.substr(daten_startpos + suche_laenge, 50);\n\n// Finde \"<\" und merke dir die Position. Schneide aus von 0 bis Position\nvar daten_endpos = daten.indexOf('<');\ndaten = daten.substring(0, daten_endpos);\nmsg1.payload = daten; // String\n\nreturn [msg1];","outputs":"1","noerr":0,"x":706,"y":556,"z":"7859072e.87a6f8","wires":[["c7157fc8.38ea8"]]},{"id":"c7157fc8.38ea8","type":"ioBroker out","name":"","topic":"node-red.0.Roomba.saugt","ack":"false","autoCreate":"true","x":1042,"y":558,"z":"7859072e.87a6f8","wires":[]},{"id":"182e191.fe7d1e7","type":"function","name":"Status-Uhrzeit ermitteln","func":"msg = {};\n\n\nfunction addZero(i) {\n if (i < 10) {\n i = \"0\" + i;\n }\n return i;\n}\n\n\nvar currentdate = new Date(); \nvar h = addZero(currentdate.getHours());\nvar m = addZero(currentdate.getMinutes());\nvar s = addZero(currentdate.getSeconds());\n\n\nvar datetime = h + \":\" + m + \":\" + s;\n\nmsg.payload = datetime;\nreturn msg;\n","outputs":1,"noerr":0,"x":701,"y":631,"z":"7859072e.87a6f8","wires":[["57efa4f2.a8105c"]]},{"id":"57efa4f2.a8105c","type":"ioBroker out","name":"","topic":"node-red.0.Roomba.Statusuhrzeit","ack":"false","autoCreate":"true","x":1044,"y":636,"z":"7859072e.87a6f8","wires":[]}]</cleaning></cleaner_state></temperature></charge></capacity></battery_charge></bin_status></cleaning_distance></name> Viel Spaß damit :-) Gruß, Eric Hallo @eric2905, beim Importieren des Roomba Status Flows in NodeRed kommt bei mir folgende Fehlermeldung: [image: 1582398518715-479f8357-59e7-432e-b560-48b3598a1392-image.png] Was mache ich da falsch? Wo liegt der Fehler? EDIT: Es darf </cleaning></cleaner_state></temperature></charge></capacity></battery_charge></bin_status></cleaning_distance></name> nicht enthalten sein. Ein Problem habe ich aber trotzdem noch. Ich habe wie beschrieben unter "Roomba command" meine IP Adresse des Saugroboters eingetragen, aber nach dem Deployen bekommt Node Red keine Verbindung. (siehe Bild) So wie es aussieht ist diese Verbindung nicht möglich. [image: 1582403061791-b071a54d-df05-4b8e-acfc-dd74115bef9f-image.png] Der Aufruf dieses Links http://192.168.178.253/full_status.xml ist nicht möglich. [image: 1582404315368-d5db8c82-88f5-47ce-a043-5aeab60e4d13-image.png] Im Log steht folgende Fehlermeldung: Spoiler node-red.0 2020-02-22 21:45:41.561 error at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14) node-red.0 2020-02-22 21:45:41.561 error (2903) 22 Feb 21:45:41 - [error] [http request:Roomba command] Error: connect ECONNREFUSED 192.168.178.253:80 node-red.0 2020-02-22 21:44:41.552 error at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14) node-red.0 2020-02-22 21:44:41.552 error (2903) 22 Feb 21:44:41 - [error] [http request:Roomba command] Error: connect ECONNREFUSED 192.168.178.253:80 node-red.0 2020-02-22 21:43:41.581 error at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14) node-red.0 2020-02-22 21:43:41.581 error (2903) 22 Feb 21:43:41 - [error] [http request:Roomba command] Error: connect ECONNREFUSED 192.168.178.253:80 node-red.0 2020-02-22 21:42:41.561 error at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14) node-red.0 2020-02-22 21:42:41.561 error (2903) 22 Feb 21:42:41 - [error] [http request:Roomba command] Error: connect ECONNREFUSED 192.168.178.253:80 node-red.0 2020-02-22 21:41:41.576 error at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14) node-red.0 2020-02-22 21:41:41.576 error (2903) 22 Feb 21:41:41 - [error] [http request:Roomba command] Error: connect ECONNREFUSED 192.168.178.253:80 node-red.0 2020-02-22 21:41:12.308 error at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14) node-red.0 2020-02-22 21:41:12.308 error (2903) 22 Feb 21:41:12 - [error] [http request:Roomba command] Error: connect ECONNREFUSED 192.168.178.253:80 node-red.0 2020-02-22 21:41:12.138 error at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14) node-red.0 2020-02-22 21:41:12.138 error (2903) 22 Feb 21:41:12 - [error] [http request:Roomba command] Error: connect ECONNREFUSED 192.168.178.253:80 node-red.0 2020-02-22 21:40:12.307 error at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14) node-red.0 2020-02-22 21:40:12.307 error (2903) 22 Feb 21:40:12 - [error] [http request:Roomba command] Error: connect ECONNREFUSED 192.168.178.253:80 node-red.0 2020-02-22 21:40:12.160 error at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14) node-red.0 2020-02-22 21:40:12.160 error (2903) 22 Feb 21:40:12 - [error] [http request:Roomba command] Error: connect ECONNREFUSED 192.168.178.253:80 node-red.0 2020-02-22 21:39:12.353 error at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14) node-red.0 2020-02-22 21:39:12.353 error (2903) 22 Feb 21:39:12 - [error] [http request:Roomba command] Error: connect ECONNREFUSED 192.168.178.253:80 node-red.0 2020-02-22 21:39:12.324 error at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14) node-red.0 2020-02-22 21:39:12.324 error (2903) 22 Feb 21:39:12 - [error] [http request:Roomba command] Error: connect ECONNREFUSED 192.168.178.253:80 Was ist da falsch? Was muss ich da machen?
  • Objekte in Schleife füllen

    blockly
    3
    0 Votes
    3 Posts
    301 Views
    Markus K.M
    Ok. Ich habe in einem Datenpunkt einen Farbwert. Jetzt habe ich es so gelöst, wenn ich in VIS den Knopf: Speicher1 drücke, wird der Wert in den Datenpunkt Speicher1 übernommen. Knopf zwei entprechend Speicher2, usw. Kann ich mit Blockly auch, einen Wert n jeweils erhöhen und dann meine Farbe in Speicher(n) ablegen ? Und umgekehrt dann halt eine Schleife die durchzählt, und den wert Speicher1 , Speicher2 ... Speicher(n) nacheinander wieder abruft ?
  • Licht an so lange Bewegung

    blockly
    49
    1
    0 Votes
    49 Posts
    6k Views
    T
    Ist alles im Beispiel von dslraser enthalten.
  • mehrere unterschiedliche trigger auf ein Script?

    javascript blockly
    15
    1
    0 Votes
    15 Posts
    718 Views
    dslraserD
    @chrbo80 Ich erstelle Datenpunkte mit einen Script von Mic. Wenn Du in die Funktion rein klickst, dann kannst Du ab Zeile 116 den Datenpunkt ändern. So würde der DP jetzt angelegt ['Alexa.Button.Licht_dimmen', {'name': 'Licht Dimmen','type': 'boolean', 'read': true, 'write': true, 'role': 'button','def':false, "smartName": {"de": "Esstischlampe Dimmer","smartType": "SWITCH"} }], Da </> drauf klicken zum änder ab Zeile 116 [image: 1581882234721-bildschirmfoto-2020-02-16-um-20.43.12.png] Der SmartName ist da auch drinn und wird dann automatisch so wie im Script angegeben in iot eingefügt. Du mußt nur einmal anschließend iot öffnen und schauen ob der DP da ist und dann einmal über den Sprachbefehl: Alexa, suche neue Geräte diesen neuen DP suchen lassen. Anschließend kannst Du den als zweiten Trigger in Dein Blockly von oben einfügen. Dann sollte, wenn Du den so wie hier angegeben verwenden würdest, mit: Alexa, Esstischlampe Dimmer an, das Blockly ausgeführt werden. Blockly Export <xml xmlns="http://www.w3.org/1999/xhtml"> <block type="procedures_defcustomnoreturn" id="Q6*2#9#;FNeNnQsQ=FO*" x="12" y="63"> <mutation statements="false"></mutation> <field name="NAME">Datenpunkte_anlegen</field> <field name="SCRIPT">LyoqCiAqIENyZWF0ZSBzdGF0ZXMgdW5kZXIgMF91c2VyZGF0YS4wIG9yIGphdmFzY3JpcHQueAogKiBDdXJyZW50IFZlcnNpb246ICAgICBodHRwczovL2dpdGh1Yi5jb20vTWljLU0vaW9icm9rZXIuY3JlYXRlVXNlclN0YXRlcwogKiBTdXBwb3J0OiAgICAgICAgICAgICBodHRwczovL2ZvcnVtLmlvYnJva2VyLm5ldC90b3BpYy8yNjgzOS8KICogQXV0b3I6ICAgICAgICAgICAgICAgTWljIChpb0Jyb2tlcikgfCBNaWMtTSAoZ2l0aHViKQogKiBWZXJzaW9uOiAgICAgICAgICAgICAxLjAgKDE3IEphbnVhcnkgMjAyMCkKICogRXhhbXBsZToKICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIGxldCBzdGF0ZXNUb0NyZWF0ZSA9IFsKICAgICAgICBbJ1Rlc3QuVGVzdDEnLCB7J25hbWUnOidUZXN0IDEnLCAndHlwZSc6J3N0cmluZycsICdyZWFkJzp0cnVlLCAnd3JpdGUnOnRydWUsICdyb2xlJzonaW5mbycsICdkZWYnOidIZWxsbycgfV0sCiAgICAgICAgWydUZXN0LlRlc3QyJywgeyduYW1lJzonVGVzdCAyJywgJ3R5cGUnOidzdHJpbmcnLCAncmVhZCc6dHJ1ZSwgJ3dyaXRlJzp0cnVlLCAncm9sZSc6J2luZm8nLCAnZGVmJzonSGVsbG8nIH1dLAogICAgXTsKICAgIGNyZWF0ZVVzZXJTdGF0ZXMoJzBfdXNlcmRhdGEuMCcsIGZhbHNlLCBzdGF0ZXNUb0NyZWF0ZSk7CiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqIFBMRUFTRSBOT1RFOiBQZXIgaHR0cHM6Ly9naXRodWIuY29tL2lvQnJva2VyL2lvQnJva2VyLmphdmFzY3JpcHQvaXNzdWVzLzQ3NCwgdGhlIHVzZWQgZnVuY3Rpb24gc2V0T2JqZWN0KCkgCiAqICAgICAgICAgICAgICBleGVjdXRlcyB0aGUgY2FsbGJhY2sgUFJJT1IgdG8gY29tcGxldGluZyB0aGUgc3RhdGUgY3JlYXRpb24uIFRoZXJlZm9yZSwgd2UgdXNlIGEgc2V0VGltZW91dCBhbmQgY291bnRlci4gCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqIEBwYXJhbSB7c3RyaW5nfSB3aGVyZSAgICAgICAgICBXaGVyZSB0byBjcmVhdGUgdGhlIHN0YXRlOiBlLmcuICcwX3VzZXJkYXRhLjAnIG9yICdqYXZhc2NyaXB0LngnLgogKiBAcGFyYW0ge2Jvb2xlYW59IGZvcmNlICAgICAgICAgRm9yY2Ugc3RhdGUgY3JlYXRpb24gKG92ZXJ3cml0ZSksIGlmIHN0YXRlIGlzIGV4aXN0aW5nLgogKiBAcGFyYW0ge2FycmF5fSBzdGF0ZXNUb0NyZWF0ZSAgU3RhdGUocykgdG8gY3JlYXRlLiBzaW5nbGUgYXJyYXkgb3IgYXJyYXkgb2YgYXJyYXlzCiAqIEBwYXJhbSB7b2JqZWN0fSBbY2FsbGJhY2tdICAgICBPcHRpb25hbDogYSBjYWxsYmFjayBmdW5jdGlvbiAtLSBUaGlzIHByb3ZpZGVkIGZ1bmN0aW9uIHdpbGwgYmUgZXhlY3V0ZWQgYWZ0ZXIgYWxsIHN0YXRlcyBhcmUgY3JlYXRlZC4KICovCmZ1bmN0aW9uIGNyZWF0ZVVzZXJTdGF0ZXMod2hlcmUsIGZvcmNlLCBzdGF0ZXNUb0NyZWF0ZSwgY2FsbGJhY2sgPSB1bmRlZmluZWQpIHsKIAogICAgY29uc3QgV0FSTiA9IGZhbHNlOyAvLyBUaHJvd3Mgd2FybmluZyBpbiBsb2csIGlmIHN0YXRlIGlzIGFscmVhZHkgZXhpc3RpbmcgYW5kIGZvcmNlPWZhbHNlLiBEZWZhdWx0IGlzIGZhbHNlLCBzbyBubyB3YXJuaW5nIGluIGxvZywgaWYgc3RhdGUgZXhpc3RzLgogICAgY29uc3QgTE9HX0RFQlVHID0gZmFsc2U7IC8vIFRvIGRlYnVnIHRoaXMgZnVuY3Rpb24sIHNldCB0byB0cnVlCiAgICAvLyBQZXIgaXNzdWUgIzQ3NCAoaHR0cHM6Ly9naXRodWIuY29tL2lvQnJva2VyL2lvQnJva2VyLmphdmFzY3JpcHQvaXNzdWVzLzQ3NCksIHRoZSB1c2VkIGZ1bmN0aW9uIHNldE9iamVjdCgpIGV4ZWN1dGVzIHRoZSBjYWxsYmFjayAKICAgIC8vIGJlZm9yZSB0aGUgc3RhdGUgaXMgYWN0dWFsIGNyZWF0ZWQuIFRoZXJlZm9yZSwgd2UgdXNlIGEgc2V0VGltZW91dCBhbmQgY291bnRlciBhcyBhIHdvcmthcm91bmQuCiAgICAvLyBJbmNyZWFzZSB0aGlzIHRvIDEwMCwgaWYgaXQgaXMgbm90IHdvcmtpbmcuCiAgICBjb25zdCBERUxBWSA9IDUwOyAvLyBEZWxheSBpbiBtaWxsaXNlY29uZHMgKG1zKQoKCiAgICAvLyBWYWxpZGF0ZSAid2hlcmUiCiAgICBpZiAod2hlcmUuZW5kc1dpdGgoJy4nKSkgd2hlcmUgPSB3aGVyZS5zbGljZSgwLCAtMSk7IC8vIFJlbW92ZSB0cmFpbGluZyBkb3QKICAgIGlmICggKHdoZXJlLm1hdGNoKC9eamF2YXNjcmlwdC4oWzAtOV18WzEtOV1bMC05XSkkLykgPT0gbnVsbCkgJiYgKHdoZXJlLm1hdGNoKC9eMF91c2VyZGF0YS4wJC8pID09IG51bGwpICkgewogICAgICAgIGxvZygnVGhpcyBzY3JpcHQgZG9lcyBub3Qgc3VwcG9ydCB0byBjcmVhdGUgc3RhdGVzIHVuZGVyIFsnICsgd2hlcmUgKyAnXScsICdlcnJvcicpOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAvLyBQcmVwYXJlICJzdGF0ZXNUb0NyZWF0ZSIgc2luY2Ugd2UgYWxzbyBhbGxvdyBhIHNpbmdsZSBzdGF0ZSB0byBjcmVhdGUKICAgIGlmKCFBcnJheS5pc0FycmF5KHN0YXRlc1RvQ3JlYXRlWzBdKSkgc3RhdGVzVG9DcmVhdGUgPSBbc3RhdGVzVG9DcmVhdGVdOyAvLyB3cmFwIGludG8gYXJyYXksIGlmIGp1c3Qgb25lIGFycmF5IGFuZCBub3QgaW5zaWRlIGFuIGFycmF5CgogICAgbGV0IG51bVN0YXRlcyA9IHN0YXRlc1RvQ3JlYXRlLmxlbmd0aDsKICAgIGxldCBjb3VudGVyID0gLTE7CiAgICBzdGF0ZXNUb0NyZWF0ZS5mb3JFYWNoKGZ1bmN0aW9uKHBhcmFtKSB7CiAgICAgICAgY291bnRlciArPSAxOwogICAgICAgIGlmIChMT0dfREVCVUcpIGxvZyAoJ1tEZWJ1Z10gQ3VycmVudGx5IHByb2Nlc3NpbmcgZm9sbG93aW5nIHN0YXRlOiBbJyArIHBhcmFtWzBdICsgJ10nKTsKCiAgICAgICAgLy8gQ2xlYW4KICAgICAgICBsZXQgc3RhdGVJZCA9IHBhcmFtWzBdOwogICAgICAgIGlmICghIHN0YXRlSWQuc3RhcnRzV2l0aCh3aGVyZSkpIHN0YXRlSWQgPSB3aGVyZSArICcuJyArIHN0YXRlSWQ7IC8vIGFkZCB3aGVyZSB0byBiZWdpbm5pbmcgb2Ygc3RyaW5nCiAgICAgICAgc3RhdGVJZCA9IHN0YXRlSWQucmVwbGFjZSgvXC4qXC4vZywgJy4nKTsgLy8gcmVwbGFjZSBhbGwgbXVsdGlwbGUgZG90cyBsaWtlICcuLicsICcuLi4nIHdpdGggYSBzaW5nbGUgJy4nCiAgICAgICAgY29uc3QgRlVMTF9TVEFURV9JRCA9IHN0YXRlSWQ7CgogICAgICAgIGlmKCAoJChGVUxMX1NUQVRFX0lEKS5sZW5ndGggPiAwKSAmJiAoZXhpc3RzU3RhdGUoRlVMTF9TVEFURV9JRCkpICkgeyAvLyBXb3JrYXJvdW5kIGR1ZSB0byBodHRwczovL2dpdGh1Yi5jb20vaW9Ccm9rZXIvaW9Ccm9rZXIuamF2YXNjcmlwdC9pc3N1ZXMvNDc4CiAgICAgICAgICAgIC8vIFN0YXRlIGlzIGV4aXN0aW5nLgogICAgICAgICAgICBpZiAoV0FSTiAmJiAhZm9yY2UpIGxvZygnU3RhdGUgWycgKyBGVUxMX1NUQVRFX0lEICsgJ10gaXMgYWxyZWFkeSBleGlzdGluZyBhbmQgd2lsbCBubyBsb25nZXIgYmUgY3JlYXRlZC4nLCAnd2FybicpOwogICAgICAgICAgICBpZiAoIVdBUk4gJiYgTE9HX0RFQlVHKSBsb2coJ1tEZWJ1Z10gU3RhdGUgWycgKyBGVUxMX1NUQVRFX0lEICsgJ10gaXMgYWxyZWFkeSBleGlzdGluZy4gT3B0aW9uIGZvcmNlICg9b3ZlcndyaXRlKSBpcyBzZXQgdG8gWycgKyBmb3JjZSArICddLicpOwoKICAgICAgICAgICAgaWYoIWZvcmNlKSB7CiAgICAgICAgICAgICAgICAvLyBTdGF0ZSBleGlzdHMgYW5kIHNoYWxsIG5vdCBiZSBvdmVyd3JpdHRlbiBzaW5jZSBmb3JjZT1mYWxzZQogICAgICAgICAgICAgICAgLy8gU28sIHdlIGRvIG5vdCBwcm9jZWVkLgogICAgICAgICAgICAgICAgbnVtU3RhdGVzLS07CiAgICAgICAgICAgICAgICBpZiAobnVtU3RhdGVzID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKExPR19ERUJVRykgbG9nKCdbRGVidWddIEFsbCBzdGF0ZXMgc3VjY2Vzc2Z1bGx5IHByb2Nlc3NlZCEnKTsKICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSB7IC8vIGV4ZWN1dGUgaWYgYSBmdW5jdGlvbiB3YXMgcHJvdmlkZWQgdG8gcGFyYW1ldGVyIGNhbGxiYWNrCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChMT0dfREVCVUcpIGxvZygnW0RlYnVnXSBBbiBvcHRpb25hbCBjYWxsYmFjayBmdW5jdGlvbiB3YXMgcHJvdmlkZWQsIHdoaWNoIHdlIGFyZSBnb2luZyB0byBleGVjdXRlIG5vdy4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGdvIG91dCBhbmQgY29udGludWUgd2l0aCBuZXh0IGVsZW1lbnQgaW4gbG9vcC4KICAgICAgICAgICAgICAgICAgICByZXR1cm47IC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzE4NDUyOTIwL2NvbnRpbnVlLWluLWN1cnNvci1mb3JlYWNoCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gLy8gaWYoIWZvcmNlKQogICAgICAgIH0KCiAgICAgICAgLyoqKioqKioqKioqKgogICAgICAgICAqIFN0YXRlIGlzIG5vdCBleGlzdGluZyBvciBmb3JjZSA9IHRydWUsIHNvIHdlIGFyZSBjb250aW51aW5nIHRvIGNyZWF0ZSB0aGUgc3RhdGUgdGhyb3VnaCBzZXRPYmplY3QoKS4KICAgICAgICAgKioqKioqKioqKioqLwogICAgICAgIGxldCBvYmogPSB7fTsKICAgICAgICBvYmoudHlwZSA9ICdzdGF0ZSc7CiAgICAgICAgb2JqLm5hdGl2ZSA9IHt9OwogICAgICAgIG9iai5jb21tb24gPSBwYXJhbVsxXTsKICAgICAgICBzZXRPYmplY3QoRlVMTF9TVEFURV9JRCwgb2JqLCBmdW5jdGlvbiAoZXJyKSB7CiAgICAgICAgICAgIGlmIChlcnIpIHsKICAgICAgICAgICAgICAgIGxvZygnQ2Fubm90IHdyaXRlIG9iamVjdCBmb3Igc3RhdGUgWycgKyBGVUxMX1NUQVRFX0lEICsgJ106ICcgKyBlcnIpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaWYgKExPR19ERUJVRykgbG9nKCdbRGVidWddIE5vdyB3ZSBhcmUgY3JlYXRpbmcgbmV3IHN0YXRlIFsnICsgRlVMTF9TVEFURV9JRCArICddJykKICAgICAgICAgICAgICAgIGxldCBpbml0ID0gbnVsbDsKICAgICAgICAgICAgICAgIGlmKHBhcmFtWzFdLmRlZiA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgaWYocGFyYW1bMV0udHlwZSA9PT0gJ251bWJlcicpIGluaXQgPSAwOwogICAgICAgICAgICAgICAgICAgIGlmKHBhcmFtWzFdLnR5cGUgPT09ICdib29sZWFuJykgaW5pdCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIGlmKHBhcmFtWzFdLnR5cGUgPT09ICdzdHJpbmcnKSBpbml0ID0gJyc7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGluaXQgPSBwYXJhbVsxXS5kZWY7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHNldFN0YXRlKEZVTExfU1RBVEVfSUQsIGluaXQsIHRydWUsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoTE9HX0RFQlVHKSBsb2coJ1tEZWJ1Z10gc2V0U3RhdGUgZHVyY2hnZWbDvGhydDogJyArIEZVTExfU1RBVEVfSUQpOwogICAgICAgICAgICAgICAgICAgICAgICBudW1TdGF0ZXMtLTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bVN0YXRlcyA9PT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKExPR19ERUJVRykgbG9nKCdbRGVidWddIEFsbCBzdGF0ZXMgcHJvY2Vzc2VkLicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJykgeyAvLyBleGVjdXRlIGlmIGEgZnVuY3Rpb24gd2FzIHByb3ZpZGVkIHRvIHBhcmFtZXRlciBjYWxsYmFjawogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChMT0dfREVCVUcpIGxvZygnW0RlYnVnXSBGdW5jdGlvbiB0byBjYWxsYmFjayBwYXJhbWV0ZXIgd2FzIHByb3ZpZGVkJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0sIERFTEFZICsgKDIwICogY291bnRlcikgKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfSk7Cn0KCmxldCBzdGF0ZXNUb0NyZWF0ZSA9IFsKICAgIFsnQWxleGEuQnV0dG9uLkxpY2h0X2RpbW1lbicsIHsnbmFtZSc6ICdMaWNodCBEaW1tZW4nLCd0eXBlJzogJ2Jvb2xlYW4nLCAncmVhZCc6IHRydWUsICd3cml0ZSc6IHRydWUsICdyb2xlJzogJ2J1dHRvbicsJ2RlZic6ZmFsc2UsICJzbWFydE5hbWUiOiB7ImRlIjogIkVzc3Rpc2NobGFtcGUgRGltbWVyIiwic21hcnRUeXBlIjogIlNXSVRDSCJ9IH1dLCAKCl07ICAgIApjcmVhdGVVc2VyU3RhdGVzKCcwX3VzZXJkYXRhLjAnLCBmYWxzZSwgc3RhdGVzVG9DcmVhdGUpOw==</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> <block type="procedures_callcustomnoreturn" id=")mkV#y*GjLhBQ@,dfLM`" x="13" y="112"> <mutation name="Datenpunkte_anlegen"></mutation> </block> </xml>
  • Simple Szene mit nuki-extended als trigger

    scenes
    2
    0 Votes
    2 Posts
    158 Views
    Thomas BraunT
    Hat sich erledigt. Habe immer einen falschen Wert für den Trigger gehabt.
  • Instanz neu starten wenn verbindung nicht mehr steht

    blockly
    2
    1
    0 Votes
    2 Posts
    471 Views
    T
    Hallo, ich würde das so lösen: [image: 1581802350887-bildschirmfoto-2020-02-15-um-22.31.50.png] Objekt ID ist der Datenpunkt der bei einer Aktualisierung gesetzt wird und startet einen Timeout der nach einer definierten Zeitspanne deine Aktion ausführt. Bei einer erneuten Akutalisierung wird der Timeout neugestartet.
  • Stromverbrauch in Fr. ausrechnen (Hoch und Niede

    blockly monitoring
    4
    2
    0 Votes
    4 Posts
    625 Views
    paul53P
    @Massimo sagte: Müsste er dann diese 2 verschiedene Tariffe in unterschiedlichen Datenpunkte schreiben? Es sind zwei Datenpunkte mit den beiden Tarifen (Fr/kWh) erforderlich. Bei zwei Tarifen muss auch ein Gesamtkostenstand (analog zum Zählerstand) mitgeführt werden, da eine einfache Multiplikation mit der Zählerdifferenz nicht ausreicht. Vorschlag: [image: 1581793294111-blockly_temp.jpg]
  • Brauche Hilfe bei Systeminfo-Adapter

    javascript
    1
    1
    0 Votes
    1 Posts
    195 Views
    No one has replied

593

Online

32.7k

Users

82.5k

Topics

1.3m

Posts