Modul zur Nutzung der Raspberry Pi GPIO

…wer mag kann gerne mal die neue Instanz IPS2GPIO_IRTX ausprobieren. Es sollte mit einer entsprechenden IR-LED Fernbedienungssignal im RC5- und RC5X-Code (z.B. Geräte von Philips, Marantz und Hauppauge) erzeugen.

Informationen zum RC5-Code gibt es hier.

Kann es aktuell nicht „life“ testen, daher wäre ich für Feedback dankbar.

Bei gegebener Funktionalität habe ich von Joan - dem Entwickler von PIGPIO - noch weitere Hersteller-IR-Codes vorliegen…

Joachim

Hallo,

ich habe auf einem meiner raspi ein Problem mit der AvrageLoad -> sie wird mit 98,9% angezeigt, auf des Systemebene (top) aber ist Idle eher bei 93%.

Einige Nachforschungen haben mich zu folgendem Ergebnis gebracht

Ergebnis von /proc/stat:


$ cat /proc/stat
cpu  206533642 0 20558983 4115921835 2607214 0 509538 0 0 0
cpu0 52997304 0 6498842 1023475106 759411 0 484767 0 0 0
cpu1 52116612 0 4799002 1030051292 615143 0 8493 0 0 0
cpu2 51783360 0 4696650 1030089283 580442 0 8075 0 0 0
cpu3 49636366 0 4564489 1032306154 652218 0 8203 0 0 0
intr 11770643452 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3979400020 0 0 0 0 0 6047491 1582094 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 8035321 0 0 208 0 0 0 0 0 0 0 3111507602 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6500440 4798 0 0 0 0 5308 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ctxt 25350219112
btime 1521912669
processes 8728999
procs_running 1
procs_blocked 0
softirq 1999131084 258992487 538805835 2176553 133463509 9693443 0 227854042 441354977 0 386790238

ich habe mir die Berechnungen ausgeben lassen


4115613319+2607159 => Idle=2150090806
206516081+0+20557279+0+509441+0 => NonIdle=227582801
Total=2377673607, Idle=2150090806, TotalDiff=230189960, IdleDiff=2607159, CPU_Usage=0,9886738804768

Idle sieht ja merkwürdig aus

Sicherheitshalber haben ich das mit bc nachgerechnet


4115613319+2607159
4118220478

206516081+0+20557279+0+509441+0
227582801

Und dann habe ich mit die Zahlen mal angeschaut => das ist ein Überlauf. 4115613319 ist größer als die maximale Integer von 2147483647 (siehe hier).

Dann habe ich mal die intval durch floatval ersetzt und mit einem Testscript geprüft:


<?

$LineOneArray = [ "206488908", "0", "20554736", "4115158297", "2607067", "0", "509315", "0", "0", "0" ];

echo "INTVAL
";
// Idle = idle + iowait
$Idle = intval($LineOneArray[3]) + intval($LineOneArray[4]);
echo "3=$LineOneArray[3], 4=$LineOneArray[4] => Idle=$Idle
";
// NonIdle = user+nice+system+irq+softrig+steal
$NonIdle = intval($LineOneArray[0]) + intval($LineOneArray[1]) + intval($LineOneArray[2]) + intval($LineOneArray[5]) + intval($LineOneArray[6]) + intval($LineOneArray[7]);
echo "0=$LineOneArray[0], 1=$LineOneArray[1], 2=$LineOneArray[2], 5=$LineOneArray[5], 6=$LineOneArray[6], 7=$LineOneArray[7] => NonIdle=$NonIdle
";
// Total = Idle + NonIdle
$Total = $Idle + $NonIdle;
echo "Total=$Total
";

echo "FLOATVAL
";
// Idle = idle + iowait
$Idle = floatval($LineOneArray[3]) + floatval($LineOneArray[4]);
echo "3=$LineOneArray[3], 4=$LineOneArray[4] => Idle=$Idle
";
// NonIdle = user+nice+system+irq+softrig+steal
$NonIdle = floatval($LineOneArray[0]) + floatval($LineOneArray[1]) + floatval($LineOneArray[2]) + floatval($LineOneArray[5]) + floatval($LineOneArray[6]) + floatval($LineOneArray[7]);
echo "0=$LineOneArray[0], 1=$LineOneArray[1], 2=$LineOneArray[2], 5=$LineOneArray[5], 6=$LineOneArray[6], 7=$LineOneArray[7] => NonIdle=$NonIdle
";
// Total = Idle + NonIdle
$Total = $Idle + $NonIdle;
// Differenzen berechnen
echo "Total=$Total
";

