NEWS
[gelöst] SerialPort-Adapter
-
Ja das ist gut. Wie sieht denn der Script aus ? `
Wolltest Du nicht selber programmieren? :?Ich habe die Testversion noch etwas überarbeitet und von unnötigen Ballast befreit.
! ` > var string = msg.payload;
//String splitten
var s = [string.substr(0,2), string.substr(2,2),
string.substr(4,2), string.substr(6,2), string.substr(8,2),
string.substr(10,2), string.substr(12,2)];
//Umrechnung in Binär
var bin = [(parseInt(s[0], 16)).toString(2), (parseInt(s[1], 16)).toString(2),
(parseInt(s[2], 16)).toString(2), (parseInt(s[3], 16)).toString(2),
(parseInt(s[4], 16)).toString(2), (parseInt(s[5], 16)).toString(2),
(parseInt(s[6], 16)).toString(2)];
msg.bin = bin;
msg.s = s;
return msg; `
Wie man an die Variablen kommt ist hier ein wenig beschrieben: https://nodered.org/docs/user-guide/messages

-
Genau so sollte es sein, nur dann lernst Du auch damit umzugehen. Mich hatte wieder einmal der Ehrgeiz gepackt und dann kann ich einfach nicht mehr damit aufhören. Und selber Arrays anzulegen war für mich auch noch neu.
Wenn Du Fragen hast oder weitere Hilfe brauchst, dann einfach posten. Gerne auch wenn Du dein Projekt erfolgreich zu Ende gebracht hast.
Ich werde den Thread im Auge behalten. ;)
-
-
Gern geschehen.
Hier noch etwas Grundlagenwissen in Bezug auf die Definition von Variablen in Node Red. viewtopic.php?f=32&t=12558#p133250
-
Wie kann ich den empfangenen String in Variablen abspeichern damit ich es im ioBroker verwenden kann ? Ich hab versucht im ioBroker manuel neue Objekte einzufügen, doch das steht in den Node-Red gar nicht zur Auswahl an. `
Dazu habe ich folgende Antwort gefunden:
viewtopic.php?f=20&t=13217&p=139126&hil … en#p139126
http://www.iobroker.net/docu/?page_id=5 ... inzufuegen
Ich habe es eben mal kurz getestet und unter dem Javascriptadapter ein neues Objekt angelegt. Dann mit Node Red verbunden und schon wird der Wert im Objekt auch angezeigt.

Also so ganz verkehrt ist diese Aussage dann wohl doch nicht. :mrgreen:
Bevor ich das installiert habe, habe ich gelesen, dass man den ioBroker auch ohne Programmierkenntisse benutzen kann.
Das ist auch so. Beschränkt natürlich die Möglichkeiten.Und jetzt möchte ich möglichst nur noch von deinen Erfolgserlebnissen lesen. :D
-
Und jetzt möchte ich möglichst nur noch von deinen Erfolgserlebnissen lesen. :D `
Bin auf den besten Weg dahin :mrgreen:
Ist wahrscheinlich nicht die eleganteste Lösung, aber solange es funktioniert bin ich vorerst zufrieden.
6863_unbenannt1.jpg
6863_unbenannt.jpg
6863_unbenannt.jpg
6863_unbenannt1.jpg
6863_unbenannt.jpg
6863_unbenannt1.jpg
6863_unbenannt.jpg
6863_unbenannt1.jpg
6863_unbenannt1.jpg -
Bin auf den besten Weg dahin :mrgreen:
Ist wahrscheinlich nicht die eleganteste Lösung, aber solange es funktioniert bin ich vorerst zufrieden. `
Sieht doch echt gut aus und es funktioniert. Da kannst Du mal sehen, wie schnell es dann doch gegangen ist.Gratulation.
P.S. Da hat wohl jemand zu oft editiert?! So etwas führt dann schnell zum Chaos mit den Dateianhängen. :o
Geht hier vielen so!
-
Bin auf den besten Weg dahin :mrgreen:
Ist wahrscheinlich nicht die eleganteste Lösung, aber solange es funktioniert bin ich vorerst zufrieden. `
Sieht doch echt gut aus und es funktioniert. Da kannst Du mal sehen, wie schnell es dann doch gegangen ist.Gratulation.
P.S. Da hat wohl jemand zu oft editiert?! So etwas führt dann schnell zum Chaos mit den Dateianhängen. :o
Geht hier vielen so! `
Danke.
Ja ich weiß nicht was der eigentlich macht. Entweder schmeißt er eine von zwei Dateien immer raus oder packt die andere mehrfach rein obwohl in den Anhängen nur eine drin ist.
-
So…...Ich bin schon weit gekommen, hab nur eine kleine Schwierigkeit. Ich hab in Vis ein Schalter und in Node-Red ein "Inject" welcher ein String "8000000000000000"versendet . Wie kann ich mit den Schalter diesen String versenden ? Es gibt ja das "ioBroker In" nur ich verstehe nicht wie ich das damit versenden kann.
Gruss
6863_unbenannt.jpg -
Ich kenne mich nur mit dem Node-Red Dashboard ein wenig aus. Mit VIS habe ich mich noch nicht auseinander gesetzt.
Deine Frage wäre wahrscheinlich im VIS-Bereichs besser untergebracht?! viewforum.php?f=30
-
Ich bin weitergekommen, siehe Screenshots. Ich kann jetzt über NodeRed den String vom SerialPort auslesen und zeige die Wert mit Lämpchen im Vis an. In der Funktion "String kürzen" hab ich den ankommen String um die letzten 14 Zeichen kastiert und den Rest ausgewertet. Wie kann ich denn die 3te und 4te Stelle beibehalten und der Rest abschneiden ?


