Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:

THEMA:

Arduino Library für Jeti EX Eigenbau-Telemetrie 08 Dez 2017 18:44 #355

  • ThLehmann
  • ThLehmanns Avatar
  • Offline
  • Platinum Boarder
  • Platinum Boarder
  • Beiträge: 390
  • Dank erhalten: 148
Hallo Bernd,

mir ist es jetzt schon mehrfach passiert das durch Umstellung der Sensoranzahl oder Umsortierung (Entwicklungsphase) die Sensorwerte im Sender neu zugeordnet werden müssen. Leider folgt daraus auch eine neue Sortierung der Anzeige, alles sehr umständlich. Um dies künftig zu verhindern habe ich mir gedacht das die SensorId (heute 1-31) einfach Gruppenweise anordnen zu können.
Mal exemplarisch:
0x10 Drehzahl
0x11 max Drehzahl
0x12 gesamt Anzahl Umdrehungen

0x20 Restvolumen
0x21 Flow
...

Somit wäre die Änderung einer ID völlig ohne Rückwirkungen auf anderen Sensor ID's.
Ist meine Idee realistisch oder spricht etwas dagegen, was meinst Du ?
immer schön vorsichtig landen
Gruß, Thomas

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Letzte Änderung: von ThLehmann.

Arduino Library für Jeti EX Eigenbau-Telemetrie 08 Dez 2017 19:10 #356

  • Sepp62
  • Sepp62s Avatar Autor
  • Offline
  • Gold Boarder
  • Gold Boarder
  • Beiträge: 289
  • Dank erhalten: 134
Hallo Thomas,

das sollte einfach so funktionieren. Ids müssen nicht fortlaufend sein. Du legst sie in der Sensordefinition fest, wie es Dir gefällt.

VG Bernd

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Arduino Library für Jeti EX Eigenbau-Telemetrie 08 Dez 2017 19:22 #357

  • ThLehmann
  • ThLehmanns Avatar
  • Offline
  • Platinum Boarder
  • Platinum Boarder
  • Beiträge: 390
  • Dank erhalten: 148
Hmm, dann habe ich Dein Konzept wohl doch nicht verstanden ... sah es bisher so das die SensorId NUR 1-32 sein darf, und die Reihenfolge in der Tabelle (progmem) durch SensorMapper referenziert wird.

void JetiExProtocol::InitSensorMapper( JETISENSOR_CONST * pSensorArray )
{
// map sensor id to index to give quick access by sensor ID
int i;
m_nSensors = 0;
m_pSensorsConst = pSensorArray;
memset( m_sensorMapper, 0, sizeof( m_sensorMapper ) );
for( i = 0; i < MAX_SENSORS; i++ )
{
// get sensor id and check for end of array
JetiSensorConst sensorConst;
memcpy_P( &sensorConst, &m_pSensorsConst, sizeof(sensorConst) );
if( sensorConst.id == 0 )
break;

hier sehe ich eine Zuordnung von SensorId zum Eintrag in der Tabelle
if( sensorConst.id < sizeof( m_sensorMapper ) )
m_sensorMapper[ sensorConst.id ] = i;
m_nSensors++;
}
}
immer schön vorsichtig landen
Gruß, Thomas

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Arduino Library für Jeti EX Eigenbau-Telemetrie 08 Dez 2017 19:31 #358

  • Sepp62
  • Sepp62s Avatar Autor
  • Offline
  • Gold Boarder
  • Gold Boarder
  • Beiträge: 289
  • Dank erhalten: 134
Ich kann mich natürlich täuschen, aber es ist so gedacht, dass beim Init des Sensormappings durch das Sensor-Array marschiert wird und in der Mapping-Tabelle für jede ID der zugehörige Index auf das Array hinterlegt wird. Damit kann man über die ID schnell ins Array greifen. Wäre die ID= Index hätte ich mir den Zirkus sparen können. Natürlich kann da irgendwo ein Fehler drin sein, aber probier es halt einfach mal aus.

Natürlich entspricht der höchste ID-Wert dem Wert von MAX_SENSORS. Aber wenn Du Speicher hast, kannst Du den Wert ja erhöhen. Natürlich kann auch da irgendwo ein Fehler sein, also würde ich den Wert erst mal so lassen und probieren, ob es prinzipiell geht.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Arduino Library für Jeti EX Eigenbau-Telemetrie 27 Feb 2018 11:19 #359

  • Micha
  • Michas Avatar
  • Offline
  • Expert Boarder
  • Expert Boarder
  • Beiträge: 130
  • Dank erhalten: 3
Hallo

Ich glaube ich habe in der Library vom Bernd noch einen Bug gefunden!
Wenn man Werte zwischen -1 bis -2 angezeigt haben möchte,
werden keine Werte am Sender angezeigt! (bzw. nur Blinkende)
Habe das auch mit dem beiliegenden Beispiel ausprobiert!

jetiEx.SetSensorValue( ID_VAL11, -1 );
jetiEx.SetSensorValue( ID_VAL12, -1.5 );
jetiEx.SetSensorValue( ID_VAL13, 1 );
jetiEx.SetSensorValue( ID_VAL14, 2 );
jetiEx.SetSensorValue( ID_VAL15, -2 );
jetiEx.SetSensorValue( ID_VAL16, demoSensor.GetVal(9) );
jetiEx.SetSensorValue( ID_VAL17, demoSensor.GetVal(10) );
jetiEx.SetSensorValue( ID_VAL18, demoSensor.GetVal(11) );

hat das von euch auch schon jemand bemerkt!

Oder kann das an der Sendersoftware (4.22 mit LUA) liegen?


Gruß Micha

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Arduino Library für Jeti EX Eigenbau-Telemetrie 27 Feb 2018 11:28 #360

  • Sepp62
  • Sepp62s Avatar Autor
  • Offline
  • Gold Boarder
  • Gold Boarder
  • Beiträge: 289
  • Dank erhalten: 134
Dass der Wert -1 nicht angezeigt wird, ist bekannt. Es ist ein "Designfehler" in der Library. Der Wert -1 kennzeichnet den Zustand "Es gibt keinen Messwert".

Dass die Werte zwischen -1 und -2 nicht angezeigt werden, liegt daran, dass der Messwert ein Integer sein muss und Du durch die Angabe von -1.5 einen Rundungsfehler bekommst.

Float-Werte müssen über Integer-Werte und die "Precision" (=Nachkommastellen) in der Sensor-Definition übergeben werden. Man könnte die Library hier komfortabler machen, aber dazu bräuchte der Code in der "SetValue"-Funktion Zugriff auf die Sensor-Konfigurationsdaten. Da diese aber (meist) im PROGMEM liegen, wäre das sehr inperformant.

Daher muss der Anwender selbst für die Umwandlung sorgen. Hast Du die "Precision" 1, musst Du den Messwert * 10 nehmen, bei 2 mal Hundert.

VG Bernd

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Ladezeit der Seite: 0.301 Sekunden
Powered by Kunena Forum