Beiträge von googles

    Hallo,

    Ich könnte ein bischen Hilfe von den Entwicklern hier brauchen.

    Ich arbeite gerade an einem projekt, das meinen Solar Laderegler im Schrebergarten ausliest. Normalerweise wird an dem RJ45 Modbus anschluss ein Display angeschlossen, das die Daten dann Live Darstellt. Mit dem Programm ist es mir jetzt möglich, das Display zubetreiben (auch an einem anderen Standort), und zusätzlich noch die Daten anders zu verwerten.

    Habe für die Kommunikation zum Laderregler und Display die LibModbus verwendet. Musste dann aber feststellen dass alle Befehle von LibModbus verarbeitet werden, und im Falle von User Befehlen(So wie sie von meinem Display kommen) nicht Funktioniert. Musste LibModbus patchen um mit meinen Geräten reden zukönnen. Funktioniert zwar jetzt ganz gut, aber würde jetzt doch gern die kommunikation über Modbus selber übernehmen.

    Ich weiß jetzt aber nicht wie man die Befehle richtig separiert. In der Spezifikation ist die Rede von 1,5T bzw. 3T Timeout. Also wenn 1,5 Zeichen lang kein Zeichen kommt sollte man es ignorieren, und wenn 3 Zeichen lang kein Zeichen kommt ist die Übertragung beendet(genau diese Zeit sollte man auch warten bevor man Befehle annimmt).

    Habe jetzt aber von div. Libs den quellcode angeschaut, und keine hatte diese Timeouts implementiert, sondern hatte an Hand des Befehls gewusst wieviel sie empfangen müssen, und haben dann den Befehl mit CRC16 überprüft.

    wie aber setzt man jetzt diese Timeouts um?

    Sollte ich immer 1 Byte lesen und dann mit Select() einen Timeout definieren. oder soviel mit read() lesen bis die Funktion zurückkehrt und dann einen Timeout mit select()? oder wartet read() eine gewisse Zeit auf Daten? Oder evt. sogar Funktionen im RS485 Treiber?

    Ich habe dieses Konzept leider noch nicht verstanden und würde mich sehr freuen wenn jemand Licht ins Dunkel bringen könnte.


    mfg Thomas

    Danke für die Antworten.

    Habe leider nicht die möglichkeit mir den Pool selber anzuschauen.

    Wohne ungefähr 1000km weit weg in Österreich und bin erst im Juli oben.

    Sie hat mir aber Bilder geschickt vom Anschlussplan.

    Müsste aber laut oben verlinkten Manual seite 17 einer der anschlüsse A-D sein.

    wird also sicher auch die 110V für Steuerung Licht etc. benödigen.

    und die Pumpen an 230V 50Hz anschließen wird auch nicht funktionieren wie Beinhart schon erklärt hat.

    Im Internet Findet man leider fast grnichts bezüglich. konnte noch nichtmal nen Schaltplan finden.

    aber ich hänge mal die Bilder an die sie mir geschickt hat.


    mfg Thomas

    Hallo

    Meine Schwägerin ist nun wider zurück aus Amerika und hat ihren wirlpool Maax Spas 811 mit gebracht.

    Jetzt will sie ihren Wirlpool naturlich wieder benutzen und fragte mich wegen des Anschlusses.

    Bin zwar Elektriker aber da war ich dann auch ratlos.

    In Amerika haben sie ja 110/230v 60hz.

    Die Pumpe ist auch für 230v 60 hz gebaut.

    Lt. Datenblat Anschluss

    230V 2PH-N-PE

    also L1 -> N = 110V

    L2 -> N = 110V

    L1 -> L2 = 230V

    und natürlich mit 60 Hz

    Kennt jemand ne möglichkeit das ans 230V Netz 50Hz anzuschließen?

    Vielen Dank

    Thomas

    Danke aber habs gerade gelöst :)

    Hab am OVPN Server einfach eine Route ins 192.168.1.0 Netz hinterlegt. Und nach einem Reboot nachdem alle meine verpfuschten IPTables regel wieder weg waren klappts auch mit dem WEBIF.


    net.ipv4.ip_forward=1 war schon aktiviert weil ich schon mal von meinem alten umts Stick das WEBIF weitergeleitet habe.


    Aber wundert mich schon dass ich keine IPTables regeln brauchte.


    mfg Thomas

    Das Vpn vom router zum raspberry funktioniert. Habe erst jetzt die webbox angeschlossen um meinen Wechselrichter im Garten zu überwachen. Und da sich die webbox von einem dhcp die ip holt habe ich dnsmasq am Raspberry installiert.

    Der Raspberry ist mit einem umts stick mit dem internet verbunden und dauerhaft beim router als OVPN Client online. Und als Router habe ich den Raspberry auch nicht konfiguriert. Wie könnte ich jetzt die nötigen Routen am raspberry konfigurieren. Reichen einfache ip tables Regeln nicht?

    Wenn ich jetzt sagen würde: leite 192.168.34.100:80(tun interface am raspberry) an 192.168.1.100:80 weiter(webbox an eth0 vom raspberry angeschlossen) reicht das nicht oder. Hab das mit den Routen noch nie richtig verstanden.

    Mfg Thomas

    Hallo

    Habe ein Problem die richtigen Iptables Regeln zu finden um vom Heinetz auf ein Webif im Remotenetz zuzugreifen.

    Das Netz sieht wie folgt aus:


    Clients Router OVPN Tunnel Raspberry Webbox
    192.168.35.0 Netz
    OVPN Server 192.168.34.1
    OVPN Client 192.168.34.100
    DHCP Server ETH0 192.168.1.1
    192.168.1.100
    an eth0 vom Raspberry angeschlossen


    Jetzt möchte ich gerne aus dem Clientnetz (192.168.35.0) auf die Webbox die am raspberry angeschlossen ist zugreifen(192.168.1.100:80) wenn ich also im browser 192.168.34.100:80 eingebe oder auch anderer port.

    Hab schon bischen rumexperimentiert mit dem Resultat, dass ich nun 192.168.34.100 nur mehr vom Router erreichen kann.

    mfg Thomas

    semi
    Ok das muss ich mir merken klingt plausibel wenn auch im ersten Moment etwas kompliziert.


    mini73
    Diese Funktion kenne ich schon mir ist nur nicht ganz klar wann es nötig ist auch Endianess zu achten.
    Dazu ein beispiel:
    Ich will diesen Wert: uint16_t = 0x0110 versenden.
    lege den jetzt in einen Buffer:
    char Buffer[2] = {0x01, 0x10] dazu verwende ich dieses Makro:

    Code
    #define MODBUS_SET_INT16_TO_INT8(tab_int8, index, value) \
        do { \
            tab_int8[(index)] = (value) >> 8;  \
            tab_int8[(index) + 1] = (value) & 0xFF; \
    } while (0)


    Beim empfänger liegt dieser Wert genauso im Buffer und wir dann mit diesem Makro:

    Code
    #define MODBUS_GET_INT16_FROM_INT8(tab_int8, index) ((tab_int8[(index)] << 8) + tab_int8[(index) + 1])


    Dann liegt der Wert doch beim empfänger genauso vor:
    uint16_t = 0x0110


    wie der Wert doch jetzt im Speicher des jeweiligen Systems liegt ist doch in diesem Fall egal die binär Minipulationen müssen doch gleich Funktionieren. Natürlich setzt das Vorraus dass mein Protokoll die Daten in einem bestimmten Format (in diesem Fall Big Endian) versendet.
    Oder habe ich da was falsch verstanden?


    mfg Thomas

    Danke für die Antworten.
    Zum System:
    Der client im Garten ist ein Raspberry und als Server werde ich vmtl. Mein Qnap Nas verwenden.
    Also alles Linux gcc.
    Beim Modbus protokoll werden die einzelnen Register als Big Endian versendet und so würde ich sie auch weiter versenden.
    Finde ich auch Logischer.
    Das Display ist übrigens auch wieder mit Modbus angeschlossen. Aber da ich die Daten auch aus der Ferne abfragen möchte, muss ich im prinzip eine Art Proxy bauen.
    Da ich nicht Display(Master) und Computer(Master) gleichzeitig betreiben kann.
    Würde Später dann auch die Gelegenheit Nützen um ein bar Werte, die am Solarladeregler nicht so aussagekräftig sind, durch die des Batterie Monitors zu ersetzen.
    Aber evt. Werde ich den Code später auch mal veröffentlichen also sollte das auch auf unterschiedlichen Endianess funktionieren.


    Angenommen ich mach das alles im Hauptthread dann muss ich bei jeden Schleifendurchgang mit Select den Socket überwachen, und dann mit accept() die verbindung annehmen, und der Client wartet beim connect bis der Server wieder beim accept() angekommen ist?


    Zum Protokoll:
    Den Anfang und das Ende mit einem Byte zumarkieren wird schwierig da im Prinzip von 0x00 bis 0xFF alles gesendet werden kann


    Muss ich in der Hauptschleife eigentlich auch ein sleep ö. ä. Einbauen damit der Prozessor nicht komplett ausgelastet ist?


    Mfg Thomas

    Hallo
    Ich Arbeite gerade an meinem ersten C++ Programm, einer Client Server Anwendung um Messdaten eines Solarladereglers auszulesen und speichern und an einen Server und oder Display weiterzuleiten (Modbus Protokoll).
    Gewisse Sachen verstehe ich aber nicht und bräuchte dafür bitte eure Hilfe.


    1. Ich Lese vom SolarRegler Die Werte als Register (Modbus) in einen Buffer *uint8_t und Speicher sie in einem Array uint16_t. Ein Register hat ja 2 Byte.
    zum Umwandeln der Werte von x bit in y bit verwnde ich diese Funktionen aus der LibModbus:



    zum versenden übers Netzwerk würde ich sie auch mit hilfe der Funktionen wieder in einen uint8_t bzw. char Buffer Legen.
    die gegenseite sollte sie dann analog zum Client wieder in uint16_t umwandeln und Speichern.


    Muss ich da wegen Endianess etwas beachten?


    Ich bin der meineung dass das nur wichtig ist bei Werten größer ein Byte damit sie nicht in einem int16_t buffer "falsch" abgelegt wird.



    2. Ich würde zum versenden über Netzwerk gern mein eigenes Protokoll entwerfen. Da die Werte aber alle Binär vorhanden sind will ich sie auch so versenden wie oben beschrieben.
    Sollte ich dann im Header zum beschreiben was zu machen ist bzw. was in der Payload ist Text verwenden oder sollte besser alles Binär gesendet werden?


    zb.: 8bitt -> Action 16bit -> Message lenght 16bit -> Payload Type 16Bit -> Register StartAddress 16bitt -> Register Count...


    Sollte ich auch bevor das Protokoll ausgewertet wird Message Lenght überprüfen ob alles empfangen wurde und evt. mit einem weiteren recv den fehlenten Rest and den Buffer anhängen?
    wie lange bleiben eigentlich die Daten die empfangen werden in dem Socket.


    3. Wie sieh es mit Thresds aus? Sollte ich den Server in einem eigenen Thread laufen lassen. oder kann er auch als Teil der Hauptschleife laufen, in der dann auch noch evt. Daten wieder an das Display gesendet werden.
    Für den Client wollte ich eigentlich keine Threads verwenden da er zuerst sowieso die Daten vom Solar Lade Regler liest und Speichert und dann über Netzwerk an den Server sendet. Oder sollte ich da auch Threads verwenden.
    wenn Ja welche sollte ich verwenden POSIX oder die Thread Class aus c++?


    4. Was muss beim Multi Threading beachtet werden?
    Ich habe eine Klasse memory die die ganzen Register in Arrays speichert und die natürlich zum versenden auch wieder ausgelesen werden müssen. Muss ich da mit mutex Arbeiten?
    Nur beim Schreiben oder auch beim Lesen?


    So das wars jetzt erst mal. Ist nicht leicht als Neuling alle Infos richtig zu interpretieren.
    Hoffe mir kann einer von den Profis die ein oder andere Frage beantworten.
    mfg Thomas

    Hab jetzt doch noch mal angerufen. Der Service Mitarbeiter hat zuerst auch gemeint dass es mit diesem Modem nicht möglich sei.
    Hat sich dann aber doch erweichen lassen mir ein neues Modem zugeben bei dem das Bridgen noch Funktioniert.
    Hoffe das klappt jetzt auch reibungslos, und sie haben bei uns eines auf Lager.
    Ich hasse diese Gerätezwang seitens der Provider. Diese Router taugen vielleicht für std. User die nur Surfen wollen.


    Mfg Thomas

    Habe auf anraten des Service Center von UPC mein Modem getauscht. Mir wurde dort auch gesagt dass es kein Problem ist meinen Router weiterhin zu verwenden.
    Modem ist ein Technicolor TC7200.U
    Daheim musste ich aber festellen dass es die Option wie im Internet beschrieben bei mir nicht gibt.
    Habe dann beim Service angerufen und mir wurde gesagt sie müssen es erst freischalten(kann bis zu 48 stunden dauern).
    Nach drei Tagen aber immer noch nichts. Hab dann noch mal angerufen und mir wurde gesagt dass dieses Modem das nicht kann.
    Hatte daweil meinen Router als DMZ eingestell und Serverdienste funktionieren so. Also hab ich es so stehen lassen.
    jetzt ist mir aber aufgefallen dass Netflix über die Amazonbox nicht mehr richtig funktioniert. (lange Ladezeiten alle 5 min aussetzer).
    Ich könnte mir denken dass es am doppelten NAT liegt.
    Kennt jemand dieses Modem und weiß evt. wie man es doch in den Bridge mode bekommt.(glaube nich dass das Gerät das nicht kann)
    Oder soll ich nochmal Anrufen und ein neues Modem verlangen?


    mfg Thomas

    Zitat von »googles«



    das ist ganz normal das ein Leiter der nicht angeschlossen ist irgend ein Potential führt aber sicher nicht 0V wie es sein sollte


    das ist soweit richtig, das Leiter induktiv oder kapazitiv auch etwas aufsammeln und dadurch Potential führen. Hat aber in diesem Fall nichts zu tun denn:


    Zitat von »x-jojo«



    Dies tritt aber nur auf, wenn meine Senseo eingesteckt ist, bei anderen Geräten mit Schukostecker nicht.


    bedeutet für mich, das die Senseo ursächlich hierfür ist . Nun kann man streiten, ob das ein Fehler ist "Ein Fehlerstrom ist ein elektrischer Strom, der aufgrund eines Isolationsfehlers über eine gegebene Fehlerstelle fließt (IEV 603-02-27 )"
    es könnte auch über die Störschutzkondensatoren mit eingeschleppt werden. Das ist aber auch nicht das Problem, da solche Ströme nur wenige Milliampere betragen, die man körperlich auch garnicht wahr nimmt. Jedoch wird diese Spannung über 50 Volt liegen, erst darüber zündet die Glimmlampe im Phasenprüfer


    Ist sehr wohl gefährlich. Habe das schon ofter gesehen wenn bei einem Gerät die Erdung nicht angeschlossen ist und beide berührt werden (Metallteile) kann mann das däutlich spüren.
    Ist sozusagen auch eine Art Potentialausgleich. Schlimmer als die Spannung auf Erde ist eigentlich dass es bei den unterschiedlichen Stromkreisen / Steckdosen eben ein anderes Potential anliegt.
    Wenn jetzt z.B. alle Geräte z.B 100V auf Erde führen dann würde nicht passieren wenn man sie angreift.
    Lass also zuerst diesen Fehler beheben. Kaffeemaschiene wird vermutlich keinen Defekt haben das würde bei ziemlich jedem Gerät in der Küche passieren.
    mfg Thmas

    Kabellänge ist nur 5m und Gnd ist eigentlich auch mit im kabel.
    Als Protokoll wird MODBUS verwendet habe aber beim Lesen leider festgestellt dass das ein Master Slave Protokoll ist. Und in diesem Fall muss das Display doch der Master sein, Der dem Laderegler sagt ich Brauch diese Werte.
    Dann währe aber der Raspberry der zweite Master der ebenfalls div. Werte anfordert. Es kann aber nur einen Master geben! kann man das irgend wie umgehen? ein Display für die lokale Auswertung wär schon schön.


    mfg Thomas

    Wenn du wirklich spannung auf dem Pe Leiter misst, ist er defininitiv unterbrochen. Wenn er angeschlossen ist hat er nämlich 0V und das ändert sich auch nicht durch ein defektes Gerät (Sicherung oder FI würden auslösen).
    Könnte auch gefährlich werden wenn z.b. ein Toaster, sind oben aus Metall, angegriffen wird und gleichzeitig z.B. Backrohr. Dann hasst du da auch eine Potenzial differenz und könntest einen Schlag bekommen.
    Hat übrigens auch nichts mit Fehlerstrom zu tun das ist ganz normal das ein Leiter der nicht angeschlossen ist irgend ein Potential führt aber sicher nicht 0V wie es sein sollte. Würde dir auch raten dringend einen Elektriker zu rufen.
    mfg Thomas

    "Mithören" geht problemlos wenn man den zusätzlichen Adapter einfach auf den Bus aufschaltet.


    Senden ist auch möglich, aber dann muss man sich streng an das im Bus gesprochene Protokoll halten.


    Muss erst mal die auf Github verfügbaren Programme für meinen Laderegler Testen.
    Glaube aber, dass ich erst eine Nachricht senden muss bevor ich die Daten empfangen kann. Mal schauen.
    Wie werden denn die Teilnehmer identifiziert? damit man auch weiß für wen welche Nachrichten sind?


    mfg

    Danke werde ich testen.
    Wenn man so liest ist der bus ja auch für mehrere Teilnehmer.
    Aber wie unterschritet man diese?
    Hast du einfach die zwei datendrähte an den dritten Teilnehmer verbunden?


    Mfg Thomas

    Hallo
    Ist es möglich einen rs485 bus an mehrere Teilnehmer zu verteilen?
    Habe nämlich einrn solarladeregler bei dem ich mittels cat5 patch kabel ein display angeschlossen habe(rs485).
    Habe mir aber auch rs485 usb kabel besorgt um auch am Computer die daten auszuwerten.
    Würde jetzt gern über einen Raspberry dauerhaft die daten speichern und gleichzeitig das display anschließen.
    Würde es funktionieren wenn ich einfach die 2 drähte a und b an beide geräte anschließe?
    Mfg Thomas

    Hallo
    Hat zwar jetzt nichts mit VDR zu tun, aber vielleichts gibts hier den ein oder anderen der sowas in Betrieb hat und mir helfen kann.
    Habe im Schrebergarten eine 300WP photovoltaik Anlage mit einer 140 Ah Batterie und hatte mir einen AEG SW1000 Wechselrichter gekauft, der jetzt leider den Geist aufgegeben hat.
    Da ich mit dem AEG nicht mehr zufrieden bin (ist schon mal ausgetauscht worden) bin ich jetzt auf der suche nach einem hochwertigeren Gerät das auch im Sommer dauerhaft meinen Kühlschrank versorgt und auch die Leistung für eine Kaffeemaschiene hat. Mit dem AEG funktionierte das zwar alles aber ich glaube dass diese Geräte nicht für den dauerhaften Einsatz gebaut sind.
    Sollte nach möglichkeit trotzdem nicht 500 -600€ überschreiten.
    Hat jemand mit solchen Geräte erfahrung, und kann mir eine empfehlung geben? (Bezugsquelle)


    mfg Thomas

    gestern noch gesehen: den als Kaskade zwischen LNB und Multischalter und du kannst bis zu 32 Tuner am VDR an einer einzigen Strippe betreiben


    http://www.amazon.de/dp/B0142VZTIK?smid=A3JWKAKR8XB7XF&tag=geizhalspre03-21&linkCode=df0&creative=22502&creativeASIN=B0142VZTIK&childASIN=B0142VZTIK


    Christian


    Oder du nimmst diese kaskade und schließt den MS dahinter an.
    Dann musst du auf den bestehenden Receiver nichts ändern weil sie weiterhin am MS hängen.
    Aber vielleicht brauchst du in Zukunft ja noch weitere Tuner.


    Staker Destacker könnten etwas Fehler anfällig sein weil die kompletten Sat Frequenzen
    Hinten auf gestapelt werden. Reicht dann bis 3800 MHz also wesentlich höhere Dämpfung im
    Kabel
    Mfg Thomas