stefandreyer / CODESYS-MQTT

MQTT client library for CODESYS, supporting all QoS
MIT License
109 stars 24 forks source link

Basic library version issue #50

Closed SaadSel closed 1 year ago

SaadSel commented 3 years ago

Hi stefan

I'm new to PLc programing, I installed the latest version of your MQTT library, but I have an issue with BASIC library ( PS : I installed ther Basic library in ur repos)

image

Thnaks in advance.

stefandreyer commented 3 years ago

Hi SaadSel,

this is the Basic version from codesys, I installed CODESYS 3.5.16.30. There I did get this Version.

You may try Download missing Librarays.

Which Codesys Version do you run?

BR Stefan

SaadSel commented 3 years ago

Thanks for the reply.

this is the version i use ( I tried both x64 and x32) : image

this is what happen when i try to download missing library : image

stefandreyer commented 3 years ago

This is strange,

but acually I work an a improved library. There i wand to use placeholders for such librarys. Then those problems should be less. please be patient, I think I'll release it next week.

BR Stefan

SaadSel commented 3 years ago

Thanks a lot Stefan. I will be waiting for the release of the new version for test

Westliff commented 3 years ago

Hallo Steffan,

erst einmal vielen Dank für die ganzen tollen Beispiele, gibt es Neuigkeiten zur neuen Version ? Ich habe den selben Fehler wie SaadSel. Denke da ist irgendwas mit der Oscat Basic Version falsch da diese einen sehr hohen Versionsstand bekommen hat.

Gruß Matthias

stefandreyer commented 3 years ago

Hi,

I think this will happens in the next days.

Hallo Westliff, OSCAT BASIC hat diesen Versionstand durch eine neue Version von 3S selber bekommen. Die haben noch was wegen den 64bit datentypen gemacht.

Grüße

stefandreyer commented 3 years ago

Hi,

sorry did take more time than I have ;)

new version is online, you shold be able to change the lib to your version, I did set a placholder for them.

Hallo,

ich habs nun umgesetzt. die Problematischen Bibliotheken haben nun einen Platzhalter, somit kannst du sie auf deine Version umlenken.

Grüße

Westliff commented 3 years ago

Hallo Stefan,

Vielen Dank für die Umsetzung :-)

es klappt auch alles soweit nur einen blöden Fehler werde ich nicht los.

image

Gruß Matthias

stefandreyer commented 3 years ago

Hi,

klingt ja super!

zu deinem Fehler, da hat sich eine kleine Inkonsitens eingeschlichen beim Wechsel zu SP16, 3S hat hier datentypen eingeführt, die vorher als Variablennamen durch OSCAT genutzt wurden. Schon krachts.

Also, entweder auf die aktuelle OSCAT BASIC wechseln, oder hier den Unterstrich in deiner OSCAT BASIC entfernen:

image

Grüße

Westliff commented 3 years ago

Hi vielen Dank,

denke der eigentliche Fehler ist behoben bekomme das Programm Fehlerfrei geladen.

der MQTT Client scheint auch zu leben allerdings bekomme ich den Public FB in der Demo scheinbar nicht ans Leben.

E3807C7A-25AC-4145-9248-EB161BA71490

Gruß Matthias

stefandreyer commented 3 years ago

Hi,

kannst du dein Projekt minimieren und posten?

Grüße

Westliff commented 3 years ago

Hallo ja kein Problem.

MQTT.zip

Gruß Matthias

stefandreyer commented 3 years ago

Hi,

schau ich mir mal an. Hatte es schon mal auf. CFC ist nicht so meine Welt...

Grüße

annD-annD commented 3 years ago

Hi Stefan,

noch mal wegen den Versionen von der Basic. Wenn ich es auf der 3S Homepage herunterlade, habe ich dort nach wie vor die Version 3.3.3.0. Wie bzw. wo kommt es zu dieser Version 3.5.16.0 mit geänderten Variablen? Deine Bibliotheken Building und Network zeigen auf diese 3.5.16.0 welche bei mir aber nicht nachgeladen werden kann. Ich müsste die Verweise darin manuell ändern.

Viele Grüße

stefandreyer commented 3 years ago

Hi,

die kamen bei mir mit SP16 Patch 3 mit.

image

Grüße

stefandreyer commented 3 years ago

Ich habe die auch schon mal raus gezogen,

weiß aber nicht ob ich die hier posten darf....

