NEWS
Status über längeren Zeitraum prüfen - wie setze ich das um?
-
Moin!
Ich benötige mal einen Denkanstoß und vermutlich auch ein wenig Hilfe bei der Umsetzung zu folgender Aufgabe:
Ich habe einen 3D-Drucker im Keller. Er ist also außer Hör- und Sichtweite. An den Druckkopf möchte ich einen Xiaomi Erschütterungssensor verbauen.
Jetzt möchte ich regelmäßig prüfen lassen, ob sich der Drucker noch bewegt.
Ich möchte nun 2 "Prüfschleifen" realisieren.
Die erste Schleife soll nach der ersten Erschütterung gestartet. Jetzt soll über zB 10 Minuten hinweg geprüft werden, ob es weiterhin Erschütterungen gibt (eventuell habe ich nur kurz etwas daran gemacht).
a) nein = stoppe alle weiteren Prüfungen
b) ja = mache das gleiche wie die erste Schleife. Wenn hier nun aber irgendwann auch keine Bewegung mehr stattfindet, dann soll zB irgendwo eine Lampe angehen oder sowas.Wie kann ich sowas umsetzen?
-
@mymomo Ich kann Dir nur raten, Dich gedanklich von "Schleifen" komplett zu lösen und nur noch in Triggern zu denken. Ich arbeite zwar nicht mit Blockly - aber im Prinzip ist die Logik immer gleich, egal mit welcher Logikmaschine Du es umsetzt.
Erschütterung = Trigger macht was und startet Timer mit 10 Minuten oder setzt vorhanden Timer wieder auf 10 Minuten.
Timer abgelaufen, Lampe an. -
@mickym
hey!
danke für den Hinweis.
okay, mit Timeouts habe ich schon gearbeitet.ich weiß jedoch nicht wie ich diese Verschachtelung bauen kann.
ist es erlaubt einfach "nichts" als Befehl zurück zu geben?die ersten 10 Minuten nach der ersten Erschütterung sollen ja erst mal nicht weiter beachtet werden. vielleicht reinige ich den Drucker ja nur oder mach neues Material in den Drucker.
heißt: ich prüfe ob "Erschütterung = wahr" und dann verlangt die Logik ja nach "mach das und das". Aber er soll ja einfach nix machen. Könnte ich einfach gar nichts eintragen und nur bei "falsch" den Befehl zum Abbruch hinterlegen?
wenn er mir innerhalb der ersten 10 Minuten ein "falsch" zurück gibt, dann soll einfach nur alles abgebrochen werden und KEINE Lampe angehen.erst wenn er länger als 10 Minuten immer wieder den Status "Erschütterung = wahr" zurück gibt soll der Timeout einfach in die nächste Runde gehen. Erst wenn er mir dann irgendwann auf "falsch" springt soll zB eine Lampe anmachen.
-
@mymomo nimm die Erschütterung als Trigger und prüfe dann auf die Differenz der Timestamps
-
Wie lange hält die Batterie, wenn der sensor Stundenlang sendet?
Würde es nicht mehr Sinn machen den Stromverbrauch zu überwachen? -
@mymomo sagte in Status über längeren Zeitraum prüfen - wie setze ich das um?:
heißt: ich prüfe ob "Erschütterung = wahr" und dann verlangt die Logik ja nach "mach das und das". Aber er soll ja einfach nix machen. Könnte ich einfach gar nichts eintragen und nur bei "falsch" den Befehl zum Abbruch hinterlegen?
wenn er mir innerhalb der ersten 10 Minuten ein "falsch" zurück gibt, dann soll einfach nur alles abgebrochen werden und KEINE Lampe angehen.Du könntest doch einfach mit einem eigenen DP arbeiten. Sprich beim Triggern setzt Du in einem 1. Blockly einen Datenpunkt sagen wir mal Timer läuft auf true. Der Timer setzt ihn nach Ablauf auf false zurück.
In einem 2. Blockly triggerst Du wieder auf Erschütterung und kannst dann ja entscheiden, ob Du was machst oder nicht solange der Timer Datenpunkt auf true steht.
-
@mymomo sagte in Status über längeren Zeitraum prüfen - wie setze ich das um?:
An den Druckkopf möchte ich einen Xiaomi Erschütterungssensor verbauen.
Ich weiß sowieso nicht, ob das eine gute Idee ist, oder ob der Sensor nicht die Präzision des Druckkopfs stören wird.
Außerdem ist die Frage
@muchul sagte in Status über längeren Zeitraum prüfen - wie setze ich das um?:Wie lange hält die Batterie, wenn der sensor Stundenlang sendet?
vollkommen berechtigt, da der Sensor während des Betriebes wahrscheinlich dauersenden wird.
Wozu willst du das ganze eigentlich umsetzen?
Im Prinzip kann man das alles hinterfragen:
- Willst du erfahren, ob der Drucker fertig ist?
- Wenn ja, zu welchem Zweck?
- Hast du so viel zu drucken, dass es auf die Minute ankommt, um das nächste Teil zu starten?
- wenn Nein, warum brauchst du die Info überhaupt?
- Wenn ja, zu welchem Zweck?
Wenn es dann "unbedingt" sein muss, würde ich da wohl auch eher über eine Leistungsmessung arbeiten
- Willst du erfahren, ob der Drucker fertig ist?