Push-Benachrichtigungen auf dem Smartphone anzeigen lassen

By | März 9, 2020

In diesem Beitrag wird gezeigt, wie ihr ganz einfach mithilfe der HoneyPi-Android-App und ThingSpeak Push-Benachrichtigungen mit eurem Smartphone empfangen könnt. Ihr könnt selbst konfigurieren, für welche ThingSpeak-Channels und -Fields sowie unter welchen Bedingungen eine Benachrichtigung auf euer Smartphone gesendet werden soll. Dadurch könnt ihr schnell reagieren, wenn ihr beispielsweise eine Benachrichtigung bekommt, dass das Gewicht des Bienenstocks größer oder kleiner bestimmter Werte ist.

Hinweis: Um Push-Benachrichtigungen mit der HoneyPi-Android-App zu empfangen, benötigt ihr mindestens die App-Version 1.1.

Push-Benachrichtigungen einrichten

Damit du nun Push-Benachrichtigungen auf dein Smartphone bekommst, sind folgende Schritte notwendig:

Schritt 1: Melde dich mit deinem ThingSpeak-Konto an: https://thingspeak.com/login

Schritt 2: Klicke auf Apps > ThingHTTP > New ThingHTTP. Folgende Felder sollten konfiguriert werden:

Neuen
Neuen „ThingHTTP“ erstellen
  • Name: Beliebigen Namen eingeben
  • URL: https://honey-pi.de/backend/push.php
  • Method: POST
  • Content Type: application/x-www-form-urlencoded
  • Body: Der Request-Body, der aus nachfolgenden drei Teilen bestehen muss. Die drei Parameterteile werden wie bei URLs üblich mit &-Zeichen verknüpft:
    1. channel: Channel-ID, für die die Benachrichtigung gesendet werden soll. Hier kann auch die Variable %channel_id% verwendet werden, die automatisch die ID des Channels einfügt, für den dieser ThingHTTP-Eintrag verwendet wird. Weitere Informationen zu den Variablen siehe hier.
    2. title: Titel eurer Push-Benachrichtigung auf dem Smartphone. Falls nur „title=“ angegeben wird, also einen leeren Titel, dann wird „HoneyPi“ als Titel verwendet.
    3. body: Text eurer Push-Benachrichtigung auf dem Smartphone, z. B. „channel=%%channel_id%%&title=Temperatur niedrig&body=Im Bienenstock mit Channel-ID %%channel_id%% ist es zu kalt mit %%trigger%% Grad Celsius. Zeitpunkt: %%datetime%%“.
      • Hier wurden wieder Variablen verwendet. Beispielsweise kann dadurch der auslösende Messwert (%%trigger%%), die Channel-ID (%%channel_id%%) oder der Zeitpunkt (%%datetime%%) dynamisch mitgegeben werden.

Zum Schluss noch den ThingHTTP-Eintrag über den „Save ThingHTTP“ Button speichern.

Schritt 3: Klicke auf Apps > React> New React. Folgende Felder sollten konfiguriert werden:

  • React Name: Beliebigen Namen eingeben
  • Condition Type: Numeric
  • Test Frequency: Die Messwerte beim Schreiben oder alle 10, 30 oder 60 Minuten prüfen. Hier lieber alle 10, 30 oder 60 Minuten wählen, da bei einem Messintervall von beispielsweise einer Minute auch die Push-Benachrichtigungen minütlich auf dem Smartphone erscheinen.
  • Condition:
    • If channel: Gewünschten Channel auswählen, für dessen Field die Benachrichtigung gesendet werden soll
    • field: ThingSpeak-Field auswählen, für das die Benachrichtigung gesendet werden soll
    • Auswahl der Bedingung, z. B. is less than or equal to (dt. ist kleiner oder gleich als)
    • Messwert, ab dem die Bedingung greifen soll
  • Action: ThingHTTP auswählen
    • then perform ThingHTTP: In Schritt 2 erstellten ThingHTTP auswählen
  • Options: In der Regel kann hier „Run action each time condition is met“ gewählt werden, wenn die Benachrichtigung jedes Mal gesendet werden soll, wenn der Messwert der Bedingung entspricht.

Zum Schluss noch den React über den „Save React“ Button speichern.

Neuen
Neuen „React“ erstellen