Grüße

annD-annD commented 3 years ago

Waren diese dann im Package Manager schon drinnen? Ich habe gerade 3.5 SP16 Patch 4+(64bit) installiert und danach alle Bibliotheken von dir ergänzt. Diese Basic ist nicht dabei bzw. ich kann sie auch nicht nachladen. Auf der Webseite ist sie offensichtlich separat auch nicht verfügbar.

Grüße

annD-annD commented 3 years ago

Offensichtlich ist ein neues Release 3.3.4 von Oscat angekündigt:

http://www.oscat.de/community/index.php/topic,5794.msg18215.html#msg18215

stefandreyer commented 3 years ago

Hallo,

na das wird ja spannend. 3S hat eigene Namen verwendet. das scheint jetzt mit denen von OSCAT zu kollidieren.

Grüße

hilddav commented 3 years ago

Hallo Stefan,

leider habe ich auch das Problem mit der Oscat Version 3.5.15.0

grafik

Ich nutze die MQTT Library 1.2.0.2 mit CodeSys (Eaton) V3.5.16 BF1

Nun habe ich schon eine Menge ausprobiert, aber leider bekomme ich das Problem nicht gelöst. Vielleicht hast du oder habt ihr ja auch noch eine Idee was man machen könnte.

Viele Grüße und ganz großen Dank für deinen Einsatz bei der Entwicklung! David

annD-annD commented 3 years ago

Hallo,

offensichtlich wurde von 3S jetzt eine Oscat_Basic in der Version 3.3.4.0 (was sich aber mit dem zukünftig angekündigten Release von Oscat überlappt) zum Download bereitgestellt, wo diese Variablen geändert wurden: LDT, LDATE, LTOD to LOCAL_DT, LOCAL_DATE, LOCAL_TOD. Das sollten wir so hinnehmen und in den anderen Bibliotheken anpassen (z.B. auch in der CommonTypes...). Ich habe es bei mir in der Oscat_Network und Oscat_Building auch so übernommen, damit sie sich fehlerfrei übersetzen lassen. Ich hänge beide gleich mal hier an.

@stefandreyer Leider kann ich deine MQTT 1.2.0.2 nicht ohne Fehler übersetzen: Fehler_MQTT_1202

Der _LDT-Fehler erfordert ein Umbenennen in der CommonTypes... , aber bei den anderen Fehlern blicke ich nicht durch.

Danke und viele Grüße, annD

network_1352_building_1002.zip

stefandreyer commented 3 years ago

Hi,

ja hier kollidiert gerade einiges. Ich lad dann mal ne neue Version hoch, auch bei der Common, in der ich mal die Namensräume gerade gezogen habe.

Ich schaue auch mal in meiner Basic die von 3S kam, nicht das ich da was rein gepfuscht habe ...

Wenn ja Lager ich das aus.

Grüße

stefandreyer commented 3 years ago

Ja, da sind ein paar sachen,

mache gerade eine BASIC Extension LIB, da packe ich das rein.

Grüße

stefandreyer commented 3 years ago

Guten Abend,

habe jetzt alle Bibliotheken auf 3.3.4.0 umgebogen. 3.5.16.0 ist nicht mehr auf meinem System installiert und läßt sich alles übersetzten. Deswegen musste ich eine weiter Bibliothek erzeugen, welche Funktionen enthält die in 3.5.16.0 da waren und in 3.3.4.0 nicht mehr... Aber so geht das mit der bei 3S verfügbaren Bibliothek. Dazu muss auch eine Andere Version der OSCAT_Network genommen werden, liegt auch bei mir.

Viel Spaß beim testen, gerne Rückmeldung wenns Funktioniert.

Grüße!

hilddav commented 3 years ago

Hallo Stefan,

vielen Dank, dass du dir das noch mal angeschaut hast. Leider hatte ich noch keine Zeit das in Ruhe zu testen, aber ich versuche es morgen und gebe dann direkt Rückmeldung.

Viele Grüße und noch einen schönen Abend!

annD-annD commented 3 years ago

Hallo Stefan,

danke für deine Mühe. Kann ich deine Basic_Extension auch irgendwo finden?

Vielen Grüße

stefandreyer commented 3 years ago

Hi,

Sorry, liegt jetzt im OSCAT Basic repository....

Grüße

Westliff commented 3 years ago

Hallo Stefan,

Danke für das umsetzen und die Arbeit die du investierst, die Bibiotheken ich habe gerade mal alle geladen und bekomme das Projekt von mir, mit deinem MQTT Client fehlerfrei übersetzt.

Grüße

stefandreyer commented 3 years ago

Hi annD

Danke für den wink mit der 3.3.4.0 von Oscat, so konnte ich wieder auf einen halbwegs vernünftigen Stand kommen. Es wird aber wieder eine 3.5.16.x geben, da in der 3.3.4.0 LREAL_TO_STRF fehlt. Da hat3S die falsche Basis für genommen. Dazu In deine Network und Building zu schauen bin ich leider nicht gekommen.

Klappt das so alles bei dir?

@Westliff kein Ding, man gibt halt was an Open Source zurück, was man auch selber nutzt. Meine Art des Spendens ;)

Grüße

annD-annD commented 3 years ago

Hi Stefan,

ich konnte die Fehler "IPC.ResultReceive" und "IPC.ResultSend" noch nicht beheben. Das muss ich mir morgen nochmal anschauen. Was sind die Unterschiede im IP_CONTROL von deiner Common zur normalen Oscat_Network?

Viele Grüße

stefandreyer commented 3 years ago

Hi annD

Meiner ist TLS fähig.

Deswegen ist der nochmal in der common drinnen.

Nehm Bitte die Network 1.3.5.2 von mir, ich habe da in der Struktur IP_C rumgeschmiert, hätte ich vielleicht erweitern sollen: image

Naja, ich brauche ja einen Grund für das nächste update ;)

Grüße

annD-annD commented 3 years ago

Danke, für den Hinweis. Ich kann jetzt deine MQTT und die Common fehlerfrei übersetzen - aber bei deiner Network schaffe ich das nicht: image

Schöne Grüße

stefandreyer commented 3 years ago

Hi,

ja, das kann sein... da bin ich noch nicht Fertig geworden ...

Ich denke das sollten ich/wir mal zusammenführen...

Also meine Network für MQTT deine für den Rest...

Grüße

annD-annD commented 3 years ago

... vielleicht sollte ich nur die geänderte Struktur in meine Network übertragen (wenn sonst keine Änderungen relevant sind). Diese kann ich nämlich direkt übersetzen.

Grüße

stefandreyer commented 3 years ago

Mach das mal,

dann hier rein, und dann teste ich mal. Wenn das passt, dann lade ich sie hoch.

Grüße

annD-annD commented 3 years ago

Hier habe ich nur diese IPC Struktur ergänzt (und mal auf Version 1.3.5.3 erhöht):

oscat_network_1353.zip

annD-annD commented 3 years ago

... es wäre schön wenn die Oscat_Basic u. Network möglichst unverändert bleiben, damit im Falle eines Updates seitens Oscat das Nachziehen in Codesys 3.5 keinen großen Aufwand macht. Alle Erweiterungen wären optimal in einer deiner Bibliotheken (z.B. Common).

Danke und viele Grüße, annD

stefandreyer commented 3 years ago

Hi,

alles klar, ich werd mich mal ran machen.

Vielen Dank!

stefandreyer commented 3 years ago

Das mit dem Ändern sehe ich auch so.

Ich versuch mal die Struktur ausserhalb von der Network zu platzieren. sollte per extends klappen.

Grüße

Westliff commented 3 years ago

Hallo Stefan,

sagt dir "Dereference of invaild pointer" etwas ?

image

            ------ Build started: Application: CODESYS_Control_for_Raspberry_Pi.Application -------
            Typify code...
            Generate code...
            Generate global initializations...
            Generate code initialization...
            Generate relocations...

[WARNING] mqtt, 1.2.0.3 (stefan dreyer): SetMqttInOut [MQTTSubscribeNested](Line 1): C0410: COMPATIBILITY WARNING: A write Access to a Property of type REFERENCE calls the SET-Accessor for versions < 3.5.10.0 and writes the reference, but calls the GET-Accessor for versions >= 3.5.10.0 and writes the value! Use the operator REF= if you want to assign the reference. [WARNING] mqtt, 1.2.0.3 (stefan dreyer): SetNeedCallPointer [MQTTSubscribeNested](Line 1): C0410: COMPATIBILITY WARNING: A write Access to a Property of type REFERENCE calls the SET-Accessor for versions < 3.5.10.0 and writes the reference, but calls the GET-Accessor for versions >= 3.5.10.0 and writes the value! Use the operator REF= if you want to assign the reference.

