Autor Thema: Beschattungs Automatik  (Gelesen 6517 mal)

Offline spacy

  • Jr. Member
  • **
  • Beiträge: 64
Beschattungs Automatik
« am: 13 Juni 2013, 19:36:56 »
hallo zusammen,

habe hier ein schnipsel aus meiner 99_rolloutils.
Mein Problem ist das in der ganzen Anweisung am ende nur raus kommt das "Die Rollos geschlossen sind" ob wohl das nicht der Fall ist.
Es wird also nichts beschattet. Es sieht für mich so aus das die "" if (Value($device) eq "Auf") ""nicht das rausgibt was sie soll.
Könnte da bitte mal jemand reinschauen und mir auf die Sprünge helfen.
Danke euch.
Ach ja der Schnipsel ist hier aus dem Forum, habe ihn an meine bedürfnisse angepasst.

sub
rollo_doBeschattung($$$$) {
my ($device, $cloudDevice , $aktivBeschattung , $endtime) = @_;
my $deviceposition = "state";
my $weatherDevice = "Aussen_Temperatur";
my $readingMaxTemp = "temperature";
my $triggerTemp = 20;
my $mandatoryTemp = 24;
my $cloudCoverage = "state";
Log 3, "doBeschattung: Prüfe Beschattungsbedarf für $device...";
Log 3, "doBeschattung: TempHi ist ".ReadingsVal($weatherDevice,$readingMaxTemp, 0)." (Schwellwerte: $triggerTemp wenn sonnig, sonst $mandatoryTemp )" ;
Log 3, "doBeschattung: Clouds ist ".ReadingsVal($cloudDevice,$cloudCoverage, 0);
                if ( Value($aktivBeschattung) eq "deaktiv" ) {
                    Log 3,"doBeschattung:Automatik ist deaktiv!";
                    }
                elsif ( (ReadingsVal($weatherDevice,$readingMaxTemp, 0) > $triggerTemp)
                       && (ReadingsVal($cloudDevice,$cloudCoverage , 0) <= m/off 2.5/ )
                       || (ReadingsVal($weatherDevice,$readingMaxTemp, 0) > $mandatoryTemp) ) {
                       my $startBeschattung = "at_".$device."_Beschattung_start"; #name for notify
                       my $endBeschattung = "at_".$device."_Beschattung_end";     #name for notify
                            if (Value($device) eq "Auf") {
                                Log 3, "doBeschattung: Beschattung aktiviert für $device.";
                                fhem "set $device on"; #Rollo immer erst hochfahren
                                fhem "set $startBeschattung at +00:02 set $device off-for-timer 8"; #Rollo für 16s herunterfahren
                                fhem "define $endBeschattung at $endtime set $device on" if(!defined($defs{$endBeschattung}));
                            } else {
                                Log 3, "Rollo ist zu, keine Beschattung nötig !";
                               }
                } else {
                        Log 3, "doBeschattung: Nicht nötig.";
                        }
    }

Offline Puschel74

  • Hero Member
  • *****
  • Beiträge: 9839
Aw: Beschattungs Automatik
« Antwort #1 am: 13 Juni 2013, 19:52:01 »
Hallo,

Zitat
if (Value($device) eq "Auf")


Value fragt STATE ab - was steht bei deiner Rollo im STATE drin?

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Offline spacy

  • Jr. Member
  • **
  • Beiträge: 64
Aw: Beschattungs Automatik
« Antwort #2 am: 13 Juni 2013, 21:25:11 »
hallo,

genau das, "Auf".

STATE Auf
state on

habe das auch schon auf "on" probiert.

Offline Puschel74

  • Hero Member
  • *****
  • Beiträge: 9839
Aw: Beschattungs Automatik
« Antwort #3 am: 13 Juni 2013, 21:58:42 »
Hallo,

und $device (also @_) beinhaltet auch den Namen deiner Rollo?

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Offline spacy

  • Jr. Member
  • **
  • Beiträge: 64
Aw: Beschattungs Automatik
« Antwort #4 am: 13 Juni 2013, 22:02:44 »
sollte es eigentlich.
kann ich das irgentwie prüfen.

