NEWS
Geigerzähler GQ Electronics GMC 320+ V5
-
Hallo zusamen,
ich möchte gern meinen Geigerzähler in meine IOBroker-Umgebung integrieren. Leider verfüge ich über keine Javascript Kenntnisse, deshalb wollte ich gern mit Blockly arbeiten. Leider gibt es keinen passenden Adapter für das Gerät. Folgende Ansätze sind mir in den Sinn gekommen:
-
Das Gerät verfügt über eine virtuelle serielle Schnittstelle (USB), darüber könnte man einen Befehl absetzen und bekommt den aktuellen Messwert zurück aber wie macht man das über Blockly oder gibt es irgend einen Adapter der serielle Kommunikation ermöglicht? Ich hab es soweit auf dem Raspberry Pi eingerichet bekommen, dass ich über ein Terminalprogramm über /dev/ttyUSB0 mit dem Gerät reden kann.
-
Das Gerät verfügt über ein WLAN-Interface und ist in der Lage seine Daten an eine wählbare URL zu posten in der Form: http://www.GMCmap.com/log.asp?id=UserAccountID+GeigerCounterID+CPM+ACPM+uSV
mit welchen Adapter könnte man das evtl. auswerten, wie kann man es realisieren, dass die Daten dann trotzdem auch noch auf der Webseite landen? -
Die Daten landen auf der GMC-Map:
https://www.gmcmap.com/historyData.asp?Param_ID=84088394441
bzw. auch http://www.gmcmap.com/GMHistoryExec-new-data.asp?param_ID=84088394441
gibt es einen Adapter mit dem man das von dort rausziehen könnte?
Welcher Ansatz ist am ehesten erfolgversprechend? Oder wäre sogar ein Request für einen Adapter sinnvoll?
Weitere Details findet man auf http://www.gqelectronicsllc.com/GMC-320PlusV5UserGuide.pdf .
Für Ideen und Anregungen wäre ich sehr dankbar! -
-
@JamesFrosch007 Hi,
da wären zwei Ansätze sinnvoll/zielführend (Adapter wird sich keiner erbarmen).- kleines Shellskript welches den /dev/ttyUSB0-Wert abfragt und per SimpleAPI in den ioB überträgt
- RegEx per Parser-Adapter, der die Werte aus der Webseite ausliest
-
falls das Thema noch wen interessiert:
- ich hab das mit Node-Red relativ einfach gelöst.
- zusätzliches npm package node-red-node-serialport installiert
- Node-Red-Flow
[ { "id": "7f40fabab7ea23c0", "type": "serial in", "z": "c241f527b52bd10a", "name": "GMC-320", "serial": "15ad7491d36bd43d", "x": 220, "y": 100, "wires": [ [ "222a8e8215c110c6" ] ] }, { "id": "222a8e8215c110c6", "type": "function", "z": "c241f527b52bd10a", "name": "function 4", "func": "//@superflip - 2025-03-25\n\nif (msg.payload && Buffer.isBuffer(msg.payload) && msg.payload.length > 0) {\n //read Buffer and write to local variable\n let buffer = msg.payload;\n let cpm = buffer.readUInt8(0);\n\n // check, if counter already exists\n if (!context.counterCPM) {\n context.counterCPM = 0; // Initialisiere den Zähler\n //first buffer is sometimes set to 128\n if (cpm == 128) {\n cpm=0;\n }\n }\n\n // calculate time since last reset\n let currentTime = new Date().getTime();\n if (!context.lastResetTime) {\n context.lastResetTime = currentTime;\n }\n\n //add new value to counter\n context.counterCPM += cpm;\n\n // if 60s are over\n if (currentTime - context.lastResetTime >= 60000) {\n // write msg.payload.total for further processing\n msg.payload = { total: context.counterCPM};\n // reset counter\n context.counterCPM = 0;\n context.lastResetTime = currentTime;\n }\n\n} \n\nreturn msg;\n", "outputs": 1, "timeout": 0, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 400, "y": 100, "wires": [ [ "72e83dc1246866b4" ] ] }, { "id": "72e83dc1246866b4", "type": "switch", "z": "c241f527b52bd10a", "name": "", "property": "payload.total", "propertyType": "msg", "rules": [ { "t": "nnull" } ], "checkall": "true", "repair": false, "outputs": 1, "x": 550, "y": 100, "wires": [ [ "755b9544f295d10a" ] ] }, { "id": "427bfe4a2025d94e", "type": "ioBroker out", "z": "c241f527b52bd10a", "name": "CPM schreiben", "topic": "0_userdata.0.test.radioactivity", "ack": "true", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 940, "y": 100, "wires": [] }, { "id": "755b9544f295d10a", "type": "change", "z": "c241f527b52bd10a", "name": "", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "payload.total", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 730, "y": 100, "wires": [ [ "427bfe4a2025d94e" ] ] }, { "id": "15ad7491d36bd43d", "type": "serial-port", "name": "", "serialport": "/dev/ttyUSB0", "serialbaud": "115200", "databits": "8", "parity": "none", "stopbits": "1", "waitfor": "", "dtr": "none", "rts": "none", "cts": "none", "dsr": "none", "newline": "0x80", "bin": "bin", "out": "char", "addchar": "", "responsetimeout": "10000" } ]