n8n ist eine in Deutschland entwickelte Automatisierungsplattform. Ich nutze sie, um ein konkretes Problem zu lösen: Folding@home soll nur dann laufen, wenn die Photovoltaikanlage genügend Strom liefert. Wird ein Schwellenwert der Stromproduktion unterschritten, soll Folding@home gnädig (gracefully) beendet werden, wobei das aktuelle Arbeitspaket (work unit) noch abgearbeitet werden soll. Da es hierfür kein aktuelles Home-Assistant Plugin gibt, muss ich das manuell machen.

Dafür ist es notwendig, dass n8n Flanken erkennt, also den Umsprung eines Werts. In n8n eingebaut sind einfache Vergleiche wie der, ob die aktuelle Einspeiseleistung – die ich über Home-Assistant beziehe – größer als der Schwellenwert -250 ist. Wenn ja, fahre mit dem Ja-Zweig fort.

Damit bekäme ich immer eine Push Notification, wenn der Schwellenwert überschritten ist. Bei halbstündlicher Durchführung also mehr als 16 bis 24 mal am Tag. Ich möchte eine Lösung, bei der ich nur eine Push Notification bekomme, wenn die Leistung den Schwellenwert überschreitet UND der Schwellenwert vorher nicht überschritten war; eine Flankenerkennung in n8n.
Ich muss den vorletzten Wert speichern, um ihn mit dem letzten Wert vergleichen zu können. Hierzu verwende ich postgresql. In der Tabelle state wird last_value in der Zeile auf den vorletzten Wert gesetzt, deren Nummer (ID) 1 ist.

Im Falle, dass der Schwellenwert überschritten worden ist, muss ich nun den vorletzten Wert aus der Postgresql-Datenbank lesen…

… und sicherstellen, dass dieser vorletzte Wert kleiner als (oder gleich) der selbe Schwellenwert ist.

während er davor unter dem Schwellenwert war
Wenn eine Flanke erkannt worden ist, bekomme ich über Telegram eine push Notification.

Voila. Eine Möglichkeit eine Flankenerkennung in n8n zu implementieren.
