Integration von MySensors in FHEM geplant?

Begonnen von fh555, 06 September 2014, 00:40:58

Vorheriges Thema - Nächstes Thema

Edi77

Gateway hat 9.600 der Arduino 115.200
Master FHEM 6 als VM auf ESX Ubuntu 20.04 LTS mit MAXCube/MAX!/FS20|TabletUI|Flightradar|Tasmota|TTN Lora|CCU3 HomematicIP|RPi mit GammaScout|MQTT EasyESP 8266|LuftdatenInfo|deCONZ HUEDev|probemon|Siemens Logo|P4D|3D PRINTER RAISE3D

Komaandy

Hallo guten Morgen,

weiss einer von euch "wohin" das mysensorsmodul seine Dateien schreibt ?
Also mein konkretes Problem ist folgendes.
Wenn ich ein Node am FHEM anmelde bekommt es ja eine ID zugeteilt und diese ID ist dann quasi verbraucht und wird auf immer und ewig diesem Node zugeteilt bleiben.
Auch nach einem Löschen der Node im FHEM und EEPROM-Wipe der Node geht der Counter im FHEM eins nach oben bei erneutem verbinden.
Ich hoffe ich habe das irgendwie verständlich erklärt...

Danke und Gruss

Komaandy

Beta-User

Guten Morgen Komaandy,

der code von 00_mysensors.pm (ab line 361) scheint das dynamisch auszuwerten.

Aber was hindert Dich daran, die NodeID per Sketch so zu vergeben, dass "verwaiste" NodeIDs wieder sinnvoll mit Leben gefüllt werden? Dann kannst Du Dir den EEPROM-Wipe auch sparen ;) .

Ich mache das nur noch so, dass die ID's in allen Sketchen manuell vergeben sind (bei RS485 ist das eh' Pflicht). Hatte sich aber auch in der nRF24-Welt bewährt, da man dann die Arduinos bedenkenlos beim Entwickeln hin- und hertauschen kann.

Gruß, Beta-User
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Komaandy

Hallo, danke für die Antwort erstmal.
Die Node_ID vergeben ich schon statisch, aber ich meine den Effekt beobachtet zu haben dass FHEM die ID eben nur einmal zulässt.
Also ich vergebe z.B. die Node_ID 34, die Node meldet sich am FHEM an, ich lösche die Node und kann Sie dann nicht noch einmal neu anmelden unter der 34, sondern muss per Sketch eine neue ID vergeben bevor FHEM es wieder akzeptiert.
Gruss

Komaandy

Beta-User

Hi Komaandy,

das von Dir beschriebene Verhalten wäre mir neu, MySensors kam mir in diese Richtung bislang eher immer sehr (fast zu) tolerant vor.
Bist Du sicher, dass inclusion mode und autocreate an sind und ansonsten auch die Kommunikation zwischen FHEM und der Node funktioniert (serielle Konsole der Node beobachten)?

Es kann nur uU. etwas dauern, bis alle Readings da sind.

Gruß, Beta-User
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Komaandy

Also das letzte Problem habe ich nun gelöst, ich habe das Verhalten tatsächlich falsch beobachtet...

Jetzt habe ich aber eine neue Herrausforderung. Eine meiner Nodes hat einen Sketch mit Bewegungsmelder der aber nur ein ON sendet und kein OFF. Das Reading updatet sich einfach immer mit dem Timestamp des letzten Auslösens. (->Damit könnte man auch arbeiten, wenn ich quasi ein Notify erstelle, dass auslöst wenn sich der Timestamp des readings ändert. Aber keine Ahnung wie...<- )

Bevor ich mir jetzt den Sketch total verbastel hoffe ich einfach, dass ich einen weg finde den Status des Nodes direkt im FHEM nach sagen wir mal 5 Sekunden wieder auf OFF zu setzen.
Mit setstate wird ja leider kein Event ausgelöst und einen anderen Weg finde ich per google einfach nicht :(
Danke und Gruss

Komaandy

micky0867

Die PIRs haben normalerweise 2 Potis, einer für Empfindlichkeit und einer für die Dauer des High-Signals.


Gesendet von meinem ONEPLUS A3003 mit Tapatalk


Komaandy

Ja das stimmt, es ist nur so, der Sketch den ich auf dem Arduino verwende ist wirklich gut und deckt alles ab was ich brauche.
Dummerweise ist in diesem Sketch einfach nicht angelegt dass der Arduino das LOW-Signal ans FHEM meldet.
Dieser Sketch wird von den meisten mit Domoticz verwendet und die behelfen sich dort einfach mit einem "Autoreset" des Status direkt im Domoticz...
Aber eben, diesen "Autoreset" bekomme ich im FHEM nicht realisiert...

RaspiLED

Hi,
Mach doch ein notify, das auf on reagiert mit sleep5; set dev off ;-)
Gruß Arnd


Raspi2 mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, Bravia, ...
Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...

Komaandy

@RaspiLED
das hab ich auch schon versucht , aber es funktioniert so leider nicht...
MYSENSOR_44:tripped5:.on sleep 5 ; set MYSENSOR_44 off

RaspiLED

Zuviele leerzeichen und die semikolons verdoppeln ;-)


Raspi2 mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, Bravia, ...
Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...

Sweeman

Hallo zusammen,

ich bin mir nicht 100% sicher, ob dies hier der richtige Ort ist, aber es sieht für mich nach dem MySensors-Sammelthread aus... :)

Ich wollte mal fragen, ob jemand das gleiche Problem beobachtet hat, wie ich:

Undzwar nutze ich MySensors um Temperaturdaten von OneWire-Sensoren mit 433MHz-Nodes/Gateway (Adafruit Feather M0 ATSAMD RFM69HCW) per seriellem USB an FHEM auf einem RPi 3 Typ B zu übertragen.

Das funktioniert auch ganz wunderbar mit ein paar Anpassungen. Die Sketche sind auf Node-Seite leicht angepasst für einen Sleepmode (den gibt es in der MS-Version noch nicht von Haus aus für SAMD-Chips) und auf der Gateway-Seite eigentlich unverändert.

ABER: Die Übertragung funktioniert einige Zeit (1-2 h) und bricht dann aus nicht nachvollziehbaren Gründen ab. Ich bin gerade am rumforschen, wo der Fehler zu finden ist. Für mich sieht es so aus, als würde das Node auf jeden Fall noch senden. Gateway kann ich morgen überprüfen. Ich habe leider noch keinen Weg gefunden den USB-Port auf dem Pi während FHEM läuft mitzulesen (Windows-Kind).
Vielleicht kennt jemand dieses Problem ja aber schon und kann mir kurz auf die Sprünge helfen?

Sollte ich mit Informationen zu geizig sein, werde ich diese natürlich gerne nachliefern. Ich weiß nur noch nicht, was dabei heiße News und was ein alter Hut ist.

Vielen Dank und beste Grüße!

RaspiLED

Hi, stell doch in FHEM im Gateway den verbose auf 5 und schau mal was das FHEM.log freiwillig im Browser sagt.
Welchen Status/State hat Dein Gateway am Anfang und an Ende?
Gruß Arnd


Raspi2 mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, Bravia, ...
Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...

Freibeuter

Hallo habe ein Problem beim Sender von IR-Signalen, empfangen klappt !

set MYSENSOR_16 ir_send1 1 0xC1AA09F6 32, NEC
bekomme in FHEM die Meldung:
ir_send1 not defined: no mapping for reading ir_send1

Was mache ich falsch ?


FHEM ist aktuell und der Sketch ist:
/**
   The MySensors Arduino library handles the wireless radio link and protocol
   between your home built sensors/actuators and HA controller of choice.
   The sensors forms a self healing radio network with optional repeaters. Each
   repeater and gateway builds a routing tables in EEPROM which keeps track of the
   network topology allowing messages to be routed to nodes.

   Created by Henrik Ekblad <henrik.ekblad@mysensors.org>
   Copyright (C) 2013-2015 Sensnology AB
   Full contributor list: https://github.com/mysensors/Arduino/graphs/contributors

   Documentation: http://www.mysensors.org
   Support Forum: http://forum.mysensors.org

   This program is free software; you can redistribute it and/or
   modify it under the terms of the GNU General Public License
   version 2 as published by the Free Software Foundation.

*******************************

   REVISION HISTORY
   Version 1.0 - Henrik EKblad
   Version 1.1 - rknipp and rejoe2
   Version 1.1.1 - rknipp

   DESCRIPTION
   Example sketch showing how to control ir devices
   An IR LED must be connected to Arduino PWM pin 3.
   An optional ir receiver can be connected to PWM pin 8.
   All received ir signals from PIN 8 will be sent to gateway device stored in IR_RECEIVED.
   NEW: The Node expects real IR commands to process via the IR_SEND variable (instead of "on/off" via V_LIGHT).
   Variable format to be sent form controller side is: "protocol code irbits", eg. "1 0x1EE17887 32"
   for Vol up yamaha ysp-900 (assuming NEC-codes are mapped to protocol #1 in your IRLib).

   IMPORTANT:
   The IRLib used here is Gabriel Staples version available at https://github.com/ElectricRCAircraftGuy/IRLib,
   so IR commands are different from the standard IRLib delivered with MySensors!
   http://www.mysensors.org/build/ir
*/

// Enable debug prints
#define MY_DEBUG
#define USE_DUMP //should print out lots of info to serial (ElectricRCAircraftGuy feature?)

// Enable and select radio type attached
//#define MY_RADIO_NRF24
#define MY_RADIO_RFM69
#define MY_IS_RFM69HW
//#define MY_RFM69_ENABLE_ENCRYPTION
//#define MY_RFM69_NETWORKID 100  // Default is 100 in lib. Uncomment it and set your preferred network id if needed
#define MY_RFM69_TX_POWER_DBM 20  // 5-20 dB
  #define MY_BAUD_RATE 38400

#define MY_NODE_ID 16


#include <SPI.h>
#include <MySensors.h>
#include <IRLib.h> //Gabriel Staples version!


int RECV_PIN = 8;

#define CHILD_ID_IR  1  // childId

IRsend irsend;
IRrecv My_Receiver(RECV_PIN);
IRdecode My_Decoder;
MyMessage msgIr(CHILD_ID_IR, V_IR_RECEIVE);

void setup()
{
  // My_Decoder.useDoubleBuffer(Buffer); //uncomment to use; requires the "extraBuffer" to be uncommented above
  //Try different values here for Mark_Excess. 50us is a good starting guess. See detailed notes above for more info.
  My_Receiver.Mark_Excess = 50; //us; mark/space correction factor
  //Optional: set LED to blink while IR codes are being received
  // My_Receiver.blink13(true); //blinks whichever LED is connected to LED_BUILTIN on your board, usually pin 13
  //                            //-see here for info on LED_BUILTIN: https://www.arduino.cc/en/Reference/Constants
  My_Receiver.setBlinkLED(13, true); //same as above, except you can change the LED pin number if you like
  My_Receiver.enableIRIn(); // Start the receiver

}

void presentation()  {
  // Send the sketch version information to the gateway and Controller
  sendSketchInfo("IR Sensor", "1.1.1");

  // Register the sensor als IR Node
  present(CHILD_ID_IR, S_IR);
}

void loop()
{
  if (My_Receiver.getResults(&My_Decoder)) //if IR data is ready to be decoded
  {
    //1) decode it
    My_Decoder.decode();
    Serial.println("decoding");
    Serial.print("Protocol:");
    Serial.print(Pnames(My_Decoder.decode_type));
    Serial.print(",");
    Serial.print(My_Decoder.decode_type);
    Serial.print(" ");
    Serial.print(My_Decoder.value, HEX);
    Serial.print(" ");
    Serial.println(My_Decoder.bits);
    //FOR EXTENSIVE OUTPUT:
    //My_Decoder.dumpResults();
    //filter out zeros for not recognized codes and NEC repeats
    const char rec_value = My_Decoder.value;
    if (rec_value != 0xffffffff && rec_value != 0x0) {
      char buffer[24];
      uint8_t IrBits = My_Decoder.bits;
      String IRType_string = Pnames(My_Decoder.decode_type);
      char IRType[IRType_string.length() + 1];
      IRType_string.toCharArray(IRType, IRType_string.length() + 1);
      sprintf(buffer, "%i 0x%08lX %i, %s", My_Decoder.decode_type, My_Decoder.value, IrBits, IRType);
      // Send ir result to gw
      send(msgIr.set(buffer));
#ifdef MY_DEBUG
      //2) print results
      //FOR BASIC OUTPUT ONLY:
      Serial.println(buffer);
#endif
    }
    //3) resume receiver (ONLY CALL THIS FUNCTION IF SINGLE-BUFFERED); comment this line out if double-buffered
    /*for single buffer use; do NOT resume until AFTER done calling all decoder
      functions that use the last data acquired, such as decode and dumpResults; if using a double
      buffer, don't use resume() at all unless you called My_Receiver.detachInterrupt() previously
      to completely stop receiving, and now want to resume IR receiving.*/
    My_Receiver.resume();

  }
}

void receive(const MyMessage &message) {
  const char *irData;
  // Complete send command from controller side is needed, e.g. "1 0x1EE17887 32"
  if (message.type == V_IR_SEND) {
    irData = message.getString();
#ifdef MY_DEBUG
    Serial.println(F("Received IR send command..."));
    Serial.println(irData);
#endif

    int i = 0;
    char* arg[3];
    unsigned char protocol;
    unsigned long code;
    unsigned int bits;

    char* irString = strdup(irData);
    char* token = strtok(irString, " ");

    while (token != NULL) {
      arg[i] = token;
      token = strtok(NULL, " ");
      i++;
    }
#ifdef MY_DEBUG
    Serial.print("Protocol:"); Serial.print(arg[0]);
    Serial.print(" Code:"); Serial.print(arg[1]);
    Serial.print(" Bits:"); Serial.println(arg[2]);
#endif
    protocol = atoi(arg[0]);
    code = strtoul(arg[1], NULL, 0);
    bits = atoi(arg[2]);
    irsend.send(protocol, code, bits);
    free(irString);
  }

  // Start receiving ir again...
  My_Receiver.resume();
}

Hauswart

Kannst du noch die Definition von MYSENSOR_16 posten? Hast du den Sensor mit der aktuellsten FHEM-Version via autocreate definieren lassen?
1. Installation:
KNX, Tasmota (KNX), Sonos, Unifi

2. Installation:
HM-CFG-USB, Unifi (, SIGNALduino 868, MySensors, SIGNALduino 433)