Ankündigung

Einklappen
Keine Ankündigung bisher.

Stromverbrauch bzw. Laufzeit der Lampen mitschreiben

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #31
    Ich glaube, da meinten wir zwei verschiedene Sachen.

    Mit der von Dir zitierten Äußerung

    Und noch eine Ergänzung zum Import von import org.joda.time.*: Das Verhalten tritt auch mit meinem 1.2 nightly Build vom 21.01. auf!
    Meinte ich das folgende Verhalten im Designer:

    Getestet habe ich es eben mit dem aus dem 1.1 Stable Release, zu Hause kann ich es noch mal mit dem Snapshot Build probieren.

    Hab dazu in einer Regel eine Variable deklariert: var DateTime test

    Ohne den Import wird sie mir rot unterschlängelt, Fehler: Couldn't resolve reference to JvmType 'DateTime'.

    Ctrl+Space bei test. liefert dabei ein, wie es scheint, generisches Ergebnis aufgrund irgendwelcher Basisklassen. Erstaunlich finde ich, dass es bei now. eine Liste der Methoden von DateTime gibt, auch wenn das import nicht vorhanden ist.

    Mit dem import ist die Liste mit ctrl+space bei test. und now., zumindest auf den ersten Blick, identisch.

    Du meintest wahrscheinlich die folgende Meldung:
    Code:
    2013-01-25 00:26:48.902 ERROR o.o.c.s.ScriptExecutionThread[:70]- Error during the execution of rule 'Aktualisiere Betriebsstunden Steckdosen_Arbeiten_hinten_rechts_Schalten': Cannot assign a value in null context.
    Die tritt bei mir auf, wenn die Items im laufenden System noch einmal geändert werden. Wenn ich openHAB vorher herunterfahre und dann wieder starte hab ich es noch nicht beobachtet. Und natürlich tritt der Fehler auch nicht immer auf...

    Kommentar


      #32
      Die tritt bei mir auf, wenn die Items im laufenden System noch einmal geändert werden. Wenn ich openHAB vorher herunterfahre und dann wieder starte hab ich es noch nicht beobachtet. Und natürlich tritt der Fehler auch nicht immer auf...
      Eben hab ich es auch bei einem Neustart beobachtet... Bei einem nochmaligen Start dann nicht mehr.

      Kommentar


        #33
        Danke für den aufschlussreichen Thread. Ich habe GIRA Schaltaktoren, welche mir nur die aktuelle Stromstärke liefern. Um daraus einen "Zähler" für einen Kanal des Aktors zu bauen, habe ich folgende Regel geschrieben. Ist nicht 100%ig genau, da immer ein paar Sekunden fehlen (mehr oder weniger, je nachdem wie oft die Regel aufgerufen wird). Eine bessere Lösung ist mir auf die Schnelle nicht eingefallen.

        Code:
        rule Verbrauch_Start
        when
        	System started
        then
        	if (Verbrauch_Wohnzimmer.state == Uninitialized) {
                	Verbrauch_Wohnzimmer.postUpdate(0)
            	}
        
        rule Verbrauch
        when
          Time cron "0/30 * * * * ?" // Abfrage alle 30 Sekunden oder "* 0/1 * * * ?" für Minuten 
        then 
        	if (Steckdose_Wohnzimmer.state == ON) {
          	   	if (strom_wohnzimmer_zeit !=0 ) {
          	   	var letzte_zeit = strom_wohnzimmer_zeit
        	 	strom_wohnzimmer_zeit = now.millis
        	     	var float stromstaerke = (Strom_Wohnzimmer.state as DecimalType).intValue *230 / 1000
        	     	Energie_Wohnzimmer.postUpdate(stromstaerke)
        	     	var float zeit_s = (strom_wohnzimmer_zeit - letzte_zeit) / 1000
        	      	var float kW = stromstaerke / 1000
        	      	var float einheiten = 3600 / zeit_s
        	     	var float verbrauch_je_einheit = kW / einheiten
        	      	var zaehler = Verbrauch_Wohnzimmer.state as DecimalType + verbrauch_je_einheit 
        	      	Verbrauch_Wohnzimmer.postUpdate(zaehler)
          	   } else { //noch kein Zeitstempel erfasst, seit dem Einschalten der Steckdose
          	   	strom_wohnzimmer_zeit = now.millis
          	   }
        	} else { //Steckdose wurde ausgeschaltet
        		Energie_Wohnzimmer.postUpdate(0)
        		strom_wohnzimmer_zeit = 0
        	}	
        end
        PS: Wie bekomme ich die Anzeige des "Zählers" (Verbrauch_Wohnzimmer) formatiert, so dass nicht 21,3344399061 (mit 10 Nachkommastellen) in der UI steht?

        Kommentar


          #34
          Jetzt hat mich das in meinem Post vom 25.01. geschilderte Problem wieder eingeholt:

          bei der Zuweisung mit var= java::util::Calendar::getInstance(TimeZone::getTim eZone("Europe/Berlin"))

          gibt es den Fehler "Cannot assign a value in null context."

          Habt Ihr dazu vielleicht neuere Erkenntnisse?

          Kommentar

          Lädt...
          X