Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Nochmal: Globale Variable

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.5k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.0k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    2.7k

Nochmal: Globale Variable

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
13 Beiträge 3 Kommentatoren 2.4k Aufrufe 1 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • U Offline
    U Offline
    ulistermclane
    schrieb am zuletzt editiert von
    #1

    Hallo,

    ich baue gerade eine Steuerung für unser Ferienhaus: Heizung ein/ausschalten, Frostüberwachung etc. Der Datenaustausch soll über SMS erfolgen. Dazu habe ich ein GSM Modul über den seriellen Port des Raspi (auf dem iobroker läuft) angeschlossen. Softwaretechnisch nutze ich das Nodejs Modul serialport bzw. serialport-gsm - funktioniert soweit. Nun möchte ich nicht alle Funktionen, die die SMS Kommunikation nutzen, in ein Skript packen (das würde dann sehr lang und unübersichtlich). Ich möchte also von verschiedenen Skripten aus auf ein globales Objekt 'port' bzw. 'modem' zugreifen (siehe https://serialport.io/docs/en/guide-usage bzw. https://github.com/zabsalahid/serialport-gsm). Ich kann den Code nicht einfach kopieren, da der serielle Port mit dem GSM Modul ja nur einmal vorhanden ist und man deshalb nicht mehrfach zugreifen kann. Gibt es dazu eine Lösung? Ich bin leider (noch) kein JavaScript Guru ;-)

    Danke für einen Hinweis!

    Adapter: knx, owfs, mqtt, modbus, kodi, iCal, landroid, TR064, Luftdaten, Unifi, amazon-dash, js2fs

    HW: Fujitsu Futro S900, 4GB RAM, 32GB SSD, Selbstbau KNX Adapter mit Siemens BCU

    OS: Debian Stretch

    1 Antwort Letzte Antwort
    0
    • U Offline
      U Offline
      ulistermclane
      schrieb am zuletzt editiert von
      #2

      Update: der in node.js definierte Export / Import Mechanismus via module.exports und require funktioniert leider nicht, da das exportierende Script nicht gefunden wird - wo im Dateisystem liegen aber die Scripte? Ansonsten würde das mein Problem lösen. Auch der Mechanismus über GLOBALS geht nicht - Schade!

      Adapter: knx, owfs, mqtt, modbus, kodi, iCal, landroid, TR064, Luftdaten, Unifi, amazon-dash, js2fs

      HW: Fujitsu Futro S900, 4GB RAM, 32GB SSD, Selbstbau KNX Adapter mit Siemens BCU

      OS: Debian Stretch

      1 Antwort Letzte Antwort
      0
      • paul53P Offline
        paul53P Offline
        paul53
        schrieb am zuletzt editiert von
        #3

        Wenn Du das NPM-Modul "serialport-gsm" in Javascript nutzen möchtest, musst Du es in die Konfigration der Javascript-Instanz unter "Zusätzliche NPM-Module" eintragen. Es wird dann automatisch installiert. Die Nutzung des Modules ist auf https://github.com/zabsalahid/serialport-gsm beschrieben.

        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

        1 Antwort Letzte Antwort
        0
        • U Offline
          U Offline
          ulistermclane
          schrieb am zuletzt editiert von
          #4

          Ja das ist klar und funktioniert auch. Mein Problem ist, dass ich aus mehreren Skripten auf die Modem-Schnittstelle zugreifen möchte. D.h. ich muss die modem bzw. port Objekte global sichtbar machen.

          Adapter: knx, owfs, mqtt, modbus, kodi, iCal, landroid, TR064, Luftdaten, Unifi, amazon-dash, js2fs

          HW: Fujitsu Futro S900, 4GB RAM, 32GB SSD, Selbstbau KNX Adapter mit Siemens BCU

          OS: Debian Stretch

          1 Antwort Letzte Antwort
          0
          • paul53P Offline
            paul53P Offline
            paul53
            schrieb am zuletzt editiert von paul53
            #5

            @ulistermclane:

            aus mehreren Skripten auf die Modem-Schnittstelle zugreifen möchte.

            Dann schaffe Dir dafür Datenpunkte, die zur Kommunkation zu dem Skript mit dem require("serialport-gsm") dienen.

            Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
            Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

            1 Antwort Letzte Antwort
            0
            • U Offline
              U Offline
              ulistermclane
              schrieb am zuletzt editiert von
              #6

              ok, werde ich so machen - finde ich aber ziemlich umständlich. Ich werde also

              • 2 states mit den zu sendenden bzw. empfangenen SMS Daten erzeugen

              • 2 Eventhandler schreiben die das Senden bzw. Empfangen erledigen
                Trotzdem danke für den Hinweis!

              Was mich aber dennoch interessiert: warum funktionieren die Standard Node.js Methoden module.export / require nicht?

              Adapter: knx, owfs, mqtt, modbus, kodi, iCal, landroid, TR064, Luftdaten, Unifi, amazon-dash, js2fs

              HW: Fujitsu Futro S900, 4GB RAM, 32GB SSD, Selbstbau KNX Adapter mit Siemens BCU

              OS: Debian Stretch

              1 Antwort Letzte Antwort
              0
              • paul53P Offline
                paul53P Offline
                paul53
                schrieb am zuletzt editiert von paul53
                #7

                @ulistermclane:

                warum funktionieren die Standard Node.js Methoden module.export / require nicht?

                Funktioniert die wirklich nicht ? Ich habe dies noch nicht getestet. In welches Verzeichnis hast Du Dein Modul gepackt ?

                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                1 Antwort Letzte Antwort
                0
                • U Offline
                  U Offline
                  ulistermclane
                  schrieb am zuletzt editiert von
                  #8

                  Alle Module stehen in einem Verzeichnis namens 'Testscripts'. Wenn ich dann versuche, das Objekt mit````
                  var modem = require('./Hauptsteuerung').modem

                  Adapter: knx, owfs, mqtt, modbus, kodi, iCal, landroid, TR064, Luftdaten, Unifi, amazon-dash, js2fs

                  HW: Fujitsu Futro S900, 4GB RAM, 32GB SSD, Selbstbau KNX Adapter mit Siemens BCU

                  OS: Debian Stretch

                  1 Antwort Letzte Antwort
                  0
                  • paul53P Offline
                    paul53P Offline
                    paul53
                    schrieb am zuletzt editiert von paul53
                    #9

                    @ulistermclane:

                    Deshalb meine Frage, wo die Scripte eigentlich im Dateibaum gespeichert werden.

                    Eigene Module solltest Du in einem eigenen Verzeichnis unter /opt/iobroker/node_modules/iobroker.javascript/node_modules/ speichern. Habe es gerade probiert: Funktioniert.

                    const test = require('lib/test.js');
                    
                    log(test().result);
                    
                    

                    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                    1 Antwort Letzte Antwort
                    0
                    • U Offline
                      U Offline
                      ulistermclane
                      schrieb am zuletzt editiert von
                      #10

                      Danke für den Hinweis. Das heißt dann aber: iobroker Scripts != Javascript Modul - oder?

                      Adapter: knx, owfs, mqtt, modbus, kodi, iCal, landroid, TR064, Luftdaten, Unifi, amazon-dash, js2fs

                      HW: Fujitsu Futro S900, 4GB RAM, 32GB SSD, Selbstbau KNX Adapter mit Siemens BCU

                      OS: Debian Stretch

                      1 Antwort Letzte Antwort
                      0
                      • M Offline
                        M Offline
                        Marty56
                        schrieb am zuletzt editiert von
                        #11

                        Ein bisschen Off- Topic. Ich finde die Steuerung über SMS interessant und auch für mich ist das eine Anwendung.

                        Könntest Du sagen, welches GSM Serial Modul genau Du verwendest und ggf. auch welchen Provider?

                        HW:NUC (16 GB Ram)
                        OS: Debian Bullseye, Promox V7, node v16.x npm 8.19.3

                        1 Antwort Letzte Antwort
                        0
                        • M Offline
                          M Offline
                          Marty56
                          schrieb am zuletzt editiert von
                          #12

                          Ich habe das mit dem eigenen Module mal ausprobiert und es scheint zu funktionieren.

                          Der Ansatz scheint aber einen großen Nachteil zu haben, nämlich, dass das Module nur einmal geladen wird, wenn es noch nicht vorhanden ist oder auch bei Neustart des Javascript Adapters

                          D.h. falls ich Änderungen in dem Module mache, muss ich immer den Javascript Adapter neu starten, was ziemlich umständlich ist.

                          Ich habe keinen Weg gefunden, ein neues Laden des Modules im Script zu erzwingen, jedesmal, wenn das Script neu gestartet wird.

                          HW:NUC (16 GB Ram)
                          OS: Debian Bullseye, Promox V7, node v16.x npm 8.19.3

                          1 Antwort Letzte Antwort
                          0
                          • paul53P Offline
                            paul53P Offline
                            paul53
                            schrieb am zuletzt editiert von
                            #13

                            Damit die eigenen Module bei einem Update nicht verloren gehen bzw. im Minimal-Backup mit gesichert werden, sollten sie im Verzeichnis iobroker-data gespeichert werden. Ich habe dafür das Verzeichnis modules erstellt. Der Aufruf eigener Module sieht dann so aus:

                            const test = require('../../../iobroker-data/modules/test.js');
                            
                            log(test().result);
                            
                            

                            Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                            Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                            1 Antwort Letzte Antwort
                            1
                            Antworten
                            • In einem neuen Thema antworten
                            Anmelden zum Antworten
                            • Älteste zuerst
                            • Neuste zuerst
                            • Meiste Stimmen


                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            841

                            Online

                            32.4k

                            Benutzer

                            81.4k

                            Themen

                            1.3m

                            Beiträge
                            Community
                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                            ioBroker Community 2014-2025
                            logo
                            • Anmelden

                            • Du hast noch kein Konto? Registrieren

                            • Anmelden oder registrieren, um zu suchen
                            • Erster Beitrag
                              Letzter Beitrag
                            0
                            • Home
                            • Aktuell
                            • Tags
                            • Ungelesen 0
                            • Kategorien
                            • Unreplied
                            • Beliebt
                            • GitHub
                            • Docu
                            • Hilfe