Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
Was sagt den die Doku zu Deinem Gerät zum richtigen Endian?
Bezüglich Endian ist in meiner Doku nichts erwähnt. Es wird nur erwähnt da je nach Abfragesoftware es einen Offset geben kann. Bildschirmfoto 2021-05-24 um 15.14.37.png
Zuletzt geändert von ChrisChros; 24.05.2021, 14:25.
Mit dem endian habe ich bisher noch nicht experimentiert. Was bewirkt E9 eigentlich, die Anleitung ist für mich als Laie nicht selbsterklärend. Werde ich aber mal testen.
Bin grade dabei zu testen einen uint16-Wert in bit-Werte zu zerlegen. Mal schauen ob das klappt.
UPDATE:
bezüglich den bit-Werte habe ich noch so mein Problem. Der Json-String sieht wie folgt bei mir aus:
Wenn ich das Register 40084 als unit16 auslesen bekomme ich den Wert 132 ausgeben, was auch korrekt zusein scheint. Beim Versuch dieses Register in seine bits zu zerlegen, bekomme ich bei deinem LBS keinen Json-Sting an A1 ausgegeben.
Zuletzt geändert von ChrisChros; 24.05.2021, 13:52.
Spannend. Lieben Dank für's testen und für Deine Rückmeldung. Und immerhin sprechen Sie schon mal miteinander... Den Rest bekommen wir auch noch zum Laufen.
Wie sieht denn E8 bei Dir aus für Register 40068?
Du bekommst mit 40066 richtige Werte? Hast Du mal mit dem Endian an E9 experimentiert mit Werten 0..3 (und richtigem Register). Sollte auch im LIveView gehen: E 1= 0. E9 setzen, E1 = 1. Da sind die 4 Optionen schnell probiert.
Wäre mir auch plausibel bei dem Fehlerbild. Was sagt den die Doku zu Deinem Gerät zum richtigen Endian?
Zuletzt geändert von saegefisch; 24.05.2021, 13:29.
saegefisch
ich habe deinen LBS auch mal installiert um mein E3/DC auszulesen. Verbindung wird soweit aufgebaut, nur kann ich aktuell mit den Werten nicht wirklich was anfangen.
Zu Testzwecken versuche ich aktuell nur einen Wert auszulesen, PV-Leistung, Register 40068 Bildschirmfoto 2021-05-24 um 10.55.08.png
Dabei wird ein Wert ausgegeben der nicht richtig sein kann. Vergleichen tuhe ich die Werte, die ich von dem E3/DC-LBS ausgegeben bekomme. Bildschirmfoto 2021-05-24 um 11.05.29.png
Eigentlich sollte der Wert 6997 sein, bei deinem wird aber nur 603 ausgegeben.
Ein Programm wir qModMaster kann ich von meinem Rechner nicht verwenden, da sich dieser in einem anderen Subnet befindet und das E3DC dann keine Verbindung zulässt.
Kannst du mir eventuell Hilfestellung geben wie ich mit deinem LBS an die richtigen Werte ran komme?
UPDATE:
Irgendwie scheine ich einen Offset von -2 zu haben. Ich muss bisher alle Registerwerte -2 nehmen um den richtigen wert zu bekommen.
Zuletzt geändert von ChrisChros; 24.05.2021, 12:20.
klasse! Danke für Deine Rückmeldung. Mittlerweile ist übrigens V0.3 da und hat die wunden Punkte hoffentlich nachhaltig geheilt, auf die Du mich gestupst hast. Funktional ist's aber egal, wenn E8 korrekt gefüllt wird.
Zur Systemlast: In der Tat war das fast meine größte Motivation, nach einer anderen Bibliothek zu suchen. Ich konnte nicht verstehen warum ein so banaler Prozess mir vergleichsweise auffällige "Sägezähne" ins CPU-Diagramm geschossen hat. Ich sehe dort auch den größten Vorteil, aber war zunächst unsicher, ob mein Eindruck sich auch in anderen Systemen so zeigt und habe es bewusst nicht so heraus gestellt bei der Vorstellung. Schön, dass es so auffällig war, dass es Dir ohne Hinweis auffiel! Das freut mich ganz besonders, dieses Ziel offenbar erreicht zu haben. Tatsächlich ist der Prozess kaum zu spüren, sofern man die Zeit an E4 nicht über Gebühr klein wählt.
Die andere Motivation war, dass ModBus eigentlich ein Standard ist und - wie z.B. MQTT - eigentlich (SW-architektonisch) keine spezifischen LBS brauchen sollte. Wenn es den unbedingt spezifisch sein soll, dann dahinter. Aber die größte Freiheit hat man, mit ein paar eigenen nach gelagerten "Division/Konstante" und "Wenn-dann-sonst VARIABEL", denn...
... ich wollte im LiveView so flexibel sein, "mal eben kurz" und so einfach wie möglich neue Register zu versuchen, die man in der Doku findet. Denn die meisten Geräte haben eine Info-Schatz, den man sonst nicht hebt - siehe z.B. die ganzen Status-Infos des SMA-SI zum Zustand von System und Netz.
Wie immer: Sehr gerne!
Du hast mir gestern und heute ein paar Mal ein Lächeln damit geschenkt.
Ich bin dankbar für die Challenge. Hat die ein oder andere Unschärfe ans Licht gebracht und vor allem die beiden Code-Ergänzungen.
Aber noch cooler ist, wenn Du jetzt auch Werte hast. Bin sehr gespannt auf Deine Rückmeldungen der nächsten Tagen zu Stabilität, Robustheit oder auch Änderungswünschen.
Nachtrag: V0.2 ist online - geändert sind nur die Prüfungen auf E8. Funktional kein Unterschied, wenn E8 korrekt versorgt wird. Daher keine Not für ein Update.
Zuletzt geändert von saegefisch; 20.05.2021, 17:54.
Grund: Nachtrag
Ich liebe deine Doku und deinen vielen Text, das weißt du
Der Inhalt ist super, nur die Struktur für jemanden, der nicht im Thema ist, ist bei dem LBS echt "ungewöhnlich" im Vergleich zu anderen LBS. Ich denke das war der Hauptgrund, wieso ich einiges übersprang. Und ja, manchmal ist meine Euphorie zu extrem und unbedacht
Aber ich habe ihn nun am Laufen den Baustein Gerade einen ersten Output generiert!
Werde ihn morgen weiter ausbauen auf alle relevanten Werte
Die Installationsanleitung ist sehr bewusst von mir ganz hinten. Weil die brauche ich nur ein Mal oder ganz selten. Die stört vorne - zumindest geht mir das so. Ich find's schon okay, dass man mal ganz durch scrollt und beim Wort Installation zuckt. Ich strukturiere ja schon viel mit Formatierung. Werde aber mal vorne eine Hinweis auf die Installation machen... guter Hinweis
Tatsächlich gebe ich mir bei meiner Doku stets viel Mühe, um Fragen durch bereits gelieferte Antworten und Informationen vermeiden zu helfen. Diese Dinge sind bei mir nie grundlos. Ich mag Doku und Transparenz. Ja, okay, ich mach vielleicht öfter ein wenig zu viel Text... Aber ich bin für umfassende Anleitungen stets dankbar und gebe nur, was ich selber schätze. Was Du willst zu lesen haben, das füge auch anderen zu...
Is' jetzt wirklich nicht bös' gemeint, aber das Lesen meiner Anleitung ist zumindest dieses Mal nicht Deine Stärke gewesen... Du hättest Dir viel Zeit erspart und schnellen Erfolg geschenkt. Es gibt ein eigenes Kapitel für Typen-Definition. Entweder hast Du nicht gut gelesen oder ich habe nicht gut erklärt. Bitte lass' mich wissen, wenn es missverständlich ist:
PS: Oh, da ist tatsächlich ein Buchstabendreher in der Anleitung, dort steht fälschlich "unit32"... danke auch für den Hinweis! Wird in V0.2 korrigiert
Nachtrag: Mit V0.2 werden Exceptions bei der Register-Parametrisierung auch abgefangen. Daher gut, dass Du darauf gestoßen bist, dass macht den LBS robuster. Das Script oben habe ich auch ergänzt. Bei einem falschen Typ kommt jetzt
Code:
FEHLER: empty or unknown type for address given
Zuletzt geändert von saegefisch; 19.05.2021, 22:03.
Grund: Nachtrag
habe dann endlich in dem LBS die Anleitung zur Installation gefunden Verbesserungstipp saegefisch : Pack den Teil der Installation unbedingt an den Anfang des LBS, man übersieht dies sonst sofort.
Ich habe das Testscript mal probiert und bekomme diese Ausgabe:
Code:
[root@edomi php]# php /usr/local/edomi/main/include/php/modbus-tcp-client/test.php
Array
(
[0] => Array
(
[address] => 40000
[type] => u32
[name] => Date&Time
[uri] => 10.0.20.101:502
[unitId] => 2
)
)
PHP Fatal error: Uncaught ModbusTcpClient\Exception\InvalidArgumentException : empty or unknown type for address given in /usr/local/edomi/main/include/php/modbus-tcp-client/vendor/aldas/modbus-tcp-client/src/Composer/Read/ReadRegistersBuilder.php:110
Stack trace:
#0 /usr/local/edomi/main/include/php/modbus-tcp-client/vendor/aldas/modbus-tcp-client/src/Composer/Read/ReadRegistersBuilder.php(77): ModbusTcpClient\Composer\Read\ReadRegistersBuilder->fromArray(Array)
#1 /usr/local/edomi/main/include/php/modbus-tcp-client/test.php(32): ModbusTcpClient\Composer\Read\ReadRegistersBuilder->allFromArray(Array)
#2 {main}
thrown in /usr/local/edomi/main/include/php/modbus-tcp-client/vendor/aldas/modbus-tcp-client/src/Composer/Read/ReadRegistersBuilder.php on line 110
Mein Modbus-Gerät ist über andere Wege erreichbar, daher kann ich dies auf jeden Fall als Fehler ausschließen.
wenn ich nun den composer starte, läuft er durch und erstellt auch den Ordner vendor, aber nicht den Ordner modbus-tcp-client....
Zu Deiner Nachricht von vorhin... mir scheint weiterhin, dass Du von meiner Installationsanleitung in der Hilfe des LBS abgewichen bist. Denn den Ordner bekommt man automatisch mit
Code:
[...]
cd /usr/local/edomi/main/include/php
git clone https://github.com/aldas/modbus-tcp-client
[...]
erst DANACH bemüht man den Composer mit der Library. Erst ab dann ist alles da und dem Composer bekannt.
Ab dann könne alle künftigen Updates erfolgen mit composer require aldas/modbus-tcp-client (einzeln) oder composer update (alle installierten; sofern es denn mehrere sind). Mir scheint, Du hast eine Abkürzung versucht...
Zuletzt geändert von saegefisch; 18.05.2021, 23:55.
Leer an E8 habe ich ganz offensichtlich noch nicht abgefangen (guter Hinweis -> todo für mich), aber Du musst schon irgend was zum Futter geben.
Zumindest 1...
Register (zu Deinem Gerät passend),
Name(beliebig),
Format (passend zum Register laut Doku Deines Geräts --> siehe hierzu LBS-HIlfe zu den Typen)
z.B:
Code:
30775;"Leistung [W]";int32
Wenn Dein Gerät ein SMA ist, kann mein Krams passen, aber für jedes andere Gerät wird's andere Register brauchen - vermute ich. Doku des Herstellers...
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Einen Kommentar schreiben: