NEWS
Bier maischen Script mit Blockly
-
Habe noch ein Fehler entdeckt.
Wenn die Heizung bei aufheizen eingeschaltet wird kommt die nächste Abfrage ob Kesseltemperatur
ist größer oder gleich einmaische Grad.
Dies wird aber nur einmal Abgfragt da das script nur einmal durchlaufen wird.
Also muss erreicht werden das öfters abgefragt wird ob die Aufheiztemp erreicht ist.
Habe noch ein Intervall eingefügt .
Ob Intervall in Intervall geht kann ich nicht sagen.
Mußte mal testen.
Sonst muß Plan B ran.
Ralla
5230_etwa_v2.jpg -
Hi Ralla,
danke für die Tipps. Das Script sieht nun wie folgt aus:
Beim Start passiert aber leider nichts. Datenpunkte sind wie folgt angelegt:
Da die Daten vom Durchlauf des Testscriptes noch drinstehen und die Funke auch nicht geschaltet wird, läuft das Script nicht bis zum Punkt "aufheizen" durch. Da das Objekt Bierbrauen auch nicht auf true gesetzt wird, würde ich mal vermuten, es liegt daran, dass das Setzen von Objekt Bierbrauen auf true nirgendwo definiert ist. Es wird am Schluss zwar auf unwahr gesetzt, aber wo wird es auf wahr gesetzt?
Oder habe ich schon wieder einen Denkfehler?
[Edit]: Ok, ich HABE einen Denkfehler. Im Testscript ist das ja auch nicht gesetzt. Also liegt es irgendwo anders. Der Runterzähler? :?:
[Edit]²: Hmmm, ich habe jetzt mal für jede Variable einen Datenpunkt angelegt. Scheint aber auch nicht viel zu bringen. Ich verstehe die Logik nicht. Bin halt doch doof…:(
-
Doof nicht, eher unwissend wie ich.
In javascricpt.0 aus Bierbrauen level einen Button machen.
Wenn Button klick wird das script gestartet.
5230_text_dp_010022019.jpg
5230_button.jpg -
Hi Ralla,
also, es liegt am Antriggern des Datenpunkts Bierbrauen.
Setze ich ihn manuell auf wahr oder auch auf unwahr, dann wird mir der entsprechende Text beim Datenpunkt Test angezeigt.
Ich habe einmal mit state, level und mit switch probiert, alle Ergebnisse gleich. Ich muss die Funktion manuell umstellen, dann wird der Tesxt generiert. Ich kann aber nur folgende Rollen auswählen:
Ich würde jetzt systematisch alle durchtesten und mal schauen, womit es geht. Aber die generelle Frage bleibt. Nachdem das Script durch ist, muss ich manuell umstellen von true auf false und umgekehrt. Warum ist das so?
Das sind übrigens alle Datenpunkte, die ich erstellt habe mit den entsprechenden Rollen. Irgendetwas auffälliges dabei?
Ich teste nachher mal weiter und melde mich dann nochmal….
Danke vorerst...;)
-
[edit]: seit dem ich das Systemneu aufgesetzt habe, bekomme ich auch beim Umschalten zwischen Objekten und Scripten diese Meldung:
Worher kommt die? Habe ich bei der Installation was vergessen??
-
Mal im Log nachgeschaut ?
https://github.com/ioBroker/ioBroker.ja … issues/150
Der Datenpunkt Bierbrauen ist ja vergleichbar mit einem mechanischem Schalter.
Als wenn du Zuhause das Licht ein oder ausschaltest.
Mit true oder false wird hier per Soft eben Brauen ein oder ausgeschaltet.
Macht ja auch Sinn da du nicht 365 Tage im Jahr brauen willst.
Ralla
-
OK, versteh ich ja. Allerdings würde ich jetzt eigentlich davon ausgehen, dass wenn das Script durchgelaufen ist (Schalter ein) und alles soweit funktioniert hat, bei der Ausschaltung des Scriptes der Zustand der Schalter auch wieder in den Urzustand zurückgesetzt wird. Offensichtlich ist das nicht der Fall, sodass man dann einige Schalter vor dem erneuten Durchlaufen des Scriptes (Automatisierung) manuell wieder in die Ausgangsstellung setzen muss.
Wenn das so ist, und man das auf dem Schrim hat, ist es ja gut. Allerdings würde ich jetzt schon fast dazu tendieren ein Script zu basteln, was alles wieder auf Anfang setzt. Einfach damit man nachher im Alltagsgebrauch nicht vergisst an Schalter XY noch eine Einstellung manuell vornehmen zu müssen.
Das muss aber der zweite Schritt sein.
OK, wir haben also einen bis zum Schritt "schreibe irgendwas in Objekt Test" funktionierendes Script.
Wie geht´s jetzt weiter? Können wir zur Kontrolle, ob alles so läuft wie es soll, weitere Texte in die Datenpunkte schreiben lassen?
Wenn alles so weit durchläuft (immer unter der Premisse, sich zu merken, wo welche Schalter wieder zurückgesetzt werden müssen) könnten wir die nächsten Temperaturstufen versuchen einzubinden.
Ich würde gerne so weit vorfahren, dass ich den Kessel mit dem Heizstab auch mal real anklemme und schaue, ob es funktioniert.
Übrigens, das Log schmeißt mir eine Menge Warnmeldungen aus:
avascript.0 2019-01-31 21:54:28.951 warn at TCP.onread (net.js:601:20)
javascript.0 2019-01-31 21:54:28.951 warn at Socket.Readable.push (_stream_readable.js:208:10)
javascript.0 2019-01-31 21:54:28.950 warn at readableAddChunk (_stream_readable.js:250:11)
javascript.0 2019-01-31 21:54:28.950 warn at addChunk (_stream_readable.js:263:12)
javascript.0 2019-01-31 21:54:28.950 warn at Socket.emit (events.js:211:7)
javascript.0 2019-01-31 21:54:28.949 warn at emitOne (events.js:116:13)
javascript.0 2019-01-31 21:54:28.949 warn at Socket._ultron.on (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/ws/lib/WebSocket.js:138:22)
javascript.0 2019-01-31 21:54:28.948 warn at Receiver.add (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/ws/lib/Receiver.js:139:10)
javascript.0 2019-01-31 21:54:28.948 warn at Receiver.startLoop (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/ws/lib/Receiver.js:165:16)
javascript.0 2019-01-31 21:54:28.948 warn at Receiver.getData (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/ws/lib/Receiver.js:330:12)
javascript.0 2019-01-31 21:54:28.947 warn at Receiver.dataMessage (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/ws/lib/Receiver.js:389:14)
javascript.0 2019-01-31 21:54:28.947 warn at Receiver._receiver.onmessage (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/ws/lib/WebSocket.js:141:47)
javascript.0 2019-01-31 21:54:28.947 warn at WebSocket.emit (events.js:211:7)
javascript.0 2019-01-31 21:54:28.946 warn at emitOne (events.js:116:13)
javascript.0 2019-01-31 21:54:28.946 warn at WebSocket.onMessage (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/ws/lib/EventTarget.js:99:16)
javascript.0 2019-01-31 21:54:28.946 warn at WebSocket.ws.onmessage (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/lib/transports/websocket.js:147:10)
javascript.0 2019-01-31 21:54:28.945 warn at WS.Transport.onData (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/lib/transport.js:137:8)
javascript.0 2019-01-31 21:54:28.945 warn at WS.Transport.onPacket (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/lib/transport.js:145:8)
javascript.0 2019-01-31 21:54:28.945 warn at WS.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/component-emitter/index.js:133:20)
javascript.0 2019-01-31 21:54:28.944 warn at WS. <anonymous>(/opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/lib/socket.js:273:10)
javascript.0 2019-01-31 21:54:28.944 warn at Socket.onPacket (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/lib/socket.js:456:14)
javascript.0 2019-01-31 21:54:28.944 warn at Socket.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/component-emitter/index.js:133:20)
javascript.0 2019-01-31 21:54:28.943 warn at Socket. <anonymous>(/opt/iobroker/node_modules/component-bind/index.js:21:15)
javascript.0 2019-01-31 21:54:28.943 warn at Manager.ondata (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/manager.js:335:16)
javascript.0 2019-01-31 21:54:28.943 warn at Decoder.add (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-parser/index.js:251:12)
javascript.0 2019-01-31 21:54:28.942 warn at Decoder.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/component-emitter/index.js:133:20)
javascript.0 2019-01-31 21:54:28.942 warn at Decoder. <anonymous>(/opt/iobroker/node_modules/component-bind/index.js:21:15)
javascript.0 2019-01-31 21:54:28.942 warn at Manager.ondecoded (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/manager.js:345:8)
javascript.0 2019-01-31 21:54:28.941 warn at Manager.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/component-emitter/index.js:133:20)
javascript.0 2019-01-31 21:54:28.941 warn at Manager. <anonymous>(/opt/iobroker/node_modules/component-bind/index.js:21:15)
javascript.0 2019-01-31 21:54:28.941 warn at Socket.onpacket (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/socket.js:236:12)
javascript.0 2019-01-31 21:54:28.940 warn at Socket.onevent (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/socket.js:278:10)
javascript.0 2019-01-31 21:54:28.940 warn at Socket.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/component-emitter/index.js:133:20)
javascript.0 2019-01-31 21:54:28.940 warn at Socket. <anonymous>(/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInMemClient.js:52:30)
javascript.0 2019-01-31 21:54:28.939 warn at Object.change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:3425:37)
javascript.0 2019-01-31 21:54:28.939 warn at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:358:25)
javascript.0 2019-01-31 21:54:28.939 warn at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:756:38)
javascript.0 2019-01-31 21:54:28.938 warn at Object. <anonymous>(script.js.Skript_2:27:9)
javascript.0 2019-01-31 21:54:28.938 warn at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1236:28)
javascript.0 2019-01-31 21:54:28.914 warn Wrong type of javascript.0.Runterzähler: "number". Please fix, while deprecated and will not work in next versions.
Kannst du damit was anfangen???
Danke vielmals für deine Geduld…</anonymous></anonymous></anonymous></anonymous></anonymous></anonymous>
-
Ok, hier mal ganz einfach.
Wenn du Bierbrauen einschaltest und die Kesseltemp kleiner 20 Grad ist
muß Funke eingeschaltet werden.
Unter Objekte Datenpunkt Bierbrauen muß auf true stehen.
5230_hw_klein.png -
OK, ich habe das Script jetzt wie folgt am Laufen:
Allerdings ist es jetzt so, dass das Script bis zu der letzten Textstelle in einem durchläuft und die Temperatur nicht gesteuert wird. Die Temperatur heizt in einem durch ohne zu stoppen, zu halten oder ähnliches.
Hast du ne Idee, woran es liegen könnte?
-
Also läuft Aufheizen ja.
Prima.
Der intervall halten wird überlaufen.
Bild später.
Nachtrag, Bild,
ob Intervall im Intervall geht weiss ich nicht , probiere es.
Ralla
5230_erkl_rb_r.jpg
5230_4.jpg -
Hmmm, Script habe ich wie folgt angepasst:
Leider nicht der erwünschte Erfolg. Es heizt weiter auf ohne zu halten oder zu stoppen. Aber anscheinend läuft das Script nicht mehr bis zum Ende durch, da der Endtext jetzt nicht mehr angezeigt wird…grübel
-
Schau im Beitrag davor.
Heizung halten wird überlaufen weil eine Pause fehlt bis der Kessel aufheizt.
Ralla
-
Fehler gefunden.
siehe Bild.
5230_6.jpg -
Ok, hatte ich übersehen. Script wie folgt angepasst:
Script läuft iinerhalb Sekundenbruchteilen bis ende durch und macht ansonsten nix.
Scheint also der falsche Weg zu sein.
Ich geh nochmal einen Schritt zurück…
-
Baue dir aktualisiere Test ein egal wo um zu sehen wie weit das Programm durch läuft.
Zurück setzen mußt du nach Programm Ende nichts.
Da sind noch zwei große Fehler bei dir drin.
Du mußt nach Kessel aufheizen Heizung ein warten bis der Kessel aufgeheizt ist.
Also fehlt die Pause nach aufheizen in der du immer wieder abfragst ob die Kesseltemp erreicht ist.
Simulieren kannst du das Prrogramm nur wenn sich die Kesselfühlertemperatur ändert.
Entweder mit einem realen Kesselfühlerwert oder in dem du im Programm den Wert vorgibst.
Teste doch real mit Kesseltemp und Funke.
Spricht ja nichts dagegen.
Das ist schon der richtige Weg, deine Methode zur Analyse und Simulation ist eher merkwürdig.
Versuche mal zu verstehen was das Programm eigentlich macht.
Das mit dem warten nach Kessel aufheizen hast du noch nicht verstanden.
Ist doch aber logisch oder ?
Das Programm rennt ja durch weil Kesseltemp nie größer oder gleich einmaische Grad ist.
Dann kann die Regelung nie greifen.
Also logisch.
Ralla
5230_7.jpg -
Das läuft jetzt in der Simu.
Beachte das die Regelung im Programm vorgegeben ist.
-
Schließe die Anlage an mit Fühler und Funke.
Programm Livetest siehe Bild.
Ralla
5230_livetest_03.02.jpg
5230_livetest_03.02_2.jpg
5230_livetest_03.02_1.jpg -
Läuft aus der Vis heraus.
Runterzähler und Temperaturregelung geht.
Falscher Weg :lol:
Programm für dich vom 03.02 22:32 sollte bei dir laufen.
Ralla :mrgreen:
5230_04_02_r2.jpg
5230_04_02_r1.jpg
5230_04_02_vis.jpg -
Hi Ralla,
es tut mir leid, aber ich hatte die letzten Tage ne Menge Stress um die Ohren. Darum melde ich mich erst jetzt.
Das Script habe ich 1 zu 1 übernommen:
Es läuft genau bis hierhin:
wie man sieht, heizt er ab dem Punkt wieder einfach weiter durch.
Woran könnte es liegen???
-
Kein Problem,
dauert eben.
Slider ist zur Simulation bei mir gewesen.
Bild 1 ersetze Slider mit deinem Datenpunkt Kesseltemperatur ist.
Ist glaube ich bei dir Sensor1.
Bild 2 auch.
!!!!! Die Regelung gehört innerhalb des Intervalls 3 !!!!!
Ralla
5230_s2.jpg
5230_s1.jpg