DoorPi-Projekt

Begonnen von Syntaxterror, 25 Februar 2016, 18:39:59

Vorheriges Thema - Nächstes Thema

Christian Uhlmann

Hallo zusammen,

ich wollte gerade mal mein DoorPi definieren und erhalte aber diesen Fehler:
Subroutine DoorPi_Initialize redefined at ./FHEM/70_DoorPi.pm line 64.
Subroutine DoorPi_Define redefined at ./FHEM/70_DoorPi.pm line 96.
Subroutine DoorPi_Undef redefined at ./FHEM/70_DoorPi.pm line 146.
Subroutine DoorPi_Attr redefined at ./FHEM/70_DoorPi.pm line 159.
Subroutine DoorPi_Get redefined at ./FHEM/70_DoorPi.pm line 181.
Subroutine DoorPi_Set redefined at ./FHEM/70_DoorPi.pm line 221.
Subroutine DoorPi_Door redefined at ./FHEM/70_DoorPi.pm line 426.
Subroutine DoorPi_GetLockstate redefined at ./FHEM/70_DoorPi.pm line 583.
2017.04.04 12:46:55 1: reload: Error:Modul 70_DoorPi deactivated:
Experimental keys on scalar is now forbidden at ./FHEM/70_DoorPi.pm line 657.

2017.04.04 12:46:55 0: Experimental keys on scalar is now forbidden at ./FHEM/70_DoorPi.pm line 657.


Aktuelles FHEM sowie aktuelle 70_DoorPi.pm aus dem Contrib Verzeichniss von hier:
https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DoorPi

Hat jemand eine Idee was das sein könnte?


Grüße

Christian
Host: Debian Buster als VM / XCP-NG
Gateways: DuoFern Stick, CUL433 Revolt, CUL MAX, HMLan, HM-USB 2, LaCrosseGateway
Devices: 12x Rademacher Rollos, 6x TX 29 DT-HT, 10x HM-CC-RT-DN, 14x MAX Fensterkontakte, Diverse HM Aktoren für Licht, Klingel, Gong, Eingangstür, ESPEasy, Sonoff mit Tasmota

Frank_Huber

2017.04.04 12:46:55 1: reload: Error:Modul 70_DoorPi deactivated:
Experimental keys on scalar is now forbidden at ./FHEM/70_DoorPi.pm line 657.

2017.04.04 12:46:55 0: [b]Experimental keys on scalar is now forbidden[/b] at ./FHEM/70_DoorPi.pm line 657.


Hier ist der Grund.
muss der Modulauthor anpassen. kannst evtl über featurelevel 5.7 testen.

Christian Uhlmann

Hi,

