NEWS
SerialBridge - SerialSend5 - ON/OFF [gelöst]
-
Hallo,
ich habe mit einem ESP01S eine SerialBridge realistiert.
Damit Tasmota die Einstellung für Baudrate und SerialSend nach einem Stromausfall wieder einstellt, bin ich nach etwas rumprobieren zu dieser Lösung gekommen:savedata 1 Rule2 on System#Boot do Backlog Baudrate 19200; SerialSend5 00 endon Rule2 1 savedata 0
Warum muss die "00" bei SerialSend5 mit angegeben werden? Nur "SerialSend5" => Command Error.
Soweit funktioniert das alles sehr gut, die Daten kommen vom RxD-Pin im ioBroker bei mqtt.0/tele/24picX/RESULT an.
Aber manchmal vergisst er das SerialSend5 und die Übertragung stoppt. Wenn ich an der Konsole "SerialSend 5 00" eingebe, klappt wieder alles.
Da ich die Daten nur jede Stunde einmal benötige, dachte ich mir, ich sende kurz vor dem Lesen vom ioBroker/Blockly das "SerialSend 5 00" an den ESP01S. Aber wie? Ich habe viel gelesen, aber bin zu keinem brauchbarem Ergebnis gekommen.
Mit dem "sendTo" Block habe ich es geschafft das Relais am GPIO0 des ESP01S EIN/AUS zu schalten, aber SerialSend5 habe ich nicht geschafft. (sendTo = mqtt.0, Befehl=sendMessage2Client, topic=cmnd/24picX/POWER, message=0 für Relais AUS)
Welchen topic muss ich für die Konsole eintragen? (topic=cmnd, message=SerialSend5 00 => Command Error)
Ich habe es auch mit dem "exec" Block probiert, Befehl=http://<IP>/cm?cmnd=SerialSend5 00, keine Reaktion in der Konsole. Ich gehe davon aus, dass die Konsole mit "SerialSend Done" bei Erfolg geantwortet hätte.
Hat da jemand eine Lösung für mich?
2.Frage:
Das Gerät am RxD Pin senden jede Sekunde Daten. Das hält natürlich mein WLAN und den ioBroker ziemlich auf Trab. Kann man den RxD Pin duch einen Befehl EIN/AUS schalten?
Mit dem GPIO0 schalte ich ein Relais. Kann man mit GPIO0=1 etwas verknüpfen, dass nur dann die Daten am RxD verarbeitet werden?
Danke -
@martinsu Es werden zwei Kommandos geschickt, als Erstes wird die Baudrate auf 19200 gesetzt, und dann noch ein NUL - Zeichen gesendet...
SerialSend5 ohne dass der Inhalt angegeben wird, der gesendet werden soll ist nicht ausführbar und wirft natürlich einen Fehler ...
Ich vermute, dass ein Script nur bis zum ersten Kommando ausgeführt wird, das einen Fehler meldet. Wenn SerialSend5 nicht ausgeführt wird, wird es bereits beim Baudrate Kommando einen Fehler gegeben haben - vielleicht ist die Schnittstelle schon durch ein empfangenes Zeichen aktiviert worden.....
Mit SerialSend5 beackert man den TxD Pin des ESP, und nicht den GPIO0 Pin ...
-
@martinp
danke für Deine Antwort.
Meine "Rule2 on System#Boot do Backlog Baudrate 19200; SerialSend5 00 endon" funktioniert. Wie ich inzwischen festgestellt habe, wird nur der SerialSend beim Stromausfall vergessen => siehe Doku. Somit müsste ich die Baudrate eigentlich nicht immer neu setzen.
Das mit dem manchmal SerialSend5 vergessen meine ich, dass es manchmal Tage, manchmal nur Stunden dauert. Deshalb wollte ich vom ioBroker/Blockly das Serialsend5 nochmal senden, wenn ich es brauche. Und dies bekomme ich nicht hin.Ich hatte schon überlegt, mit einem UND-Gatter eine Verknüpfung in Hardware zu bauen. Nur wenn GPIO0=1 ist, kommen die Daten am RxD an.
Aber bevor ich so etwas in Hardware gieße, dachte ich es gäbe vielleicht eine Software Lösung in Tasmota -
@martinsu Eventuell in der Tasmota-Konfiguration den RxD Pin auf eine andere Funktion "umbiegen"?
Wobei ich nicht weiß, ob da nicht vielleicht eine Plausibilitätsprüfung dann innerhalb Tasmota entweder die serielle Kommunikation ganz abschaltet, oder das "umbiegen" verhindert...
-
@martinp
Den RxD auf einen normalen GPIOx umprogrammieren und später wieder zurück als RxD hatte ich auch schon überlegt.
Bisher weiß ich aber nicht, wie man das vom ioBroker aus macht. -
@martinsu Was ist das denn für ein Gerät am RxD-Pin? Kann man dem nicht beibringen, seltener oder sogar nur "on request" Daten zu schicken?
-
@martinp
Zisternenpegel, fertiges Gerät, schon etwas älter. (wenn man nicht alles selber baut...)
Ich seh mich schon oben die kleine Schaltung bauen, 74HC00 4-fach NAND, 1 Gatter für das UND, 1 Gatter für die Invertierung, läuft auch mit 3,3V -
@martinsu Das heißt, Du brauchst die Daten aus den empfangenen Telegrammen prinzipiell schon, aber nicht in der Häufigkeit, wie sie das Gerät absetzt?
-
@martinp
richtig, die Wassermenge ändert sich sehr langsam.
Das Gerät sendet jede Sekunde.
Z.Z. werte ich die Daten alle 3 Stunden aus, wenn mehr als 500 Liter drin sind. Je weniger desto öfter, bis alle 15 Minuten. -
@martinsu EIGENTLICH sollte sich iobroker auch durch Telegramme im Sekundentakt nicht aus der Ruhe bringen lassen...
Eventuell kann man da auch in der Telegramm-Auswertung im Datenpunkt entsprechende Vorkehrungen treffen. Wenn man da fast alle einlaufenden Telegramme wegwirft ...
Ist aber natürlich auch eine Frage, wie der ESP 01 versorgt wird. Wenn das aus einem Akku passiert, sollte man natürlich anders vorgehen, und die überzähligen Telegramme per Hardware blockieren
-
@martinp
Ich habe das Problem jetzt gelöst.
Für das RxD hab ich die Schaltung wie oben in Hardware gebaut.
Das "SerialConfig" habe ich jetzt auch geschafft von Blockly zu senden. Mein Fehler war, dass ich "Passwort für Web Oberfläche" gesetzt hatte, dies muss natürlich bei jedem Command mit gesendet werden.