Grüße

stefandreyer commented 3 years ago

Hi,

ja, da wird ist für MQTT_IN_OUT keine gültige Refererenz(Pointer) vorhanden. Das muss mit SetMqttInOut() gemacht werden. Deswegen verläßt er den FB in Zeile 3 damit es keine Laufzeitfehler gibt.

Grüße

Westliff commented 3 years ago

Hi,

ja, da wird ist für MQTT_IN_OUT keine gültige Refererenz(Pointer) vorhanden. Das muss mit SetMqttInOut() gemacht werden. Deswegen verläßt er den FB in Zeile 3 damit es keine Laufzeitfehler gibt.

Grüße

Hi Stefan,

kannst du mir auf die Sprünge helfen wo ich das Eingeben muss stehe gerade was auf dem Schlauch.

Grüße

stefandreyer commented 3 years ago

Hi,

für dein Publisher muss es sowas geben:

image

sub1 gegen birthMessage ersetzten

Grüße

stefandreyer commented 3 years ago

Hi annD

Die 1.3.5.3 Network von dir ist die Erste auf meinem System die sich sober übersetzten läßt ;)

Ich habe die IP_C Struktur wieder zurück geändert und in der Common erweitert. somit kann die Network unverändert bleiben.

Ich werd noch ein Paar testes machen, die Versionen bereinigen und dann Veröffentlichen. im MQTT Client habe ich auch noch was geändert, das sich die dynamische Speicher allokierung nicht mehr so beschäftigt, wenn der Broker mal abschmiert.

Grüße

Westliff commented 3 years ago

Hallo Stefan,

nochmal vielen dank es Funktioniert jetzt alles. In dem Projekt > GreatExampleOfAdvantagesCFC habe ich nur zwei kleine änderungen vornehmen müssen.

für die birth Message fehlte der FB in der MQTT_Stuff_init image

und für das anschließende Publish eine verbindung des connectRisingQ Inputs im MQTT_Stuff image

jetzt geht es ans probieren mit deiner Struktur die Sonoff/Tasmota switche einzubinden.

Dank & Gruß

stefandreyer commented 3 years ago

Hi,

ja sorry, ich habe die Beispiele noch nicht an de neue Version anpassen können. Weiter ist mir das CFC mittlerweile ein Graus. Ich mache eigentlich nur noch ST. Ich freue mich aber sehr, das es bei dir jetzt funktioniert. Falls du noch Probleme mit Tasmota hast, kannst du ruhig nochmal fragen. Ich selber nutzte Zigbee2MQTT. das läuft sehr gut.

Grüße

Westliff commented 3 years ago

Hi Stefan,

hast du evtl nen Tip für mich wie ich das letzte Topic POWER am besten anhänge ?

Würde die SONOFF (jetzt Stern) in die Räume verteilen allerdings ist ja dann das Topic (Stern) die letzte ebene beim MQTT und Tasmota schickt noch ein POWER hinterher.

image

Gruß

stefandreyer commented 3 years ago

Hi,

ganz kann ich noch nicth folgend, denke aber das ich hier ein ähnliches Thema habe. iobroker setzt ein Set an das objekt um es zu setzten. Deswegen habe ich 2 Strings: image Erledigen tu ich das in einer FB_init Methode mit: image

Solltest du meinen das du einen weiteren Subtopic meinst, würde ich einen FB dafür machen, der das mit reflection mit bringt, oder das in einer FB_Init methode anhängen.

Grüße

stefandreyer commented 3 years ago

Hi annD,

müsste jetzt so passen. die Network ist Orginal belassen, nur auf V3 portiert. IP_C_EXT habe ich in Common ausgelagert.

Grüße

Westliff commented 3 years ago

Hi,

ganz kann ich noch nicth folgend, denke aber das ich hier ein ähnliches Thema habe. iobroker setzt ein Set an das objekt um es zu setzten. Deswegen habe ich 2 Strings: image Erledigen tu ich das in einer FB_init Methode mit: image

Solltest du meinen das du einen weiteren Subtopic meinst, würde ich einen FB dafür machen, der das mit reflection mit bringt, oder das in einer FB_Init methode anhängen.

Grüße

Hi Stefan,

vielen Dank nochmal habe jetzt alle SonOff am laufen. 👍

Gruß