NEWS
Daten per Serieller Schnittstelle übertragen
-
@bavarian Was ich allerdings nicht verstehe - wenn Du Strings verschickst - warum dann keine JSON Strings.
Wenn der JS Code hier frei sit mit dem strcmp - da können wir doch das ganze Array schicken und das auf der Empfängerseite anlysieren? -
@bavarian So ansonsten habe ich es jetzt mal so hingebracht, dass das Array in einen Puffer geschrieben wird.
Diese Meldung
bekommst Du von der serial out Node - wenn Du einen Buffer schreiben willst, weil Buffer und String sich nicht vertragen.\n ist ja das Zeilenvorschubzeichen. Wenn Du das unbedingt brauchst, damit was geschickt wird, dann kann man das HEX eintragen und dann gibt es auch die Fehlermeldung beim Buffer nicht mehr:
Hier der Flow - ich hab allerdings für den Bool auch den Type Byte genommen - anders mag das Teil nicht.
Als Type Bool den letzten Parameter im Array für die Buffer Node zu verwenden funktioniert anscheinend nur, wenn das insgesamt ein Array ist.
In der Hilfe zur Parser Node steht es dann auch wohl so drin, das hier auch ein Array ausgegeben wird.
Im Prinzip bekommt man den Puffer auch ohne buffer Node hin - man muss allerdings Strings getrennt vom übrigen Array behandeln:
Hier der Code der Function Node:
var buffArr = []; var topic = msg.payload.shift(); buffArr.push(Buffer.from(topic)); buffArr.push(Buffer.from(msg.payload)); msg.payload=Buffer.concat(buffArr); return msg;
-
Ich kann auf der Arduino Seite nichts ändern, nicht weil ich nicht will sondern weil es sonst zu einer anderen Software nicht mehr passt.
Das mit dem \n ist gelöst mit 0x10 kann ich die Strings senden und bekomme auch mit dem Buffer keine Meldung mehr
Leider sehen aber auch nur die Debug Meldungen gut aus, es geht nichts raus.
Da der Arduino verbaut ist, sehe ich die RX/TX LED nicht, also noch eine Arduino genomme, Programm drauf und LED's ansehen.
String mit 0x10 angehangen und LED blinkt auf.
Ansonsten bleibt die RX LED aus, Debug Message kommt aber Serial passiert nix.Ich denke bevor ich mit dem Inhalt der Nachrichten weiter mache die ich senden will, sollte ich erstmal sicherstellen, dass da
aus dem Buffer auch Seriell gesendet wird. -
@bavarian Probier mal statt 0x10, 0x0A ich hab da dezimal statt hex 10 dezimal 10 genommen, sorry.
Alternativ auch CR - habe ich auch gelesen - also 0x0D.
-
DAS war es !
Statt \n eben nicht leer lassen sonden 0x0a sendenIch hab es nun als im Inject als JSON ["MSS:",89,27,1] das klappt, nun wird das ja von mir per klick ausgelöst.
Der JSON Datenpunkt sieht ja genauso aus, ändert sich aber ein Wert im DP wird nicht automatisch gesendet.
Muss ich hierzu noch was beachten?
Irgendein trigger setzten, wenn sich was im DP ändert bitte senden? -
@bavarian Na statt der Inject Node nimmst Du doch eine iobroker In Node und wenn der Wert neu geschrieben wird, dann triggert die Node auch. Vielleicht hast Du in der iobroker In Node was ausgefiltert zum Beispiel ACK=true oder so.
Du musst halt jetzt den ganzen Flow nehmen - iobroker in- json Node die das in Objekt konvertiert und dann halt in den Buffer Maker oder function Node.
Wenn all Events in der iobroker In Node spezifiziert ist, dann wird auch gesendet, selbst wenn sich gar nichts ändert und der Wert nur neu geschrieben wird.
funktioniert bei mir einwandfrei - hier der gesamte Flow - nur das halt bei Dir hinten die serial Node dranhängt:
Du sendest ja nicht einzelne Werte im JSON - sondern immer den Datenpunkt und der enthält ja den kompletten JSON String.
-
-
@bavarian Na freut mich - zusammen bekommt man das meist hin - auch wenn ich kein Arduino Board habe.
Ich lerne ja auch immer - nächstes Mal weiss ich dass man 0x0a in die serielle Node eintragen muss, wenn man Buffer überträgt - ausserdem habe ich mich ja wieder etwas mit der Buffer Node und der JS Buffer Funktion heute auseinandergesetzt. Dieses Wissen ist mir ja Gewinn genug und deswegen mache ich so was ja auch gerne, weil es mein eigenes Wissen und die Erfahrung vergrößert.
-
Wäre es auf diese Weise auch möglich einen Fingerprint Reader (zfm 20/40/60 etc) zu integrieren?
-
@hansi1234 sagte in Daten per Serieller Schnittstelle übertragen:
Es scheint wohl Libaries für Arduino bzgl. fingerprint zu geben - aber das müssen dann wohl Leute mit so einem Board sagen und wie die Befehle aussehen müssen. Es scheint aber üblich zu sein über die serielle Schnittstelle mit dem Board zu kommunzieren. Gibt auch im Netz einige Beispiele wie Fingerprint Sensoren an so ein Arduino angeschlossen wurden.
Ich kann dazu leider nichts beitragen.