Ankündigung

Einklappen
Keine Ankündigung bisher.

mit TCP Port x auf Host y verbinden

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

    mit TCP Port x auf Host y verbinden

    Hallo ihr Wissenden

    Ich bin dabei viele Logiken von NodeRed aud Edomi umzuziehen. Klappt soweit ganz gut aber an einer Sache scheitere ich.
    Ich habe ein 1-wire Gateway von ESERA (LINK). Mit NodeRed verbinde ich mit mit Port 5000 per TCP und bekomme darüber z.B. Temperaturdaten als Datenstrom.

    Geht sowas mit EDOMI? Wenn ja bitte ich um einen kurzen Denkanstoß... vielen Dank!!

    Hier mal der Screenshot aus nodered:

    esera_nodered.png
    Zuletzt geändert von neophilipp; 10.09.2019, 14:16.
    Grüße aus Leipzig

    Philipp

    #2
    Hi Philipp,

    kann das Gateway kein UDP? Dann kann der Baustein https://service.knx-user-forum.de/?c...ad&id=19000278 helfen. Sonst kann ich mich vielleicht motivieren, einen LBS TCP Listener schreiben.

    Gruesse
    Matthias

    Kommentar


      #3
      Zitat von maque Beitrag anzeigen
      LBS TCP Listener
      Ist das nicht die flasche "Richtung"?

      Kommentar


        #4
        Stimmt, jetzt wo Du es sagst. Eventuell kann der ESERA aber konfiguriert werden, dass er die Daten weiter schickt...

        Das hier scheint es zu sein: https://knx-user-forum.de/forum/proj...ire-controller
        Zuletzt geändert von maque; 11.09.2019, 20:10.

        Kommentar


          #5
          Zitat von maque Beitrag anzeigen
          Stimmt, jetzt wo Du es sagst. Eventuell kann der ESERA aber konfiguriert werden, dass er die Daten weiter schickt...

          Das hier scheint es zu sein: https://knx-user-forum.de/forum/proj...ire-controller
          Ich hab das jetzt mit dem LBS den Du genannt hast hinbekommen. Danke Dir!

          Der scheint aber einen Bug an E7 zu haben. Da kann ich eingaben was ich will, er wirft immer einen PHP Fehler:
          Datei: /usr/local/edomi/www/data/liveproject/lbs/EXE19000278.php | Fehlercode: 2 | Zeile: 64 | Invalid argument supplied for foreach()

          Falls jemand den LBS nutzt kann er mir ja vielleicht verraten was ich falsch mache.

          Danke fein :-)
          Grüße aus Leipzig

          Philipp

          Kommentar


            #6
            Hi Phillipp,

            wie du schon per PN gefragt hast. Ich dem Link zu meinem Thread ist eigentlich alles erklärt. Ich hatte genau die gleichen Probleme wie du.
            Der Quelltext von dem LBS den ich am laufen habe ist dort auch gepostet. Dieser ist aber nicht meine Schöpfung. danik hat mir hier damals auf die Sprünge geholfen. Ich habe diesen nur verfeinert damit mehr Sensoren gehen und ich Sensorfehler mitbekomme.

            Gruß Michael

            Kommentar


              #7
              Was gibst du denn an E7 an?

              Kommentar


                #8
                Zitat von jonofe Beitrag anzeigen
                Was gibst du denn an E7 an?
                KAL weil ich das hier rausfiltern möchte:

                1_KAL|1[CR][LF]
                gelesen: 192.168.2.40 - 1_KAL|1[CR][LF] - Ausgang:
                20
                Grüße aus Leipzig

                Philipp

                Kommentar


                  #9
                  Hab gefunden wieso das exclude Array nicht klappt... zumindest glaube ich das (mein PHP ist so lala):

                  Der if Blog ist fehlerhaft:

                  if (is_Array($filterneg)) {
                  foreach ($filterpos as $such) {
                  if (is_numeric(strpos($data,$such))) {
                  $skip = TRUE;
                  break;
                  }
                  };
                  };

                  hier die Version mit der es bei mir geht:

                  if (is_Array($filterneg)) {
                  $skip = FALSE; //fehlte
                  foreach ($filterneg as $such) { //war $filterpos
                  if (is_numeric(strpos($data,$such))) {
                  $skip = TRUE;
                  break;
                  }
                  };
                  };
                  Grüße aus Leipzig

                  Philipp

                  Kommentar


                    #10
                    Ja, sieht nach einem Copy&Paste Fehler aus dem Positiv-Filter aus.

                    Kommentar


                      #11
                      Hallo zusammen,

                      da meine UDP-Verbindung auch dann und wann abbricht wollte ich meine Controller auf TCP umstellen.

                      Hierzu gibt es im Download Bereich auch schon einen Baustein Link Allerdings kann ich mit diesem nur Empfangen aber keine Befehle senden.
                      Da der Baustein auf dem Baustein 19001220 aufbaut, habe ich mit meinen limitierten PHP Kenntnissen versucht einfach den fehlenden Teil zum senden einzufügen und den Baustein wieder erweitert. Der Code zum senden sieht nun wie folgt aus:

                      // if EXEC daemon is running, send messages
                      if (logic_getVar($id, 1) == 1) {
                      if ($E[46]['refresh'] == 1) {
                      $chr_ch1 = $E[46]['value']; // Zu sendener Befehl
                      $tcp_string = $chr_ch1;
                      $msg['sendinput'] = $tcp_string;
                      }
                      }
                      // send message to EXEC daemon
                      if (count($msg)) {
                      LB_LBSID_logging($id, "Message:", $msg);
                      $msg_queue_id = logic_getVar($id, 2);
                      LB_LBSID_logging($id, "MSGQID used: $msg_queue_id");
                      $msg_queue = msg_get_queue($msg_queue_id);
                      msg_send($msg_queue, 1, $msg);
                      }
                      Allerdings reagiert der Controller darauf nicht. Wenn ich die Befehle per Hercules sende geht es.

                      Ein Befehlt in Hercules sieht zum Beispiel so aus: set,sys,out,1,0<cr>

                      Ich glaube mein Problem ist CR gescheint dahinter zu bekommen. In der Hilfe zu dem Controller steht folgendes:

                      - Jeder Befehl an den 1-Wire Controller / 1-Wire Gateway muss mit einem „Carriage Return“ (CR, hexadezimal 0D) beendet werden.
                      - Jede Datenausgabe des 1-Wire Controller / 1-Wire Gateway wird mit einem „Carriage Return“ (CR, hexadezimal 0D bzw. dezimal 13) und „Line Feed“ (LF, hexadezimal 0A bzw. dezimal 10) abgeschlossen.

                      Vielleicht hat ja jemand von euch eine Idee hierzu.

                      Gruß Michael

                      Kommentar

                      Lädt...
                      X