NEWS
Tasmota Rule: Motor und Entfernung
-
Hallo liebe Community,
ich würde gern wissen, ob man folgende Komponenten mit einer Regel in Tasmota steuern kann. Darin bin ich leider noch gar nicht bewandert...
Folgende Komponenten sollen zum Einsatz kommen:
- Wemos D1 Mini
- HC-SR04 Entfernungsmesser
- SG90 Micro Servo Motor
Ziel soll es sein, den Motor um 90° zu bewegen, wenn die Distanz kleiner als 10cm ist.
Ich würde mich sehr freuen, wenn mir jemand helfen könnte, der es vielleicht schon realisiert hat
Danke, Gruß Marcel
-
Hi
hier findest Du eine Erläuterung wie man einen SG90 bei Knopfdruck per Rule um 45° drehen lässt.
https://espeasy.readthedocs.io/en/latest/Plugin/P000_Servo_motor.html#p000-servo-motor-pageDas Ganze kann dann noch um eine Wenn-Dann Prüfung nach allgemeiner Vorlage (https://espeasy.readthedocs.io/en/latest/Rules/Rules.html) ergänzt werden um eine Prüfung für die Distanz zu ergänzen.
Somit bist Du dann etwa hier:
On HCSR04#distance do // HCSR04 ist in ESPeasy das angelegte Device if [HCSR04#distance] <10 //#distance ist ein frei vergebener Name einer Varaiable eines Device Servo,1,GPIO,90 // GPIO zu ersetzen durch den PWM GPIO des Servo am D1 Mini else Servo,1,GPIO,0 endif EndOn
Die Regeln in Tasmota basieren auf einer Kooperation aus ESPeasy und dürften daher sehr ähnlich zu erstellen sein. Entweder also direkt ESPEasy nutzen oder ausknobeln ob ggf. Anpassungen in Tasmota notwendig sind.
Viel Erfolg!
-
@dieter_p Danke für deine Ansätze und Links. Trotz lesens habe ich es noch nicht rausgefunden, wie es geht...
Was ich schon rausgefunden habe:
- Der Entfernungsmesser scheint mit SR04 angesprochen werden zu müssen.
- Dann muss man Rule1 davor setzen und die Regel mit Rule1 on aktivieren.
- Anscheinend wird die IF-Schleife mit ( ) angeführt, bin ich mir aber noch nicht sicher
- Den Motor muss mal wohl mit Dimmer ansteuern
Diese Werte habe ich für den Motor im Netz gefunden und das funktioniert auch super.
DimmerRange 26 67 fade on speed 18 PWMFrequency 50 Setoption69
Wenn ich den Motor steuere erscheint zum Beispiel:
21:25:21.475 RSL: RESULT = {"POWER":"ON","Dimmer":22}
Da ich den Motor mittels PWM1 auf D4 GPIO2 gesetzt habe, stehe ich momentan bei folgenden Ergebnis. Ist aber irgendwo noch ein Fehler drin:
Rule1 On SR04#distance do if (SR04#distance) <10 Servo,1,2,90 else Servo,1,2,0 endif EndOn
Das Ergbnis ist
21:36:10.232 RSL: RESULT = {"Rule1":{"State":"ON","Once":"OFF","StopOnError":"OFF","Length":84,"Free":427,"Rules":"On SR04#distance do if (SR04#distance) <10 Servo,1,2,90 else Servo,1,2,0 endif EndOn"}} 21:36:12.510 RUL: SR04#DISTANCE performs "if (SR04#distance) <10 Servo,1,2,90 else Servo,1,2,0 endif" 21:36:12.517 RSL: RESULT = {"If":"Done"}
-
Da ich den Motor mittels PWM1 auf D4 GPIO2 gesetzt habe, stehe ich momentan bei folgenden Ergebnis. Ist aber irgendwo noch ein Fehler drin:
Rule1 On SR04#distance do if (SR04#distance) <10 Servo,1,2,90 else Servo,1,2,0 endif EndOn
Das Ergbnis ist
21:36:10.232 RSL: RESULT = {"Rule1":{"State":"ON","Once":"OFF","StopOnError":"OFF","Length":84,"Free":427,"Rules":"On SR04#distance do if (SR04#distance) <10 Servo,1,2,90 else Servo,1,2,0 endif EndOn"}} 21:36:12.510 RUL: SR04#DISTANCE performs "if (SR04#distance) <10 Servo,1,2,90 else Servo,1,2,0 endif" 21:36:12.517 RSL: RESULT = {"If":"Done"}
Einfach nur ein paar Gedanken dazu.
Gemäß
Würde ich mir mal per MQTT den SR04 schicken lassen um zu prüfen ob der Ausdruck "SR04#Distance" für Tasmota richtig ist.
Im nächsten Schritt würde ich mir den Ausdruck "Servo" angucken. Denke das ist ein fertiges Plug-In in ESPEasy und so ggf in Tasmota nicht vorhanden. Entsprechend vlt. dort über eine Dimmer/PWM Funktion anzusteuern.
-
@dieter_p sagte in Tasmota Rule: Motor und Entfernung:
Entsprechend vlt. dort über eine Dimmer/PWM Funktion anzusteuern.Ich habe es mal per MQTT eingebunden. Wenn ich in der Console "Dimmer 26" eingebe, beispielsweise, dann rotiert der Motor.
Eingestellt habe ich "DimmerRange 26 67"
Als Test habe ich nun, womit es funktioniert. Nun bleibt noch herauszufinden, warum die IF-Schleife nicht will...
Rule1 On SR04#distance<10 do Dimmer 26 EndOn
EDIT: Mit einer 2.Rule kann man es auch einfach lösen