Posts by Golpe

    __blackjack__ , das mit der python Bytes hatte ich schon probiert.

    Wenn ich dein code ausführe bekomme ich so eine Ausgabe:

    da fehlt mir den Startbyte und kommen auch andere werte, die ich nicht erwarte wie ')' oder '0ch'

    Hallo ihr alle,

    hier den code, falls ihr es teilweise gebrauchen konnt:

    In welche modul bzw. Python Paket ist diese Klasse gpioio?

    Ja, die Pakete folgen die Muster `0x68 .......frame_lange_variiert.......0x16`.

    Zwischen startbyte 68 und stopbyte 16 will ich später ein paar bytes rausfiltern, die mir eine Zieladresse und einen Wert (payload) geben.

    Das Ziel des ganzen ist das Speichern und evtll. weiterleiten des letzten Status der verschiedene Adressen in der Busanlage.


    Danke! :)


    LG,


    Simón

    Hallo liebe Forum,

    ich habe einem HAT (kBerry) für die Raspi zum verbinden mit einem Gebäudeautomatisierungsbus (KNX).

    Ich kann nun mit meinem Programm (in C++ geschrieben) in den Bus und irgendwas in der Anlage steuern (unwichtig für meine Problematik).

    Nun will ich auch lesen und dafür wollte ich Python benutzten.

    Die benötigte Einstellungen für die ttyAMA0 (raspi 3b+) sind folgende:

    Code
    $ stty -F /dev/ttyAMA0 19200 cs8 parenb -parodd -icrnl -opost -isig -icanon -echo

    Was in den Bus passiert kann ich ganz zuverlässig damit sehen:

    Code
    $ sudo socat -x -u /dev/ttyAMA0,raw,echo=0,crnl PTY,link=/dev/ttyV1,raw,echo=1,crnl

    Nun möchte ich aber die gleiche output aber mit python lesen und die Daten verarbeiten.

    In Fragen kamen das Modul 'Subprocess' und damit socat ausführen oder pyserial zu benutzen.

    Da ich denke das sauberste wäre das zweite habe ich das geschrieben:

    Das gibt mir das zurück:

    aber ich erwarte was socat mich liefert:

    Und damit meine ich die raw werte bzw. Hex bytes (Zeitstempel usw. spielen nun keine Rolle).

    Ich erwarte ein Dataframe, die 0x68 als startbyte hat und 0x16 als stopbyte (wie bei socat output).

    Pyserial liest das erste Byte richtig (0x68) aber danach stimmt das Frame nicht mehr (0x0C 0x0C 0x68 ..... 0x16 sollte folgen).


    Kann mir jemand helfen?

    Sollte ich in die Argumente von Serial() noch was schreiben, damit analog zu meine tty Einstellungen ist?


    Vielen Dank in voraus.


    LG,


    Simón


    P.S. Dass, das pyserial output 1 byte pro linie ausgibt und socat Zeilenweise, spielt erstmal keine Rolle.

    Soooo,

    es hat sich erledigt.

    Im Reiter IPV4 vom Network manager das auswählen:

    Anschließend bekommt die Zero eine IP im 10.x.x.x bereich und sie ist erreichbar unter `ssh pi@raspberrypi.local` (solange der raspi hostname nicht geändert wurde und damit `raspberrypi` ist der aktuelle hostname).

    Internet zugang ist auch vorhanden.


    Lösung gefunden hier

    RTFM ich habe festgestellt, dass DHCP am meisten Sinn macht, denn ich möchte auch in andere Netzwerke arbeiten, wo ich keine Rechte habe.

    Wenn ich in DHCP ausgewählt lasse bekomme ich die Meldung `aktivierung der netzwerkverbindung ist gescheitert` und `journalctl | grep dhcp` sagt:

    Code
    Apr 02 18:32:56 golpe-ThinkPad-T490 NetworkManager[1029]: <info>  [1617381176.8441] dhcp4 (enx3af2fd687de4): activation: beginning transaction (timeout in 45 seconds)
    Apr 02 18:33:42 golpe-ThinkPad-T490 NetworkManager[1029]: <warn>  [1617381222.4166] dhcp4 (enx3af2fd687de4): request timed out
    Apr 02 18:33:42 golpe-ThinkPad-T490 NetworkManager[1029]: <info>  [1617381222.4166] dhcp4 (enx3af2fd687de4): state changed unknown -> timeout
    Apr 02 18:33:42 golpe-ThinkPad-T490 NetworkManager[1029]: <info>  [1617381222.4364] dhcp4 (enx3af2fd687de4): canceled DHCP transaction
    Apr 02 18:33:42 golpe-ThinkPad-T490 NetworkManager[1029]: <info>  [1617381222.4365] dhcp4 (enx3af2fd687de4): state changed timeout -> done

    Bin nun am gucken ob wireshark mir etwas verrät aber auf dem ersten Blick fällt mir nichts eindeutiges auf...

    Wenn jemand mir einem Tipp geben kann wäre ich dankbar :)


    P.S. was sollte ich in der SSH Verbindung nachjustieren?

    P.S.2: Meine Fritzbox vergibt meine Geräte immer eine IP Adresse. Sollte es damit reichen oder sollte ich lokal noch etwas dazu einrichten? (dhcp server?)

    Hallo,

    erstmal vielen Dank.

    Ja der Name Link local ist ziemlich eindeutig aber USB Ethernet mit DHCP war fehlgeschlagen und statisch hatte ich es eingerichtet (scheinbar nicht richtig).

    ich konnte `ssh pi@x.x.x.x` aber beim eingeben des passworts für den user pi wurde den zugriff verweigert.

    Nächste Schritt habe ich über Link local probiert und es ging die Verbindung mit ssh.


    Ich werde versuchen denn zu forschen warum DHCP fehl schlägt.


    Danke nochmal.

    Hallo an alle.

    Ich möchte an meinem Laptop entwickeln und das entwickelte gleich auf der Raspberry testen.

    Dafür habe ich eine Zero v1.3, die ich immer dabei haben möchte.

    Ich habe sie unter Ubuntu 20 als USB Ethernet eingerichtet und die ipv4 Methode als 'Link local' eingestellt.

    Damit bin ich in der Lage über SSH auf die Raspi zu kommen.


    Nun bräuchte ich auch Zugang zu Internet sodass ich pakete auf der Raspi installieren kann.

    Mein Ethernet ist für andere freigeschaltet:


    Aber ich Internet auf der Raspi habe ich nicht.

    Ich habe im Netz mehrere Anleitungen gefolgt ohne erfolg.

    Hat jemand eine Idee?

    Vielen Dank und frohe Ostern


    Code
    enxce8c7f53ad44: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 169.254.235.100  netmask 255.255.0.0  broadcast 169.254.255.255
            inet6 fe80::dd14:a149:bb3d:617  prefixlen 64  scopeid 0x20<link>
            ether ce:8c:7f:53:ad:44  txqueuelen 1000  (Ethernet)
            RX packets 1269  bytes 50506 (50.5 KB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 163  bytes 26511 (26.5 KB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


    PS. Falls es eine Rolle spielen sollte (ich vermute nicht), nur sagen dass ich die Raspi OS headless installiert habe

    hallo ihr alle,

    anbei ein Paar neue Infos.

    Ich habe folgende Befehel ausgeführt:

    Code
    pi@knxGateway1:~/projects/cpphttplib/build $ setserial -ag /dev/ttyAMA0
    /dev/ttyAMA0, Line 0, UART: undefined, Port: 0x0000, IRQ: 81
            Baud_base: 3000000, close_delay: 50, divisor: 0
            closing_wait: 3000
            Flags: spd_normal

    in der o.g. Ausgabe wundert mich das undefined und die Baud_base, vor allem wenn ich ein anderes baud sehe (wobei 9600 ist es richtig, denn ist die baud was der Bus benutzt, wo ich Befehle schicken will):

    Hier weitere hilfreiche Info:

    Code
    pi@knxGateway1:~/projects/cpphttplib/build $ dmesg | grep tty
    [    0.000000] Kernel command line: coherent_pool=1M 8250.nr_uarts=1 bcm2708_fb.fbwidth=1280 bcm2708_fb.fbheight=720 bcm2708_fb.fbswap=1 vc_mem.mem_base=0x3ec00000 vc_mem.mem_size=0x40000000  dwc_otg.lpm_enable=0 console=tty1 root=PARTUUID=68e1382d-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
    [    0.000467] console [tty1] enabled
    [    0.755498] 3f201000.serial: ttyAMA0 at MMIO 0x3f201000 (irq = 81, base_baud = 0) is a PL011 rev2
    [    0.758913] 3f215040.serial: ttyS0 at MMIO 0x0 (irq = 53, base_baud =50000000) is a 16550

    und hier mein cmdline.txt

    Code
    dwc_otg.lpm_enable=0 console=tty1 root=PARTUUID=68e1382d-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

    und hier config.txt


    ++update++

    da ich verzweifelt bin, habe ich eine andere funktionierende Raspi 3B angeschlossen, zum testen, ob evtll. die Pins defekt sind.

    Ist aber leider nicht der Fall

    Ich sehe in Terminal 1 Text aber auf dem Port gibts kein Verkehr

    Code
    Terminal1:
    pi@knxGateway1:~/projects/cpphttplib/build $ echo Text | sudo tee /dev/ttyAMA0
    Text
    Terminal2 (paralell laufend):
    pi@knxGateway1:~ $ sudo socat -x /dev/ttyAMA0,raw,echo=0,crnl PTY,link=/dev/ttyV1,raw,echo=0,crnl

    So auch kein Verkehr auf ttyAMA0

    Code
    Terminal1:
    root@knxGateway1:/home/pi/projects/cpphttplib/build# echo Text > /dev/ttyAMA0
    Text
    Terminal2 (paralell laufend):
    pi@knxGateway1:~ $ sudo socat -x /dev/ttyAMA0,raw,echo=0,crnl PTY,link=/dev/ttyV1,raw,echo=0,crnl

    Moin alle zusammen,


    ich habe ein c++ programm geschrieben, das ein Webserver startet und auf einem bestimmten Port lauscht.

    Wenn ein url aus dem selben Netzwerk wie die Pi geschickt wird, werden bestimmten Daten an die ttyAMA0 geschickt in der Form:

    Code
    sudo echo -en '\x68\x09\x09\x68\x53\xF6\x00\x08\x01\x34\x10\x01\xF0\x87\x16' > /dev/ttyAMA0

    Das Ding funktionierte Wochen lang, mit dem Befehl

    Code
    sudo socat -x /dev/ttyAMA0,raw,echo=0,crnl PTY,link=/dev/ttyV1,raw,echo=0,crnl

    konnt ich auch sehen was in der ttyama0 passiert.

    Nun habe ich das Gerät in ein andere Netzwerk angeschlossen und im c code die ip-adresse dementsprechend angepasst.

    Der server startet wie immer und wenn ich url befehle schicke sehe ich auch das mein code funktioniert, denn ich sehe mein callback im browser ABER wenn ich die ttyAMa0 sniffe, kommen die Befehle nicht mehr raus.

    Ich habe direkt auf die Konsole Befehle wie

    Code
    sudo echo Text > /dev/ttyAMA0

    da passiert aber nichts.


    Vermutet ihr warum diese serielle port nicht mehr geht, obwohl ich keine Konfiguration geändert habe?


    danke!


    dreamshader

    Vielen Dank euch alle!,


    ich habe eine Lösung gefunden.

    Mit dem Befehl

    Code
    sudo socat -x /dev/ttyAMA0,raw,echo=0,crnl PTY,linkdev/ttyV1,raw,echo=0,crnl

    kann ich sehen was auf tty passiert und in welche Richtung

    Output:

    Ein eigenes Programm habe ich schon.

    Das Problem ist eigentlich, dass wenn ich den o.g. Befehl in meinem c++ programm implementiere mit der Funktion system() schaltet das Licht nicht.

    Wenn ich den Befehl direkt in die Konsole eingebe, dann ja.

    Deswegen wollte ich sehen wie der frame in beide Fälle aussieht

    Moin alle zusammen,


    ich arbeite mit der Raspberry Pi3b und einem Shield, die als Busankopplung zu einem Bussystem dient.

    Die Verbindung zwischen beide Geräte erfolg über die serielle Port ttyAMA0.

    Ich schicke solche Frames über die Konsole, um z.B. einen Licht zu schalten (das Licht schaltet auch, bzw. die Kommunikation besteht):


    echo -en '\x68\x0C\x0C\x68\x53\x11\x00\xBC\xE0\x00\x00\x0A\x00\x01\x00\x80\x8B\x16' > /dev/ttyAMA0


    Ich würde nun gerne lesen was auf dem -tx dieser Schnittstelle passiert, bzw. die Frames lesen, die ich auf dem Bus schicke.

    Kann ich es irgendwie über den Terminal sehen, oder sollte ich irgendein Tool installieren?


    Danke!!

    Golpe

    es läuft ein SDK von einen Hersteller um mit KNX Anlagen kommunizieren zu können. Ein bisschen rudimentär C++ Code habe ich selbst implementiert, so dass ich eine Lichtszene Über URL´s steuern kann.

    Damals hatte ich Problemen bei der Inbetriebnahme dieser SDK und habe ein bisschen Angst das ganze Platt zu machen.


    Im Endeffekt, es ist die Raspi mit einem Shield, die als KNX-Busankoppler dient, um Knx Geräte entwickeln zu können (ich will ein KNX-Gateway entwickeln).

    Vielleicht sollte ich mir ein zweites Raspi und zweites Shield besorgen und das ganze erneut einzurichten, vor ich das ganze Platt mache. Muss ich es sowieso igwann. machen...