Ergebnis


INTVAL
3=4115158297, 4=2607067 => Idle=2150090714
0=206488908, 1=0, 2=20554736, 5=0, 6=509315, 7=0 => NonIdle=227552959
Total=2377643673
FLOATVAL
3=4115158297, 4=2607067 => Idle=4117765364
0=206488908, 1=0, 2=20554736, 5=0, 6=509315, 7=0 => NonIdle=227552959
Total=4345318323

das sieht besser aus.

Nun nähert sich der Wert der Realität an mit 10,4% - passt zwar nicht ganz zu den Werten von Top
%Cpu(s): 6,6 us, 1,5 sy, 0,0 ni, 91,9 id, 0,0 wa, 0,0 hi, 0,0 si, 0,0 st
aber das ist ja nicht 100% zu der gleichen Zeit (so fix kann ich auch nicht tippen).

Da ich das aber natürlich das Modul nicht zu 100% durchblicke bin ich mir nicht sicher, ob meine Interpretation richtig ist.

Wenn Du magst kann ich ein PR machen.

Gruß
demel

Hallo Demel,

Vielen Dank für Deinen Beitrag!
Bin aktuell hier sehr stark zeitlich eingeschränkt, von daher gerne der von Dir vorgeschlagen Weg![emoji6]

Joachim

PR ist erstellt

demel

Ich schließe mich da mal mit großem Interesse an, ich würde die Gigaset LE Tags auch gerne nutzen, ist es aufwändig dies in der Bluetooth Funktion zu integrieren?
FHEM Tutorial-Reihe - Part 15: Anwesenheit mit Bluetooth LE Tag ermitteln | haus-automatisierung.com hier ist das für FHEM mal beschrieben, vielleicht hilft das ja?

Gruß

Gesendet von iPhone mit Tapatalk

…im Moment möchte ich aus zeitlichen Gründen keine neuen Module anfangen, das Thema ist aber interessant - aufgeschoben heißt also nicht aufgehoben! :wink:

Joachim

Hallo zusammen,

nach der Installation des Display-Moduls habe ich gelesen „Nextion Enhanced“.

Funktioniert das tatsächlich nur mit den Enhanced Versionen oder hat jemand auch ein Basic-Display ans laufen bekommen.

Viele Grüße

Markus

Hallo Marcus,

ich habe nicht in Erinnerung das das Display jemand mit meinem Modul in Betrieb hat - von daher könnte es sein das sich da im Laufe der IPS-Versionsänderungen oder der Display-Firmware Sachverhalte geändert haben die noch keine Berücksichtigung im Modul gefunden haben.
Wenn also Fehlermeldungen auftauchen - bitte mal hier posten…

Joachim

Fehlermeldung sind keine aufgetaucht…

Wenn ich z.B. die Modul-Funktionen „Sleep“ teste, ändern sich auch die entsprechende Variable im IPS.

Leider reagiert nur mein Display nicht, kann aber vielleicht auch an falschen Befehlen oder Schreibweisen liegen.

Ich wollte nur sicher gehen, dass das Modul nicht extra für die Enhanced-Versionen geschrieben wurde.

Ich habe nur eine Basic-Version, die ist etwas abgespeckter, wird aber m. M. genau so über Serial angesprochen.

Denke dann liegt es doch an den Befehlen.

Noch was anderes… vielleicht kann mir jemand helfen…

Woran kann ich den erkennen welchen Port das Display nutzt.

in verschieden Tutorials sehe ich unterschiedliche Anlagen

/dev/ttys0
/dev/ttyUSB0
/dev/ttyAMA0

Vielleicht reagiert mein Display auch deshalb nicht :banghead:

…in meinem Modul würdest Du doch nur die RxD und TxD-Pins wählen…:confused:

Joachim

Ja, dass stimmt…

Da das Display nicht an meinem IPS-Raspberry hängt, wollte ich die Befehle in Python direkt auf dem Display-Raspberry testen, um die Fehlerquelle etwas einzugrenzen.

