Ankündigung

Einklappen
Keine Ankündigung bisher.

Item Helligkeitswert in Variable schreiben ?

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

    Item Helligkeitswert in Variable schreiben ?

    Hallo,

    ich versuche gerade eine Rule mit script, dabei will ich ein Item Helligkeitswert in eine Variable schreiben, passt aber nicht, der Designer meckert, folgender Script-Code:
    Code:
    var Number Abdimmen
    
    [COLOR=Red]Abdimmen = Light_Wohnzimmer_HW[/COLOR]
    
    Thread::sleep(300000) 
    while(Abdimmen<101 )
    
    {
            Abdimmen=Abdimmen-1
            sendCommand(Light_Wohnzimmer_Schran, Abdimmen)
            Thread::sleep(1300)
    }
    Rule-Code:
    Code:
    import org.openhab.core.library.types.*
     
    import org.openhab.model.script.actions.*
    
    var Timer ABD = null
    
    rule "Abdimmen"
    when
    
    Item Light_Wohnzimmer_Schrank received command
    
    then
    if (now.getHourOfDay() >= 21 || now.getHourOfDay() <=5) {       // geht bis 5.59
            if (ABD != null) 
                ABD.cancel()
            if(Light_Wohnzimmer_Schrank.state == ON) {
                    callScript("dimmlight")     
            Light_Wohnzimmer_Schrank.sendCommand(OFF)
            
            }
            }
    end
    Brauchts einen anderen Variablentyp statt Number ?

    Mfg Jürgen

    #2
    Hi,

    Abdimmen = Light_Wohnzimmer_HW

    => Light_Wohnzimmer_HW ist aber nicht direkt der Helligkeitswert, sondern erst einmal ein Objekt. Probier das mal so:

    Abdimmen = Light_Wohnzimmer_HW.state

    Gruß,
    thoern

    Kommentar


      #3
      Hallo Thomas,

      Danke für die Hilfe, aber der Disigner meckert dennoch, siehe Anhang, ist doch der Variablentyp falsch ?

      Mfg Jürgen
      Angehängte Dateien

      Kommentar


        #4
        Ich glaube, es sollte
        Code:
        Abdimmen = Light_Wohnzimmer_HW.state as DecimalType
        heißen :-)

        Kommentar


          #5
          Hi Udo,

          das wars leider noch nicht ganz, ich bekomme eine weitere Fehlermeldung, siehe Anhang.

          Wie kann man den rausfinden welcher Typ es ist oder ist dieser Helligkeitswert einfach nicht kompatibel zu openhab ?

          Hat schon jemand den Helligkeitswert eines Dimmers aus einem Item weiter verarbeitet ?

          Im Item ist es so definiert:
          Code:
          Dimmer Light_Wohnzimmer_HW      "Wohnzimmer Schrank" (Wohnzimmer, Lights) { knx = "<0/0/9" }
          Mfg Jürgen
          Angehängte Dateien

          Kommentar


            #6
            Mal ne Frage nebenbei, wenn openHAB restartet, werden die Werte gespeichert oder gehen verloren?

            zB nach einem kurzen Stromausfall sitz man im Dunkeln, wenn die Werte nicht gespeichert werden.

            Kommentar


              #7
              Auf das gleiche Problem bin ich auch mal gestoßen. In den Scripten kannst du keine Importanweisungen machen. Zumindest meckert der Designer wenn man das macht. Daher mußt du das Package der Klassen mit angeben.

              Versuch es mal hiermit:

              Code:
              var Number Abdimmen = Light_Wohnzimmer_HW.state as org.openhab.core.library.types.DecimalType
              
              Thread::sleep(300000) 
              while(Abdimmen < 101) {
                 Abdimmen=Abdimmen-1
                 sendCommand(Light_Wohnzimmer_Schran, Abdimmen)
                 Thread::sleep(1300)
              }

              Kommentar


                #8
                Zitat von Juergen151 Beitrag anzeigen
                Im Item ist es so definiert:
                Code:
                Dimmer Light_Wohnzimmer_HW      "Wohnzimmer Schrank" (Wohnzimmer, Lights) { knx = "<0/0/9" }
                Das kann nicht funktionieren. Ein Dimmer benötigt drei knx-Adressen, die erste, um zu schalten, die zweite, um auf/abwärts zu dimmen, die dritte, um den eigentlichen Dimmwert zu lesen/schreiben. also
                Code:
                Dimmer Light_Wohnzimmer_HW "Wohnzimmer Schrank" (Wohnzimmer, Lights) { knx="<0/0/a+0/0/b,0/0/c,<0/0/d+0/0/e}
                Wobei gilt:a,b=1bit Ein/Aus, c=4bit Dimmer Schritt, d,e=1Byte Dimmwert. Adresse b und e sind die Rückmeldungen vom Aktor, es könnte ja sein, dass der Aktor auf mehrere Adressen hört, openHAB aber nur auf jeweils einer von denen...
                Wenn Du keine Gruppenadresse für Dimmschritte hast, kannst Du Dir damit behelfen, für den Absolutwert den DPT 5.004 mit anzugeben (ist recht gut im Wiki erklärt)
                Wenn Du in der sitemap ein Slider Item anlegst:
                Code:
                Slider item= Light_Wohnzimmer_HW
                solltest Du in der Lage sein, den Dimmer über die UI
                a) zu schalten und
                b) zu dimmen.
                Wobei man natürlich einschränken muss, dass nicht jeder Dimmer die Art Dimmen unterstützt, die openHAB mit der Classic UI einsetzt. Es gibt Dimmer, die ein Stop-Telegramm am Ende des Dimmvorgangs erwarten. Kann also sein, dass ein ab/andimmen in der Classic UI zu einem kompletten Dimmen bis Mini-/Maximum führt. (Deswegen, und wegen der schöneren Optik setze ich greent ein, die hat echte Slider, die arbeiten mit Absolutwerten, so wie HabDroid auch)
                Wenn Du das Item so anlegst:
                Code:
                Dimmer Light_Wohnzimmer_HW "Wohnzimmer Schrank [COLOR=Red][%.0f %%][/COLOR]" (Wohnzimmer, Lights) { knx="<0/0/a,0/0/b,0/0/c}
                solltest Du zusätzlich den momentanen Helligkeitswert angezeigt bekommen (sobald die Seite aktuell ist).

                Kommentar


                  #9
                  Zitat von skorpi08 Beitrag anzeigen
                  Mal ne Frage nebenbei, wenn openHAB restartet, werden die Werte gespeichert oder gehen verloren?

                  zB nach einem kurzen Stromausfall sitz man im Dunkeln, wenn die Werte nicht gespeichert werden.
                  Schau dir mal im Wiki (https://github.com/openhab/openhab/wiki/Persistence) den Persistence Eintrag an.
                  Hier kannst du Werte Definieren die Permanent gespeichert werden sollen - sowie beim start von openhab dann neu geladen werden.

                  Kommentar


                    #10
                    Danke für den Hinweis.
                    Klappt bei mir noch nicht.
                    22:26:08.184 INFO runtime.busevents[:26] - Licht_FF_Kinderzimmer1 state updated to Uninitialized
                    .items
                    Code:
                    Group:Switch:OR(ON, OFF)  Licht 	"All Licht [(%d)]"   (All)
                    .rules
                    Code:
                    rule "Initialize light states"
                    	when
                    		System started
                    	then
                    	Licht?.members.forEach(light|
                    			postUpdate(light, light.state )
                    			
                    		)
                     
                    		
                    end
                    .persist

                    Code:
                    // persistence strategies have a name and a definition and are referred to in the "Items" section
                    Strategies {
                    	// for rrd charts, we need a cron strategy
                    	everyMinute : "0 * * * * ?"
                    	// if no strategy is specified for an item entry below, the default list will be used
                        default = everyChange
                    }
                    
                    Items {
                    	Licht_FF*,Licht_GF*,Dimmer_FF*,Dimmer_GF*: strategy = everyChange, everyMinute, restoreOnStartup
                    
                    }
                    Stoppe jedes mal den Server und starte den nochmal um zu testen.
                    Wie macht man es richtig?
                    English kann ich zwar lesen, nur nicht verstehen.
                    Übersetzer Apps könnens auch nicht richtig auf Deutsch

                    Kommentar


                      #11
                      Hm. Also die Items scheinen keinen Wert zu bekommen.
                      Deswegen der Hinweis uninitialised.

                      Bekommst du denn überhaupt was angezeigt? Ist vieleicht das Bindung nicht korrekt?

                      Kommentiere die rule mit der Initialisierung mal raus.

                      Habe ich bei mir auch nicht drin.

                      Dann schau noch mal was passiert.

                      Übrings 5:0 für Deutschland 22:45 Uhr. Nur deswegen antworte ich dir heute *gggg*

                      Gruß

                      Kommentar


                        #12
                        Ach und stell mal deine cron Zeit (everyMinute) anders sein
                        sein von 0 * * * * auf 5 * * * * (also alle 5 min.) das sollte reichen.

                        Weiss gerade nicht genau was bei 0 passiert. Sollte aber mindestens auf 1 stehen (also 1 mal die Minute)

                        Kommentar


                          #13
                          Komplettes Log
                          23:01:38.381 INFO o.o.c.internal.CoreActivator[:61] - openHAB runtime has been started (v1.5.0).
                          23:01:39.631 INFO o.o.i.s.i.DiscoveryServiceImpl[:72] - mDNS service has been started
                          23:01:40.125 INFO o.o.io.rest.RESTApplication[:143] - Started REST API at /rest
                          23:01:48.733 INFO o.o.m.c.i.ModelRepositoryImpl[:79] - Loading model 'Haus.sitemap'
                          23:01:48.854 INFO o.o.m.c.i.ModelRepositoryImpl[:79] - Loading model 'demo.script'
                          23:01:48.887 INFO o.o.m.c.i.ModelRepositoryImpl[:79] - Loading model 'Haus.script'
                          23:01:48.907 INFO o.o.m.c.i.ModelRepositoryImpl[:79] - Loading model 'db4o.persist'
                          23:01:48.917 INFO o.o.m.c.i.ModelRepositoryImpl[:79] - Loading model 'exec.persist'
                          23:01:48.919 INFO o.o.m.c.i.ModelRepositoryImpl[:79] - Loading model 'logging.persist'
                          23:01:48.921 INFO o.o.m.c.i.ModelRepositoryImpl[:79] - Loading model 'rrd4j.persist'
                          23:01:48.925 INFO o.o.m.c.i.ModelRepositoryImpl[:79] - Loading model 'testpersit.persist'
                          23:01:48.939 INFO o.o.m.c.i.ModelRepositoryImpl[:79] - Loading model 'Haus.items'
                          23:01:50.028 INFO o.o.u.w.i.s.WebAppServlet[:79] - Started Classic UI at /openhab.app
                          23:01:53.832 INFO o.o.c.s.AbstractActiveService[:169] - HTTP Refresh Service has been started
                          23:01:53.900 INFO o.o.c.s.AbstractActiveService[:169] - NTP Refresh Service has been started
                          23:01:59.024 INFO o.o.m.c.i.ModelRepositoryImpl[:79] - Loading model 'Haus.rules'
                          Die .rules ist nun leer.
                          Der Switch bleibt beim neustart trotzdem auf OFF
                          Code:
                          Group FF_Kinderzimmer1	"Kid" 	<boy1>		(gFF)
                          Switch Licht_FF_Kinderzimmer1	"Licht"		(FF_Kinderzimmer1, Licht)
                          Was sollte denn mit den Binding nicht stimmen?
                          org.openhab.persistence.rrd4j-1.5.0.jar ist im addons Ordner drin.

                          Gibt es irgendwo Beispiele, openHAB mit Arduino?
                          Möchte openHAB mit RS485 einsetzen. Könnte zwar direkt mit dem Raspberry ans RS485 dran aber ich finde es mit dem Arduino einfacher zu Programmieren.

                          Kommentar


                            #14
                            Vergiss was ich vorher zum CronJob geschrieben habe :-))

                            Also ich habe bei mir die Items in der db4o und noch im logging.persist

                            Beispiele:

                            db4o.persist:
                            Code:
                            Strategies {
                            	everyMinute		 : "0 0 * * * ?"
                            	// if no strategy is specified for an item entry below, the default list will be used
                            	default = everyChange
                            }
                            	LICHT_HELLIGKEIT_EG_WC			 : strategy = everyMinute,restoreOnStartup
                            logging.persist:

                            Code:
                            Strategies {
                            	// if no strategy is specified for an item entry below, the default list will be used
                            	default = everyChange
                            }
                            Items {
                            	LICHT_HELLIGKEIT_EG_WC
                            }
                            Das Item dazu:
                            Code:
                            Number			LICHT_HELLIGKEIT_EG_WC				"WC - Helligkeit [%.1f lux]"					<brightness>	(GRP_EG_ALL,EG_RAUM_WC,GRP_HELLIGKEIT,LICHT_HELLIGKEIT_EG_WC_Chart)		{ knx="<1/5/1" }
                            Und noch das Gruppen Item, womit ich das Chart erstelle:

                            Code:
                            Group	LICHT_HELLIGKEIT_EG_WC_Chart				"Helligkeit WC"									<chart>
                            dazu noch die rrd4j.persist:

                            Code:
                            Strategies {
                            	// for rrd charts, we need a cron strategy
                            	everyMinute : "5 * * * * ?"
                            }
                            
                            Items {
                            	LICHT_HELLIGKEIT_EG_WC,LICHT_HELLIGKEIT_EG_WC_Chart								 : strategy = everyMinute, restoreOnStartup
                            }

                            Und meine exec.persist

                            Code:
                            // persistence strategies have a name and a definition and are referred to in the "Items" section
                            Strategies {
                            	everyMinute   : "5 * * * * ?"
                            }
                            
                            Items {
                            	LICHT_HELLIGKEIT_EG_WC			 -> "echo \"%2$tY-%2$tm-%2$td %2$tT : %1$s\"" : strategy = everyMinute
                            }
                            Hoffe das hilft dir weiter...

                            Kommentar


                              #15
                              Also:
                              Code:
                              Licht_OG*: strategy = everyChange, everyMinute, restoreOnStartup
                              Dachte das Sternchen bei Licht_OG* bedeutet alles was danach kommt, soll akzeptiert werden?!

                              Wenn ich aber Licht_OG_Kinderzimmer1 nehme, dann funktionierts!

                              Kommentar

                              Lädt...
                              X