Arduino Library für Jeti EX Eigenbau-Telemetrie
- ThLehmann
-
- Offline
- Platinum Member
-
- Posts: 390
- Thank you received: 149
TPL_KUNENA_MESSAGE_REPLIED_NEW Arduino Library für Jeti EX Eigenbau-Telemetrie
08 Dec 2017 17:44 - 08 Dec 2017 17:45
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 ?
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
Gruß, Thomas
Last edit: 08 Dec 2017 17:45 by ThLehmann.
Please Log in or Create an account to join the conversation.
- Sepp62
-
Topic Author
- Offline
- Elite Member
-
- Posts: 305
- Thank you received: 154
TPL_KUNENA_MESSAGE_REPLIED_NEW Arduino Library für Jeti EX Eigenbau-Telemetrie
08 Dec 2017 18:10
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
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
Please Log in or Create an account to join the conversation.
- ThLehmann
-
- Offline
- Platinum Member
-
- Posts: 390
- Thank you received: 149
TPL_KUNENA_MESSAGE_REPLIED_NEW Arduino Library für Jeti EX Eigenbau-Telemetrie
08 Dec 2017 18:22
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++;
}
}
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
Gruß, Thomas
Please Log in or Create an account to join the conversation.
- Sepp62
-
Topic Author
- Offline
- Elite Member
-
- Posts: 305
- Thank you received: 154
TPL_KUNENA_MESSAGE_REPLIED_NEW Arduino Library für Jeti EX Eigenbau-Telemetrie
08 Dec 2017 18:31
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.
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.
Please Log in or Create an account to join the conversation.
- Micha
-
- Offline
- Premium Member
-
- Posts: 130
- Thank you received: 3
TPL_KUNENA_MESSAGE_REPLIED_NEW Arduino Library für Jeti EX Eigenbau-Telemetrie
27 Feb 2018 10:19
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
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
Please Log in or Create an account to join the conversation.
- Sepp62
-
Topic Author
- Offline
- Elite Member
-
- Posts: 305
- Thank you received: 154
TPL_KUNENA_MESSAGE_REPLIED_NEW Arduino Library für Jeti EX Eigenbau-Telemetrie
27 Feb 2018 10:28
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
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
Please Log in or Create an account to join the conversation.
Time to create page: 0.372 seconds