So sieht der Aufruf aus.
define at_Wohnzimmer_BeschattungStart notify Wohnzimmer_Beschattungssensor:* {rollo_doBeschattung('Wohnzimmer_Rollo' , 'Wohnzimmer_Beschattungssensor' , Wohnzimmer_Beschattung' , '19:00')}

Offline Puschel74

  • Hero Member
  • *****
  • Beiträge: 9839
Aw: Beschattungs Automatik
« Antwort #5 am: 13 Juni 2013, 22:32:14 »
Hallo,

klar im Logfile - du hast ja schon den Eintrag

Zitat
Log 3, "doBeschattung: Prüfe Beschattungsbedarf für $device...";


drinnen.
Was steht den da?

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Offline spacy

  • Jr. Member
  • **
  • Beiträge: 64
Aw: Beschattungs Automatik
« Antwort #6 am: 13 Juni 2013, 22:37:53 »

ah ja, da kann man da sehen.

2013.06.13 15:57:29 3: doBeschattung: Prüfe Beschattungsbedarf für Arbeitszimmer_Rollo_links,Arbeitszimmer_Rollo_rechts...
2013.06.13 15:57:29 3: doBeschattung: TempHi ist 27.2 (Schwellwerte: 20 wenn sonnig, sonst 24 )
2013.06.13 15:57:29 3: doBeschattung: Clouds ist on 2.5
2013.06.13 15:57:29 3: Rollo ist zu, keine Beschattung nötig !

Offline spacy

  • Jr. Member
  • **
  • Beiträge: 64
Aw: Beschattungs Automatik
« Antwort #7 am: 13 Juni 2013, 22:40:05 »
sprich, er wärtet die If Value nicht richtig aus
nur warum verstehe ich nicht.

Offline Puschel74

  • Hero Member
  • *****
  • Beiträge: 9839
Aw: Beschattungs Automatik
« Antwort #8 am: 13 Juni 2013, 22:52:20 »
Hallo,

$device beinhaltet
Zitat
Arbeitszimmer_Rollo_links,Arbeitszimmer_Rollo_rechts


Ich bin mir ziemlich sicher das die If-Abfrage funktioniert wie sie soll ;-)

Das Problem sehe ich eher darin das
a) $device 2 Geräte enthält (sobald eines nicht Auf ist ist die Abfrage false und es wird mit else weiter gemacht)
b) ich mir nicht sicher bin ob die Abfrage so überhaupt funktionieren kann da eben 2 Geräte übergeben werden.

Kannst du mal versuchen das nur 1 Gerät übergeben wird?
Obwohl ich mir fast sicher bin das die Abfrage dann wie von dir erwartet arbeitet.

Wenn mehr als 1 Gerät in $device übergeben wird musst du das wohl oder übel auf $device1 und $device2 aufsplitten oder eine Schleife programmieren die alle übergebenen Geräte der Reihe nach prüft.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Offline spacy

  • Jr. Member
  • **
  • Beiträge: 64
Aw: Beschattungs Automatik
« Antwort #9 am: 13 Juni 2013, 22:55:47 »
das war für mein arbeitszimmer.
Im Wohnzimmer ist nur ein device geht aber genau so wenig. Sieht vom Log identisch aus.
Das übergeben von zwei device's geht, mache das mit sunset,sunrise genau so.
Da haut das alles auch so hin.
Aber wie gesagt im WZ ist nur ein Device und es geht trotzdem nicht

Offline Puschel74

  • Hero Member
  • *****
  • Beiträge: 9839
Aw: Beschattungs Automatik
« Antwort #10 am: 13 Juni 2013, 23:07:10 »
Hallo,

ok. Dann muss jemand anders drüber schauen.

Ich bin noch nicht davon überzeugt das

if (Value($device) eq "Auf") {

aufgeschlüsselt

if (Value(Arbeitszimmer_Rollo_links,Arbeitszimmer_Rollo_rechts) eq "Auf") {

funktioniert.
Aber dafür bin ich dann leider auch nicht der richtige - sorry.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Offline spacy

  • Jr. Member
  • **
  • Beiträge: 64
Aw: Beschattungs Automatik
« Antwort #11 am: 13 Juni 2013, 23:18:30 »
lass mal das arbeitszimmer wech.
Wie gesagt im WZ ist nur ein device.
das ist der Aufruf

define at_Wohnzimmer_BeschattungStart notify Wohnzimmer_Beschattungssensor:* {rollo_doBeschattung('Wohnzimmer_Rollo' , 'Wohnzimmer_Beschattungssensor' , 'Wohnzimmer_Beschattung' , '19:00')}

und das der log

2013.06.13 08:43:16 3: doBeschattung: Prüfe Beschattungsbedarf für Wohnzimmer_Rollo...
2013.06.13 08:43:16 3: doBeschattung: TempHi ist 21.9 (Schwellwerte: 20 wenn sonnig, sonst 24 )
2013.06.13 08:43:16 3: doBeschattung: Clouds ist on 5
2013.06.13 08:43:16 3: Rollo ist zu, keine Beschattung nötig !

Offline spacy

  • Jr. Member
  • **
  • Beiträge: 64
Aw: Beschattungs Automatik
« Antwort #12 am: 15 Juni 2013, 10:50:49 »
@puschel74

hattest recht. Das mit beiden Devices so geht nicht.
Habe das angepasst.
Im WZ hat ich noch nen define nicht richtig.
Jetzt haut der Spaß hin.

danke
spacy

 

decade-submarginal