Bitte ändert euer Passwort!

Im März 2026 wurde das Forum gehackt. Dabei hatten die Angreifer Zugriff auf die Datenbank und somit Zugriff auf eure Passwörter. Auch wenn das Forum kein Passwort im Klartext speichert, können die Angreifer eure Passwörter knacken. Bitte ändert daher dringend euer Passwort für das Forum. Solltet ihr das gleiche Passwort auch an anderer Stelle verwenden, ändert es bitte unbedingt an allen Stellen!

Arduino Library für die Dekodierung von EX-Paketen

  • Eckehard
  • Offline
  • Senior Mitglied
  • Senior Mitglied
  • Beiträge: 65
  • Thanks: 6

Re: Neuer Link auf Github

04 Dez. 2017 19:47 - 04 Dez. 2017 19:53
#
Hallo Bernd,

ich möchte gerne auch die Seriennummer des Sensors über die Serielle Verbindung übertragen und auf der empfangenden Seite mit sscanf parsen....

Die Nachrichten die geparst werden sollen sehen z.B folgendermaßen aus:

<GPS 0x3276a409 8 Satellites 0.00>


Hier der relevante Teil des Codes:
...

int n = sscanf(buffer,"<%s %i %d %s %d>", &sensor, &serial,&id, &label, &value);

Serial.print("SENSOR=");
Serial.print(sensor);
Serial.print(" SERIAL=");
Serial.print(int(serial));
Serial.print(" ID=");
Serial.print(id);
Serial.print(" LABEL=");
Serial.print(label);
Serial.print(" VALUE=");
Serial.print(value);
Serial.print(" sscanf=");
Serial.println(n);
...

Der obige Code macht daraus z.B.:
...
<GPS 0x3276a409 8 Satellites 0.00>
SENSOR= SERIAL=-23543 ID=8 LABEL=Satellites VALUE=0 sscanf=5
...

Frage:
In der Referenz habe ich folgendes gefunden:
%i : Scan an integer as a signed number. Similar to %d, but interprets the number as hexadecimal when preceded by 0x and octal when preceded by 0.

Der Prefix von 0x hängt ja drann, ok....

Wie muss ich den format specifier von sscanf setzen, damit ich bei der Ausgabe statt -23543 den eigentlichen Wert 3276a409 ausgegeben bekomme....?
Oder ist das eher ein Problem der Ausgabe?


Danke und Grüße
Eckehard
Letzte Änderung: 04 Dez. 2017 19:53 von Eckehard. Begründung: typo

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • Sepp62
  • Autor
  • Offline
  • Elite Mitglied
  • Elite Mitglied
  • Beiträge: 307
  • Thanks: 154

Re: Neuer Link auf Github

04 Dez. 2017 22:22
#
Hallo Eckehard,

ich habe mal mit der heissen Nadel ein neues Sample gestrickt, das zeigt, wie man die Daten über JSON enkodiert/dekodiert. Du findest es hier:

github.com/Sepp62/TxJetiEx/tree/master/E...s/TxJetiExTeensyJson

Damit bekommst Du die Daten komplett so wie Du sie losgeschickt hast. Der Einfachheit halber läuft alles auf dem Teensy, der schickt die Daten auf Serial3 raus und empfängt sie dort auch wieder (Brücke zwischen Pin 7 und 8 stecken).

Natürlich musst Du dann (wenn alles so weit geht) das Beispiel aufdröseln. Der Empfänger läuft dann auf Deinem Empfänger-Arduino. Wichtig ist, dass Du die JSON-Library installierst. Sie läuft auch auf den kleinen Arduinos, aber zugegebenermaßen geht dort der Speicher schnell aus.

Ich hoffe, das hilft Dir. sscanf() geht prinzipiell auch, aber man macht da leicht Fehler und dann kackt das ganze Programm ab.

VG Bernd

PS: Es gibt übrigens noch einen "Bug" im Dekoder. Länge/Breite und Datum/Zeit werden nicht gekennzeichnet. Man muss anhand der Einheit rauskriegen, welcher Wert es ist. Das muss ich bei Gelegenheit ergänzen.
Folgende Benutzer bedankten sich: Eckehard

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • Sepp62
  • Autor
  • Offline
  • Elite Mitglied
  • Elite Mitglied
  • Beiträge: 307
  • Thanks: 154

Re: Neuer Link auf Github

04 Dez. 2017 22:24
#
Noch zu Deinem sscanf-Thema:

Probier' mal "%lx" für die SerialId.

forum.arduino.cc/index.php?topic=107262.0

VG Bernd
Folgende Benutzer bedankten sich: Eckehard

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • Eckehard
  • Offline
  • Senior Mitglied
  • Senior Mitglied
  • Beiträge: 65
  • Thanks: 6

Re: Neuer Link auf Github

05 Dez. 2017 08:42
#
Hallo Zusamen,

ahh, danke für den Hinweis mit %lx.... Das werde ich mal probieren.

Hätte ich auch selber drauf kommen können, Du hast es ja im TxJetiEx.ino quasi vorgemacht:
void PrintValue( TxJetiExPacketValue * pValue )
{
char buf[50];
float fValue;
uint8_t day; uint8_t month; uint16_t year;
uint8_t hour; uint8_t minute; uint8_t second;

sprintf(buf, "Value from %s, Serial: %08lx/Id: %d", pValue->GetName(), pValue->GetSerialId(), pValue->GetId() ); Serial.println( buf );
sprintf(buf, "Val - %s: ", pValue->GetLabel() ); Serial.print( buf );

Und der Hinweis auf Json ist auch cool! Das muss ich dann bei Gelegenheit auch mal umstellen, dann lernt man ja wieder was Neues....

DANKE!

Eckehard

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • Sepp62
  • Autor
  • Offline
  • Elite Mitglied
  • Elite Mitglied
  • Beiträge: 307
  • Thanks: 154

Re: Neues Beispiel für "Adafruit BLE UART friend"

05 Dez. 2017 20:14
#
Ich habe nun mal mein "Adafruit BLE UART Friend" -Modul an den Teensy angeschlossen und ein Sample dafür gemacht ( github.com/Sepp62/TxJetiEx/tree/master/E...iExTeensyBluefruitLE ).

Bei diesem Modul kann man die Sendeleistung sehr stark reduzieren (-40dbm). Damit ist die Sendereichweite ebenfalls ziemlich reduziert (ca. 2 m).

Die Ansteuerung des Moduls ist sehr unkompliziert (wenn man es denn mal richtig verkabelt hat) und Connect/Reconnect arbeiten recht stabil. Das Ganze ging jetzt wirklich fix und die Adafruit-Leute liefern hier (so weit ich das Teil eben nutze) wirklich gute Arbeit ab.

Ich glaube, ich würde mich trauen das Modul in meinen Sender einzubauen.

VG Bernd
Folgende Benutzer bedankten sich: Eckehard

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • Sepp62
  • Autor
  • Offline
  • Elite Mitglied
  • Elite Mitglied
  • Beiträge: 307
  • Thanks: 154

Re: Neues Beispiel für "Adafruit BLE UART friend"

05 Dez. 2017 20:52
#
Damit hier nicht immer nur Text entsteht, mal ein Bild von meinem Testaufbau.

Links der ESP32 und rechts der Teensy mit dem Bluefruit-Modul. Das in der Mitte gehört nicht dazu. Das Schöne an diesen Wireless-Experimenten ist, dass man kaum löten muss :-)
Folgende Benutzer bedankten sich: Eckehard

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Ladezeit der Seite: 0.564 Sekunden
Powered by Kunena Forum