Fhemduino - "Baumarkt" Funksteckdosen aus und einschalten

Begonnen von joachimt, 10 Mai 2014, 15:35:44

Vorheriges Thema - Nächstes Thema

joachimt

Hallo zusammen,

ausgehend von fhemduino habe ich ein Modul geschrieben, das "Baumarkt" Funksteckdosen
auf 434 MHz Basis aus- und wieder einschaltet.
Zudem wird der Zustand der Funksteckdose automatisch angepasst, sollte man mit der normalen
Fernbedienung die Dose schalten. Mein Empfänger in der fhemduino Hardware ist leider nicht so
empfindlich wenn es Raumgrenzen hinweg geht, so dass diese Funktion nur in ca. 90% der Fälle
funktioniert.

Benötigt werden das in einer Zeile von mir geämderte Modul 00_fhemduino Modul und das neue 14_FHEMduino_fsd
(fsd = Funksteckdose) Modul, siehe Anhang.

Vorgehensweise:

In der Config bitte folgendes eintragen:

define Fhemduino FHEMduino /dev/ttyUSB0@9600
attr Fhemduino verbose 5

Wichtig ist verbose 5. Denn dann sieht man schon allein vom Fhemduino Modul die Tastencodes
des Funkschalters in den Logfiles von fhem.
Damit bitte die Definition der Dosen vornehmen:

Beispiel:
define FSD_Leselampe FHEMduino_fsd  1381457 1381460
attr FSD_Leselampe IODev Fhemduino

(DIe Codes in der Reihenfolge Einschalten Ausschalten)

Würde mich freuen, wenn das jemand vertesten würde.

Mit freundlichen Grüßen

Joachim




palicaj

Hi!

Im trying to use your software with PIR sensor.
Im receiving date, when sensor detect move i get:
Fhemduino_RAWMSG IR6044153

I set in fhem.cfg

define Fhemduino FHEMduino /dev/ttyUSB0@9600
attr Fhemduino verbose 5

define PIR FHEMduino_fsd IR6044153
attr PIR IODev Fhemduino

but in log i come:

2014.07.02 21:17:39 5: Fhemduino: IR6044153
2014.07.02 21:17:39 5: Fhemduino dispatch IR6044153
2014.07.02 21:17:39 5: Fhemduino_fsd: Parsing: IR6044153
2014.07.02 21:17:39 5: Fhemduino_fsd: Keine FSD fur Code IR6044153 in der Konfiguration definiert.

What im doing wrong?

palicaj

#2
OK.

I got it.
PIR must be defined only as 6044153 not IR6044153.
Now it Works!

Now i have question how to set that after 1 minute PIR goes off ?

joachimt

#3
Hi palicaj,

first of all thank you for testing my code.

I just tried to add an attribute "on-for-timer" in my module, but I found out that every sleep command in the
code blocks the whole fhem Software, so I gave that up ...
Maybe there are some functions that what do a "wait"  for me, but I am just a beginner in fhem programming.

What would solve your problem is to use the powerful notify tool in combination with at.

Assuming your "Device" is FSD_Steckdose_B you may put

define act_on_Steckdose_B_On notify FSD_Steckdose_B:on  define FSD_Steckdose_off at +00:00:10 set FSD_Steckdose_B off

in your fhem.cfg.
The event FSD_Steckdose_B on triggers an "At" Job which takes place in 10 sec in this case and which then sets the  FSD_Steckdose_B off


Best regards

Joachim

justme1968

to get on-for-timer &co
just use the SetExtentions.

habe a look at the oder modulen how they are used.

if your device has on and off commands it is just two or there lines of code to get the functionality.

best regards
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

joachimt

hallo,

habe den return String eingefügt.
Die Website zeigt weiterhin: on, off.

Leider akzeptiert fhem ein

set FSD_Steckdose_A on-for-timer 60 nicht, sagt
aber dass ich genau eins von den Dingen on,off,blink,on-for-timer
... benutzen soll. mmhh

Am Code muss ich weiter nichts ändern, der on-for-timer funktionier so, dass mein mein Modul einmal mit on und nach Ablauf der Zeit mit off gerufen wird.

Oder muss ich noch was beachten?

Gruss

Joachim

justme1968

das der on-for-timer schon mal da steht ist doch schon ein anfang :) den rest bekommst du auch noch hin.

zeig mal deine set funktion.

ja. dein modul muss nur on und off unterstützen. die logik und den timer für alles andere macht fhem dann intern und ruft dein modul mit dem normalen on und off auf.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

joachimt

Hallo Andre,

hier ist meine Set Funktion, die Variable $cmd habe ich kurzerhand weggelassen, weil ich sie nicht sinnvoll zu füllen wusste.
In anderen Beispielen wurde auch so verfahren.

sub
FHEMduino_fsd_Set($@)
{
  my ($hash, @a) = @_;
  my $ret = undef;
  my $na = int(@a);

  return "no set value specified" if($na < 2 || $na > 3);

  my $list = join(" ", sort keys %fsd_c2b);
  my $name = $hash->{NAME};

  my $c = $fsd_c2b{$a[1]};
  if(!defined($c)) {
    #return "Unknown argument $a[1], choose one of " .
    #                            join(" ", sort keys %fsd_c2b);
    #return SetExtensions($hash, $list, $name, $cmd, @a);
    return SetExtensions($hash, $list, $name, @a);
     }

  my $io = $hash->{IODev};

  my $code_to_send=$hash->{$fsd_c2b{"$a[1]"}};

  # Umrechnung dezimal -> tristate
  my $b=sprintf "%b", $code_to_send;
  my $length=length($b);

  for ( my $i=1; $i <= (24-$length); $i++ ) {
          $b= "0" . $b;
      }

  my $tmpstring;
  my $tristate="";
  for ( my $i=0; $i <= 11; $i++ ) {
          $tmpstring=substr($b,2*$i,2);
          $tristate =  $tristate . "0" if ( $tmpstring eq "00" );
          $tristate =  $tristate . "F" if ( $tmpstring eq "01" );
          $tristate =  $tristate . "1" if ( $tmpstring eq "11" );
          }

  my $message="is" . $tristate;

  Log3 $hash ,5, "Fhemduino_fsd: Tristate Code an Arduino: $message";
 
  my $msg = CallFn($io->{NAME}, "GetFn", $io, (" ", "raw", $message));
 
  Log3 $hash ,5, "Fhemduino_fsd: Arduinos Antwort: $msg";
 
  $hash->{STATE}="$a[1]";
 
  return $ret;

}

Gruß

Joachim

JoWiemann

Warum nutzt ihr nicht das seit langem verfügbare Modul 14_FHEMduino_PT2262.pm. Da ist alles drin, was ihr braucht. Bitte schaut dazu in den FHEMduino Thread.

http://forum.fhem.de/index.php/topic,17196.0.html

Please have a look at the FHEMduino thread and at the 14_FHEMduino_PT2262.pm. This modul has all the functions you are asking for.

Grüße

Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

joachimt

Ok,

das Moul kannte ich nicht.
Nichtsdetoweniger verwendet das Modul ebenso wenig SetExtensions.

Darum geht es ja hier gerade.

Gruß

Joachim

JoWiemann

Stimmt nicht. Habe ich vor 2-3 Wochen eingebaut. Sieh mal ein paar Post zurück oder unter https://github.com/mdorenka/fhemduino_modules/tree/trunk

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

joachimt

Hallo zusammen,

ok nach Sichtung der SetExtensions.pm und ein paar selbst eingebauten DEBUG prints habe ich die
Funktion verstanden und mein Skript entsprechend angepasst.

Funktioniert.

Gruß

Joachim

joachimt

Hallo nochmal,

unter github gibt ja jetzt einige Module für fhemduino.

@Jörg: Gibt es Überlegungen für fhemduino ein Datenprotokoll festzulegen, mit dem man Sensordaten jedweder Art und eigener Erfassung z.B. mit einem anderen Arduino übertragen kann ?
Oder kann man etwas Vorhandenes auf fhemduino umsetzen und dann nutzen?

Wäre daran interessiert und würde, wenn Bedarf besteht, auch gerne mithelfen.

Viele Grüsse

Joachim

justme1968

schaut euch das jeelabs room node protokoll an und auch das swap protokoll der panstamps. vor allem letzteres ist wirklich universell und natürlich nicht auf panstamps beschränkt.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

palicaj

Hi!

I still dont get to work...
I want pir1 turn ligth1 on for 30seconds (light1 is EIB)
Can someone copy a fhem.cfg example?

Now i have:
define pir1 FHEMduino_fsd 6044153
attr pir1 IODev Fhemduino

And in FHEM i get status "on"

Must i change something in 14_FHEMduino_fsd.pm ??

Log file:
2014.07.23 16:17:34 5: Fhemduino: IR6044153
2014.07.23 16:17:34 5: Fhemduino dispatch IR6044153
2014.07.23 16:17:34 5: Fhemduino_fsd: Parsing: IR6044153
2014.07.23 16:17:34 5: Fhemduino_fsd: fsd: pir1, neuer Zustand: on

I also programmed my arduino with newest FHEMduino v2.2