FHEM Forum

FHEM - Anwendungen => Beleuchtung => Thema gestartet von: Heimbastler am 30 November 2020, 00:18:06

Titel: AC Dimmer für normal Birnen ohne Wifi
Beitrag von: Heimbastler am 30 November 2020, 00:18:06
Hi,


wieder ein Dimmer. Ich weiß das es das schon oft gab. Aber hier noch mal zusammengefasst warum Dieser:
RobotDyn AC Dimmer Module
https://robotdyn.com/ac-light-dimmer-module-1-channel-3-3v-5v-logic-ac-50-60hz-220v-110v.html (https://robotdyn.com/ac-light-dimmer-module-1-channel-3-3v-5v-logic-ac-50-60hz-220v-110v.html)




Bitte nicht hier kommentieren wie man das anders machen kann:


Mir ist aber noch nicht genau klar wie man eine geeignete DIM Variable hin und her kommuniziert. Mein erster Ansatz ist das Modul RPII2C und eine Firmata passend zu I2C?? Sehe ich das völlig falsch oder hat das Potential?
Eventuell feste DIM Werte um es nicht zu kompliziert zu machen wie beim FS20 Modul:
set <name> <value> [<time>]

where value is one of:
dim06% dim12% dim18% dim25% dim31% dim37% dim43% dim50%
dim56% dim62% dim68% dim75% dim81% dim87% dim93% dim100%

(USB möchte ich vermeiden weil alle Steckerplätze schon belegt sind)


VG
Alex





Titel: Antw:AC Dimmer für normal Birnen ohne Wifi
Beitrag von: derHeimwerker am 02 Dezember 2020, 08:25:31
Moin, Hast du die Dinger schon am Laufen ? Sind die in Deutschland zugelassen?
Gruß TOm
Titel: Antw:AC Dimmer für normal Birnen ohne Wifi
Beitrag von: die19 am 02 Januar 2021, 20:04:03
Hey Heimbastler,
da hast Du dir aber ein spannendes Projekt rausgesucht!
Es sieht so aus als ob es da schon unzählige Lösungen gibt, jedoch viele teure und auf Funk basierende...

Zur Zeit arbeite ich mich in das Themas SmartHome ein. Darunter soll unteranderem Licht Dimmer ein Baustein sein, daher werde ich dich aufmerksam "folgen".
Noch kann ich dazu nicht viel Input leisten.

PS: bin auch kein Freund von Funk, wirkt immer so nachgerüstet. quasi wie eine Spielerei  ::)
Titel: Antw:AC Dimmer für normal Birnen ohne Wifi
Beitrag von: Heimbastler am 08 Januar 2021, 20:40:28
Hey Leute...


lang ist es her gewesen. Wollte das natürlich früher bearbeiten aber bin jetzt erst wieder an dem Thema dran. Hier ein Update dazu:
Wire.begin(8);  // join i2c bus with address #8
Dazu gehe ich ins Modul RPIIC und schreibe z.Bsp.
set myI2C writeBlock 08 0A


Anbei Bilder zum Aufbau

Grüsse,
Alex
Titel: Antw:AC Dimmer für normal Birnen ohne Wifi
Beitrag von: Heimbastler am 12 Januar 2021, 21:31:08
Hi Leute...


wieder ein Update dazu:
1. Auf dem Arduino Nano Läuft das hier:
#include <Wire.h>
#include <RBDdimmer.h>//

//#define USE_SERIAL  SerialUSB //Serial for boards whith USB serial port
#define USE_SERIAL  Serial#include <RBDdimmer.h>//

//#define USE_SERIAL  SerialUSB //Serial for boards whith USB serial port
#define USE_SERIAL  Serial
#define outputPin  4
#define zerocross  2 // for boards with CHANGEBLE input pins (in my case Nano)


dimmerLamp dimmer(outputPin); //initialase port for dimmer for MEGA, Leonardo, UNO, Arduino M0, Arduino Zero
char DimmerStartValue = 50;
char DimmerValue;

void setup() {
 
  Wire.begin(8);                // join i2c bus with address #8
  Wire.onReceive(receiveEvent); // register event
  USE_SERIAL.begin(9600);           // start serial for output
  dimmer.begin(NORMAL_MODE, ON); //dimmer initialisation: name.begin(MODE, STATE)
  dimmer.setPower(DimmerStartValue);
 
  USE_SERIAL.println("Dimmer Program is starting...");
}

void receiveEvent(int howMany) {
 
  DimmerValue = Wire.read();      // receive byte as a character
  dimmer.setPower(DimmerValue); // setPower(0-100%);
 
  Serial.println(DimmerValue);         // print the integer
}


void loop() {
 
  // nur zum schauen ob es läuft
  //USE_SERIAL.println("Dimmer value %d", DimmerValue);
  USE_SERIAL.print(dimmer.getPower());
  USE_SERIAL.println("%");
  delay(1000);
  // nur zum schauen ob es läuft
 
}



2. In FHEM habe ich ein <readingsProxy> device mit dem Namen <Ardu_dim>
defmod Ardu_dim readingsProxy myI2C:writeByte
attr Ardu_dim room Entwicklung
attr Ardu_dim setFn {($CMD eq "100")?"writeByte 08 64":"writeByte 08 ". sprintf("%.0f",(64/100 * $CMD))}
attr Ardu_dim setList state:slider,0,5,100
attr Ardu_dim webCmd state


Damit kann ich die "Birne" dimmen   :D


Die setFn habe ich aus diesem Tread gestohlen und angepasst:
https://forum.fhem.de/index.php?topic=89444.0 (https://forum.fhem.de/index.php?topic=89444.0)

sowohl das funktioniert:
attr Ardu_dim setFn {($CMD eq "100")?"writeByte 08 64":"writeByte 08 ". sprintf("%.0f",(64/100 * $CMD))}

als auch das:
{ if ($CMD eq "100") {
fhem ("set $DEVICE writeByte 08 64");
} elsif ($CMD =~ /^[1-9]\d*$/) {
fhem ("set $DEVICE writeByte 08 " . $CMD);
} else {
fhem ("set $DEVICE writeByte 08 00");
}
return undef
}




Es werden zwar nicht genau die Werte von device <Ardu_dim> 1:1 übergeben weil ich die Umrechnung bestimmt stümperhaft umgesetzt habe (64/100  * $CMD) aber es reicht mir.
Frage: Weiss Jemand wo + wie ich später ein realistisch ansprechendes dimmen abstimmen kann? Über die Formel oder gibt es Attribute oder besser doch im Arduino Code?


Ich mache jetzt erst mal mit dem Arduino Code weiter um alle 4 Ausgänge ansteuern zu können.



VG
Alex