Problem mit DHT-22 via I2C und I2C_Anything

Zum einen stimme ich micheal_x zu, dass Wire.onRequest() im setup aufgerufen werden müsste, damit das funktionieren könnte.

Weshalb gibst Du dem I2C Master eine Adresse?

Wire.begin(4);

Wie kommst Du auf die Idee, dass Du 11 Bytes abfragen musst, damit 2 floats übertragen werden? 5.5 Bytes pro float oder wie soll das gehen:

Wire.requestFrom(5,11);

Ansonsten ist das I2C_Anything.h nur ein kurzes Header-File:

// Written by Nick Gammon
// May 2012

#include <Arduino.h>
#include <Wire.h>

template <typename T> int I2C_writeAnything (const T& value)
  {
    const byte * p = (const byte*) &value;
    unsigned int i;
    for (i = 0; i < sizeof value; i++)
          Wire.write(*p++);
    return i;
  }  // end of I2C_writeAnything

template <typename T> int I2C_readAnything(T& value)
  {
    byte * p = (byte*) &value;
    unsigned int i;
    for (i = 0; i < sizeof value; i++)
          *p++ = Wire.read();
    return i;
  }  // end of I2C_readAnything