featurelevel 5.7 geht leider nicht :(


attr global featurelevel 5.7


mit gesetztem verbose 5 kommen folgende Fehler:

2017.04.04 14:28:58 4: WEB_192.168.127.12_49471 POST /fhem&fw_id=192&room=Unsorted&cmd=define+doorpi+DoorPi+192.168.127.172; BUFLEN:0
2017.04.04 14:28:58 5: Cmd: >define doorpi DoorPi 192.168.127.172<
2017.04.04 14:28:58 5: Loading ./FHEM/70_DoorPi.pm
2017.04.04 14:28:58 1: reload: Error:Modul 70_DoorPi deactivated:
Experimental keys on scalar is now forbidden at ./FHEM/70_DoorPi.pm line 657.

2017.04.04 14:28:58 0: Experimental keys on scalar is now forbidden at ./FHEM/70_DoorPi.pm line 657.

2017.04.04 14:28:58 4: WEB: /fhem&fw_id=192&room=Unsorted&cmd=define+doorpi+DoorPi+192.168.127.172 / RL:1370 / text/html; charset=UTF-8 / Content-Encoding: gzip
/


Host: Debian Buster als VM / XCP-NG
Gateways: DuoFern Stick, CUL433 Revolt, CUL MAX, HMLan, HM-USB 2, LaCrosseGateway
Devices: 12x Rademacher Rollos, 6x TX 29 DT-HT, 10x HM-CC-RT-DN, 14x MAX Fensterkontakte, Diverse HM Aktoren für Licht, Klingel, Gong, Eingangstür, ESPEasy, Sonoff mit Tasmota

Christian Uhlmann

Hi,

ich habs gefunden und bei mir gefixt. Sind nur 2 kleine Änderungen:

Zeile 657:

foreach my $key (sort(keys $keyboards)) {

muss werden zu

foreach my $key (sort(keys %{$keyboards})) {


und Zeile 676:

foreach my $key (sort(keys $fscmds)) {

muss werden zu

foreach my $key (sort(keys %{$fscmds})) {


Ich beschäftige mich mal nachher mit dem erstellen eines Patches.
Könnte aber noch was dauern, habe das noch nie gemacht :P


Grüße

Christian
Host: Debian Buster als VM / XCP-NG
Gateways: DuoFern Stick, CUL433 Revolt, CUL MAX, HMLan, HM-USB 2, LaCrosseGateway
Devices: 12x Rademacher Rollos, 6x TX 29 DT-HT, 10x HM-CC-RT-DN, 14x MAX Fensterkontakte, Diverse HM Aktoren für Licht, Klingel, Gong, Eingangstür, ESPEasy, Sonoff mit Tasmota

Christian Uhlmann

Hi nochmal,

dank https://wiki.fhem.de/wiki/How_to_write_a_patch ging das ja sehr einfach.

Anbei der patch, vielleicht könnte pah den übernehmen.


Danke und Grüße

Christian

P.S.: Bitte um Info, wenn entweder bei der Korrektur oder bei dem Patch etwas nicht gepasst hat.
Host: Debian Buster als VM / XCP-NG
Gateways: DuoFern Stick, CUL433 Revolt, CUL MAX, HMLan, HM-USB 2, LaCrosseGateway
Devices: 12x Rademacher Rollos, 6x TX 29 DT-HT, 10x HM-CC-RT-DN, 14x MAX Fensterkontakte, Diverse HM Aktoren für Licht, Klingel, Gong, Eingangstür, ESPEasy, Sonoff mit Tasmota

Prof. Dr. Peter Henning

Das hat mit dem Feature-Level von FHEM gar nichts zu tun, sondern ist eine Frage der Perl-Version. Normalerweise werden "experimental"-features nicht wieder herausgenommen, sondern in den Regelbetrieb überführt.

@Christian Uhlmann: Welches Perl wird hier verwendet ?

LG

pah

Christian Uhlmann

#411
Hi,
das es an der Perl Version liegt hatte ich auch schon erahnt. Bin jetzt bis Samstag nicht zu Hause und kann erst dann genau schauen. Es müsste aber die Perl Version aus Debian Stretch / Testing sein.

Ansonsten gibt es am Wochenende dazu ein Update von mir. Aber vermutlich wird es 5.24 sein (https://packages.debian.org/de/stretch/perl)

Grüße Christian
Host: Debian Buster als VM / XCP-NG
Gateways: DuoFern Stick, CUL433 Revolt, CUL MAX, HMLan, HM-USB 2, LaCrosseGateway
Devices: 12x Rademacher Rollos, 6x TX 29 DT-HT, 10x HM-CC-RT-DN, 14x MAX Fensterkontakte, Diverse HM Aktoren für Licht, Klingel, Gong, Eingangstür, ESPEasy, Sonoff mit Tasmota

Prof. Dr. Peter Henning

ZitatAber vermutlich wird es 5.24 sein
Heiteres Versionenraten werde ich nicht betreiben.

pah

Christian Uhlmann

Zitat von: Prof. Dr. Peter Henning am 05 April 2017, 18:19:43
Heiteres Versionenraten werde ich nicht betreiben.

Brauchst du auch nicht, hier die Version:


This is perl 5, version 24, subversion 1 (v5.24.1) built for x86_64-linux-gnu-thread-multi
(with 65 registered patches, see perl -V for more detail)



Grüße

Christian
Host: Debian Buster als VM / XCP-NG
Gateways: DuoFern Stick, CUL433 Revolt, CUL MAX, HMLan, HM-USB 2, LaCrosseGateway
Devices: 12x Rademacher Rollos, 6x TX 29 DT-HT, 10x HM-CC-RT-DN, 14x MAX Fensterkontakte, Diverse HM Aktoren für Licht, Klingel, Gong, Eingangstür, ESPEasy, Sonoff mit Tasmota

UweH

So, habe fertig. Muss nur noch ein Loch in die Wand hacken...
Der Wandeinbaukasten ist aus dem Drucker, das Ding aus Metall biegen und schweißen war mir zu aufwendig...

Gruß
Uwe

Prof. Dr. Peter Henning

Sieht gut aus.

Nachdem meine Station jetzt 9 Monate in Betrieb ist, habe ich ein paar Verbesserungsideen, dauert aber noch ein paar Wochen.

Was ich immer noch nicht hundertprozentig im Griff habe ist das Verhalten der Keymatic, wenn mein Jüngster aus Trotz die Tür mit dem normalen Schlüssel öffnet. Außerdem kämpfe ich ab und zu noch mit Latenzen unbekannten Ursprungs - man hält den iButton an, LED leuchtet - aber Tür geht erst 3-4 Sekunden später auf (Erste Verbesserungsidee: Die kommende Türöffnung wird im Display angezeigt).

LG

pah


UweH

Zitat von: Prof. Dr. Peter Henning am 09 April 2017, 17:16:09
Sieht gut aus.
Danke.
Schaeffer AG war ein guter Tipp. Ich habe vor ein paar Jahren schon mal eine Frontplatte bei einer anderen Firma herstellen lassen, war lange nicht so gut. In unserer Firma hätte ich auch fräsen können, aber am Eloxieren  und den perfekten Gewindebolzen wäre es gescheitert. Insofern lohnen sich ein paar Euronen mehr wirklich.

Gruß
Uwe

farion

@pah:
Ich habe das so gelöst, wie du vorgeschlagen hast. Also mit extra Meldung wenn die Tür aufgeht. Bei mir kommt aktuell ein "Access denied"- oder "Access granted"-Schild. Praxistests stehen freilich noch aus. Also das 3-4-Sekunden-Delay hast du nur wenn abgeschlossen ist? Der Summer sollte ja relativ latenzfrei anspringen.

Gruss Frieder
Fhem5.8@Raspi3|~70xHomematic|KM271|1Wire|DoorPi mit DoorPiBoard|GarageDoorSingleButton|Graphite

Prof. Dr. Peter Henning

Status von DoorPi ?

Nachdem mein System jetzt seit gut 9 Monaten produktiv läuft (und meine Familie sich weitgehend daran gewöhnt hat ..), habe ich mal ein paar der Logs ausgewertet und etwas am Modul herumgeschraubt.

Erstens noch zwei Fehler in 70_DoorPi.pm gefunden (sub GetLockstate schickte an das DoorPi "locked" und "unlocked" statt "doorlocked" und "doorunlocked"). Aktuelle Version ist jetzt 2.0alpha9

Zweitens gibt es noch ein Problem bei der Befüllung der Datenbank. Zur Erinnerung: Im originalen handler.py funktionierte das Logging in der Datenbank ja gar nicht, weil das Commit fehlte Mit meinem Patch funktioniert das gut - allerdings gibt es noch einen Fehler, weil offenbar bei einem Linphone-Call zwei Transaktionen in der DB gleichzeitig offen sind.

Ich habe also etwas im DoorPi-Forum nachgegraben - aber an keiner Stelle gefunden, dass mein Patch in den Mainstream-Code aufgenommen worden wäre. Mein DoorPi ist also auf dem Stand 2.5.0.4 + Patches.

Fragen hier also: Ist das die aktuelle Version ? Funktionoert bei Anderen das Logging ohne meine Patches ?
Wie sieht es mit dem Purge-Befehl aus, zum Löschen der Einträge vor einem festen Datum ? Das war ja auch einer meiner Patches, hat Motom das in den regulären Code aufgenommen ?
Hat jemand schon etwas von der Weiterentwicklung gehört ?

LG

pah

Sailor

#419
Guten Abend zusammen

nachdem nunmehr langsam die ganzen Einzelteile eintreffen, habe ich mich mal rangesetzt mich um die Software zu kümmern:

Teil 1: Der Arduino
Basierend auf diesen Thread, habe ich folgenden Code in der Arduino Entwicklungsumgebung compiliert:
(Den iButton mal bitte ignorieren)

/*----------------------------------------------------------------------------------
Haustür

Prof. Dr. Peter A. Henning, April 2016

------------------------------------------------------------------------------------*/


#include <OneWire.h>
#include <SPI.h>
#include <SD.h>
#include <SoftwareSerial.h>
// Make sure that in NexConfig.h nexSerial is configured properly !
#include "Nextion.h"

// Door Opener Subsystem
const int DoorOpen   =  8;  // output for door opening
const int LockState  =  6;  // output to indicate lock state
byte       softlock  =  0;
byte       hardlock  =  0;

// Security PIN
const int HardLock   =  5;  // input low = high security
String PIN           = "12345";
char   pin[10];
char   pindigit      =  ' ';
byte   pinctr        =  0;
long   pinMillis     =  0;
const int WrongID    =  7;  // indicator for false 1-Wire ID or PIN

// process variables
const int loopLED    = 13; // signal loop
byte phase           = 1;  // phase of test
long currentMillis   = 0;

// dimming
const int  Brightness  = A0;   // input pin for the dimming voltage
const int  Movement    = A1;   // input for movement detection
const int  DashDim     = 3;    // output for dimming further dashlights
const int  DashlightOn = 4;    // input pin for the dashlight signal
const long dimTimeout  = 60000;
byte       isDimmed   = 0;
long       dimMillis  = 0;    // timer

// 1-Wire subsystem
OneWire   ds(12);          // 1-Wire on pin 12 (a 4.7K resistor is necessary)
const int redLED     = 11; // LED on pins 9,10,11
const int greenLED   = 10;
const int blueLED    = 9;

typedef struct {
  char* name;
  byte  ROM[8];
  int   red;
  int   green;
  int   blue;
} iButton;

const byte iBnum = 1;     // Number of defined iButtons
const iButton iButtons[] = {
  {"iRed",   {0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}, LOW, HIGH, HIGH}
};

//  {"iRed*",  {0x01, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--}, LOW, HIGH, HIGH},
//  {"iGreen", {0x01, 00x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--}, HIGH, LOW, HIGH},
//  {"iBlue",  {0x01, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--}, HIGH, HIGH, LOW},
//  {"iOrange", {0x01, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--}, LOW, LOW, HIGH},
//  {"iPink",  {0x01, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--}, LOW, HIGH, LOW},
//  {"iPurple", {0x01, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--, 0x--}, LOW, HIGH, LOW},


// GUI
NexPage page0     = NexPage(0, 0, "page0");
NexPage page1     = NexPage(1, 0, "page1");

NexButton  p0     = NexButton(0, 1, "p0");
NexPicture p1     = NexPicture(0, 2, "p1");

NexButton num0    = NexButton(1, 11, "b0");
NexButton num1    = NexButton(1, 2, "b1");
NexButton num2    = NexButton(1, 3, "b2");
NexButton num3    = NexButton(1, 4, "b3");
NexButton num4    = NexButton(1, 5, "b4");
NexButton num5    = NexButton(1, 6, "b5");
NexButton num6    = NexButton(1, 7, "b6");
NexButton num7    = NexButton(1, 8, "b7");
NexButton num8    = NexButton(1, 9, "b8");
NexButton num9    = NexButton(1, 10, "b9");
NexButton cancel  = NexButton(1, 12, "b10");
NexProgressBar progress  = NexProgressBar(1, 13, "j0");

NexTouch *nex_Listen_List[] =
{
  &num0, &num1, &num2, &num3, &num4,
  &num5, &num6, &num7, &num8, &num9,
  &cancel, &p0, NULL
};

void p0Callback(void *ptr)
{
  dimLight(100);
  softlock = 1;
  if ( hardlock == 0) {
    showLock();
  }
}

void num0PushCallback(void *ptr)
{
  pindigit = '0';
}

void num1PushCallback(void *ptr)
{
  pindigit = '1';
}

void num2PushCallback(void *ptr)
{
  pindigit = '2';
}

void num3PushCallback(void *ptr)
{
  pindigit = '3';
}

void num4PushCallback(void *ptr)
{
  pindigit = '4';
}

void num5PushCallback(void *ptr)
{
  pindigit = '5';
}

void num6PushCallback(void *ptr)
{
  pindigit = '6';
}

void num7PushCallback(void *ptr)
{
  pindigit = '7';
}

void num8PushCallback(void *ptr)
{
  pindigit = '8';
}

void num9PushCallback(void *ptr)
{
  pindigit = '9';
}

void CancelCallback(void *ptr)
{
  pinctr = 0;
  progress.setValue(0);
}



void setup() {

  String cmd;

  // set the digital pins as output:
  pinMode(redLED, OUTPUT);
  pinMode(greenLED, OUTPUT);
  pinMode(blueLED, OUTPUT);
  pinMode(loopLED, OUTPUT);
  pinMode(DoorOpen, OUTPUT);
  pinMode(WrongID, OUTPUT);
  pinMode(LockState, OUTPUT);
  pinMode(HardLock, INPUT_PULLUP);
  pinMode(DashlightOn, INPUT_PULLUP);

  digitalWrite(redLED, HIGH);
  digitalWrite(greenLED, HIGH);
  digitalWrite(blueLED, HIGH);
  digitalWrite(loopLED, LOW);
  digitalWrite(DoorOpen, HIGH);
  digitalWrite(WrongID, HIGH);
  digitalWrite(LockState, HIGH);

  // initialize the GUI
  nexInit();

  p0.attachPush(p0Callback, &p0);
  num0.attachPush(num0PushCallback, &num0);
  num1.attachPush(num1PushCallback, &num1);
  num2.attachPush(num2PushCallback, &num2);
  num3.attachPush(num3PushCallback, &num3);
  num4.attachPush(num4PushCallback, &num4);
  num5.attachPush(num5PushCallback, &num5);
  num6.attachPush(num6PushCallback, &num6);
  num7.attachPush(num7PushCallback, &num7);
  num8.attachPush(num8PushCallback, &num8);
  num9.attachPush(num9PushCallback, &num9);
  cancel.attachPush(CancelCallback, &cancel);

  //dimming
  dimLight(100);

  //showlock
  if ( digitalRead(HardLock) == LOW) {
    showLock();
    hardlock = 1;
    softlock = 0;
  } else {
    hideLock();
    hardlock = 0;
    softlock = 0;
  }
}

void openDoor(int level) {
  digitalWrite(DoorOpen, LOW);
  delay(1000);
  digitalWrite(DoorOpen, HIGH);
}

void wrongID() {
  digitalWrite(WrongID, LOW);
  delay(1000);
  digitalWrite(WrongID, HIGH);
}

void showLock() {
  sendCommand("vis p1,1");
}
void hideLock() {
  sendCommand("vis p1,0");
}

void dimLight(int level) {
  uint16_t dimVal;
  String cmd = "dim=";
  // zero level - determine from lighting conditions
  if ( (level == 0) && (digitalRead(DashlightOn) == HIGH) ) {
    dimVal = (uint32_t) analogRead(Brightness);
    dimVal = map(dimVal, 0, 1023, 0, 100);
    isDimmed = 1;
  // nonzero level - take as it is
  } else {
    dimVal = 100;
    isDimmed = 0;
  }
  cmd += dimVal;
  //dbSerialPrint(cmd);
  sendCommand(cmd.c_str());
  dimVal = map(dimVal, 0, 100, 0, 255);
  //dbSerialPrint(" -- ");
  //dbSerialPrintln(dimVal);
  analogWrite(DashDim,dimVal);
  dimMillis = millis();
}

void loop(void) {
  byte i;
  byte j;
  boolean equiv;
  byte iBfound;
  byte present = 0;
  byte addr[8];
  char* device;

  // new for each loop
  currentMillis = millis();
  digitalWrite(loopLED, HIGH);

  // dimming
  if ( isDimmed == 1 ) {
    if ( analogRead(Movement) < 10 ) {
       dimLight(100);
    }
     if ( digitalRead(DashlightOn) == LOW) {
        //dbSerialPrintln(" DashlightOn = LOW");
        dimLight(100);
     }
  }
  if ( (currentMillis - dimMillis) > dimTimeout) {
    dimLight(0);
  }

  // locking
  if ( digitalRead(HardLock) == LOW) {
    //change display only if hardlock has changed
    if ( hardlock == 0 ) {
      showLock();
    }
    hardlock = 1;
    softlock = 0;

  } else {
    //change display only if
    if ( (hardlock == 1) && (softlock == 0)) {
      hideLock();
    }
    hardlock = 0;
  }

  //lockState display
  if ( (hardlock == 0) && (softlock == 0)) {
    digitalWrite(LockState, HIGH);
  } else {
    digitalWrite(LockState, LOW);
  }

  //1-Wire bus access only in phase 1
  if ( phase == 1) {
    digitalWrite(redLED, HIGH);
    digitalWrite(greenLED, HIGH);
    digitalWrite(blueLED, HIGH);

    if ( !ds.search(addr)) {
      present = 0;
      ds.reset_search();
      digitalWrite(loopLED, LOW);
      delay(250);

    } else {
      digitalWrite(loopLED, LOW);
      // Invalid 1-Wire ID
      if (OneWire::crc8(addr, 7) != addr[7]) {
      } else {
        dimLight(100);

        // the first ROM byte indicates which chip
        switch (addr[0]) {
          case 0x01:
            device = "DS2401";
            present++;
            for (i = 0; i < iBnum; i++) {
              equiv = true;
              for (j = 0; j < 7; j++) {
                if (iButtons[i].ROM[j] != addr[j]) {
                  equiv = false;
                  break;
                }
              }
              if (equiv ) {
                iBfound = i;
                break;
              }
            }

            if ( equiv ) {
              digitalWrite(redLED, iButtons[iBfound].red);
              digitalWrite(greenLED, iButtons[iBfound].green);
              digitalWrite(blueLED, iButtons[iBfound].blue);
              // LowSec state => open door
              if ( (hardlock == 0) && (softlock == 0)) {
                openDoor(1);
                delay(4000);
                return;
                // HiSec state => go to phase 2
              } else {
                phase = 2;
                pinMillis = millis();
                page1.show();
                return;
              }
              //sabotage ? Unknown iButton
            } else {
              digitalWrite(redLED, LOW);
              digitalWrite(greenLED, LOW);
              digitalWrite(blueLED, LOW);
              wrongID();
            }
            break;
          default:
            device = "unknown";
            break;
        }
        ds.reset();
      }
    }
  }
  nexLoop(nex_Listen_List);
  if ( phase == 2 ) {
    // check for timeout
    if ( (currentMillis - pinMillis) > 30000 ) {
      progress.setValue(0);
      phase = 1;
      pinctr = 0;
      page0.show();
    }
  }

  // phase 2 and GUI input is a number
  if ( (phase == 2) && ( pindigit != ' ') ) {
    // push this number to the PIN buffer
    pin[pinctr] = pindigit;
    pindigit = ' ';
    pinctr++;
    progress.setValue(pinctr * 20);
    // PIN is complete
    if ( pinctr == 5) {
      // PIN is correct => open door
      if ( String(pin) == PIN ) {
        openDoor(2);
        // wrong PIN
      } else {
        wrongID();
      }
      // return to phase 1
      progress.setValue(0);
      phase = 1;
      pinctr = 0;
      page0.show();
    }
  }
}


Folgende Warnungen sind dabei herausgekommen:

H:\Haus\eHouse\DoorPi\Software\Arduino\DoorPi\DoorPi.ino:62:1: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

};

^

H:\Haus\eHouse\DoorPi\Software\Arduino\DoorPi\DoorPi.ino: In function 'void loop()':

H:\Haus\eHouse\DoorPi\Software\Arduino\DoorPi\DoorPi.ino:335:20: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

             device = "DS2401";

                    ^

H:\Haus\eHouse\DoorPi\Software\Arduino\DoorPi\DoorPi.ino:376:20: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

             device = "unknown";

                    ^

Der Sketch verwendet 15550 Bytes (54%) des Programmspeicherplatzes. Das Maximum sind 28672 Bytes.
Globale Variablen verwenden 1409 Bytes (55%) des dynamischen Speichers, 1151 Bytes für lokale Variablen verbleiben. Das Maximum sind 2560 Bytes.


Für einen absoluten Arduino-Neuling: Ist das jetzt OK 0der nicht??

PS an pah: Ich würde vorschlagen das Wiki um 2 Zeilen basierend auf diesem Thread zu ergänzen:


ZitatDie Nextion-Bibliotheken von Nextion können von Github heruntergeladen werden: [https://github.com/itead/ITEADLIB_Arduino_Nextion Github]
Diese zip-Datei muss dann in der Entwicklungsumgebung nur noch wie folgt eingebunden werden:
Sketch-> Bibliotheken einbinden -> .zip Bibliothek hinzufügen.
Zusätzlich muss noch die Bibliothek "OneWire" über den Bibliotheksverwalter nachinstalliert werden.

Zum Kompilieren muss für den "Arduino Micro" in der Entwicklungsumgebung der "Arduino Leonardo" ausgewählt werden, da der "Arduino Micro" nicht zur Auswahl steht.

Gruß
   Sailor
******************************
Man wird immer besser...