Ich bin grad total am verzweifeln. Zwar hab ich schon viele Homematic Skripte geschrieben, aber das meiste ist schon etwas her und ich hab gerade mit einem Kleinkind nicht so die Geduld bzw. die Zeit mit länger am Stück damit zu beschäftigen.
Wir haben zum Sonnenschutz im Wohnzimmer am späten Nachmittag die Rollläden etwas herunter gefahren. Allerdings ist das total störend wenn man doch mal auf den Balkon möchte.
Deswegen sollte der Rollo von der Türe automatisch nach oben fahren sobald die Türe geöffnet wird und sich dann automatisch auch wieder auf die vorherige Posistion zurückfahren wenn die Türe geschlossen wird.
Aber ich bekomme das gerade beim besten Willen nicht hin.
Mit .state und .Value komme ich toatl durcheinander und hab bestimmt irgendwo einen Denkfehler.
Skitpsprache für Homematic (RaspberryMatic)
Das Skript ist aktuell so geplant dass es ausgeführt wird, sobald ein Fenstersensor den Status ändert.
Rollo links: BidCos-RF.OEQ0049783
Türsensor links: HmIP-RF.00109709A3BB87
Rollo rechts: BidCos-RF.OEQ0049783
Türsensor rechts: HmIP-RF.00109709A3B28C
Beispiel:
- Rollo steht auf 40%
- Tür geht auf —> HM merkt sich den Rollostand 40% in Variable —> fährt den Rollo auf 0%
- Tür geht zu —> HM liest gespeicherten Wert auf Variable und fährt den Rollo dahin
Eigebtlich ist sollte das nicht so schwer sein, aber mein Kind erlaubt mir gerade nicht mich richtig zu konzentrieren und den Fehler zu finden.
Ich bin über jede Hilfe dankbar.
Mfg
Tommy
!! Abfrage der jeweiligen Rollladenlevel
!!Rechts
real LEVEL_RECHTS = dom.GetObject("BidCos-RF.OEQ0049831:1.LEVEL").Value();
real TEMP_RECHTS = dom.GetObject("Rollo_WZ_rechts_Temp").Value();
WriteLine(TEMP_RECHTS);
!!Links
real LEVEL_LINKS = dom.GetObject("BidCos-RF.OEQ0049783:1.LEVEL").Value();
!!noch falsch hier
!dom.GetObject("Rollo_WZ_links_Temp").State(LEVEL_LINKS);
!dom.GetObject("Rollo_WZ_rechts_Temp").State(LEVEL_RECHTS);
!!Rollo verdunkelt
if(LEVEL_RECHTS!=1)
{
WriteLine("verdunkelt");
!Rollo öffnen
dom.GetObject("BidCos-RF.OEQ0049831:1.LEVEL").State(1.0);
!Variable speichern
dom.GetObject("Rollo_WZ_rechts_Temp").State(LEVEL_RECHTS);
}
!!Offen
if(LEVEL_RECHTS==1)
{
WriteLine("Offen");
!Rollo Schließen
dom.GetObject("BidCos-RF.OEQ0049831:1.LEVEL").State(Rollo_WZ_rechts_Temp);
!Variable Löschen
dom.GetObject("Rollo_WZ_rechts_Temp").State(1.0);
}