[ { "id": "d665df92.a8c25", "type": "debug", "z": "76975916.adb69", "name": "Basis_Kontaktalarm", "active": false, "tosidebar": true, "console": false, "tostatus": false, "complete": "true", "x": 1080, "y": 160, "wires": [] }, { "id": "6c9e2666.153f5", "type": "inject", "z": "76975916.adb69", "name": "Status-Simulation", "topic": "", "payload": "ff11223344556677", "payloadType": "str", "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "x": 260, "y": 360, "wires": [ [ "ea2b95f3.9c4028", "afc3fe12.31ec4" ] ] }, { "id": "ea2b95f3.9c4028", "type": "debug", "z": "76975916.adb69", "name": "Input_komplett", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "true", "x": 500, "y": 320, "wires": [] }, { "id": "309df3ac.edcb6c", "type": "function", "z": "76975916.adb69", "name": "BAS (Byte0) Splitten", "func": "var bas_int = parseInt(msg.payload, 16); //ankommende Hex-Nachricht (Basis 16) in Integer wandeln\n\nvar kal = false;\nif((bas_int & 1) == \"1\") //Maskierung und gleichzeitig in Boolean ändern\n{\n kal = true;\n}\n\nvar val = false;\nif((bas_int & 2) == \"2\") //Maskierung und gleichzeitig in Boolean ändern\n{\n val = true;\n}\n\nvar alm = false;\nif((bas_int & 4) == \"4\") //Maskierung und gleichzeitig in Boolean ändern\n{\n alm = true;\n}\nvar als = false;\nif((bas_int & 8) == \"8\") //Maskierung und gleichzeitig in Boolean ändern\n{\n als = true;\n}\n\nvar alf = false;\nif((bas_int & 16) == \"16\") //Maskierung und gleichzeitig in Boolean ändern\n{\n alf = true;\n}\nvar sab = false;\nif((bas_int & 32) == \"32\") //Maskierung und gleichzeitig in Boolean ändern\n{\n sab = true;\n}\n\nreturn [{payload: kal}, {payload: val},{payload: alm}, {payload: als},{payload: alf}, {payload: sab}];", "outputs": 6, "noerr": 0, "x": 740, "y": 400, "wires": [ [ "d665df92.a8c25", "b4bbe9ae.a197c8" ], [ "2e0b683c.237ba", "e4ab4b11.ab95c8" ], [ "d2a054fe.433cd8", "8bcd1eb8.3d7d68" ], [ "88604a1a.15a0d8", "4f1f1d24.90d26c" ], [ "3837e7f5.08496", "3db3352.e7464ca" ], [ "c28aebd4.38c72", "99006ef6.25d0b" ] ] }, { "id": "2e0b683c.237ba", "type": "debug", "z": "76975916.adb69", "name": "Basis_Voralarm", "active": false, "tosidebar": true, "console": false, "tostatus": false, "complete": "true", "x": 1060, "y": 280, "wires": [] }, { "id": "d2a054fe.433cd8", "type": "debug", "z": "76975916.adb69", "name": "Basis_Alarm", "active": false, "tosidebar": true, "console": false, "tostatus": false, "complete": "true", "x": 1050, "y": 400, "wires": [] }, { "id": "88604a1a.15a0d8", "type": "debug", "z": "76975916.adb69", "name": "Basis_Anlage_Start", "active": false, "tosidebar": true, "console": false, "tostatus": false, "complete": "true", "x": 1080, "y": 520, "wires": [] }, { "id": "3837e7f5.08496", "type": "debug", "z": "76975916.adb69", "name": "Basis_Anlage_Scharf", "active": false, "tosidebar": true, "console": false, "tostatus": false, "complete": "true", "x": 1080, "y": 640, "wires": [] }, { "id": "c28aebd4.38c72", "type": "debug", "z": "76975916.adb69", "name": "Basis_Sabotagekontakt", "active": false, "tosidebar": true, "console": false, "tostatus": false, "complete": "true", "x": 1090, "y": 760, "wires": [] }, { "id": "8bcd1eb8.3d7d68", "type": "ioBroker out", "z": "76975916.adb69", "name": "Basis.Alarm", "topic": "HAA_BAS_ALM", "ack": "false", "autoCreate": "true", "x": 1050, "y": 340, "wires": [] }, { "id": "b4bbe9ae.a197c8", "type": "ioBroker out", "z": "76975916.adb69", "name": "Basis.Kontaktalarm", "topic": "HAA_BAS_KAL", "ack": "false", "autoCreate": "true", "x": 1070, "y": 100, "wires": [] }, { "id": "4f1f1d24.90d26c", "type": "ioBroker out", "z": "76975916.adb69", "name": "Basis.Anlage.Start", "topic": "HAA_BAS_ALS", "ack": "false", "autoCreate": "true", "x": 1070, "y": 460, "wires": [] }, { "id": "e4ab4b11.ab95c8", "type": "ioBroker out", "z": "76975916.adb69", "name": "Basis.Voralarm", "topic": "HAA_BAS_VAL", "ack": "false", "autoCreate": "true", "x": 1060, "y": 220, "wires": [] }, { "id": "3db3352.e7464ca", "type": "ioBroker out", "z": "76975916.adb69", "name": "Basis.Anlage.Scharf", "topic": "HAA_BAS_ALF", "ack": "false", "autoCreate": "true", "x": 1080, "y": 580, "wires": [] }, { "id": "99006ef6.25d0b", "type": "ioBroker out", "z": "76975916.adb69", "name": "Basis.Sabotagekontakt", "topic": "HAA_BAS_SAB", "ack": "false", "autoCreate": "true", "x": 1090, "y": 700, "wires": [] }, { "id": "be2c1f1f.729f48", "type": "serial in", "z": "76975916.adb69", "name": "Statusempfang", "serial": "e6a27cfb.a5b5d8", "x": 260, "y": 400, "wires": [ [ "ea2b95f3.9c4028", "afc3fe12.31ec4" ] ] }, { "id": "afc3fe12.31ec4", "type": "function", "z": "76975916.adb69", "name": "String kürzen", "func": "var string = msg.payload;\nvar string_teil = string.substring(0, string.length-14);\n\nreturn [{payload: string_teil}];", "outputs": 1, "noerr": 0, "x": 510, "y": 400, "wires": [ [ "309df3ac.edcb6c", "826b6f45.9d0c4" ] ] }, { "id": "826b6f45.9d0c4", "type": "debug", "z": "76975916.adb69", "name": "Input_kurz", "active": false, "tosidebar": true, "console": false, "tostatus": false, "complete": "true", "x": 710, "y": 320, "wires": [] }, { "id": "caf57100.634f4", "type": "serial out", "z": "76975916.adb69", "name": "Kommandos", "serial": "e6a27cfb.a5b5d8", "x": 670, "y": 200, "wires": [] }, { "id": "e9e750d6.bdb68", "type": "inject", "z": "76975916.adb69", "name": "Status abfragen", "topic": "", "payload": "0000000000000000", "payloadType": "str", "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "x": 240, "y": 220, "wires": [ [ "caf57100.634f4" ] ] }, { "id": "9f686444.287978", "type": "inject", "z": "76975916.adb69", "name": "Anlage einschalten", "topic": "", "payload": "8000000000000000", "payloadType": "str", "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "x": 230, "y": 180, "wires": [ [ "caf57100.634f4" ] ] }, { "id": "33a945b8.0fb592", "type": "ioBroker in", "z": "76975916.adb69", "name": "Kommando", "topic": "HAA_BAS_KOM", "payloadType": "value", "onlyack": "", "func": "all", "gap": "", "x": 230, "y": 120, "wires": [ [ "686fad33.b01804" ] ] }, { "id": "686fad33.b01804", "type": "function", "z": "76975916.adb69", "name": "Status oder einschalten", "func": "var einschalten = msg.payload;\nvar befehl = \"0000000000000000\";\n\nif (einschalten == \"true\")\n{\n befehl = \"8000000000000000\";\n}\n\nreturn [{payload: befehl}];", "outputs": 1, "noerr": 0, "x": 450, "y": 120, "wires": [ [ "21dad7c7.a4bb08", "caf57100.634f4" ] ] }, { "id": "21dad7c7.a4bb08", "type": "debug", "z": "76975916.adb69", "name": "Output_komplett", "active": false, "tosidebar": true, "console": false, "tostatus": false, "complete": "true", "x": 690, "y": 120, "wires": [] }, { "id": "e6a27cfb.a5b5d8", "type": "serial-port", "z": "76975916.adb69", "serialport": "/dev/ttyAMA0", "serialbaud": "9600", "databits": "8", "parity": "none", "stopbits": "1", "newline": "16", "bin": "false", "out": "count", "addchar": true } ] -
Schon gefunden.
-
Schon gefunden. `
War ja auch nicht wirklich schwer im Inet zu finden. :DDiese Seiten sind auch immer sehr informativ:
https://www.mediaevent.de/javascript/strings.html
https://www.w3schools.com/js/js_string_methods.asp
Da hast Du ja schon einen riesen Schritt nach Vorne gemacht. Irgendwie ist die miese Stimmung, wie sie noch auf der ersten Seite dieses Threads zu lesen war, verschwunden. ;)
-
Allerdings. Ich hab mittlerweile fast die komplette Alarmanlage abgebildet, inkl. Zustandsmeldungen der Fenster und Türen und Ansteuern per Button. Ich hab noch weitere Ideen die ich nach und nach einbringe. Ein paar Inspirationen für die Visualisierung habe ich mir aus dem Forum geholt. Blöderweise hab ich heute Abend daran weiter gearbeitet, als es ohne Vorwarnung abgeschmiert ist und mir die ganze Arbeit zunichte machte. Ich denke im muss die Exportfunktion öfter benutzen :P
-
Wie nutze ich die USB-Schnittstelle denn ? Wäre auch eine Alternative. `
Die Frage hätte ich jetzt, zumindest von Dir, so nicht erwartet. Aber vielleicht "reden wir aneinander vorbei".Du hast doch geschrieben, dass es mit dem Windowsrechner funktioniert. Da hast Du doch sicher einen USB/Seriell-Adapter angeschlossen?
Und genauso funktionert dies beim Raspi. Mit meinem Feinstaubsensor mache ich es genauso, USB/Serielladapter angeschlossen, das fertige Node SDS011 ausgewählt und als Port /dev/ttyUSB0 eingetragen, und fertig.


Hier die installierte Hardeware: https://www.ebay.de/itm/Nova-Fitness-Fe … Sww1hax9pB
! ` > Eigenschaften von Feinstaub Sensor SDS011
Accurate and Reliable: laser detection, stable, good consistency;
Quick response: response time is less than 10 seconds when the scene changes;
Easy integration: UART output (or IO output can be customized), fan built-in;
High resolution: resolution of 0.3µg/m3;
Products have passed CE/FCC/RoHS cetification.
Eigenschaften von USB Adapter Module
Designed for Nova Fitness Laser Dust Sensor
CH340G UART to TTL
3.3v or 5V power supply
Power supply LED, TXD and RXT LED
Win7/win8/Win10
max. 250mA output
USB Typ A to Female 5 Pin pitch 2,0mm `
WIe Du den techn. Daten entnehmen kannst kommuniziert der Feinstaubsensor über eine serielle Schnittstelle. Genauso sollte es auch mit dem seriellen Node und deiner Alarmanlage funktionieren.Und das dritte was mir aufgefallen ist, das der WLAN vom Raspi regelmäßig zusammenbricht und ich hatte keine Verbindung mehr. `
Dann würde ich das WLAN abschalten und nur mit dem Ethernetanschluß weiter machen. Kann es sein, dass Du einen Raspi 3B+ gekauft hast?Wie kann ich den empfangenen String in Variablen abspeichern damit ich es im ioBroker verwenden kann ? Ich hab versucht im ioBroker manuel neue Objekte einzufügen, doch das steht in den Node-Red gar nicht zur Auswahl an. ` Das sollte kein großes Problem sein. Wenn es sein muss kann man den String Zeichen für Zeichen auseinander nehmen und an ioBroker übergeben. Dafür gibt es zwei fertige Nodes. Allerdings nur im Node-Red Adapter vom ioBroker!

Aber ich sehe schon, der erste Frust ist nun weg und der Ehrgeiz überwiegt nun. Dass wird schon, Stück für Stück, da bin ich mir absolut sicher.