Hauptmenü

MySensors present

Begonnen von Pythonf, 01 März 2017, 17:20:35

Vorheriges Thema - Nächstes Thema

Pythonf

Bin mir nicht ganz sicher, ob ich hier im richtigen Bereich bin, aber da MySensors eigentlich immer selbst zusammengebaut könnte ich hier richtig sein. Ansonsten gerne verschieben.
Ich betreibe an einem MySensorESP2866-Gateway mehrer Bewegungsmelder. Jetzt wollte ich einen der Bewegungsmelder mit einer Photodiode ausstatten. Der Photosensor alleine funktioniert und der Bewegungsmelder auch, aber kombiniert will es nicht funktionieren, da scheinbar immer nur der erste "present(CHILD_ID, S_MOTION);" befehl von beiden ankommt. Sprich schreib ich zuerst Motion bekomm ich nur das trigger Reading und andersrum nur das brightness Reading. In seltenen Fällen zeigt FHEM beide Readings an und behält sie auch ( 1x mal vorgekommen, nicht reproduzierbar).
Hier mein Sketch, falls es weiter hilft.
/**
* 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
*
* DESCRIPTION
* Motion Sensor example using HC-SR501
* http://www.mysensors.org/build/motion
*
*/

// Enable debug prints
// #define MY_DEBUG

// Enable and select radio type attached
#define MY_RADIO_NRF24
//#define MY_RADIO_RFM69

#include <MySensors.h>

unsigned long SLEEP_TIME = 120000; // Sleep time between reports (in milliseconds)
#define DIGITAL_INPUT_SENSOR 3   // The digital input you attached your motion sensor.  (Only 2 and 3 generates interrupt!)
#define CHILD_ID_Motion 0   // Id of the sensor child
#define CHILD_ID_LIGHT 1
#define LIGHT_SENSOR_ANALOG_PIN A0

// Initialize motion message
MyMessage msg01(0, V_TRIPPED);
MyMessage msg02(1, V_LIGHT_LEVEL);
int lightLevel;


void setup()
{
pinMode(DIGITAL_INPUT_SENSOR, INPUT);      // sets the motion sensor digital pin as input
}

void presentation()
{
// Send the sketch version information to the gateway and Controller
sendSketchInfo("Motion-Light Sensor", "1.0");

// Register all sensors to gw (they will be created as child devices)
  present(0, S_MOTION);
  present(1, S_LIGHT_LEVEL);


}

void loop()
{
// Read digital motion value
bool tripped = digitalRead(DIGITAL_INPUT_SENSOR) == HIGH;
  lightLevel = (1023-analogRead(LIGHT_SENSOR_ANALOG_PIN));

Serial.println(tripped);
send(msg01.set(tripped?"1":"0"));  // Send tripped value to gw
  Serial.println(lightLevel);
  send(msg02.set(lightLevel));

// Sleep until interrupt comes in on motion sensor. Send update every two minute.
sleep(digitalPinToInterrupt(DIGITAL_INPUT_SENSOR), CHANGE, SLEEP_TIME);
}



Wenn mir jemand helfen kann würde mich das sehr freun.
Beste Grüße
Fabian

Beta-User

...der Hauptthread zu MySensors ist auch hier in der Bastelecke, Du bist also in guter Gesellschaft..

Du schreibst, dass Du ein Wifi-GW betreibst. Was ist das für eine MySensors-Version, die da drauf läuft? Einige Zwischenversionen haben sich teilweise verschluckt, die aktuelle sollte eigentlich gehen.

Evtl. liegt auch ein Funk-/Powerversorgungsproblem beim nRF vor. Manchmal läuft auch der buffer der nRF's über (habe ich bislang aber nur bei 5+ Werten in kurzer Zeit gehabt). Bau vielleicht erst mal ein wait(1000) oder so ein, dann geht es evtl., wenn es nicht das Powerthema ist (Kondensator usw....).

Der Sketch an sich sieht für mich ok aus, und ich gehe auch davon aus, dass Du die Version 2.1.1 (oder 2.2.0-beta) des frameworks nutzt?

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

Pythonf

#2
Auf dem Gateway läuft die OTA-Version 2.1.1. Am NRF ist ein Kondensator angelötet und Stromvervsorung sollte eigentlich ansonsten stabil sein. Werde es mal mit einem wait(1000) zwischen den beiden Present versuchen.
-EDIT-
Es scheint geholfen zu haben. Einfach ein wait(1000); zwischen die beiden present-Befehle. Danke