Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Geigerzähler GQ Electronics GMC 320+ V5

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Geigerzähler GQ Electronics GMC 320+ V5

    This topic has been deleted. Only users with topic management privileges can see it.
    • J
      JamesFrosch007 last edited by JamesFrosch007

      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!

      SBorg 1 Reply Last reply Reply Quote 0
      • SBorg
        SBorg Forum Testing Most Active @JamesFrosch007 last edited by

        @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
        S 1 Reply Last reply Reply Quote 1
        • S
          superflip @SBorg last edited by

          @sborg
          @JamesFrosch007

          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"
              }
          ]
          
          1 Reply Last reply Reply Quote 0
          • First post
            Last post

          Support us

          ioBroker
          Community Adapters
          Donate

          912
          Online

          31.7k
          Users

          79.7k
          Topics

          1.3m
          Posts

          blockly communication
          3
          3
          445
          Loading More Posts
          • Oldest to Newest
          • Newest to Oldest
          • Most Votes
          Reply
          • Reply as topic
          Log in to reply
          Community
          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
          The ioBroker Community 2014-2023
          logo