Hauptmenü

FHEMduino

Begonnen von mdorenka, 06 Dezember 2013, 15:34:39

Vorheriges Thema - Nächstes Thema

machnetz

#45
Nja, den von dir empfohlenen KW9010 ;-)

Franz Tenbrock

Hallo und guten Morgen
hab nun die Teile wie auf der 1. Seite vor mir liegen,
sehen identisch aus
nun hat das eine Teil aber 4 Füßchen :-(
im Wiki habe ich allerdings jeweils 3 Anschlüße, das wr mir vorher gar nicht bewusst geworden.
GND ist natürlich klar, ist auf beiden Teilen beschriftet

am TX433 gibt es dann noch Data und VCC

die 5 V Leitung muss an VCC??
die D11 Leitung an Data

am anderen Bauteil dem RX
gibt es VCC wohl dann auch die 5 V Leitung ?!
und
D2 an RXD, wobei bei meiner Platine nicht eindeutig zu sehen ist welcher Pin das ist :-(
cubi3, Cul 868, ESA2000WZ, EM1000GZ,  FS20, dashboard, 1-Wire, Max Thermos, Max Wandthermo, Max Lan, Fritzbox callmonitor, , nanocul, HM Led16, HM Bewegungsmelder, HM Schalter, RPi, banana, ESP8266, DoorPi

mdorenka

die teile gibt es teilweise auch mit 4 pins, jedoch sind dann 2 davon DATA, das sollte auch auf der platine erkennbar sein dass diese verbunden sind.
FHEMduino an RaspberryPi, IT Zwischenstecker, KW9010 T/H-Fühler

mdorenka

und ja, VCC ist versorgungsspannung
an d2 der pin vom empfänger (das größere modul in der regel) und an d11 das vom sender
FHEMduino an RaspberryPi, IT Zwischenstecker, KW9010 T/H-Fühler

Franz Tenbrock

Die Hardeware ist fertig :-)

Hatte noch Stiftleisten im Keller, damit habe ich eine fliegende Verdrahtung realisiert die ich aber da alles nur gesteckt ist jederzeit wieder ändern kann.
die Module selbst habe ich mit etwas Heißkleber auf eine 4er Stiftleiste geklebt
so kann ich die Module einfach auf die freien Stifte stecken.

Schenll fertig und jederzeit wandelbar

(http://fhemduino.jpg)

Hoffentlich klppt das mit der Programmierung auch so einfach
cubi3, Cul 868, ESA2000WZ, EM1000GZ,  FS20, dashboard, 1-Wire, Max Thermos, Max Wandthermo, Max Lan, Fritzbox callmonitor, , nanocul, HM Led16, HM Bewegungsmelder, HM Schalter, RPi, banana, ESP8266, DoorPi

mdorenka

ehm .. interessanter aufbau :D
leider muss ich dir mitteilen dass du noch antennen anlöten solltest ;)
länge 17cm, möglichst keine litze ;).
FHEMduino an RaspberryPi, IT Zwischenstecker, KW9010 T/H-Fühler

Franz Tenbrock

das wäre meine nächste Frage gewesen, da kann man sehen wie blöde Anfänger sind....
bisher brauch ich die Antenne ja noch nicht. Denek an Beide Teiel, Sender und Empfänger


lade mir gerade von arduino.cc die

Arduino 1.0.5

Download

Arduino 1.0.5 (release notes), hosted by Google Code:

    Windows Installer, Windows (ZIP file)
herunter, gleich fertig.
cubi3, Cul 868, ESA2000WZ, EM1000GZ,  FS20, dashboard, 1-Wire, Max Thermos, Max Wandthermo, Max Lan, Fritzbox callmonitor, , nanocul, HM Led16, HM Bewegungsmelder, HM Schalter, RPi, banana, ESP8266, DoorPi

mdorenka

FHEMduino an RaspberryPi, IT Zwischenstecker, KW9010 T/H-Fühler

Franz Tenbrock

Also wenn ich auf die Seite
https://github.com/mdorenka/fhemduino/blob/master/src/sketch.ino#L1
gehe und dann auf open klicke wird ein weiteres Programm heruntergeladen github ??
brauch ich wohl nciht so wie ich sehe

Hatte zuvor das kleine Arduino Programm geladen was nun auch läuft
da muss wohl der Sketch rein ?!
also dies darein ?!
#include "RCSwitch.h"
#include <stdio.h>
#include <stdarg.h>

#define SERIAL_BITRATE 9600


#define SYNC 9500
#define ONE 4500
#define ZERO 2500
#define GLITCH 200

#define MESSAGELENGTH 36

unsigned long LastPulseTime = 0;

volatile bool SyncReceived = false;
volatile unsigned long bitcount = 0;
volatile bool message[MESSAGELENGTH + 1];