Schritt 4: Benachrichtigungen in der HoneyPi-Android-App aktivieren: Klicke einfach auf das Benachrichtigungen-Icon und aktiviere/deaktiviere auf der darauffolgenden Seite die Channels, für die Benachrichtigungen empfangen werden sollen.

Benachrichtigungen öffnen
Benachrichtigungen öffnen
Benachrichtigungen konfigurieren
Benachrichtigungen konfigurieren

Wenn alles richtig konfiguriert wurde, sollten die Push-Benachrichtigungen auf deinem Smartphone wie auf nachfolgendem Bild aussehen:

Benachrichtigung auf dem Smartphone
Benachrichtigung auf dem Smartphone

ThingHTTP wiederverwenden

Wie oben beschrieben müsst ihr für eine Benachrichtigung auf euer Smartphone ein ThingHTTP und ein React anlegen. Ein React müsst ihr für jede gewünschte Benachrichtigung (= ThingSpeak-Field) anlegen, da dieses dort ausgewählt werden muss.

Ein ThingHTTP könnt ihr jedoch für beliebig viele Fields wiederverwenden, da das gleiche ThingHTTP in beliebig vielen Reacts ausgewählt werden kann. So könnt ihr beispielsweise ein ThingHTTP für zu niedrige Temperatur und ein ThingHTTP für zu hohe Temperatur anlegen. Diese zwei ThingHTTPs könnt ihr nun in mehreren Channels für eine Temperaturüberwachung verwenden.

32 thoughts on “Push-Benachrichtigungen auf dem Smartphone anzeigen lassen

  1. Andre

    Hallo zusammen,
    Meine 6 HoneyPi Waagen funktionieren seit 3 Jahren tadellos – jedoch: Ich habe es immer noch nicht geschafft, den Schwarmalarm einzurichten – trotz Hilfestellungen von Melissa. Wäre hier in der comunity jemand bereit, mir bei der Einrichtung zu helfen?

    Reply
    1. Melissa Post author

      Hier noch ein paar Dinge, die du nochmal prüfen könntest:
      – Die Benachrichtigungen sollten für die HoneyPi App in den Android-Systemeinstellungen zugelassen sein
      – In der HoneyPi App muss für den jeweiligen Channel die Benachrichtigung aktiviert sein
      – Überprüfe nochmal, dass dein ThingHTTP Eintrag wie in der Anleitung ausgefüllt ist:
      – URL: https://honey-pi.de/backend/push.php
      – Method: POST
      – Content Type: application/x-www-form-urlencoded
      – Body: Muss Parameter channel, title und body im Text haben, die mit &-Zeichen aneinander gereiht sind z.B. channel=%%channel_id%%&title=Temperatur niedrig&body=Im Bienenstock ist es zu kalt
      – Überprüfe deinen React Eintrag, ob der richtige Channel, Field und ThingHTTP ausgewählt ist und ob die Condition stimmt z.B. Messwert unterschreitet einen bestimmten Schwellenwert. Außerdem ist wichtig, ob die Action einmalig oder bei jedem neuen Wert ausgeführt werden soll, was bei den Options deines Reacts eingestellt werden kann.
      – Prüfe, ob auch Messwerte in das angegebene Field des Channels gesendet werden, die die Condition auslösen

      Reply
      1. Andre

        Danke Melissa, deine Hilfe greift schon so weit. Aber meine Probleme sind ganz am Anfang in thingspeak. Hierbei sollte ich von einem comunity Mitglied Hilfestellung haben. Ich finde keine grundlegenden Hinweise, wie man beginnt.
        lg Andre

        Reply
  2. Jochen

    Nachdem ich jetzt den HoneyPi stabil im Testbetrieb am laufen habe, möchte ich auch die Push-Benachrichtigungen ausprobieren. Allerdings kommt auf dem Smartphone nichts an. Berechtigungen in der App sind freigegeben, App ist die aktuellste Version und Pro ist am laufen.

    Ist die Anleitung oben noch aktuell, oder funktioniert das inzwischen nicht mehr? Die IFTTT Variante funktioniert übrigens auch nicht mehr und sollte evtl. entfernt werden. Scheinbar hat IFTTT sehr viel geändert.

    Reply
    1. Melissa Post author

      Hallo Jochen, hast du auch in den Systemeinstellungen bei der HoneyPi App die Berechtigung zur Benachrichtigung aktiviert? Das muss seit Android 13 zusätzlich gemacht werden. Diese findest du in den Einstellungen deines Smartphones > Benachrichtigungen und Statusleiste > HoneyPi App > aktivieren. Die Bezeichnungen können evtl. auf deinem Handy abweichen.

      Reply
      1. Jochen

        Ja, die Benachrichtigungen sind auch in den Android Systemeinstellungen für die HoneyPi App freigegeben.

        Reply
      2. Jochen

        Gerade nochmals alles nachkontrolliert. Jede erdenkliche Benachrichtung für die HoneyPi App in den Systemeinstellungen ist freigegeben.

        Reply
        1. Melissa Post author

          Da die Benachrichtigung gerade in meinem Test funktioniert hat, kann ich nur noch vorschlagen, dass du auf ThingSpeak dein React und ThingHTTP Eintrag nochmal prüfst. Beim ThingHTTP ist vor allem als URL https://honey-pi.de/backend/push.php und der Body wichtig. Hier muss channel und body gesetzt sein. Es dürfen keine Leerzeichen zwischen den &-Zeichen sein. Versuche es am besten Mal zum Testen mit folgendem Body:

          channel=%%channel_id%%&title=Test&body=Test Benachrichtigung für Channel %%channel_id%%

          Reply
          1. Jochen

            Ich habe es jetzt nochmals alles kontrolliert. Alles richtig eingetragen. Jetzt habe ich den React und ThingHTTP nochmals neu angelegt und jetzt scheint es zu funktionieren.

            Vielen Dank

  3. Patrick

    Hallo,
    ich habe probleme mit dem Schwarm Alarm, der hat jetzt 2 Jahre supper funktioniert. Eigentlich sollte man doch manuel den ThingHTTP im browser auslösen können? Wenn ich das mache kommt die meldung
    Fehler in den Parametern. Bitte überprüfe die Parameter..
    Wo könnte hier das Problem sein?

    Gruess Patrick

    Reply
  4. Andre Morer

    Vielen Dank für eure Mühe! Ich verstehe so Einiges nicht an dem Code, darf ich hier kurz nachfragen?

    % ///////////////////////// Code ///////////////////////////////
    %Schwarmalarm%
    readChannelID = Hier kommt meine Channel ID rein, ist mir klar;
    readAPIKey = ‚auch klar‘;
    readField = auch klar;
    writeChannelID = was kommt hier rein??;
    writeField = das verstehe ich auch nicht;
    writeAPIKey = ‚auch klar – ist wie „readAPIKey“ gegeben‘;

    Reply
    1. Melissa Post author

      Hi Andre,
      writeChannelID, writeField und writeAPIKey sind die Werte von einem weiteren Channel, in den die Ergebnisse der Berechnung mit der Funktion „thingSpeakWrite“ geschrieben werden. Du findest diese IDs/Keys ebenfalls in den Channel Einstellungen des ThingSpeak Channels.

      Reply
      1. Andre

        Hallo Melissa, vielen Dank für den Hinweis, muss ich diesen neuen channel selbst erstellen? Ich finde dazu nirgendwo einen Hinweis.
        Lg Andre

        Reply
        1. Melissa Post author

          Hi Andre, ich vermute, du beziehst dich auf den Kommentar von Robert? Ich habe seinen Code leider nicht getestet, aber du musst den Channel auf jeden Fall anlegen. In seinem Code wird eine if-else-Bedingung (L+SchwarmAlarmGewicht<=ZL) gemacht und entweder 0 oder 1 in diesen neuen Channel geschrieben. Im ThingSpeak React kannst du dann den neuen Channel hinterlegen und bei 0 bzw. 1 die Benachrichtigung senden. Die Bedingung, bei der ein Schwarmalarm gesendet werden soll, kannst du ja dann nach Bedarf anpassen.

          Reply
          1. Andre

            Hallo Melissa!
            Vielen Dank für deine Mühe! Langsam dämmerts, aber ich möchte doch noch nachfragen, wo es fundierte Anlaufstellen/ Hilfen/ Anleitungen/ Tutorials zu Thingspeak gibt. Diese Materie ist schwer zu finden. Neuen Channel anlegen ist ja klar, React habe ich unter Apps gefunden, aber wie das alles geht und funktioniert, …
            Was mich wundert: Schwarmalarm ist sehr wichtig und man findet recht wenig Reaktionen der user.
            lg Andre

          2. Melissa Post author

            Hallo Andre, zum Thema Schwarmalarm haben wir nur die Anleitung aus diesem Beitrag. Du kannst dir eine Benachrichtigung aufs Handy senden lassen, wenn der Messwert den angegebenen Schwellenwert unter-oder überschreitet. Der Code aus dem Kommentaren stammt nicht von mir und ich kann deshalb nicht beurteilen, ob er korrekt ist und funktioniert.
            Für allgemeine Infos zu ThingSpeak, wirst du evtl. in deren Help Center fündig: https://de.mathworks.com/help/thingspeak/getting-started-with-thingspeak.html

            Bei Fragen, kannst du dich auch ans ThingSpeak Forum wenden: https://de.mathworks.com/matlabcentral/topics/thingspeak.html

  5. Jan Eicker

    Liebe Melissa, lieber Robert,

    ich habe mich nun auch mal an den Zeit- und gewichtsabhängigen Schwarmalarm gewagt. Ich habe dabei sowohl Roberts Code vom 11.Mai 2021 mit fixen Werten (x kg Differenz zwischen der aktuellen und der Vorletzten Messung), als auch den mit prozentualer Gewichtung (-20% Gewicht in den letzten 20 Minuten) erstellt und werde mal schauen, wie die sich verhalten. An dieser Stelle schonmal großen Dank!
    Warum gibt es den Hinweis, dass man nicht weniger als 20 Minuten als zu untersuchende Zeitspanne eingeben soll. Hat das technische Gründe? Weil für einen Schwarmalarm hätte ich gerne einen möglichst kleinen Bereich, eher so 1% Gewichtsverlust in der letzten 1 Minute.
    In dem Zusammenhang auch die Frage nach dem Sinn des TimeControll. In anderen Triggerwarnungen (Temperatur/Gewicht etc.) hatte ich bisher keine TimeControll. Der soll mich halt jedes mal warnen, wenn bestimmte Werte erreicht werden, hier die Values 1 oder 0.
    Jetzt, wo ich beide Varianten laufen habe, und es so langsam verstehe merke ich auch, dass wohl eine Mischung aus beiden Ansätze geschickt wäre. Fester Wert für den Verlust (z.B. 300 Gramm) in der letzten Minute. so habe ich unabhängig von der Anzahl an Honigräumen o.ä. immer das tatsächliche Gewicht eines Schwarms als Trigger und statt „NumLastMeasuredValues = 2“ lieber einen Zeitraum (auch auf die Gefahr hin, dass sich in dieser Zeit die Werte nicht geändert hatten – ich glaube das ist unproblematisch).

    Reply
    1. Manfred

      Hallo Jan,

      bin gerade über dein Schwarmalarm Posting gestolpert. Hast du bereits Erfahrungen aus deinen Ideen? Hast du mitunter einen Code zum testen?

      Danke!

      lg
      Manfred

      Reply
  6. Robert

    Schwarmalarm aus Vergleich akt. Wert zum vorletzten Messwert .
    Mit der Hilfestellung von Melissa habe ich nun den Alarm hingekriegt.
    Vielen Dank
    Gruss
    Robert

    % ///////////////////////// Code ///////////////////////////////
    %Schwarmalarm%
    readChannelID = 1097XXX;
    readAPIKey = ‚7OFQP64TGB09WXXX‘;
    readField = 4;
    writeChannelID = 1376XXX;
    writeField = 8;
    writeAPIKey = ‚7YFC6X1XNV704XXX‘;
    NumLastMeasuredValues = 2;
    SchwarmAlarmGewicht = 1.5
    % Letzte Messung = L
    % 2.letzte Messung = ZL
    % Schwarmgewicht = (ZL – L)
    %% Read Data %%
    data = thingSpeakRead(readChannelID,’Fields‘,readField,’NumPoints‘,NumLastMeasuredValues);
    L = data(2)
    ZL = data (1)
    Schwarmgewicht = ZL -L
    if L+SchwarmAlarmGewicht<=ZL
    thingSpeakWrite(writeChannelID,'Fields',writeField,'Values',[1],'WriteKey',writeAPIKey);
    else
    thingSpeakWrite(writeChannelID,'Fields',writeField,'Values',[0],'WriteKey',writeAPIKey);
    end

    Reply
    1. Patrick

      Hallo Robert
      ich habe deinen code kopiert und all meine daten eingetragen.
      ich kriege aber immer diese fehlermeldung
      SchwarmAlarmGewicht =

      1.5000

      Error using Volk 9
      ‚Fields‘ value must be a scalar or a 1-by-n numeric vector of positive integers with values between 1 and 8.

      habe bei readField = 6; und writeField = 6; diese werte geschrieben.

      worin könnte der fehler bestehen?

      gruess patrick

      Reply
  7. Alfred

    Hallo Javan,
    Danke für deine rasche Antwort und deinen link.
    Ich werde mir das anschauen bzw. versuchen es umzusetzen, bin leider im dieser Art der Programmierung nicht so zu Hause.
    Übrigens ich find euer honeypi Projekt super !

    Schöne Grüße
    Alfred

    Reply
  8. Alfred

    Hallo Melissa,
    Ist es möglich einen Schwarmalarm nicht mit einem fixen Grenzwert, sondern mit einen Vergleich akt. Wert zum vorletzten Messwert auszuführen ?
    Dies würde meiner Meinung nach ein ständiges Anpassen des Grenzwertes ersparen.

    LG
    Alfred

    Reply
      1. Robert

        Hallo Javan
        ich habe nach dieser Anleitung https://docs.google.com/document/d/1NUo_w4SJPpncgfs40p4jhjbCXaTYxnRLSRjjhcUEFPA/edit?usp=sharing
        versucht einen Schwarmalarm hinzukriegen. Channel ID,und Read API Key und Write API Key sind ok.
        Aber es erscheint immer dieser Fehler:
        „Index exceeds the number of array elements (1).
        Error in Gewicht Schwarmalarm Mattlischwand (line 11)
        if data(1)*0.8>data(3)“
        Ich wäre froh um Hilfe
        Vielen Dank und freundliche Grüsse
        Robert

        Reply
        1. Javan

          Hallo Robert,

          die Fehlermeldung sagt aus, dass das field3, welches zu in data(3) aufrufst nicht existiert.
          Die Zeile musst du anpassen, je nachdem in welchem Feld (field1, field2…) du das Gewicht abgespeichert hast.

          Viele Grüße

          Reply
          1. Robert

            Hallo Javan
            Vielen dank für die rasche Antwort.
            Den Fehler :
            „Index exceeds the number of array elements (1).
            Error in Gewicht Schwarmalarm Mattlischwand (line 12) “
            bringe ich nicht weg.

            Leider checke ich Funktion anscheinend nicht.
            Meine Interpretation:
            Ich lese Field 4 (data(4)) , schreibe in Field 8 eine eins wenn data(1)*0.8>data(4) sonst eine null.
            Was, oder woher ist data(1) ?

            Hier ist der ganze Code:

            readChannelID = 1097XXX;
            readAPIKey = ‚7OFQP64TGB09XXXX‘;
            readField = 4;
            writeChannelID = 1376XXX;
            writeField = 8;
            writeAPIKey = ‚7YFC6X1XNV70XXXX‘;
            timespace = 20;

            %% Read Data %%
            data = thingSpeakRead(readChannelID,’Fields‘,readField,’NumMinutes‘,timespace);
            if data(1)*0.8>data(4)
            thingSpeakWrite(writeChannelID,’Fields‘,writeField,’Values‘,[4],’WriteKey‘,writeAPIKey);
            else
            thingSpeakWrite(writeChannelID,’Fields‘,writeField,’Values‘,[0],’WriteKey‘,writeAPIKey);
            end

            Bitte um Hilfe
            Vielen Dank und Gruss
            Robert

          2. Melissa Post author

            Hallo Robert,

            dein data Array (Liste an Messwerten) scheint leer zu sein und deshalb kommt ein Fehler beim Zugriff auf data(1), was bedeutet, dass auf das 2. Element (in der Informatik wird immer mit null angefangen zu zählen) nicht zugriffen werden kann, da es nicht existiert. Das gleiche würde auch bei data(4) (5. Element) passieren, aber das Programm ist vorher schon abgestürzt.

            data ist eine Variable, die das Ergebnis der Funktion thingSpeakRead speichert, die eine Liste an Messdaten zurückgibt. Hier findest du die Doku: https://de.mathworks.com/help/thingspeak/thingspeakread.html

            Dein Aufruf data = thingSpeakRead(readChannelID,'Fields',readField,'NumMinutes',timespace); bedeutet dann, dass aus deinem Channel mit ID readChannelID aus dem Feld readField die Daten der letzen timespace (20) Minuten ausgelesen werden. Ich vermute einfach, dass du in den letzen 20 Minuten keine Daten gesendet hast und deshalb der data Array leer ist und deshalb der Fehler kommt.

            Vielleicht kannst du dein Programm so umschreiben, dass es nicht die Daten der letzen 20 Minuten, sondern die zuletzt gesendeten x Messdaten nimmt. Laut der oben verlinkten Doku sollte das mit dem Input Argument NumPoints gehen.

            Edit: Ich habe dir deine Keys und IDs ein bisschen zensiert, damit diese nicht offen im Internet zu lesen sind 😉

            Gruß

            Melissa

  9. Karl

    Hallo Melissa,
    vorab soviel: ich habe eine Bienenstockwaage gebaut (HoneyPi-Projekt), ein ThingSpeak-Konto eingerichtet, wo ich 5 Sensoren abfrage: Gewicht, Außentemperatur, -Luftfeuchtigkeit, Temperatur Brutraum + Batteriespannung.
    Dann habe ich nach Ihrem Beispiel bei „meinem“ ThingSpeak“ eine Testabfrage „Aupßentemperatur zu hoch“ erstellt und extra HoneyPi PRO abboniert. Es funktioniert alles bis auf den letzten Schritt gemäß Ihrer Dokumentation: BENACHRICHTIGUNG AUF DEM SMARTPHONE, d.h. dieses Bild kann ich bei mir nicht sehen.
    Auf meinem Handy (Huawei nova 5T) ist in der schmalen Statusleiste das HoneyPi-Symbol. Ziehe ich dann die Statusleiste nach unten, kann ich folgendes sehen:
    ————————————————————–
    HoneyPi 16:00
    Außentemperatur
    in H… Bienenstock mit Channel-Id 1234567…
    ——————————————————————–
    Aber in meinem „Body“ steht ja noch weiterer Text/Infos, die nicht angezeigt werden.
    Wie bekomme ich die Push-Benachrichtigung korrekt + zeitnah angezeigt?
    Können Sie mir einen Tipp geben? Vielen Dank.
    Mit freundlichem Gruß
    Karl

    Reply
    1. Melissa Post author

      Hallo Karl,
      Android zeigt die Benachrichtigungen immer eingeklappt an, deshalb siehst du nur einen Teil deiner Nachricht. Normalerweise sollte bei der Benachrichtigung ein kleines „Pfeil/Dach nach unten“ Icon sein, mit dem man aufklappen kann und den vollen Text anzeigen kann. Das habe ich auch für den Screenshot von oben gemacht. Falls dein Handy dieses Icon jedoch nicht anzeigt, musst du deine Benachrichtigung in ThingSpeak auf die Zeichen, die du in deiner Benachrichtigung zur Verfügung hast, kürzen. Z.B. würde ja reichen: 1234567 = 8,14 °C; ZEITSTEMPEL

      Gruß Melissa

      Reply
      1. Karl

        Hallo Melissa,
        vielen Dank für Deine prompte Antwort. Nachdem ich diese gelesen hatte, wurde mir klar, dass ich Deinen Screenshot bisher falsch interpretiert habe. Ich war bisher davon ausgegangen, dass die Nachricht von HoneyPi soooo aussehen muss.
        Nach einem erneuten Test ist es auch so wie von Dir beschrieben.
        Vielen Dank nochmals für Deine Mühe.

        Gruß Karl

        Reply
  10. Florian

    Hi, ist diese Funktion nur in der App pro Version verfügbar?
    VG Florian

    Reply
    1. Melissa Post author

      Hi, ja die Benachrichtigungen sind nur in der Pro Version verfügbar.
      Über IFTTT (auch eine Anleitung hier verfügbar) oder die iOS-WebApp geht es aber auch ohne die Pro-Variante.

      Gruß
      Melissa

      Reply

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert