Ankündigung

Einklappen
Keine Ankündigung bisher.

Update des Status der Items?, Log?, UDP Rückmeldung verarbeiten?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Update des Status der Items?, Log?, UDP Rückmeldung verarbeiten?

    Hallo Zusammen,

    ich steuere aus OpenHAB per udp Befehlen einen Arduino der dann entsprechend per Funk Rollläden Lampen usw. schaltet.
    OpenHAB läuft bei mir auch einen RaspberryPi.

    Nun habe ich folgende Probleme.

    1. Komischerweise schaltet manchmal ein Funktschalter nicht aus den Rules heraus.
    Kann ich davon ausgehen, dass bei anzeige in der APP das die Lampe an ist, OpenHAB auch den UPD Befehl gesendet hat?

    2. Sehe ich das richtig, dass OpenHAB normalerweise jede Aktivität, Schalten, Abfragen von Wettterdaten usw. in ein Logfile speichert?
    Oder kann es sein, dass dieses auf dem Pi nicht läuft? Da ich irgendwie in den Logs einen alten Stand habe...
    Wie aktiviere ich das wieder? Das würde ja bei der Fehlersuche echt helfen.

    3. Beim Test auf dem PC habe ich gesehen, dass arduino einen Antwort sendet "acknowledged" hier kam die Meldung von OpenHAB;
    es könne nicht verarbeitet werden oder so ähnlich.
    Wie kann ich diese Rückmeldung verarbeiten um z.B. konkret den Status des Items zu setzten?

    4. Da ich im Arduino schon Gruppen von Rollläden zusamengefasst habe, wie kann ich beim steuern über die Rules
    den Status der einzelen Items ändern, so dass nicht nur die "Arduino Gruppe" aktuell ist, sondern die einzelnen Items
    im OpenHAB auch den gleichen Status haben?


    Danke

    Gruß AingTii

    #2
    Zu 1: Wenn das System korrekt läuft, sollte es so sein. Es kommt natürlich auf die Rule an, falls dort postUpdate() verwendet wird, wird nur der Status des Items geändert, ohne dass dieser nach außen gegeben wird. Um einen Befehl in Richtung Binding zu schicken, muss in Rules sendCommand() verwendet werden.

    Zu 2: Ja, das sollte definitiv so sein. Jedes Event, egal ob durch ein Binding, die UI, eine Rule oder den Zugriff über die osgi-Konsole ausgelöst, sollte in der events.log protokolliert werden. Jede Fehlermeldung und jeder durch einen log-Befehl auf Rule-Ebene erzeugte Logeintrag landet in der openhab.log. Jeder Zugriff auf die UI sollte in einer 3. Logdatei landen, von der mir gerade der Name entfallen ist Falls diese Dateien nicht mehr aktualisiert werden, wäre eine erste Vermutung, dass vielleicht der Datenträger voll ist. Es könnte auch sein, dass der Datenträger ro gemountet ist, dass die Berechtigungen für die Datei nicht passen, oder schlicht der logger-Prozess abgestürzt ist. Was nun bei Dir zutrifft, musst Du leider selbst herausfinden, den letzten Fall bekommst Du mit einem Neustart zuverlässig weg, ansonsten musst Du halt schauen, was ls -l ./openhab-verzeichnis/logs/ ausspuckt (Rechte, Dateigröße), was df -h ausspuckt (Platzverbrauch auf allen Datenträgern) und was passiert, wenn Du versuchst, schreibend auf das Dateisystem zuzugreifen.

    Zu 3: mit "acknowledged" kann openHAB natürlich nichts anfangen, das ist ja auch nur eine Bestätigung, dass überhaupt etwas empfangen wurde, sagt aber nichts darüber aus, was empfangen wurde, und erst recht nicht, was an den Aktor gesendet oder gar von dort empfangen wurde. Insofern könnte man natürlich die Meldung selbst unterdrücken, aber davon hast Du nichts. Wenn Du den Code im Arduino bearbeiten kannst, wäre es sinnvoll, dort als Antwort ein ON bzw. OFF (oder bei Rollläden UP bzw. DOWN oder STOP) zurück zu senden, das würde dann auch direkt das Item entsprechend setzen. Wobei das Item ohnehin per default automatisch auf den zuletzt gesendeten Status gesetzt wird (dieses Verhalten kann geändert werden).

    Zu 4: Du könntest eine Rule anlegen, die, wenn die Arduino Gruppe einen Befehl geschickt bekommt, automatisch per postUpdate() die entsprechenden Items passend setzt. Eleganter wäre es, die Gruppenbildung in openHAB nachzubilden und nur die Einzelbefehle an den Arduino zu schicken. Alternativ kannst Du auf Arduino-Seite dafür sorgen, dass beim Steuern über die Gruppe passende Bestätigungstelegramme an alle Einzelitems gesendet werden, aber ob das lohnt?

    Kommentar


      #3
      Hallo udo1toni,

      danke für die schnelel ausführliche Antwort. hat mir schon sehr weitergeholfen.

      zu 1. ja ich verwende sendCommand()in den Rules. Ich denke mal der Fehler muss dann woanders liegen, verschluckt irgendwas den Befehl oder Arduino hat ihn nicht erfasst. Da es manchmal geht, manchmal nicht, z.B. an um 05:00 geht, aus um 05:25 nicht. Heute ging dann aber beides, hatte Gesern aber auch neu gestartet.
      Rollläden gehen anscheinend (bin dann leider nicht zu Haus) immer....


      Zu 2.
      events.log und openhab.log habe ich nur einträge vom 23.05. danach keine mehr. Datumrequest.log wird jeden Tag neu angelegt, ob es da an den Zugriffsrechten liegt könnte sein, aber dann würde ja theoretisch auch der request.log nicht erzeugt werden....
      da fummel ich mich noch mal bezüglich linux durch, so ganz verstanden habe ich die Antwort nach dem
      ls -l nicht, was er ausspuckt....
      - sind denn irgendwelche bestimmten Adons, Persi.... etc. notwendig damit das loggen funktioniert oder muss irgendwo ein true etc. stehen damti er logt?

      Zu 3. OK, das mit der Programmierung der Antwort ON, OFF, UP. STOP, DOWN rückmeldung schaue ich mir mal an, ist evtl. aufwendig, aber ist ja auch

      ein geniales Ding um zumindest auszuschließen, dass Arduino etwas nicht oder falsch verstanden hat.
      - Verstehe ich das richtig, dass bei einer Rückmeldung z.B. von ON auch das Lampensymbol im Openhab den Status an bekommen, und bei OFF dann Status aus?

      zu 4. Ah, das schaue ich mir auch noch mal an, welche Seite da einfacher wäre, auf der Arduino seite habe ich eh unter dem UDP befehl dann alle entsprechenden
      Rollläden einzeln drunter und nicht als separaten einzelnen Fernbedienungscode der mehrere anspricht wie es normal als Grupen FB wäre...
      Also postUpdate()würde nur den Status des Items setzten und kein weiteres Commando? ist das dann genauso einzutragen wie sendCommand(),
      als Beispiel
      postUpdate(Shutter_GF_Arbeit, UP) dann würde das Item auf Auf stehen?
      Wenn ich das richtig gesehen habe, besteht dort doch auch die Möglichkeit mehrere Stufen abzubilden, wie werden die denn in dem Item abgebildet, z.B. 30% hoch?!?!?

      Danke

      Gruß AingTii
      Zuletzt geändert von AingTii; 26.05.2016, 05:29.

      Kommentar


        #4

        zu 2: also, wenn die request.log angelegt werden, kann zumindest das Dateisystem nicht ro (ReadOnly) sein, und auch die Berechtigung ins Verzeichnis zu schreiben, sollte passen.
        Das Logging kannst Du gezielt über die logback.xml unter configurations/ steuern, bzw., falls Du das System im debug-modus gestartet hast, über die logback_debug.xml. Wenn da nichts mehr geschrieben wird, könnte es natürlich sein, dass Du in der Datei irgendwo einen Fehler drin hast, die ein korrektes Parsen durch openHAB verhindert.
        per default werden aber alle Ereignisse so geloggt, wie ich es beschrieben habe, die request.log wird täglich angelegt, events.log und openhab.log werden wöchentlich automatisch gezippt und neu angelegt.
        Achso: Das gilt ausschließlich für openHAB 1, unter openHAB 2 funktioniert das logging komplett anders, weil da ein anderer Logger verwendet wird.

        zu 3: ja, wenn die Antworttelegramme passen, sollte das so funktionieren. Wobei ... vielleicht kommt es auch auf den Itemtyp an, und Du musst z.B. bei einem Switch eine 1 oder eine 0 schicken, um ON und OFF zu signalisieren. Eventuell kann da jemand anderes genauere Angaben machen, ich hab hier kein Arduino-System angebunden. Aber grundsätzlich sollte ein vom Binding empfangenes Telegramm, wenn es korrekt ausgewertet werden kann, dann zu einer Statusänderung führen, falls sich der empfangene Status vom Zustand des Items unterscheidet, ansonsten gibt es halt nur eine Update-Information. Wenn Du in der Item-Definition zusätzlich zum Binding noch autoupdate="false" setzt, wird der Status des Items nur durch empfangene Telegramme und/oder postUpdate() beeinflusst, aber nicht durch sendCommand() oder Bedienung in der UI. Damit ist also eine echte Rückmeldung über das selbe Item möglich.

        zu 4: genau so ist es. Was die genaue Position betrifft, auch das geht. Wenn Du Aktoren hast, die die genaue Position rückmelden, ist es natürlich am genauesten. Wenn Du nicht in dieser komfortablen Situation bist, kannst Du über eine Rule die Rückmeldungen auswerten und die Laufzeit der Motoren messen, daraus lässt sich dann abschätzen, wo der Laden steht, was dann wiederum über ein postUpdate() an das Item rückgemeldet werden kann. Allerdings, am Wort abschätzen ist es schon erkennbar, das ist nicht sonderlich genau, man muss Vorkehrungen treffen, dass regelmäßig die Zähler auf Referenzpunkte gesetzt werden, also oberer oder unterer Endanschlag. Wenn diese Punkte täglich angefahren werden, sollte das System dann automatisch die Position auf 0 bzw. 100 setzen. Natürlich muss auch die genaue Laufzeit des Ladens bestimmt werden, usw. Andererseits kann man natürlich auch den Laden gezielt eine Position anfahren lassen, indem eine Rule aufgrund der aktuellen Position die benötigte Laufzeit bis zur neuen Position bestimmt und anschließend automatisch den Stopbefehl sendet. Irgendwo hier im Forum gibt es auch eine Thread dazu, hat aber bei mir zu Problemen geführt, und da ich über knx mit Szenensteuerung ohnehin gezielt Positionen anfahren kann, ist bei mir der Leidensdruck nicht hoch genug

        Kommentar


          #5
          Hallo,

          hat etwas gedauert, bis ich die Arduino Seite soweit hatte auch unterschiedliche Telegramme in die Antwort zu packen.

          Kennt Sich da jemand aus, wie das Telegramm genau aussehen muss, damit es auch von OpenHAB verarbeitet wird und der Status dadurch gesetzt wird?

          Momentan endet alles in Fehlermeldungen bzw. Warnungen:

          Code:
          2016-05-30 19:05:43.298 [WARN ] [t.protocol.internal.UDPBinding] - Can not parse input STOP to match command 7 on item Shutter_GF_AlleUnten 
          
          2016-05-30 19:05:43.315 [WARN ] [t.i.s.MapTransformationService] - Could not find a mapping for 'STOP
          oder müssen es Zahlen sein oder was anderes?

          Oder muss ein Mapping angelegt werden!?!??!

          Auch würde mich interessieren, wo ich generell einstellen kann, dass z.B. bei STOP das 50% auf der Rollläden verwendet wird?!?!?

          Danke

          Gruß
          AingTii

          Kommentar


            #6
            Was genau der Arduino senden muss, weiß ich nicht, aber im Prinzip das selbe, was er empfängt. Wenn am Arduino also STOP ankommt, schickst Du STOP, wenn da $A8 ankommt, schickst Du $A8. Wenn Du keine vom Arduino initiierte Kommunikation hast, sollte es reichen, das, was Du empfängst grade zurückzuschicken.

            Meinst Du mit
            Auch würde mich interessieren, wo ich generell einstellen kann, dass z.B. bei STOP das 50% auf der Rollläden verwendet wird?
            dass automatisch ein halb geschlossener Laden gezeigt wird, wenn die Fahrt gestoppt wird? Das geht per Rule (eine pro Laden, mit entsprechendem Aufwand kann man das auch generalisieren, lohnt aber nur bei einer größeren Menge Läden)

            Code:
            rule "auto 50%"
            when
                Item shutter received command STOP
            then
                shutter.postUpdate(50)
            end
            sorgt dafür, dass der Status von shutter in openHAB bei jedem STOP-Befehl auf 50 gesetzt wird. Dabei wird diese 50 aber nicht irgendwohin gesendet!

            Kommentar


              #7
              Hallo udo1Toni,

              also mit der Rückmeldung scheint noch nicht zu klappen, ist eigentlich egal was ich im Arduino eingebe.
              Die Warnungen kommen trotzdem.
              selbst bei "Shutter_GF_Arbeit.postUpdate(50)" wird das nicht verarbeitet.

              Die Warnung weiter oben kommt Pro fahren für jedes Item, also sucht OpenHAB alle Items durch ob irgendwo
              ein Mapping etc ist....

              Mit dem Rule habe ich noch nicht probiert....

              Danke

              Gruß AingTii

              Kommentar


                #8
                Zeig doch mal die genaue Definition Deiner Items

                Kommentar


                  #9
                  Code:
                  Group All
                  Group gGF   (All)
                  Group gFF   (All)
                  Group gC   (All)
                  Group Outdoor  (All)
                  Group Shutters  (All)
                  Group Weather  (All)
                  Group Status  (All)
                  
                  Group GF_Office  "Arbeitszimmer" <office>  (gGF)
                  Group GF_Toilet  "WC"    <bath>   (gGF)
                  Group GF_Kitchen  "Kueche"   <kitchen>  (gGF)
                  Group GF_Living  "Wohnzimmer"  <video>  (gGF)
                  Group GF_Corridor  "Flur"    <corridor>  (gGF)
                  Group GF_HWR   "HWR"    <energy>  (gGF)
                  
                  Group FF_Bad   "Badezimmer"  <bath>   (gFF)
                  Group FF_Office  "Lynn"    <office>  (gFF)
                  Group FF_Lance  "Lance"   <boy5>   (gFF)
                  Group FF_Johann  "Johann"   <boy4>   (gFF)
                  Group FF_Eltern   "Eltern"   <bedroom>  (gFF)
                  Group FF_Corridor  "Flur"    <corridor>  (gFF)
                  
                  Group Outdoor_Carport "Carport" <garden> (Otdoor)
                  Group Outdoor_Strasse "Straße" <garden> (Otdoor)
                  Group Outdoor_Garten "Garten" <garden> (Otdoor)
                  Group Outdoor_Hinten "Hinten" <garden> (Otdoor)
                  Group Outdoor_Stehlampe "Stehlampe" <garden> (Otdoor)
                  Group Outdoor_KugelGr "KugelGroß" <garden> (Otdoor)
                  Group Outdoor_KugelKl "KugelKlein" <garden> (Otdoor)
                  
                  
                  /* Rollershutters */
                  Switch Shutter_all (Shutters)
                  
                  Rollershutter Shutter_GF_Arbeit  "Arbeitszimmer"   (GF_Office, Shutters) {udp=">[192.168.5.178:8888:'MAP(ShutterArbeit.map)']"}
                  Rollershutter Shutter_GF_Toilet  "GästeWC"    (GF_Toilet, Shutters) {udp=">[192.168.5.178:8888:'MAP(ShutterWC.map)']"}
                  Rollershutter Shutter_GF_KitchenSt  "Kueche Strasse"  (GF_Kitchen, Shutters) {udp=">[192.168.5.178:8888:'MAP(ShutterKitchStr.map)']"}
                  Rollershutter Shutter_GF_KitchenKl  "Kueche Garten Klein" (GF_Kitchen, Shutters) {udp=">[192.168.5.178:8888:'MAP(ShutterKitchKlein.map)']"}
                  Rollershutter Shutter_GF_KitchenT  "Kueche Garten Tür"  (GF_Kitchen, Shutters) {udp=">[192.168.5.178:8888:'MAP(ShutterKitchGross.map)']"}
                  Rollershutter Shutter_GF_LivingGr  "Wohnzimmer Gross"   (GF_Living, Shutters) {udp=">[192.168.5.178:8888:'MAP(ShutterWZ_Gross.map)']"}
                  Rollershutter Shutter_GF_LivingKl  "Wohnzimmer Klein"  (GF_Living, Shutters) {udp=">[192.168.5.178:8888:'MAP(ShutterWZ_Klein.map)']"}
                  Rollershutter Shutter_GF_AlleUnten  "Alle Unten"   (gGF, Shutters) {udp=">[192.168.5.178:8888:'MAP(ShutterUnten.map)']"}
                  
                  Rollershutter Shutter_FF_Bad   "Badezimmer"  (FF_Bath, Shutters) {udp=">[192.168.5.178:8888:'MAP(ShutterBad.map)']"}
                  // Rollershutter Shutter_FF_Lynn  "Lynn"   (FF_Office, Shutters) {udp=">[192.168.5.178:8888:'MAP(ShutterLynn.map)']"}
                  Rollershutter Shutter_FF_Lance  "Lance"   (FF_Child1, Shutters) {udp=">[192.168.5.178:8888:'MAP(ShutterLance.map)']"}
                  Rollershutter Shutter_FF_Johann  "Johann"  (FF_Child2, Shutters) {udp=">[192.168.5.178:8888:'MAP(ShutterJohann.map)']"}
                  Rollershutter Shutter_FF_Eltern   "Eltern"  (FF_Bed, Shutters) {udp=">[192.168.5.178:8888:'MAP(ShutterEltern.map)']"}
                  Rollershutter Shutter_FF_AlleOben  "Alle Oben"  (gFF, Shutters) {udp=">[192.168.5.178:8888:'MAP(ShutterOben.map)']"}
                  
                  /* Lights */
                  Switch Light_GF_Office     "Test1"  (GF_Office, Lights) {udp=">[192.168.5.178:8888:'MAP(LampOffice1.map)']"}
                  Switch Light_GF_Office2     "Test2"  (GF_Office, Lights) {udp=">[192.168.5.178:8888:'MAP(LampOffice2.map)']"}
                  
                  Switch Light_FF_Eltern_Lynn    "Lynn"   (FF_Bed, Lights) {udp=">[192.168.5.178:8888:'MAP(LampBedLynn.map)']"}
                  Switch Light_FF_Eltern_Jens    "Jens"   (FF_Bed, Lights) {udp=">[192.168.5.178:8888:'MAP(LampBedJens.map)']"}
                  Switch Light_FF_Eltern_Alle    "Alle"   (FF_Bed, Lights) {udp=">[192.168.5.178:8888:'MAP(LampBedBeide.map)']"}
                  
                  Switch Light_Outdoor_Carport   "Carport"   (Outdoor, Lights) {udp=">[192.168.5.178:8888:'MAP(LampOutCarport.map)']"}
                  Switch Light_Outdoor_Strasse   "Straße"   (Outdoor, Lights) {udp=">[192.168.5.178:8888:'MAP(LampOutStrasse.map)']"}
                  Switch Light_Outdoor_Garten   "Garten"  (Outdoor, Lights) {udp=">[192.168.5.178:8888:'MAP(LampOutGarten.map)']"}
                  Switch Light_Outdoor_Hinten   "Hinten"  (Outdoor, Lights) {udp=">[192.168.5.178:8888:'MAP(LampOutHinten.map)']"}
                  Switch Light_Outdoor_Stehlampe   "Stehlampe"  (Outdoor, Lights) {udp=">[192.168.5.178:8888:'MAP(LampOutStehlampe.map)']"}
                  Switch Light_Outdoor_KugelGr   "KugelGroß"  (Outdoor, Lights) {udp=">[192.168.5.178:8888:'MAP(LampOutKugelGr.map)']"}
                  Switch Light_Outdoor_KugelKl   "KugelKlein" (Outdoor, Lights) {udp=">[192.168.5.178:8888:'MAP(LampOutKugelKl.map)']"}
                  
                  
                  // OpenWeatherMap Daten
                  Number   owmFeuchte         "Feuchte [%d %%]"              {weather="locationId=home-OWM, type=atmosphere, property=humidity"}
                  Number   owmTemperatur      "Temperatur [%.2f °C]"         {weather="locationId=home-OWM, type=temperature, property=current"}
                  Number   owmLuftdruck       "Luftdruck [%.2f hPa]"         {weather="locationId=home-OWM, type=atmosphere, property=pressure"}
                  String   owmLuftdruckTrend      "Luftdruck Trend [%s]"         {weather="locationId=home-OWM, type=atmosphere, property=pressureTrend"}
                  Number   owmWindgeschwindigkeit     "Windgeschwindigkeit [%.2f km/h]"       {weather="locationId=home-OWM, type=wind, property=speed"}
                  String   owmWindrichtung            "Windrichtung [%s]"            {weather="locationId=home-OWM, type=wind, property=direction"}
                  Number   owmWindgrad       "Windrichtungn in Grad [%.0f °]"       {weather="locationId=home-OWM, type=wind, property=degree"}
                  Number   owmWolken       "Bewölkung [%.0f %%]"         {weather="locationId=home-OWM, type=clouds, property=percent"}
                  Number   owmRegen             "Regen der letzten 3h [%.2f mm/h]"      {weather="locationId=home-OWM, type=precipitation, property=rain"}
                  Number   owmSchnee         "Schnee der letzten 3h [%.2f mm/h]"      {weather="locationId=home-OWM, type=precipitation, property=snow"} 
                  DateTime owmLastUpdate              "Letztes update [%1$ta %1$tR]"  <clock>   { ntp="Europe/Berlin:de_DE" }
                  
                  /* weitere Definitionen... */
                   
                  DateTime                        Datum "[%1$tA, %1$td.%1$tm.%1$tY %1$tT]"       (Status)        { ntp="Europe/Berlin:de_DE" }
                  das meinst Du mit Definition der Items oder?

                  Kommentar


                    #10
                    Und wie sehen die *.map-Dateien aus? Wenn Du mit Prozentwerten arbeiten möchtest, müsstest Du (zumindest für jeden Prozentwert, den Du nutzen möchtest) im mapping auch entsprechende Werte hinterlegen, das ist nicht gut. Da sowohl IP als auch Port bei allen Items identisch sind, gehe ich davon aus, dass Die Unterscheidung an anderer Stelle (im mapping) passiert. Die Folge ist, dass Du für jedes Item ein eigenes Mapping brauchst. Ich denke, dieser Ansatz ist ziemlich umständlich und ineffizient. mit einer javascript-Datei könntest Du zumindest die Zahlen abdecken, vielleicht gibt es auch einen Weg, da noch einen Parameter mit zu übergeben, damit Du nur ein scriptfile pro Itemtyp brauchst (ich sehe da aber jetzt keine offensichtliche Option).

                    In diesem Thread in der englischen Community ist von Rich beschrieben, wie Du das Ganze wesentlich effizienter gestalten kannst, nämlich, indem Du nur ein einziges Item an udp bindest (zum Senden) und die eigentlichen Befehle per Rule zusammensetzen lässt, die Rule schreibt dann den entsprechenden Befehl in das Sende-Item.
                    Da Du nur die Senderichtung definiert hast, wird openHAB auch keine Antworten vom Arduino auswerten, das könnte man aber über eine 2. Rule erschlagen.

                    Kommentar


                      #11
                      Hallo udo1toni,

                      also in den .map-Dateien für die Shutter (natürlich alle unterschiedlich):
                      Code:
                      UP=rollS106u
                      STOP=rollS106s
                      DOWN=rollS106d
                      für die Lampen:
                      Code:
                      ON=LampG203e
                      OFF=LampG203a
                      ja ist ziemlich umständlich mit den einzelnen .map Dateien.
                      Ich hatte ja schon vor einiger Zeit mal das Thema im Forum, wie ich es überhaupt realisiere,
                      dass ein upd Commando gesendet wird auch mit der Frage, dass ich dann ja für jedes Item
                      eine .map Datei bräuchte, ob es da ne andere Lösung gibt. Leider erfolglos, daher die
                      "Tausend"-.map-Datei-Lösung ;-)

                      Bin halt neu im OpenHAB und auch nicht super fit im Arduino um eine bessere Lösung zu finden,
                      nach dem Motto, erst mal zum laufen kriegen, Optimierung stück für stück im nachhinein.

                      OK, dass schaue ich mir mal an, ob ich da was von umsetzten kann, vielleicht kommt bei mir dann
                      ja auch das "Aha-Erlebnis"

                      die Arduino-Empfangsseite sieht dann so aus (incl. der Rückmelde versuche):
                      Code:
                       // read packet into packetBuffer and get sender's IP addr and port number
                          Udp.read(packetBuffer,UDP_TX_PACKET_MAX_SIZE);
                          Serial.print("Contents: ");
                          Serial.print(packetBuffer[0]);
                          Serial.print(packetBuffer[1]);
                          Serial.print(packetBuffer[2]);
                          Serial.print(packetBuffer[3]);
                          Serial.print(packetBuffer[4]);
                          Serial.print(packetBuffer[5]);
                          Serial.print(packetBuffer[6]);
                          Serial.print(packetBuffer[7]);
                          Serial.println(packetBuffer[8]);
                                
                          if ( !strcmp(packetBuffer, "rollS101u"))
                          {
                            codecSomfyRTS.Up(RC[0]);
                            Serial.println("Arbeitszimmer up");
                            sendUDPRep("Shutter_GF_Arbeit.postUpdate(UP)");
                      
                          }
                          if ( !strcmp(packetBuffer, "rollS101s"))
                          {
                            codecSomfyRTS.MyStop(RC[0]);
                            Serial.println("Arbeitszimmer Stop");
                            sendUDPRep("Shutter_GF_Arbeit.postUpdate(50)");
                          }
                          if ( !strcmp(packetBuffer, "rollS101d"))
                          {
                            codecSomfyRTS.Down(RC[0]);
                            Serial.println("Arbeitszimmer down");
                            sendUDPRep("Shutter_GF_Arbeit.postUpdate(DOWN)");
                          }
                          if ( !strcmp(packetBuffer, "rollS102u"))
                          {
                            codecSomfyRTS.Up(RC[1]);
                            Serial.println("GaesteWC Auf");
                            char replyBuffer[] = "UP";
                          }
                          if ( !strcmp(packetBuffer, "rollS102s"))
                          {
                            codecSomfyRTS.MyStop(RC[1]);
                            Serial.println("GaesteWC Stop");
                            char replyBuffer[] = "STOP";
                          }
                      
                      usw.
                      Danke
                      Gruß
                      AingTii

                      Kommentar


                        #12
                        Das von Rich sieht interessant aus, das versuche ich die Tage mal.
                        Und versuche es (wenn ich es hinbekomme ) dann hier in Deutsch mal zu Posten, so würde es dann auch anderen Helfen.

                        Kommentar

                        Lädt...
                        X