Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Tester
    4. Test Adapter Gartenbewässerung v0.0.x

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Test Adapter Gartenbewässerung v0.0.x

    This topic has been deleted. Only users with topic management privileges can see it.
    • JB_Sullivan
      JB_Sullivan @Neuschwansteini last edited by

      Leider liest sich die Aussage von @tombox so, als wenn der jetzige Adapter in diesem Status bleiben wird.

      Heißt also im Umkehrschluss, sich vom Adapter Gartenbewässerung verabschieden, oder den Status Quo akzeptieren. Auch wenn ich sehr mit dem Adapter von TomBox zufrieden war/bin, werde ich den "neuen" Adapter auch mal ausprobieren und im Sommer einem Praxis Test unterziehen.

      Aber im Grunde bedarf es ja nicht unbedingt immer und immer wieder etwas neuem. TomBox sein Adapter hat im letzten Jahr für MICH gut funktioniert. Also dafür nochmal herzlichen Dank.

      Aber wie gesagt - ich werde trotzdem mal einen Blick über den Tellerrand werfen, auch wenn es nur dazu da ist um zu alt bekanntem zurück zu kehren 😉

      T sigi234 2 Replies Last reply Reply Quote 0
      • T
        tombox @JB_Sullivan last edited by

        @jb_sullivan also ich werde meinen nicht weiter entwickeln dazu ist der andere zu gut außer. Ich werde aber den anderen verbessern falls es wünsche gibt

        M S 2 Replies Last reply Reply Quote 0
        • M
          MartyBr @tombox last edited by

          @tombox Hallo tombox, ich habe mir den anderen Adapter auch angeschaut. Er hat für mich zwei Nachteile gegenüber deinem:

          1. Pumpe und Verbrauch: Brauche ich nicht, das hängt bei mir an dem Gartenwasserhahn. Das sollte zukünftig konfigurierbar, also abschaltbar sein.
          2. Gravierend ist das Fehlen eines Bodenfeuchtesensors. Das ist ein RIESEN Vorteil deines Adapters.

          Ich habe für mich beschlossen, dass ich deinen Adapter weiter benutze.

          Herzlichen Dank an dieser Stelle für den Adapter und den Support!!!
          Gruß und Dank
          Martin

          T 1 Reply Last reply Reply Quote 0
          • sigi234
            sigi234 Forum Testing Most Active @JB_Sullivan last edited by sigi234

            @jb_sullivan
            @tombox
            @Dirk-Peter-md
            @Kuddel

            Wunsch:

            Ich würde beide kombinieren und einen Community Adapter machen. Auch Kuddel mit ins Boot nehmen.

            T 1 Reply Last reply Reply Quote 0
            • T
              tombox @MartyBr last edited by

              @martybr so wie ich Dirk verstanden habe ist feuchte Sensor das nächste was er einbaut er würde das gleich mit Temperatur Sensoren verbinden sich

              M 1 Reply Last reply Reply Quote 0
              • T
                tombox @sigi234 last edited by

                @sigi234 j habe ich auch schon geäußert aber will erstmal ein Grundlage entwickelt aber du kannst ihm ja ne Mail schreiben

                sigi234 1 Reply Last reply Reply Quote 0
                • M
                  MartyBr @tombox last edited by

                  @tombox Ich werde das verfolgen, danke für die Info.
                  Gruß
                  Martin

                  1 Reply Last reply Reply Quote 0
                  • sigi234
                    sigi234 Forum Testing Most Active @tombox last edited by

                    @tombox sagte in Test Adapter Gartenbewässerung v0.0.x:

                    @sigi234 j habe ich auch schon geäußert aber will erstmal ein Grundlage entwickelt aber du kannst ihm ja ne Mail schreiben

                    Jupp, schade das er nicht im Forum ist?

                    1 Reply Last reply Reply Quote 0
                    • S
                      Snapergy @tombox last edited by

                      @tombox said in Test Adapter Gartenbewässerung v0.0.x:

                      @jb_sullivan also ich werde meinen nicht weiter entwickeln dazu ist der andere zu gut außer. Ich werde aber den anderen verbessern falls es wünsche gibt

                      Leider kann man SprinklerControl nicht ohne die Wetterdaten nutzen, d.h. scheinbar auch nicht einfach so starten... Was mir bei deinem lediglich gefehlt hat, ist die Möglichkeit mehr als 6 Kreise anzusteuern 😞

                      Was ich beim Neuen auch noch nicht herausgefunden habe: Wird nach jeder Beregnung eines Kreises die Bodenfeuchte automatisch auf 100% gesetzt (egal wie lange ich bewässere), oder wird es auch ungefähr berechnet?

                      1 Reply Last reply Reply Quote 0
                      • S
                        Saschag last edited by

                        @tombox

                        Schade das der Adapter nicht weiterentwickelt wird.
                        Ich war auch sehr zufrieden mit deinem Adapter! Werde vermutlich auch diesem bleiben.
                        Mir z.B. hätte nur eine "Sperr-DP" gefehlt. (z.B. Mähroboter aktuelle am Mähen, Gartenparty etc.)

                        Auch von mir Herzlichen Dank an dieser Stelle für den Adapter und den Support!!!

                        T 1 Reply Last reply Reply Quote 0
                        • T
                          Tschaeens @Saschag last edited by

                          @saschag Hallo vllt könnt Ihr mir helfen!
                          Ich finde den Adapter super und der hat letztes Jahr auch super seine Arbeit verrichtet. Jetzt habe ich meine Gartenbewässerung weitergebaut und einen Homematic Funk Schaltaktor 4-fach verbaut (HM-LC-Sw4). Leider wirft mir das Log ständig Fehlermeldungen:

                          2021-05-09 20:44:49.893 - error: hm-rpc.1 (24871) xmlrpc -> setValue ["REQ1499186:2","STATE",false] BOOL
                          2021-05-09 20:44:49.893 - error: hm-rpc.1 (24871) Cannot call setValue: XML-RPC fault: Failure
                          

                          oder noch schlimmer der Duty Cicle geht hoch und dann geht nichts mehr. Ich nutze raspberrymatic unter proxmox mit Funkantenne? Steuere ich den Eingang über die ccu oberfläche funzt es ohne Probleme.
                          Danke für eure Hilfe.

                          Lieben Gruß

                          1 Reply Last reply Reply Quote 0
                          • JB_Sullivan
                            JB_Sullivan last edited by

                            @tombox

                            Auch wenn du den Adapter nicht weiter entwickelst, kannst du bitte die Fehlermeldung die der Adapter im Zusammenhang mit Admin 5.x.x ausgibt, ggf noch heilen?

                            gartenbewaesserung.0	2021-05-10 06:55:28.555	info	(4324) State value to set for "gartenbewaesserung.0.status.fortschritt" has to be type "number" but received type "string"
                            gartenbewaesserung.0	2021-05-10 06:55:28.554	warn	(4324) Read-only state "gartenbewaesserung.0.status.fortschritt" has been written without ack-flag with value "100"
                            gartenbewaesserung.0	2021-05-10 06:55:28.554	info	(4324) State value to set for "gartenbewaesserung.0.status.restzeit_sek" has to be type "number" but received type "string"
                            gartenbewaesserung.0	2021-05-10 06:55:28.554	warn	(4324) Read-only state "gartenbewaesserung.0.status.restzeit_sek" has been written without ack-flag with value "10"
                            gartenbewaesserung.0	2021-05-10 06:55:28.554	info	(4324) State value to set for "gartenbewaesserung.0.status.restzeit" has to be type "number" but received type "string"
                            gartenbewaesserung.0	2021-05-10 06:55:28.554	warn	(4324) Read-only state "gartenbewaesserung.0.status.restzeit" has been written without ack-flag with value "00:10"
                            gartenbewaesserung.0	2021-05-10 06:55:28.554	info	(4324) State value to set for "gartenbewaesserung.0.status.ventil4.fortschritt" has to be type "number" but received type "string"
                            gartenbewaesserung.0	2021-05-10 06:55:28.553	warn	(4324) Read-only state "gartenbewaesserung.0.status.ventil4.fortschritt" has been written without ack-flag with value "99"
                            gartenbewaesserung.0	2021-05-10 06:55:28.553	info	(4324) State value to set for "gartenbewaesserung.0.status.ventil4.restzeit_sek" has to be type "number" but received type "string"
                            gartenbewaesserung.0	2021-05-10 06:55:28.553	warn	(4324) Read-only state "gartenbewaesserung.0.status.ventil4.restzeit_sek" has been written without ack-flag with value "10"
                            
                            T 1 Reply Last reply Reply Quote 0
                            • T
                              tombox @JB_Sullivan last edited by tombox

                              @jb_sullivan habe mal blind ein update in github gemacht da müssten die fehler weg sein und habe nochmal 4 ventile hinzugefügt bitte mal testen ob noch alles geht

                              AtomicIX sigi234 2 Replies Last reply Reply Quote 0
                              • AtomicIX
                                AtomicIX @tombox last edited by

                                @tombox dann gehen jetzt 10 Ventile? 😍
                                Das für deine Mühe.

                                T 1 Reply Last reply Reply Quote 0
                                • T
                                  tombox @AtomicIX last edited by

                                  @atomicix rein theoretisch ja wenn ich nichts vergessen habe.. einfach testen

                                  AtomicIX 1 Reply Last reply Reply Quote 0
                                  • AtomicIX
                                    AtomicIX @tombox last edited by

                                    @tombox okay, ich habe das jetzt übers Handy / VPN auf meinem entfernen System probiert.
                                    Habe vorher nicht auf die Version geachtet. Jetzt ist die 0.0.7 installiert. Habe aber weiterhin nur 6 Ventile.
                                    Muss ich die Instanzen neu aufsetzen? Oder hat da einfach was nicht funktioniert?
                                    Muss ich sonnst morgen abend mal live vor Ort gucken.

                                    T 1 Reply Last reply Reply Quote 0
                                    • T
                                      tombox @AtomicIX last edited by

                                      @atomicix Es muss ein Upload durchgeführt werden was eigentlich nach neuinstallation und adaper neustart passiert

                                      AtomicIX 1 Reply Last reply Reply Quote 0
                                      • AtomicIX
                                        AtomicIX @tombox last edited by

                                        @tombox okay, habe das update/Installation über Git jetzt noch mal probiert. Jetzt hat es auch erheblich länger gedauert. Jetzt habe ich die 0.0.8 drauf und ohne Neuinstallation oder reboot werden mir die 10 möglichen Ventile angezeigt. Im Changelog steht noch 0.0.7, das hätte mich irritiert.
                                        Danke für die Änderung.
                                        Jetzt muss nur noch mal der Regen aufhören, das der Adapter auch einen Sinn macht.

                                        1 Reply Last reply Reply Quote 0
                                        • sigi234
                                          sigi234 Forum Testing Most Active @tombox last edited by sigi234

                                          @tombox sagte in Test Adapter Gartenbewässerung v0.0.x:

                                          @jb_sullivan habe mal blind ein update in github gemacht da müssten die fehler weg sein und habe nochmal 4 ventile hinzugefügt bitte mal testen ob noch alles geht

                                          artenbewaesserung.0
                                          2021-05-13 23:38:54.772	warn	Read-only state "gartenbewaesserung.0.status.startAbendTimestamp" has been written without ack-flag with value "1620931019"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.748	info	State value to set for "gartenbewaesserung.0.status.ventil6.active" has to be type "string" but received type "boolean"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.713	info	State value to set for "gartenbewaesserung.0.status.ventil5.active" has to be type "string" but received type "boolean"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.712	info	State value to set for "gartenbewaesserung.0.status.ventil4.active" has to be type "string" but received type "boolean"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.711	info	State value to set for "gartenbewaesserung.0.status.ventil3.active" has to be type "string" but received type "boolean"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.711	info	State value to set for "gartenbewaesserung.0.status.ventil2.active" has to be type "string" but received type "boolean"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.710	info	State value to set for "gartenbewaesserung.0.status.ventil1.active" has to be type "string" but received type "boolean"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.709	info	State value to set for "gartenbewaesserung.0.status.ventil6.active" has to be type "string" but received type "boolean"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.704	info	State value to set for "gartenbewaesserung.0.status.ventil5.active" has to be type "string" but received type "boolean"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.703	info	State value to set for "gartenbewaesserung.0.status.ventil4.active" has to be type "string" but received type "boolean"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.699	info	State value to set for "gartenbewaesserung.0.status.ventil3.active" has to be type "string" but received type "boolean"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.699	info	State value to set for "gartenbewaesserung.0.status.ventil2.active" has to be type "string" but received type "boolean"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.698	info	State value to set for "gartenbewaesserung.0.status.ventil1.active" has to be type "string" but received type "boolean"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.665	info	Stop ventil6
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.665	info	Stop ventil5
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.665	info	Stop ventil4
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.665	info	Stop ventil3
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.665	info	Stop ventil2
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.664	info	Stop ventil1
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.664	info	Bewässerung stop
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.664	info	Stop ventil6
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.664	info	Stop ventil5
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.664	info	Stop ventil4
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.663	info	Stop ventil3
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.663	info	Stop ventil2
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.662	info	Stop ventil1
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.587	info	undefined is not a valid state value for id "gartenbewaesserung.0.config.ventil10.dauer_in_state_mult"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.587	info	undefined is not a valid state value for id "gartenbewaesserung.0.config.ventil9.dauer_in_state_mult"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.586	info	undefined is not a valid state value for id "gartenbewaesserung.0.config.ventil8.dauer_in_state_mult"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.586	info	undefined is not a valid state value for id "gartenbewaesserung.0.config.ventil7.dauer_in_state_mult"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.569	warn	This object will not be created in future versions. Please report this to the developer.
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.569	warn	Object gartenbewaesserung.0.config.ventil10.dauer_in_state_mult is invalid: obj.common.type has an invalid value (undefined) but has to be one of number, string, boolean, array, object, mixed, file, json
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.569	warn	This object will not be created in future versions. Please report this to the developer.
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.568	warn	Object gartenbewaesserung.0.config.ventil9.dauer_in_state_mult is invalid: obj.common.type has an invalid value (undefined) but has to be one of number, string, boolean, array, object, mixed, file, json
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.568	warn	This object will not be created in future versions. Please report this to the developer.
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.568	warn	Object gartenbewaesserung.0.config.ventil8.dauer_in_state_mult is invalid: obj.common.type has an invalid value (undefined) but has to be one of number, string, boolean, array, object, mixed, file, json
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.568	warn	This object will not be created in future versions. Please report this to the developer.
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.568	warn	Object gartenbewaesserung.0.config.ventil7.dauer_in_state_mult is invalid: obj.common.type has an invalid value (undefined) but has to be one of number, string, boolean, array, object, mixed, file, json
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.567	info	State value to set for "gartenbewaesserung.0.config.updateinterval" has to be type "number" but received type "string"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.565	info	State value to set for "gartenbewaesserung.0.config.pauseTime" has to be type "number" but received type "string"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.510	info	State value to set for "gartenbewaesserung.0.config.raintresh" has to be type "number" but received type "string"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.483	info	State value to set for "gartenbewaesserung.0.config.temptresh" has to be type "number" but received type "string"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.476	info	State value to set for "gartenbewaesserung.0.config.ventil6.feuchtigkeit_tresh" has to be type "number" but received type "string"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.475	info	State value to set for "gartenbewaesserung.0.config.ventil5.feuchtigkeit_tresh" has to be type "number" but received type "string"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.475	info	State value to set for "gartenbewaesserung.0.config.ventil4.feuchtigkeit_tresh" has to be type "number" but received type "string"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.475	info	State value to set for "gartenbewaesserung.0.config.ventil3.feuchtigkeit_tresh" has to be type "number" but received type "string"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.474	info	State value to set for "gartenbewaesserung.0.config.ventil2.feuchtigkeit_tresh" has to be type "number" but received type "string"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.474	info	State value to set for "gartenbewaesserung.0.config.ventil1.feuchtigkeit_tresh" has to be type "number" but received type "string"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.442	info	State value to set for "gartenbewaesserung.0.config.ventil6.dauer_in_state_mult" has to be type "undefined" but received type "string"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.441	info	State value to set for "gartenbewaesserung.0.config.ventil5.dauer_in_state_mult" has to be type "undefined" but received type "string"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.441	info	State value to set for "gartenbewaesserung.0.config.ventil4.dauer_in_state_mult" has to be type "undefined" but received type "string"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.440	info	State value to set for "gartenbewaesserung.0.config.ventil3.dauer_in_state_mult" has to be type "undefined" but received type "string"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.440	info	State value to set for "gartenbewaesserung.0.config.ventil2.dauer_in_state_mult" has to be type "undefined" but received type "string"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.439	info	State value to set for "gartenbewaesserung.0.config.ventil1.dauer_in_state_mult" has to be type "undefined" but received type "string"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.409	info	State value to set for "gartenbewaesserung.0.config.ventil6.dauerstate_mult" has to be type "number" but received type "string"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.408	info	State value to set for "gartenbewaesserung.0.config.ventil5.dauerstate_mult" has to be type "number" but received type "string"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.408	info	State value to set for "gartenbewaesserung.0.config.ventil4.dauerstate_mult" has to be type "number" but received type "string"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.408	info	State value to set for "gartenbewaesserung.0.config.ventil3.dauerstate_mult" has to be type "number" but received type "string"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.407	info	State value to set for "gartenbewaesserung.0.config.ventil2.dauerstate_mult" has to be type "number" but received type "string"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.407	info	State value to set for "gartenbewaesserung.0.config.ventil1.dauerstate_mult" has to be type "number" but received type "string"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.401	info	State value to set for "gartenbewaesserung.0.config.ventil6.dauer" has to be type "number" but received type "string"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.400	info	State value to set for "gartenbewaesserung.0.config.ventil5.dauer" has to be type "number" but received type "string"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.399	info	State value to set for "gartenbewaesserung.0.config.ventil4.dauer" has to be type "number" but received type "string"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.399	info	State value to set for "gartenbewaesserung.0.config.ventil2.dauer" has to be type "number" but received type "string"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.383	info	State value to set for "gartenbewaesserung.0.config.minSonnenuntergang" has to be type "number" but received type "string"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.373	info	State value to set for "gartenbewaesserung.0.config.minSonnenaufgang" has to be type "number" but received type "string"
                                          gartenbewaesserung.0
                                          2021-05-13 23:38:54.344	info	starting. Version 0.0.8 in C:/Program Files/iobroker/Home/node_modules/iobroker.gartenbewaesserung, node: v12.22.1, js-controller: 3.3.9
                                          

                                          Plattform: Windows
                                          RAM: 16 GB
                                          Node.js: 12.22.1
                                          NPM: 6.14.12
                                          JS Controller: 3.3.9
                                          Admin: 5.0.22
                                          Web: 3.4.1
                                          Socket.io: 3.1.4
                                          Script Engine: 5.1.3

                                          T 1 Reply Last reply Reply Quote 0
                                          • T
                                            tombox @sigi234 last edited by

                                            @sigi234 Jetzt müsste es passen, kann aber sein das man die werte in den optionen neu setzen muss damit sie den richtigen typ haben

                                            G 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            642
                                            Online

                                            31.6k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            beregnungssteuerung bewässerung garten gartenbewässerung magnetventil ventil ventile
                                            66
                                            567
                                            98445
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo