Nachbau von HM-Geräten mit Arduino inkl. BidCos / AskSinPP

Entwicklung und Bau von Hardware aller Art, die im HM-Umfeld eingesetzt werden kann

Moderator: Co-Administratoren

JoeHMS
Beiträge: 340
Registriert: 28.02.2012, 11:09
Danksagung erhalten: 1 Mal

Re: Nachbau von HM-Geräten mit Arduino inkl. BidCos / AskSin

Beitrag von JoeHMS » 14.06.2018, 17:13

Den von ELV hab ich auch. Funktioniert. Allerdings eben nicht mit meinen Scherwinden...

Kann mir jemand helfen wie ich so was https://m.heise.de/make/meldung/Ein-ESP ... 45207.html

Mit einem Asksin "taster" verbinden kann?
CCU3( 3.47.22 piVCCU3) auf RasPi4 * Wired * CUXD(2.3.3) mit CUL868 (v1.66), 1 Wire USB FTDI * Redmatic * Synology mit ccu-historian spk (V2.3.0) * ccu.io(1.0.51) * dashui(0.9beta120) openHAB 2.5.0 mit auf RasPI 4
-------------------------------------------------------------------------------------------------------------------
132 Kanäle in 38 Geräten und 140 CUxD-Kanäle in 21 CUxD-Geräten

spiecky
Beiträge: 73
Registriert: 09.12.2017, 15:51

Re: Nachbau von HM-Geräten mit Arduino inkl. BidCos / AskSin

Beitrag von spiecky » 14.06.2018, 18:50

jp112sdl hat geschrieben:
spiecky hat geschrieben:Hallo Dieter,

ja, das kann ich mal machen.....klar im extra Tread. Gehört ja in dem Sinne nicht hier rein. Wird nur leider etwas dauern.....die liebe Zeit ist aktuelle etwas knapp.
Aber ich denke dran ;-)

Hier schon mal (für die Ungeduldigen) der Windsensor den ich verwendet habe:

https://www.ebay.de/itm/Ersatz-Windsens ... 0148.m2813

Rest folgt.....
Krasser Preis.
Da bekommt man ja gleich einen Windrichtungsanzeuger inklusive.
https://m.reichelt.de/Wetterstationen/V ... CLE=132595

Oder halt den von dir bei ELV, für 9,95 EUR.
https://www.elv.de/ersatz-anemometer-fu ... s3080.html


Ich hab mich vor kurzem erst intensiv damit auseinandergesetzt:)
ups...sorry stimmt - hatte den nur schnell bei ebay rausgesucht und nicht auf den Preis geachtet.....habe natürlich die günstige Variante ;-)

Benutzeravatar
DiJe
Beiträge: 566
Registriert: 04.03.2015, 05:51
Hat sich bedankt: 2 Mal
Danksagung erhalten: 5 Mal

Re: Nachbau von HM-Geräten mit Arduino inkl. BidCos / AskSin

Beitrag von DiJe » 14.06.2018, 20:03

Hallo spiecky,
danke für deine Rückmeldung.
Ich habe den hier,
https://www.elv.de/ventus-ersatz-windme ... 3pEALw_wcB
Der sendet die Daten über 433mhz.
Funkleuchturm hat die für seine Wetterstation
https://www.stall.biz/project/weatherma ... automation
Ich weis aber nicht wie ich die Daten auslesen kann um sie an die CCU zuübergeben.
Gruß Dieter
Gruß Dieter
----------------------------------------------------------------------------------------
RaspiMatic auf Raspi4 - 4Gb -nach Kernel Upgrade Temp.~50° - m.Addons: ioBroker, RedMatic, CCU-Historian, CUxD, Email, XMl Api
Geräte 120, davon DIY Geräte 35 -Variablen 213 - Programme 160 / Visualisierung mit Mediola auf 24" Acer DA241HL / läuft alles stabil

papa
Beiträge: 705
Registriert: 22.05.2018, 10:23
Hat sich bedankt: 24 Mal
Danksagung erhalten: 120 Mal

Re: Nachbau von HM-Geräten mit Arduino inkl. BidCos / AskSin

Beitrag von papa » 14.06.2018, 20:37

JoeHMS hat geschrieben:Den von ELV hab ich auch. Funktioniert. Allerdings eben nicht mit meinen Scherwinden...

Kann mir jemand helfen wie ich so was https://m.heise.de/make/meldung/Ein-ESP ... 45207.html

Mit einem Asksin "taster" verbinden kann?
Hm - habe hier auch noch nen GY-271 rumliegen. Damit wollte ich die Stellung meiner Velux-Fenster überwachen. Bin nur noch nicht dazu gekommen, mich damit zu beschäftigen. Wenn Du die Berechung - wann es zu viel Schwingungen sind - hinkriegst, schaffen wir den Rest - das senden eines Events - auch.
Anfragen zur AskSin++ werden nur im Forum beantwortet

spiecky
Beiträge: 73
Registriert: 09.12.2017, 15:51

Re: Nachbau von HM-Geräten mit Arduino inkl. BidCos / AskSin

Beitrag von spiecky » 14.06.2018, 21:22

DiJe hat geschrieben:Hallo spiecky,
danke für deine Rückmeldung.
Ich habe den hier,
https://www.elv.de/ventus-ersatz-windme ... 3pEALw_wcB
Der sendet die Daten über 433mhz.
Funkleuchturm hat die für seine Wetterstation
https://www.stall.biz/project/weatherma ... automation
Ich weis aber nicht wie ich die Daten auslesen kann um sie an die CCU zuübergeben.
Gruß Dieter
Hi,
ich habe den Wind-Anemometer (https://www.elv.de/ersatz-anemometer-fu ... s3080.html) direkt an einen NodeMCU angeschlossen und setze über WLAN einen neuen Wert in einer Systemvariable - ähnlich so wie hier beschrieben:

viewtopic.php?f=31&t=29321

Zur Optimierung will ich den Wert noch etwas glätten, indem ich z.B. 10 Messungen mache, die oberen und unteren 2 Messung ignoriere und aus dem Rest einen Mittelwert bilde. Da muss ich aber noch Praxiswerte sammeln, was da am besten ist. Ich hau hier einfach mal den unausgereiften Code rein - der war eigentlich nur mal so zum testen gedacht, funktioniert aber schon überraschend gut. Keine Ahnung wie genau die Windgeschwindigkeit ist, für mich ist nur wichtig, das ab x km/h die Markise reinfährt und das kann man ja ausprobieren......wie gesagt, ist nur ein zusammenkopierter Testcode - bitte kein Gemecker (bin natürlich immer für Verbesserungen empfänglich) hahahaha......aber vielleicht kann ich damit ja ein paar Denkanstöße geben ;-)

Code: Alles auswählen

[code]
const int m_time = 5;                                    //Messzeit fuer Wind in Sekunden
int wind_ct = 0;
float Windgeschwindigkeit = 0.0;
unsigned long timewind = 0;

unsigned long previousMillis = 0;                     // speichert wie viele Sekunden seit der letzten Änderung vergangen sind
unsigned long interval = 30000;                         // Interval zwischen zwei Änderungen in Millisekunden

#include <ESP8266WiFi.h>                                // Bibliothek fuers WLAN
#define WIFI_SSID "SSID"
#define WIFI_PASS "Password"

WiFiServer server(80);                                  //WEB Server auf Port 80

IPAddress gateway(XXXXXXXXXX); // IP-Adresse des WLAN-Gateways
IPAddress subnet(255,255,255,0);  // Subnetzmaske
IPAddress ip(XXXXXXXXXXXX); // feste IP-Adresse für den WeMos

byte HomematicIP[]  = { XXXXXXXXX };            // Homematic IP-Adresse

void setup()
{
  Serial.begin(115200);
  timewind = millis();
  server.begin();                   //Startet HTTP Server
  
//WIFI Setup
  
  WiFi.mode(WIFI_STA);
  Serial.printf("Verbindungs zu %s wird aufgebaut ", WIFI_SSID);
  WiFi.begin(WIFI_SSID, WIFI_PASS);
  Serial.print(F("Setting static ip to : "));
  Serial.println(ip);
  WiFi.config(ip, gateway, subnet);

while (WiFi.status() != WL_CONNECTED) {
    
    Serial.print(">");
    delay(100);
  }
  Serial.println("");
  Serial.printf("Verbunden! SSID: %s, IP Adresse: %s\n", WiFi.SSID().c_str(), WiFi.localIP().toString().c_str());

}


void loop()
{

  meassure();

  Serial.print("Windgeschwindigkeit: ");
  Serial.print(Windgeschwindigkeit);       //Speed in Km/h
  Serial.print(" km/h - ");
  Serial.print(wind_ct);
  Serial.print(" Umdrehungen - ");
  Serial.print(Windgeschwindigkeit / 3.6); //Speed in m/s
  Serial.println(" m/s");

// WEB Abfrage
//listen for incoming clients

  WiFiClient client = server.available();
if (client) {
    //Serial.println("new client");
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        //Serial.write(c);
        // if you've gotten to the end of the line (received a newline
        // character) and the line is blank, the http request has ended,
        // so you can send a reply
        if (c == '\n' && currentLineIsBlank) {
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");  // the connection will be closed after completion of the response
          client.println("Refresh: 5");  // refresh the page automatically every 5 sec
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");

//Ausgabe auf Website
            client.print("WLAN Signalstaerke = ");
            client.print(WiFi.RSSI());            // gibt Signalstärke WiFi aus in db
            client.print(" db"); 
            client.println("<br />");               //neue Zeile          
            client.print("Windgeschwindigkeit: ");
          client.print(Windgeschwindigkeit);       //Speed in Km/h
          client.print(" km/h - ");
          client.print(wind_ct);
          client.print(" Umdrehungen - ");
          client.print(Windgeschwindigkeit / 3.6); //Speed in m/s
          client.print(" m/s");
          client.println("<br />");      
          client.println("</html>");
          break;
        }
       }
    }
    // give the web browser time to receive the data
    delay(1);
   
    // close the connection:
    client.stop();
    //Serial.println("client disonnected");
  }

 
if (millis() - previousMillis > interval) {                                                //wenn der oben angegebene Intervall abgelaufen ist, dann....
             previousMillis = millis();                                                    // aktuelle Zeit abspeichern

            if (client.connect(HomematicIP,80)) {                                          //wenn Verbindung zur CCU, dann.....
             Serial.println("Daten an CCU2 senden - Verbindung zum Server...");            //Textausgabe auf Terminalfenster - durch "ln" wird am Ende ein Absatz gemacht/neue Zeile/Enter
             Serial.print("Windgeschwindigkeit: ");
             Serial.print(Windgeschwindigkeit);       //Speed in Km/h
             Serial.print(" km/h - ");
             Serial.print(wind_ct);
             Serial.print(" Umdrehungen - ");
             Serial.print(Windgeschwindigkeit / 3.6); //Speed in m/s
             Serial.println(" m/s");
             client.connect(HomematicIP,80);
             client.print("GET /config/xmlapi/statechange.cgi?ise_id=XXXX&new_value=");      //Befehl zum CCU Systemvariable ändern mit Windgeschwindigkeit aus nächster Zeile
             client.print(Windgeschwindigkeit);                                              //ändert Wert in CCU Systemvariable XXXX
             client.println(" HTTP/1.0");
             client.println();
             Serial.println("...erfolgreich gesendet!");
             
}
}
}

void countWind() {
  wind_ct ++;
}

void meassure() {
  wind_ct = 0;
  timewind = millis();
  attachInterrupt(5, countWind, FALLING);
  
/* Die Argumente der Funktion attachInterrupt lauten:

    Interrupt: Nummer des Interrupts, das heißt, in welchem Pin auf die Unterbrechung “gelauert� wird.
    ISR (countWind): die Funktion, die aufgerufen wird, wenn die Unterbrechung eintritt.
    Mode: Bestimmt die Art, wie die ISR einsetzen wird, das heißt, was passieren muss, damit die Unterbrechung stattfindet. Die verschiedenen Modi lauten:
        LOW: wird immer dann ausgeführt wenn der Wert des Pisn 0 beträgt.
        CHANGE: wird immer dann ausgeführt wenn eine Veränderung auftritt.
        RISING: wird ausgeführt solange der Wert von 0 bis 1 geht (oder von 0 bis 5 Volt).
        FALLING: wird ausgeführt solange der Wert von 1 bis 0 geht (oder von 5 bis 0 Volt).
        Es ist wichtig, darauf zu achten, dass die Modes mit Großbuchstaben geschrieben werden, da sonst ein Fehler auftritt 
*/

  delay(1000 * m_time);
  detachInterrupt(5);      //Anemometer an Pin D1
  Windgeschwindigkeit = (float)wind_ct / (float)m_time * 2.4;
}


[/code]

jp112sdl
Beiträge: 12085
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 847 Mal
Danksagung erhalten: 2139 Mal
Kontaktdaten:

Re: Nachbau von HM-Geräten mit Arduino inkl. BidCos / AskSin

Beitrag von jp112sdl » 14.06.2018, 21:54

An die Windmesser-User:
Wie habt ihre eure Anemometer kalibriert? Oder liegt der Faktor beim Produkt als Datenblatt bei?

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

Benutzeravatar
DiJe
Beiträge: 566
Registriert: 04.03.2015, 05:51
Hat sich bedankt: 2 Mal
Danksagung erhalten: 5 Mal

Re: Nachbau von HM-Geräten mit Arduino inkl. BidCos / AskSin

Beitrag von DiJe » 14.06.2018, 23:37

An die Windmesser-User:
Wie habt ihre eure Anemometer kalibriert? Oder liegt der Faktor beim Produkt als Datenblatt bei?
Bei mir war keine Info dabei. Der Anemometer sendet seine Daten 433mhz an eine Station ,
die ich aber nicht habe.
Kann so damit auch nicht viel anfangen. :( :!:
Gruß Dieter
Gruß Dieter
----------------------------------------------------------------------------------------
RaspiMatic auf Raspi4 - 4Gb -nach Kernel Upgrade Temp.~50° - m.Addons: ioBroker, RedMatic, CCU-Historian, CUxD, Email, XMl Api
Geräte 120, davon DIY Geräte 35 -Variablen 213 - Programme 160 / Visualisierung mit Mediola auf 24" Acer DA241HL / läuft alles stabil

jp112sdl
Beiträge: 12085
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 847 Mal
Danksagung erhalten: 2139 Mal
Kontaktdaten:

Re: Nachbau von HM-Geräten mit Arduino inkl. BidCos / AskSin

Beitrag von jp112sdl » 14.06.2018, 23:43

DiJe hat geschrieben:
An die Windmesser-User:
Wie habt ihre eure Anemometer kalibriert? Oder liegt der Faktor beim Produkt als Datenblatt bei?
Bei mir war keine Info dabei. Der Anemometer sendet seine Daten 433mhz an eine Station ,
die ich aber nicht habe.
Kann so damit auch nicht viel anfangen. :( :!:
Gruß Dieter
Naja doch... 433MHz Modul raus und Impulse mit dem Arduino erfassen.

Die Sache mit der Genauigkeit... Rein ideal berechnest du die Geschwindigkeit ja mit
V = 2 * R * Pi * N
R = Radius von Mitte Nabe bis Mitte Becher
N = Anzahl der Umdrehungen

Nun wirkt der Wind beim Antreiben des Anemometers aber auch gegen die anderen Becher (rückseits) und beim Drehen arbeiten die der Windseite abgekehrten Becher gegen den Wind, was die Drehgeschwindigkeit reduziert. Das Maß dieser Reduktion gilt es nun möglichst genau zu ermitteln, um anschließend die errechnete Geschwindigkeit mit diesem Faktor zu multiplizieren.
Ich gehe dabei von einem linearen Anstieg aus... Wobei er es womöglich auch nicht ganz ideal ist.

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

JoeHMS
Beiträge: 340
Registriert: 28.02.2012, 11:09
Danksagung erhalten: 1 Mal

Re: Nachbau von HM-Geräten mit Arduino inkl. BidCos / AskSin

Beitrag von JoeHMS » 15.06.2018, 06:02

Ich hab ganz einfach parallel mit meinem Surfanemometer einige Punkte gemessen. Die Umrechnung hab ich dann mit einem Cuxd Device gemacht...
CCU3( 3.47.22 piVCCU3) auf RasPi4 * Wired * CUXD(2.3.3) mit CUL868 (v1.66), 1 Wire USB FTDI * Redmatic * Synology mit ccu-historian spk (V2.3.0) * ccu.io(1.0.51) * dashui(0.9beta120) openHAB 2.5.0 mit auf RasPI 4
-------------------------------------------------------------------------------------------------------------------
132 Kanäle in 38 Geräten und 140 CUxD-Kanäle in 21 CUxD-Geräten

jp112sdl
Beiträge: 12085
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 847 Mal
Danksagung erhalten: 2139 Mal
Kontaktdaten:

Re: Nachbau von HM-Geräten mit Arduino inkl. BidCos / AskSin

Beitrag von jp112sdl » 15.06.2018, 06:09

JoeHMS hat geschrieben:Ich hab ganz einfach parallel mit meinem Surfanemometer einige Punkte gemessen.
Gut wenn man eins hat. :D

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

Gesperrt

Zurück zu „Hardwareentwicklung und Selbstbau von Aktoren und Sensoren“