IPS2GPIO_RPi auf den entfernten Pi funktioniert einwandfrei.

Ich werde nachher noch ein bisschen testen, wie gesagt wollte nur sicher gehen, dass mit dem Modul auch die Basic-Display angesprochen werden können und nicht nur die Enhanced-Displays.

Hallo zusammen,

ich hab jetzt ein paar Stunden getestet, dass Display funktioniert wenn ich es zB über Python direkt ansteuere.

Über das Modul funktioniert es leider nicht.

Es kommt auch keine Fehlermeldung, das Display reagiert einfach nicht.

IPS2GPIO_RPi hingegen funktioniert einwandfrei.

Hallo zusammen,

ich habe mir ein IPS2GPIO_Input mit einen Button gebaut.

Kann man irgendwie verhindern, dass man den Button öfters hintereinander drücken kann?

Ich hätte gerne, dass man den Button nur zB alle 30 Sekunden 1x betätigen kann.

Vielen Dank und viele Grüße

Markus

Hallo zusammen,

Erstmal Danke für das tolle Modul, funktioniert auf Anhieb. Ich habe aber dennoch ein Problem und komme nicht weiter. :roll_eyes:

Ich will mehrere Räume mit Temperatursensoren ausstatten und habe dazu Busleitungen durch die Lüftungsrohre in die Räume gezogen. Diese enden alle im Keller in einem Verteiler, wo ich alle Kabel wie folgt verklemmt habe:

  • alle GND auf eine Busklemme
  • alle Data auf eine Busklemme
  • alle VDD auf eine Busklemme.

Von den Busklemmen geht es dann weiter auf 4 GPIO Ports - einer davon mit einem 4,7 kOhm Widerstand wie überall im Netz zu finden (Raspberry Pi: 1-Wire Temperatursensor DS1820). Zusätzlich ist vor jedem Sensor ein kleiner Kondensator mit angelötet, zur Stabilisierung.

Bis 2 Sensoren klappt alles einwandfrei, ab dem 3. Sensor steigt mir der Bus aus.

Der Raspi hat sonst nichts angeschlossen, die USB Geräte hängen an einem aktiven Hub. Netzteil ist original Raspberry.

Ich weiß nicht mehr weiter, und hoffe auf eure Hilfe.

Danke

Hallo Peter,

wie lang sind denn die Leitungen? vielleicht ist der Widerstand 4,7 K schon zu groß. Bin bei mir teilweise auf 2,2 K oder 1,6 K zurückgegangen. Was hast Du als VDD gewählt?

Grüße, Gerhard

Hallo Gerhard,

In Summe 80-90 Meter.
VDD sind 5 Volt, die Datenleitung bekommt wie im Bild die 3,3 V mit dem Kondensator.

Hallo Peter,

ich nutze bei mir auch den 5-V-Pin für VDD. Die Länge ist bei mir deutlich niedriger. Es sind aber auch nur alte Telefonleitungen. Auf den Kondensator habe ich verzichtet. Vielleicht spielst Du mal mit dem Widerstand.

Grüße, Gerhard

Hallo Demel,

würde gerne noch mal auf Deine Veränderung im RPi-Modul zurückkommen…

Bei mir zeigt es seit der Umstellung fast konstant 10,7%, manchmal etwas sehr nah daran an.
Ich vermute daher, da ist etwas nicht korrekt…

Magst Du das bitte noch mal prüfen?
Gibt es ähnliche Erfahrungen bei anderen Nutzern?

Joachim

bei mir liegt CPU-Average auf beiden Raspi zwischen 3 und 8%. Ich habe das gerade mal punktuell mit dem Kommando top verglichen und das passt in etwa zu den Werten. ‚in etwa‘, weil die mEssungen ja nicht zum identischen Zeitpunkt erfolgen und die CPU-Auslastung naturgemäß stark schwankt.

Schau doch mal damit selber nach, wie dort die Werte für ‚usr‘ + ‚sys‘ liegen.

demel

Ich nochmal, habe meine Sensoren inzwischen am Laufen. Hatte einen verpolt :banghead:

Habe hier noch einen BME680 Luftgütesensor, der auch an die GPIOs soll. Geht das parallel zum 1-Wire-Protokoll, das teilweise die gleichen PINs benutzt?