String cmdstring;
RCSwitch mySwitch = RCSwitch();
bool isTransmitting = false;




void setup()
{
  Serial.begin(SERIAL_BITRATE);
  pinMode(2,INPUT);
  pinMode(13,OUTPUT);
  attachInterrupt(0,ISRHandler,FALLING);
}

void loop()
{
  if (mySwitch.available()) {

      int value = mySwitch.getReceivedValue();

      if (value != 0) {
        Serial.print(F("I"));
        Serial.println(mySwitch.getReceivedValue());
      }

      mySwitch.resetAvailable();
  }

  if (SyncReceived) {
    // Sensor ID & Channel
    uint8_t id = message[7] | message[6] << 1 | message[5] << 2 | message[4] << 3 | message[3] << 4 | message[2] << 5 | message[1] << 6 | message[0] << 7;

    // (Propably) Battery State
    bool battery = message[8];

    // Trend
    uint8_t trend = message[9] << 1 | message[10];

    // Trigger
    bool forcedSend = message[11];

    // Temperature & Humidity
    int temperature = ((message[23] << 11 | message[22] << 10 | message[21] << 9 | message[20] << 8 | message[19] << 7 | message[18] << 6 | message[17] << 5 | message[16] << 4 | message[15] << 3 | message[14] << 2 | message[13] << 1 | message[12]) << 4 ) >> 4;
    uint8_t humidity = (message[31] << 7 | message[30] << 6 | message[29] << 5 | message[28] << 4 | message[27] << 3 | message[26] << 2 | message[25] << 1 | message[24]) - 156;
   
    // check Data integrity
    uint8_t checksum = (message[35] << 3 | message[34] << 2 | message[33] << 1 | message[32]);
    uint8_t calculatedChecksum = 0;
    for (int i = 0 ; i <= 7 ; i++) {
      calculatedChecksum += (byte)(message[i*4 + 3] <<3 | message[i*4 + 2] << 2 | message[i*4 + 1] << 1 | message[i*4]);
    }
    calculatedChecksum &= 0xF;

    if (calculatedChecksum == checksum) {
      char tmp[11];
      sprintf(tmp,"K%02X%01d%01d%01d%+04d%02d", id, battery, trend, forcedSend, temperature, humidity);
      Serial.println(tmp);
    }

    SyncReceived = false;
    bitcount = 0;
  }
//delay(100);
}

void serialEvent()
{
  while (Serial.available())
  {

    char inChar = (char)Serial.read();
    switch(inChar)
    {
      case '\n':
      case '\r':
      case '\0':
        HandleCommand(cmdstring);
        break;
      default:
        cmdstring = cmdstring + inChar;
    }
  }
}

void HandleCommand(String cmd)
{
  // Version Information
  if (cmd.equals("V"))
  {
    Serial.println(F("V 0.4 RFduino - compiled at " __DATE__ " " __TIME__));
  }


  // Print free Memory
  else if (cmd.equals("R")) {
      Serial.print(F("R"));
      Serial.println(freeRam());
  }


  // Switch Intertechno Devices
  else if (cmd.startsWith("is"))
  {
    digitalWrite(13,HIGH);
    detachInterrupt(0);

    mySwitch.enableTransmit(11);
    mySwitch.setProtocol(1);
    // Send it 8 times to make sure it gets transmitted
    mySwitch.setRepeatTransmit(8);
    char msg[13];
    cmd.substring(2).toCharArray(msg,13);
    mySwitch.sendTriState(msg);
    // Disable Transmitter
    mySwitch.disableTransmit();

    attachInterrupt(0,ISRHandler,FALLING);
    digitalWrite(13,LOW);
    Serial.println(cmd);
  }
 

  // Print Available Commands
  else if (cmd.equals("?"))
  {
    Serial.println(F("? Use one of V is R"));
  }
 
  cmdstring = "";
}

void ISRHandler()
{
  // Call RFSwitch Interrupt Handler
  // mySwitch.handleInterrupt();

  // Call KW9010 Interrupt
  KW9010ISR();
}

void KW9010ISR() {
  unsigned long currentMicros = micros();
 
  if (LastPulseTime > currentMicros) {
    LastPulseTime = currentMicros;
    return;
  }

  if (bitcount > 36) {
    bitcount = 0;
  }
  unsigned long duration = currentMicros - LastPulseTime;
  LastPulseTime = currentMicros;
  if ((duration > ZERO - GLITCH) && (duration < SYNC + GLITCH)) {
    if ((duration > SYNC - GLITCH) && (duration < SYNC + GLITCH)) {
      if (bitcount == MESSAGELENGTH) {
          SyncReceived = true;
      }
      bitcount = 0;
    }
    if (!SyncReceived) {
      if ((duration > ZERO - GLITCH) && (duration < ZERO + GLITCH)) {
        // its a zero
        message[bitcount] = false;
        bitcount++;
      }
      else if ((duration > ONE - GLITCH) && (duration < ONE + GLITCH)) {
        // its a one
        message[bitcount] = true;
        bitcount++;
      }
    }
  }
}

