NEWS
[gelöst] SerialPort-Adapter
-
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.
-
Und jetzt möchte ich möglichst nur noch von deinen Erfolgserlebnissen lesen.
`
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.
Geht hier vielen so!
-
Ich gebs auf. Wenn ich die Datei einmal Anhänge hängt er mir die 5x dran…..
-
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.
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.
-
Ich gebs auf. Wenn ich die Datei einmal Anhänge hängt er mir die 5x dran….. `
Du musst sie alle löschen und am besten in einem neuen Post einmal anhängen und dann sofort absenden. Dann sollte es klappen. :mrgreen: -
Beim nächsten mal probiere ich es nochmal.
-
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.Diese 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
-
@Garf
Hallo, darf ich fragen wie du die sleep und work befehle hinbekommen hast?
Habe den gleichen sensor einlesen geht aber dadurch das ich das ich den Sleep nicht hinbekomme läuft er immer durch. -
Wichtige Info für alle, die (wie ich) auf diesen Thread bei der Suche nach Informationen über ioBroker und SerialPort stoßen...
Die Syntax für die Verwendung der SerialPort JavaScript Library hat sich mit Sprung auf die Version 10.x geändert. Die Nutzung wie von @jey-cee beschrieben funktioniert dann nicht und bringt folgende Fehlermeldung:
TypeError: SerialPort is not a constructor
Die richtige Syntax (aber Version 10.x) wäre:
var { SerialPort } = require('serialport')
Und dann, für die Bindung mit der entsprechenden Schnittstelle:
var port = new SerialPort({ path: '/dev/ttyUSB0', baudRate: 9600 });
Details dazu findet man hier: https://serialport.io/docs/guide-upgrade#upgrading-from-9x-to-10x
-
ich versuche mich gerade auch mit USB2RS232 und bin somit hier gelandet
Ich habe das Testskriopt übernommen bekomme aber
Error: Error: Permission denied, cannot open /dev/ttyUSB0
aber die Hardware ist da
root@iobroker:/opt/iobroker# dmesg | grep "usb 1-1.4" [ 2.243577] usb 1-1.4: new full-speed USB device number 3 using xhci_hcd [ 2.349783] usb 1-1.4: New USB device found, idVendor=0403, idProduct=6001, bcdDevice= 6.00 [ 2.349797] usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 2.349808] usb 1-1.4: Product: FT232R USB UART [ 2.349819] usb 1-1.4: Manufacturer: FTDI [ 2.349829] usb 1-1.4: SerialNumber: A10K5SV4 [ 5.173412] usb 1-1.4: Detected FT232RL [ 5.185287] usb 1-1.4: FTDI USB Serial Device converter now attached to ttyUSB0
hier ist der Pfad
root@iobroker:/opt/iobroker# ls /dev/tty* /dev/tty /dev/ttyUSB0
da iobroker im Docker läuft bin ich auch ls -l /dev/serial/by-id gefolgt:
version: '2' services: iobroker: restart: always image: buanet/iobroker:latest container_name: iobroker hostname: iobroker ports: - "8081:8081" - "1882:1882" - "1883:1883" - "8082:8082" volumes: - /storage/system/data-containers/iobroker:/opt/iobroker networks: - lsio devices: - /dev/ttyUSB0:/dev/ttyUSB0 networks: lsio: external: true
hier noch der USBtoRS232 Adapter auf dem Host
LibreELEC:~ # dmesg | grep "usb 1-1.4" [ 2.243577] usb 1-1.4: new full-speed USB device number 3 using xhci_hcd [ 2.349783] usb 1-1.4: New USB device found, idVendor=0403, idProduct=6001, bcdDevice= 6.00 [ 2.349797] usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 2.349808] usb 1-1.4: Product: FT232R USB UART [ 2.349819] usb 1-1.4: Manufacturer: FTDI [ 2.349829] usb 1-1.4: SerialNumber: A10K5SV4 [ 5.173412] usb 1-1.4: Detected FT232RL [ 5.185287] usb 1-1.4: FTDI USB Serial Device converter now attached to ttyUSB0
auf dem Host
LibreELEC:~ # ls -l /dev/serial/by-id total 0 lrwxrwxrwx 1 root root 13 Feb 2 2021 usb-FTDI_FT232R_USB_UART_A10K5SV4-if00-port0 -> ../../ttyUSB0
in ioBroker
root@iobroker:/opt/iobroker# ls -l /dev/serial/by-id ls: cannot access '/dev/serial/by-id': No such file or directory
scheint er wird nicht richtig installiert
-
Moin,
wem (user) gehört das Device und zu welcher
gruppe
?
Hat der User im Docker deswegen keinen Zugriff, zeig mal mitls -la
.$ ls -la /dev/tty* crw-rw-rw- 1 nobody nobody 5, 0 Mar 17 10:25 /dev/tty crw--w---- 1 root tty 136, 1 Mar 16 11:32 /dev/tty1 crw--w---- 1 root tty 136, 2 Mar 16 11:32 /dev/tty2 ---------- 1 root root 0 Mar 16 11:32 /dev/ttyACM0 crw-rw-rw- 1 nobody nobody 166, 3 Mar 19 18:06 /dev/ttyACM3
VG
Bernd -
@dp20eic
habe mal testweise die compose file angepasstdevices: - /dev/ttyUSB0:/dev/ttyUSB1
nun
root@iobroker:/opt/iobroker# ls -la /dev/tty* crw-rw-rw- 1 root root 5, 0 Mär 19 18:12 /dev/tty crw-rw---- 1 root 18 188, 0 Mär 19 18:12 /dev/ttyUSB1
aber nhier ist noch ttyUSB0
root@iobroker:/opt/iobroker# dmesg | grep "usb 1-1.4" [ 2.243577] usb 1-1.4: new full-speed USB device number 3 using xhci_hcd [ 2.349783] usb 1-1.4: New USB device found, idVendor=0403, idProduct=6001, bcdDevice= 6.00 [ 2.349797] usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 2.349808] usb 1-1.4: Product: FT232R USB UART [ 2.349819] usb 1-1.4: Manufacturer: FTDI [ 2.349829] usb 1-1.4: SerialNumber: A10K5SV4 [ 5.173412] usb 1-1.4: Detected FT232RL [ 5.185287] usb 1-1.4: FTDI USB Serial Device converter now attached to ttyUSB0
-
Moin,
einmal auseinander halten.
Host:
ls -la /dev/tty*
Dann erst einmal schauen, wem das Device gehört, siehe bei mir oben
Beispiel: crw-rw-rw- 1 nobody nobody 166, 3 Mar 19 18:06 /dev/ttyACM3 1) rw- = read/write user -> nobody 2) rw- = read/write gruppe -> nobody 3) rw- = read/write other -> alle Wobei: c = Caracter device r = read w = write - = kann ein x sein und bedeutet ausführbar
VG
Bernd