Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. [UPDATE] DOino / Arduino Mega 2560 als Multisensor-Node / All in One Node/ Mysensors

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [UPDATE] DOino / Arduino Mega 2560 als Multisensor-Node / All in One Node/ Mysensors

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

      Hier Beschreibung (quick and dirty) von meinem sketch:

      [UPDATE]

      ES LÄUFT PRODUKTIV mit Wärmepumpe, Solar, Holzvergaser, Zirkulation, Pumpengeschwindigkeitssteuerung etc..)

      Ich habe INO aufgeteilt, damit es übersichtlicher wird und damit Variablenspeicher nicht "überläuft"

      ~~![](</s><URL url=)http://up.picr.de/25928787et.jpg" />

      Habe SERIAL1 , SERIAL2, SERIAL3 Eingebunden, damit man weitere nodes WIRED verbinden kann (Bei mir auf dem Dach und unter der Garage)

      ~~![](</s><URL url=)http://up.picr.de/25928809tr.png" />

      My scope was:

      "a" Node which i can connect what i want to and with a simple and smalest modifications, can run EVERYTHING! 🙂

      it should be cheap!

      it should be easy so even me as noob can understand that

      4.it should be a standard protocol, which can be used with all of teh adapters

      it should have updates in the future

      6 can be used with node-red and ioBroker, because everything is integrated there

      7 etc..

      do's and dont's for me:

      do not mess with child ID's and PIN's ->Use something easy

      show to the server what you have (present) and show what it is!!!! Not just Child ID = 13 -> Send a discription to Server

      do it universal, so everybody can use it !!!

      Give it to the comunity to improve it !!!

      My steps:

      HERE THE USER SHOULD PUT HIS SENSORS IN THE TABLE

      create a table with pins, so if you change configuration you do not have to mess around with PIN's:

      ~~![](</s><URL url=)http://up.picr.de/25928677ol.jpg" />

      you can put all you attached sensors with S-Types and S_Variables

      USER does not have to do enything!!!

      present everything (all connected or IF YOU WANT unconnected pins too).

      whole void presentation! so just easy and short "i think"

      Setup (just look in samples of MYsensors and you will see if you need it or not

      `void setup()
      {
      	//Serial1.begin(2400);
      	//Serial2.begin(2400);
      
      	for (int i = 0; i`
      or next example
      
      `~~[code]~~void ds18b20_temp(int i)
      {
      #ifdef DS18B20
      	if ((iomodus[i].sensorType == S_TEMP) && (iomodus[i].sensorVersion == "DS18B20"))
          { 	
      		if (millis() > next_Time[i])
              {   
      			next_Time[i] = next_Time[i] + 10000; //onewire updates every 10s (10s is MINIMUM)
      			sensor[i].requestTemperatures();
      			// query conversion time and sleep until conversion completed
      			//  int16_t conversionTime = sensor[i].millisToWaitForConversion(sensor[i].getResolution());
      			// sleep() call can be replaced by wait() call if node need to process incoming messages (or if node is repeater)
      			wait(1000);
      
      			for (int j = 1; j <= dsSensor_count; j++)
      			{
      				if (dsSensor[j].dsonPinNr ==  i)
      				{
      					unsigned int dsPin=(iomodus[i].Int_to_HLP + j);
      					float tempC = sensor[i].getTempC(dsSensor[j].dsAdress);
      					if (tempC == -127.00) 
      					{
      /*            			send(msg.setType(77).set("Error getting temperature"), false);
      						Serial.println("Error getting temperature on Pin");
      						Serial.print(i);
      						Serial.println("MySensors Pin Nr");
      						Serial.print(dsPin);
      						Serial.println("Probe Nr.");
      						Serial.print(j);
      */
      					} 
      					else
      					{
      						MyMessage msg(i, iomodus[i].variableType);
      						send(msg.setSensor(dsPin).set(tempC, 2), false);
      						last_dsTemp[j] = tempC;
          /*        			        Serial.println("C: ");
      						Serial.print(tempC);
      						Serial.println(" F: ");
      						Serial.print(DallasTemperature::toFahrenheit(tempC));
          */        		}
      	//					dsPin=0;
      
      				}
      
      			}
              }
      	}
      #endif
      }` 
      
      !
      
      Done!
      
      ~~[color]~~Libraries hier(vom 16.06.2016):[/color]
      
       ![933_mysensors.zip](/assets/uploads/files/933_mysensors.zip) [/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/code][/i][/i][/i][/i][/i][/i]
      ```~~~~~~
      1 Reply Last reply Reply Quote 0
      • M
        Maxtox last edited by

        nächste Version mit RELAY Szenen…

        d.h. ich habe 16 relais, um die SCHNELL zu setzen, benutze ich BITs nicht BYTE's... damit spare ich mir Speicher und erhöhe die Geschwindigkeit beim setzen, daich den kompletten PORT (8 Ausgänge) mit einem Kommando sezen kann.

        uint8_t relay_scenes[][2] = { 
          {0b00001111, 0b01111100}, //Digital Pins  29,28,27,26,25,24,23,22, 30,31,32,33,34,35,36,37
          {0b00000000, 0b00000000}, // here set your scenes
          {0b00000000, 0b00000000}, //
          {0b00000000, 0b00000000}, //
          {0b00000000, 0b00000000}, //
          {0b00000000, 0b00000000}, //
          {0b00000000, 0b00000000}, //
          {0b00000000, 0b00000000}, //
          {0b00000000, 0b00000000}, //
          {0b00000000, 0b00000000}, //
          {0b00000000, 0b00000000}, //
          {0b00000000, 0b00000000}, //
          {0b00000000, 0b00000000}, //
          {0b00000000, 0b00000000}, //
          {0b00000000, 0b00000000}, //
          {0b00000000, 0b00000000} //
        };
        

        ich maskiere dann die Ausgänge , die ich nicht mit den Szenen ansprechen Darf (in meinem beisoiel alle Pins werden beeinflusst(können HIGH oder LOW gesetzt werden)

        #define PORT_A_MASK 0xFF // Mask for Port A all if 0-Pin will NOT be affected whith PORTA=...function
        #define PORT_C_MASK 0xFF // Mask for Port C all if 0-Pin will NOT be affected whith PORTC=...function
        

        0xFF bedeutet 1111 1111 binär

        wenn Sie also 0x0F als MASK setzen würden als 0000 1111 dann werden bei bit nummern (12345678) die bits 5678 mit der SZENE 1111 1111 beeinflusst (können 0 oder 1 sein) 1234 werden nicht beeinflusst, da MASKe 0000. also ergebniss mit der maske 0000 1111 und der szene 1111 1111 ist dann 0000 1111

        Libraries hier:

        https://github.com/mysensors/Arduino/ar … opment.zip
        933_mysensors_gatewayclient_work_v13.rar

        1 Reply Last reply Reply Quote 0
        • M
          Maxtox last edited by

          die Sekunde wurde in 5 Beriche mit jeweils 10 vollwellen geteilt und2 Pumpen können in 10 schritten (kann aber bis unendlich geändert werden) gesteuert werden.
          933_mysensors_gatewayclient_work_v14.rar

          1 Reply Last reply Reply Quote 0
          • A
            aquapro last edited by

            Hallo Maxtox,

            ich habe auch viel mit mySensor probiert. Leider hatte ich die letzten Wochen nicht so viel Zeit dafür.

            Ich verstehe noch nicht ganz Deine Einbindung von mysensor in iobroker.

            Kann ich mir das so vorstellen:

            Ein Arduino läuft als Gateway. Dieser hängt am Netzwerk (via LAN, WLAN?) in stehlt so die Verbindung zum iobroker her, via MQTT. Mit einem NRF24L01+ am Gateway wird der Kontakt zu den Sensoren aufgebaut.

            Ist das so?

            Ich würde da gern etwas unterstützen, wenn ich kann, zumindest sobal ich Deinen Aufbau verstanden habe. Was läuft z.B. auf den Sensoren, eine OTA Firmware?

            Gruß

            Tino

            1 Reply Last reply Reply Quote 0
            • M
              Maxtox last edited by

              hi…gut wenn du mich unterstützen würdest...

              as läuft zur zeit so:

              Arduino mit sensors <->raspi mit iobroker

              bis jetzt ohne nrf, da ich auf den "filter" für 3.3V warte...

              1 Reply Last reply Reply Quote 0
              • A
                aquapro last edited by

                okay, dann der Reihe nach.

                Hardware, ich hab hier alles möglich rumliegen, Kiste voll. Würde erstmal Deinen Aufbau genau nachbauen, damit wir die gleiche Basis haben.

                Arduino, welcher?

                LAN/WLAN, welches Modul?

                Sensor, welcher und an welchem PIN?

                Sketch im Arduino, welcher?

                Welche IDE?

                Gruß

                Tino

                1 Reply Last reply Reply Quote 0
                • M
                  Maxtox last edited by

                  Arduino Mega 2560

                  IDE 1.6.7

                  LAN: W5100

                  Pins: Siehe Sketch

                  Hast du schon reingeschaut?

                  1 Reply Last reply Reply Quote 0
                  • A
                    aquapro last edited by

                    In den Sketch hatte ich schon geschaut.

                    Ich bau mir morgen mal die Teile zusammen. Hab mir aus meiner Kiste gerade einen Mega und das LAN Modul geholt.

                    Muss mir noch Deine Version der IDE einrichten, hab die noch nicht. Dazu hab ich heute keine Lust mehr, zu müde, sorry.

                    Musste eben in unseren Erdtank (Wasser) steigen, da war der Wasserstandsensor irgendwie mit Dreck zugeschmiert. Keine Ahnung wie der Mist da hin gekommen ist. Musste dann den Ultraschallsensor tauschen. Der Sensor meldet übrigens via ESP8266 oder mysensor NRF24 seine Aktivitäten ins Haus. Teste mit den beiden Methoden, welche für mich besser ist.

                    1 Reply Last reply Reply Quote 0
                    • A
                      aquapro last edited by

                      Kurzer Status. Komme damit nicht weiter, da ich noch am Hauptproblem bastel, "Stabilität von iobroker".

                      Sorry.
                      305_heizungsscript_220_b15_temp.txt

                      1 Reply Last reply Reply Quote 0
                      • A
                        akamia last edited by

                        Hallo Maxtox,

                        habe einen 2560R3 mit 5100 Shield. Der Sketch von Funkleuchtturm läuft ohne Kompilierungsfehler. D.h. die Hardware und Netzkommunikation funktioniert. Dein Sketch unterstützt sogar MQTT.

                        Beim Compilieren habe ich einige Fehler gehabt. Fehlende Libraries habe ich hinzugefügt. Jetzt erhalte ich noch folgende Fehlermeldung:

                        Zeile 636: 'S_UNUSED' was not declared in this scope

                        In Zeile 442 wird der Mechanismus auch verwendet. Hier funktioniert er. Ich möchte acht Relais für eine Fussbodenheizung steuern. Du hast bereits 16 definiert. Somit brauche ich neben den IPs eigentlich nichts einstellen. Oder?

                        Gruß

                        akamia

                        1 Reply Last reply Reply Quote 0
                        • M
                          Maxtox last edited by

                          kein problem, einfach im /core unterverzeichnis diese datei austauschen:
                          933_modifizierte_mymessage.h.rar
                          9364_vis.png

                          1 Reply Last reply Reply Quote 0
                          • A
                            akamia last edited by

                            ! In file included from C:\Program Files (x86)\Arduino\libraries\MySensors/core/MySensorCore.h:27:0,
                            ! from C:\Program Files (x86)\Arduino\libraries\MySensors/MySensor.h:28,
                            ! from C:\Users\Helle\Documents_Projekte\HA_Arduino\Sketche\MySensors_V14\MySensors_V14.ino:132:
                            ! C:\Program Files (x86)\Arduino\libraries\MySensors/core/MyMessage.h:158:2: error: expected '}' before 'V_UNKNOWN'
                            ! V_UNKNOWN = 255, // <–- We don't know
                            ! ^
                            ! C:\Program Files (x86)\Arduino\libraries\MySensors/core/MyMessage.h:158:2: error: typedef 'V_UNKNOWN' is initialized (use decltype instead)
                            ! C:\Program Files (x86)\Arduino\libraries\MySensors/core/MyMessage.h:159:1: error: expected unqualified-id before '}' token
                            ! } mysensor_data;
                            ! ^
                            ! C:\Program Files (x86)\Arduino\libraries\MySensors/core/MyMessage.h:159:1: error: expected declaration before '}' token
                            ! exit status 1
                            ! Fehler beim Kompilieren.

                            1 Reply Last reply Reply Quote 0
                            • M
                              Maxtox last edited by

                              bist auf 1.6.7?

                              noch mal!
                              933_mymessage.rar

                              1 Reply Last reply Reply Quote 0
                              • A
                                akamia last edited by

                                Hallo Maxtox,

                                ja, bin auf der 1.6.7 und parallel teste ich auch die aktuelle Nightly Build. Die Libraries habe ich gemäß den Links im Sketch geladen. Die Aktualisierung für die neuesten Libraries habe ich durchgeführt. Jetzt hängt es noch an OneWire.

                                ! Arduino: 1.6.7 (Windows 10), Board: "Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"
                                ! MySensors_V14:333: error: no matching function for call to 'OneWire::OneWire()'
                                ! OneWire ds18x20[oneWirePinsCount];
                                ! ^
                                ! C:\Users\Helle\Documents_Projekte\HA_Arduino\Sketche\MySensors_V14\MySensors_V14.ino:333:33: note: candidates are:
                                ! In file included from C:\Users\Helle\Documents_Projekte\HA_Arduino\Sketche\MySensors_V14\MySensors_V14.ino:64:0:
                                ! C:\Program Files (x86)\Arduino\libraries\OneWire/OneWire.h:265:5: note: OneWire::OneWire(uint8_t)
                                ! OneWire( uint8_t pin);
                                ! ^
                                ! C:\Program Files (x86)\Arduino\libraries\OneWire/OneWire.h:265:5: note: candidate expects 1 argument, 0 provided
                                ! C:\Program Files (x86)\Arduino\libraries\OneWire/OneWire.h:250:7: note: constexpr OneWire::OneWire(const OneWire&)
                                ! class OneWire
                                ! ^
                                ! C:\Program Files (x86)\Arduino\libraries\OneWire/OneWire.h:250:7: note: candidate expects 1 argument, 0 provided
                                ! C:\Program Files (x86)\Arduino\libraries\OneWire/OneWire.h:250:7: note: constexpr OneWire::OneWire(OneWire&&)
                                ! C:\Program Files (x86)\Arduino\libraries\OneWire/OneWire.h:250:7: note: candidate expects 1 argument, 0 provided
                                ! C:\Users\Helle\Documents_Projekte\HA_Arduino\Sketche\MySensors_V14\MySensors_V14.ino: In function 'void setup()':
                                ! MySensors_V14:588: error: 'class OneWire' has no member named 'setPin'
                                ! ds18x20__.setPin(i);
                                ! ^
                                ! exit status 1
                                ! no matching function for call to 'OneWire::OneWire()'
                                ! Dieser Report hätte mehr Informationen mit
                                ! "Ausführliche Ausgabe während der Kompilierung"
                                ! aktiviert in Datei > Einstellungen.__

                                1 Reply Last reply Reply Quote 0
                                • M
                                  Maxtox last edited by

                                  Update to Productive

                                  1 Reply Last reply Reply Quote 0
                                  • J
                                    jopebe last edited by

                                    Hallo und guten Tag,

                                    die Arbeit, die hinter diesem Projekt steckt, muss immens gewesen sein.

                                    Ich würde gerne etwas davon profitieren, bin aber noch Anfänger, und habe daher noch einige Verständnisfragen.

                                    1. Im Sketch sind Kennziffern erwähnt, mit denen man die Ein/Ausgänge definieren kann:

                                    I/O-Kennung: hier wird die Funktion aller verwendbaren IOös mit einer Kennziffer festgelegt

                                    //dabei haben alle IOös die Standardfunktionen plus spez. Sonderfunktionen

                                    // Standardfunktionen sind STANDARD TYPE:

                                    // '1' =MY_SystemPin; '2' =DS18B20; '3'=MAX31855; '4' =RELAY '5' =DHTxx; '6' =PWM, '7' =IMPULSEcount, '8'=NTC, '9'=BUTTON,

                                    typedef struct s_iomodus

                                    {

                                    mysensor_sensor sensorType;

                                    mysensor_data variableType;

                                    const char* sensorDescription;

                                    const char* sensorVersion;

                                    const unsigned char Int_to_HLP;

                                    } iomodus_t;

                                    iomodus_t iomodus[] =

                                    {

                                    /*Please fill in the RIGH Sensor Type and Variable Type from the SERIAL API

                                    http://www.mysensors.org/download/

                                    {presentation, set/req, description}

                                    */

                                    // SENSOR VARIABLE DESCRIPTION STANDARD TYPE OFFSET

                                    // sensorType variableType sensorDescription sensorVersion Int_to_HLP

                                    //Relay An / Relay Aus__________________________

                                    { S_UNUSED, V_UNKNOWN, "DESCRIPTIONS", "MY_SystemPin", 0}, //D0 DO NOT TOUCH

                                    { S_UNUSED, V_UNKNOWN, "DESCRIPTIONS", "MY_SystemPin", 0}, //D1 DO NOT TOUCH

                                    In der darauf folgenden Liste finde ich aber keine der Zahlen wieder und auch keine Stelle, wo ich sie einsetzen könnte?

                                    Wie geht das?

                                    2.Gibt es auch eine abgespeckte Form, in der z.B. nur 5 oder 10 Sensoren/Aktoren auf die gleich Art und Weise eingebunden werden, wobei aber dann die Speicherkapazität eines Uno oder Mini ausreicht?

                                    3. Ich bin etwas ratlos. Hinweis: Im Homeduino-Projekt ist etwas ähnliches umgesetzt, oder?

                                    Vielen Dank im Voraus

                                    jopebe

                                    1 Reply Last reply Reply Quote 0
                                    • M
                                      Maxtox last edited by

                                      Schreib per PN deine rufnummer… Per Telefon ist es einfacher

                                      1 Reply Last reply Reply Quote 0
                                      • J
                                        jopebe last edited by

                                        Sorry, wenn ich eine Zeit lang still war. Ich hatte andere Probleme.

                                        Mit DOino will ich mich später wieder beschäftigen, wenn ich mehr Grundlagen habe.

                                        Hier wird sehr viel im Rahmen der Diskussionen erklärt. Ich vermisse manchmal "HowTos".

                                        Im MySensor-Net ist es ähnlich. Dort sind die Grundlagen sehr dürftig erklärt und man muss Aufpassen, welche Version mit welchem Sketch läuft. Hinzu kommt, dass man sogar noch auf die Boards-Versionen in IDE achten muss.

                                        Ich habe z.B. mit der neuesten Version kein lauffähiges Gateaway zu Stande gebracht. Das muss man erst einmal heraus finden.

                                        Apropo Gateaway: Ich kriege das Original-Ethernet-Gateaway in IO-Broker nicht dazu, den Node mit dem Original.Temperatur-Sketch von Hek an zu zeigen. Ich finde auch keine aktuelle Anleitung.

                                        Wenn hier einer einen Tipp hat.

                                        Bis demnächst, wenn ich mir wieder etwas erkämpft habe.

                                        1 Reply Last reply Reply Quote 0
                                        • M
                                          Maxtox last edited by

                                          sehe ich genau so… die, die programme schreiben brauchen es nicht, und die es installieren wollen es nicht mit den anderen teilen 😉

                                          1 Reply Last reply Reply Quote 0
                                          • B
                                            Bönne last edited by

                                            Hallo zusammen,

                                            ich bin seit einiger Zeit mit dem Thema iobroker unterwegs, beschäftige mich aber auch mit den Arduinoboards, die ich gerne in iobroker anbinden möchte. Diese Projekt ist m.E. hier sehr vielversprechend, aber mir fehlt auch ein bisschen mehr beschreibung … diese vermisse ich übrigens auf der mysensor Seite auch .. zumindest die für Anfänger.

                                            Den gesamten Code von MaxTox habe ich runtergeladen und habe Productiv_V1 auch compilieren und auf meinen Mega aufspielen können. Die Einstellungen an Gateway, IP, etc. habe ich gemacht und ich sehe im Log des IO-brockers auch, dass es zu einer Verbindung kommt. Aber ich sehe keine Nodes / Sensoren ... Die entsprechende Sensoren (Array im Sketch) habe ich angepasst .. aber es tut sich nichts.

                                            Was ist noch zu tun ? Muss ich ggf. noch was von der Codeauftreilung der verschiedenen *.ino Dateien etwas in den Hauptsketch übernehmen ? Über etwas Hilfe / Anleitung / how to wäre ich dankbar ... wenn das Ganze wirklich funtioniert was es verspricht scheint es relativ genial zu sein ... 🙂

                                            Vielleicht kann MaxTox für etwas Anfänger know how transfer sorgen ?

                                            Gruß

                                            Bönne

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            672
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            9
                                            43
                                            13245
                                            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