// Get free RAM of UC
int freeRam () {
  extern int __heap_start, *__brkval;
  int v;
  return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval);
}


Löte erst mal Antennen an in der Hoffnung das ich ne kurze Antwort bekomme

Soweit ich verstanden habe den Code von oben in das Ardunio rein
und dann im menü auf upload klicken ?!
vorher natürlich das Teil an den usb Port anstecken

Sorry brauche Hilfe für dummys
cubi3, Cul 868, ESA2000WZ, EM1000GZ,  FS20, dashboard, 1-Wire, Max Thermos, Max Wandthermo, Max Lan, Fritzbox callmonitor, , nanocul, HM Led16, HM Bewegungsmelder, HM Schalter, RPi, banana, ESP8266, DoorPi

mdorenka

teste erstmal ob der arduino funktioniert - dazu einfach per usb anschließen.
windows (falls du windows benutzt) sollte den dann erstmal erkennen.

dann startest du arduino.
unter tools -> serieller port wählst du den aus an den der arduino angeschlossen ist. praktisch sollte hier nur einer aufgeführt sein.
unter tools->board wählst du daspassende aus, in deinem fall also "arduino nano w/ atmega328"

dann gehst du unter datei -> beispiele -> basics -> blink
in dem neuen fenster dann auf "upload" clicken.

jetzt sollte die LED auf dem arduino eigentlich anfange zu blinken :)
FHEMduino an RaspberryPi, IT Zwischenstecker, KW9010 T/H-Fühler

Franz Tenbrock

Super Anleitung alles so geklappt
Hier noch 2 Bilder für dummys

(http://fhemduino%20install1.jpg)

Also com 3
Dann das A Programm gestartet und den Port eingestellt

(http://fhemduino%20install2.jpg)

Gehe ich Recht in der Annahme das ich jetzt den Code von deinem Sketch in das Fenster kopieren muss und dann upload ?!
cubi3, Cul 868, ESA2000WZ, EM1000GZ,  FS20, dashboard, 1-Wire, Max Thermos, Max Wandthermo, Max Lan, Fritzbox callmonitor, , nanocul, HM Led16, HM Bewegungsmelder, HM Schalter, RPi, banana, ESP8266, DoorPi

mdorenka

jein, du brauchst auch noch die rcswitch libary - ich habe eine modifizierte variante

https://github.com/mdorenka/fhemduino/tree/master/lib

der ordner muss kopiert werden in deine dokumente unter Arduino/Libaries (also beispielweise c:\Users\Marcel\Documents\Arduino\libraries\) so dass dort dann ein unterverzeichnis "RCSwitch" ist
FHEMduino an RaspberryPi, IT Zwischenstecker, KW9010 T/H-Fühler

MarkusN

Tolle Arbeit, spart viel Geld! Eine kurze Frage hätte ich aber:

Kann ich mit einem Fhemduino gleichzeitig Dosen schalten und die Wettersensoren auslesen, oder brauche ich dafür zwei Fhemduinos?

Franz Tenbrock

Hallo, sag ja dummy

wie kann ich denn den Ordner runterladen, habe nirgends einen Menüpunkt gefunden, muss man sich da erst anmelden??
cubi3, Cul 868, ESA2000WZ, EM1000GZ,  FS20, dashboard, 1-Wire, Max Thermos, Max Wandthermo, Max Lan, Fritzbox callmonitor, , nanocul, HM Led16, HM Bewegungsmelder, HM Schalter, RPi, banana, ESP8266, DoorPi

mdorenka

Zitat von: Franz Tenbrock am 15 Dezember 2013, 13:26:39
wie kann ich denn den Ordner runterladen, habe nirgends einen Menüpunkt gefunden, muss man sich da erst anmelden??

https://github.com/mdorenka/fhemduino <- hier unten rechts auf "download zip"


Zitat von: Markus Niemann am 15 Dezember 2013, 13:24:49
Kann ich mit einem Fhemduino gleichzeitig Dosen schalten und die Wettersensoren auslesen, oder brauche ich dafür zwei Fhemduinos?

ja kannst du, nur nicht genau zum gleichen zeitpunkt, d.h. wenn du sendest, wird der empfänger kurz abgeschaltet, d.h. die wetterdaten die potentiell zu dem zeitpunkt gekommen wären sind "verloren", das wäre aber bei jeder anderen lösung genau so.
FHEMduino an RaspberryPi, IT Zwischenstecker, KW9010 T/H-Fühler