Helpdesk

Ich habe folgendes Szenario, bzw. möchte ich folgende Funktionalität erreichen. Dazu habe ich bereits ein RPi, ein StromPi3 und ein BatterieHAT, alles über ein Steckernetzteil versorgt. Jetzt würde ich gerne den Standby-Stromverbrauch reduzieren, aber gleichzeitig beim Ziehen des Steckernetzteils aus der Steckdose (oder in Zukunft beim Abschalten der Stromversorgung zum Steckernetzteil) den RPi sanft herunterfahren. Beim Einschalten des Steckernetzteils soll der RPi wieder starten. Also:

  1. Spannung zum Strompi3 wird eingeschaltet: RPi bootet

  2. Spannung zum Strompi3 wird unterbrochen: RPi wird heruntergefahren und wird strom/spannungslos

  3. Spannung zum Strompi3 wird wieder eingeschaltet: RPi bootet wieder


Könnten Sie mir bitte Tips zur Konfiguration geben, damit ich diese Funktionalität erreichen kann. Danke.

Hans

01.07.20 22:39

Guten Tag Hans,
mit folgenden Einstellungen verhält sich der StromPi 3 wie in Ihrer Beschreibung gewünscht. Zusätzlich muss noch gemäß "9.4 Automatisches Ausführen von Skripten" (S. 33 in unserer aktuellen Anleitung) das serialShutdown.py Script automatisch beim Boot im Hintergrund gestartet werden.
Mit dieser Konfiguration fährt der StromPi 3 nach dem Trennen der mUSB Stromversorgung den Raspberry Pi herunter. 20 Sekunden nach dem Trennen der mUSB Versorgung schaltet der Strom Pi 3 dann den Strom ab. Wird jetzt die mUSB Versorgung wiederhergestellt, startet der RaspberryPi wieder.

Mit freundlichen Grüßen
Nils (Joy-IT)

Nils

03.07.20 13:09

Danke, Nils. Damit funktioniert es. (Vielleicht kann man solche Szenarien in die Anleitung aufnehmen?)
Ich habe noch ein143752/2019e Frage dazu: Ist es möglich, den StromPi3 im seriellen Modus zu belassen, aber trotzdem bei Trennen von mUSB den Pin 21 aktivieren? Sozusagen ein Hybrid zwischen Serial and Serialless oder das Beste aus beiden Welten?

Hans

03.07.20 14:29

Guten Tag Hans,
soll geht es darum den Pin zu steuern um das Signal für weitere Geräte zu verarbeiten? Dann könnte man den Pin vom Raspberry Pi steuern lassen. Dazu wäre nur eine kleine Änderung im Script nötig. Wenn Sie allerdings möchten, dass der Mikrocontroller des StromPis diesen Pin kontrolliert wird es schwieriger, da die Firmware angepasst werden müsste.
Mit freundlichen Grüßen
Nils (Joy-IT)

Nils

06.07.20 13:45

Um weitere Geräte über einen bevorstehenden Shutdown zu informieren, kann das verwendete Shutdown-Skript natürlich einen anderen Pin aktivieren.
Meine Idee war eher, dass der StromPi3 noch über die serielle Schnittstelle erreichbar bleibt, obwohl er den Ausfall der primären Spannungsquelle an einen Pin kommuniziert. Wenn ich mich richtig erinnere, habe ich gelesen, dass das Skript für die serielle Schnittstelle die Ankündigung manchmal "verlieren" kann...
Ich fände folgendes Verhalten ideal: Der StromPi kündigt den Spannungsverlust immer am Pin an, egal, ob er in serial- oder serialless Modus betrieben wird. Mit Hilfe einer Jumpers kann dieser Ausgang dann bei Bedarf auf den RPi Pin 21 gelegt werden. Wäre das (mit einer Modifikation der Firmware) machbar?

Hans

06.07.20 16:32

Guten Tag Hans,
das ist mit einer kleinen Änderung im Code möglich:

Ich habe die Zeile 805 kopiert und in die seriallesMode Schleife zusätzlich eingefügt (gelbe Markierung). Jetzt werden die Schlüsselzeilen auch im serialless Modus gesendet. Die modifizierte Firmware können Sie sich hier herunterladen.
Mit freundlichen Grüßen
Nils (Joy-IT)

Nils

10.07.20 13:04

Oh, danke!
Habe ich das so richtig verstanden: Mit dieser Firmware gibt es folgende Möglichkeiten:

  1. Serial Mode + Jumper "Serialless" OFF: Klassischer serial mode

  2. Serial Mode + Jumper "Serialless" ON: Serial mode und Meldung auf GPIO 21

  3. Serialless Mode + Jumper "Serialless" OFF: Serialless mode und keine Meldung auf GPIO 21 (dafür muss noch eine Anwendung gefunden werden! ;-) )

  4. Serialless Mode + Jumper "Serialless" ON: Klassischer serial mode


Umschalten zwischen "Serial Mode" und "Serialless Mode" geschieht nur mit Hilfe der Python Skripte, der Jumper hat nur die Funktion, das Ausgangssignal auf GPIO 21 zu legen (und beeinflusst nicht den serial oder serialless Modus)?
Stimmt das so?

Hans

11.07.20 20:20

Guten Tag Hans,
der Jumper für den serialless Mode stellt nur eine Verbindung zwischen dem Microcontroller des StromPi 3 und  dem GPIO 21 des Raspberry Pis her. Dieser Jumper hat sonst keine Auswirkungen auf die Konfiguration. Sie könnten anstatt dieses Jumpers natürlich auch ein Kabel auf den mittleren Pin stecken und so an beliebiger Stelle weiterverarbeiten.
In der Firmware wurde nur der serialless Mode so verändert, dass auch im serialless Mode die Meldungen über die serielle Schnittstelle gesendet werden.
Also wie folgt:
serialless disabled: unveränderter serial Modus mit Kommunikation über die serielle Schnittstelle
serialless enabled: Status über GPIO und zusätzlich die Ausgabe der Meldungen über die serielle Schnittstelle
Der Standard serialless Modus ist in dem Fall nicht mehr verfügbar.
Mit freundlichen Grüßen
Nils (Joy-IT)

Nils

14.07.20 14:54

Danke, dann scheint es, dass ich es richtig verstanden habe (ich finde, die Anleitung ist da nicht so genau, wie ich es mir gewünscht hätte).

Eine Anmerkung zur Änderung sei mir noch erlaubt: Wäre folgende Definition der Funktion "ShutdownRPi" nicht die, die der Beschreibung eher entspräche? (Aber vielleicht verstehe ich auch den kleinen Code-Schnipsel nicht richtig...):


void ShutdownRPi(void)
{
Config_Reset_Pin_Output();
HAL_GPIO_WritePin(RESET_Rasp_GPIO_Port, RESET_Rasp_Pin, GPIO_PIN_RESET);
serialLess_communication_on_flag = 1;
if (!serialLessMode)
{
HAL_UART_Transmit(&huart1, (uint8_t *) shutdownMessage, sizeof(shutdownMessage), sizeof(shutdownMessage));
}
}

Hans

15.07.20 14:51

Hallo Hans,
für Ihren Anwendungsfall können Sie das so machen. So wird, wenn die Funktion ShutdownRPI ausgeführt wird, das Signal immer über den Resetpin gesendet und nur, wenn Sie nicht im Seriellessmodus sind, zusätzlich über die serielle Schnittstelle.
So haben Sie die von Ihnen gewünschte Option, egal ob Sie im Seriallessmodus sind oder nicht.
Mit freundlichen Grüßen
Tim (Joy-it)

Tim

17.07.20 11:31