hallo
ich habe einen Uart der mir einen String sendet und ich suche seit Tagen eine Möglichkeit den string weiter zu verarbeiten.
das ist der string: ##35W0000000001254400000000000000F9AB\r\n und ich brauche den Wert 2544 um ihn in einen Batterie Sensor zu übertragen. 2544 steht hierbei für 25,44V
- id: uart_roboter
rx_pin: GPIO0
#rx_buffer_size: 1024
baud_rate: 115200
debug:
direction: BOTH
dummy_receiver: true
#after:
#delimiter: "\n"
sequence:
- lambda: UARTDebug::log_int(direction, bytes, ',');
Steht da immer die 1 davor? Falls ja könnte man vielleicht diese für ein split nutzen
Wie wäre es mit
{{ variablenName[10:14] }}
Oder mit Anzahl von Zeichen sofern die Gesamtanzahl des Strings immer gleich ist.
Ne es steht leider nicht immer die 1 davor.
Ich habe es jetzt in einem Textsensor abgelegt aber mein neues Problem ist das ich den Ausschnitt aus dem String nicht in einen normalen Sensor bekomme.
Da kommt dann immer eine Fehlermeldung
Hat jemand eine Idee wie ich aus Voltdata der jetzt ein String ist einen float mache sodass ich ihn als Sensor einbinden kann?
- lambda: |-
UARTDebug::log_string(direction, bytes, ',');
std::string str(bytes.begin(), bytes.end());
std::string voltdata = str.substr(15,4);
id(Batterie).publish_state(voltdata.c_str());
ESP_LOGD("main", "Die Spannung ist %s V", voltdata.c_str());
by HarryP: Zusammenführung Doppelpost (bitte “bearbeiten” Funktion nutzen)
Ich bin mir nicht ganz sicher aber Versuch macht klug. Tausche die beiden letzten Zeilen durch diese aus.
float voltage = std::stof(voltdata);
id(Batterie).publish_state(voltage);
ESP_LOGD("main", "Die Spannung ist %.2f V", voltage);
Vielen Dank. Ihr seid super
Ok, jetzt gebe ich es zu, ich ließ mich durch ChatGPT helfen und die Lösung schien konsistent zu sein. Von ESP habe ich noch keine Ahnung, nur etwas Scripterfahrung
Ein weiteres Beispiel wieviel Potential in der KI jetzt schon steckt.
Ja das stimmt. Ich habe das auch versucht aber ich bin mit ihr nicht so richtig klar gekommen
ich hatte noch eine Frage und stehe mal wieder auf dem Schlauch.
ich habe einen betrierbsstundenzähler der mir über Uart gegeben wird. dieser ist vierstellig und beträgt in Moment 0005. wie kann ich die ersten drei Nullen aus dem Textsensor herausfiltern? aber ich möchte sie nur ausblenden wenn sie 0 sind
- platform: template
name: Ladezeit
id: Load
filters:
- lambda: |-
return x + " Stunden";
by HarryP: Zusammenführung Doppelpost (bitte “bearbeiten” Funktion nutzen)