Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. [Tutorial] SolarEdge -> Modbus -> ioBroker -> Grafana

    NEWS

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    • Save The Date: ioBroker@Smart Living Forum Solingen, 14.06.

    [Tutorial] SolarEdge -> Modbus -> ioBroker -> Grafana

    This topic has been deleted. Only users with topic management privileges can see it.
    • botto
      botto @Foradh 0 last edited by

      @foradh-0 OK. habe gerade folgende Screenshots gemacht:
      Erstmal mal vom SE10K (Sekundärgerät)
      1f8b9306-712f-47c7-87cc-47380377a3c1-image.png
      Jetzt vom Master SE5000H
      635cafcb-f712-448b-8fdf-0feb75270240-image.png

      Wenn ich beim SE5000H in die RS485-1 gehe sehe ich folgendes:
      0319571f-8c41-469c-9750-f7c82d2f1c8e-image.png

      Interessanterweise ist die LG Batterie, so wie es aussieht, bei dir via CAN angeschlossen?!

      Inbetriebnahme der LG Batterie bei mir lief so wie in diesem Video:
      https://youtu.be/KvmZmRpFW4c?t=106

      Wo liegt der Hase im Pfeffer?

      F 1 Reply Last reply Reply Quote 0
      • F
        Foradh 0 @botto last edited by

        @botto sagte in [Tutorial] SolarEdge -> Modbus -> ioBroker -> Grafana:

        Inbetriebnahme der LG Batterie bei mir lief so wie in diesem Video:
        https://youtu.be/KvmZmRpFW4c?t=106

        Aber in diesem Video wird die Batterie doch ebenfalls via Can eingerichtet.

        botto 1 Reply Last reply Reply Quote 0
        • botto
          botto @Foradh 0 last edited by botto

          @foradh-0 Hallo nochmal...
          Heute beim Abendbrot am mir der Geistesblitz und es konnte das Problem gelöst werden - ich bekomme nun alle Daten 🙌 !!
          Hintergrund der Problematik ist die Modbus-Verdrahtung des Ein-Phasenwechselrichers (s. Bild): Nur dieser hat die Info vom Modbus #1 und somit auch vom (Energymeter + LG Batterie). Bisher hatte ich nur den einen WR am LAN angeschlossen 🙄 - dachte es reicht so aber denkste....
          7d03bf64-24d0-49e3-9c6a-3c400244de9a-image.png

          Quelle: Solaredge Anleitung xy, s. Seite 11

          Lösung: Zweite Instanz des modbus Adapters anlegen und auf die (LAN) IP des zweiten Wechselrichters konfigurieren.

          Im Prinzip ganz logisch wenn man sich den physikalischen Aufbau anschaut.

          Vielen vielen Dank für deine Mühe 👍 .

          P. S. CAN nutze ich gar nicht. Mein angeführtes Video passte somit nicht ganz.

          B 1 Reply Last reply Reply Quote 0
          • B
            Boardy @botto last edited by Boardy

            @botto Fehlt da nicht dann die Modbus Verbindung zwischen beiden Wechselrichtern? Sonst bekommst du ja keien Daten vom 3phasigen... oder hattest du nur den falschen als Master ausgewählt? wenn ich das richtig verstanden habe sollte der Master Alle daten haben... ? Sonst fehlt dir ja auch die aktuelle Produktion z.B.

            botto 1 Reply Last reply Reply Quote 0
            • botto
              botto @Boardy last edited by

              @boardy Moin Boardy.
              Die Komponenten sind nun bei mir nach dem Muster oben verdrahtet. Somit ist der Master (SE5000H) mit dem SE10K über Modbus #2 verbunden. Beim SE10K geht der ebenfalls auf die Klemmen von #2; #1 ist beim SE10K nicht belegt.
              Der SE5000H bekommt also auch Daten von diesem, als Slave bzw. Sekundärgerät konfiguriertem, Modbus Teilnehmer. Abfragen muss ich aktuell aber anscheinend beide WR, denn ich bekomme am SE5000H nicht alle Daten vom WR-SE10K und umgekehrt.
              Ich Nutze bei beiden Modbus Instanzen (für die ersten Tests) den von @Foradh-0 geposteten Export.
              Die VISU von SE in der App und im Onlineportal passen - es wird alles korrekt angezeigt, daher gehe ich davon aus das die Kommunikation generell passt.

              1 Reply Last reply Reply Quote 0
              • C
                CaptainPSycho last edited by

                Hallo,

                danke für die Anleitung, sie war ein guter Grundstein.

                Ich bin jetzt an dem Punkt, dass die Daten in iobroker gelesen werden.

                Im Gegensatz zur ürsprünglichen Anleitung kann man die Werte alle direkt in der modbus Konfiguration umrechnen lassen ohne extra Schritte per Skripte.

                Mein aktuelles Setup:
                iobroker v5.3.4
                modbus 3.4.17
                Solaredge SE10k 0004.0014.0228

                Meine Adressen sind zur basis 1, wenn eure zur Basis 0 sind, müssen die Adressen um 1 verringert werden. Also aus 40003 würde 40002.

                _address	name	description	unit	type	len	factor	offset	formula	role	room	poll	wp	cw	isScale
                40001	C_SunSpec_ID	"Wert = ""SunS"" (0x53756e53). Identifiziert dies eindeutig als eine SunSpec Modbus-Karte"		uint32be	2	1	0				true	false	false	false
                40003	C_SunSpec_DID	Wert = 0x0001. Identifiziert dies eindeutig als einen SunSpec “Common Block“		uint16be	1	1	0				true	false	false	false
                40004	C_SunSpec_Länge	65 = Länge eines Blocks in 16-bit Registern		uint16be	1	1	0				true	false	false	false
                40005	C_Hersteller	"Bei SunSpec eingetragener Wert = ""SolarEdge"""		string	16	1	0				true	false	false	false
                40021	C_Modell	Spezifischer SolarEdge Wert		string	16	1	0				true	false	false	false
                40045	C_Version	Spezifischer SolarEdge Wert		string	8	1	0				true	false	false	false
                40053	C_Seriennummer	Eindeutiger SolarEdge Wert		string	16	1	0				true	false	false	false
                40069	C_DeviceAddress 	MODBUS Unit ID		uint16be	1	1	0				true	false	false	false
                40069	C_SunSpec_DID	101 = Einphasig, 102 = Spaltphase, 103 = Dreiphasig		uint16be	1	1	0				true	false	false	false
                40072	I_AC_Strom	AC-Gesamtstromwert	A	uint16be	1	1	0	x * Math.pow(10, sf['40076'])			true	false	false	false
                40073	I_AC_StromA	AC-Phase A (L1) Stromwert	A	uint16be	1	1	0	x * Math.pow(10, sf['40076'])			true	false	false	false
                40074	I_AC_StromB	AC-Phase B (L2) Stromwert	A	uint16be	1	1	0	x * Math.pow(10, sf['40076'])			true	false	false	false
                40075	I_AC_StromC	AC-Phase C (L3) Stromwert	A	uint16be	1	1	0	x * Math.pow(10, sf['40076'])			true	false	false	false
                40076	I_AC_Strom_SF	AC-Strom Skalierungsfaktor	SF	int16be	1	1	0				true	false	false	true
                40084	I_AC_Leistung	AC-Leistungswert	W	uint16be	1	1	0	x * Math.pow(10, sf['40085'])			true	false	false	false
                40085	I_AC_Leistung_SF	AC-Leistung Skalierungsfaktor	SF	int16be	1	1	0				true	false	false	true
                40088	I_AC_VA	Scheinleistung	VA	uint16be	1	1	0	x * Math.pow(10, sf['40089'])			true	false	false	false
                40089	I_AC_VA_SF	Scheinleistung Skalierungsfaktor	SF	int16be	1	1	0				true	false	false	true
                40090	I_AC_VAR	Blindleistung	VAR	uint16be	1	1	0	x * Math.pow(10, sf['40091'])			true	false	false	false
                40091	I_AC_VAR_SF	Blindleistung Skalierungsfaktor	SF	int16be	1	1	0				true	false	false	true
                40092	I_AC_PF	Leistungsfaktor	%	uint16be	1	1	0	x * Math.pow(10, sf['40093'])			true	false	false	false
                40093	I_AC_PF_SF	Leistungsfaktor Skalierungsfaktor	SF	int16be	1	1	0				true	false	false	true
                40094	I_AC_Energie_WH	AC Gesamt-Energieproduktion	kWh	uint32be	2	1	0	x * Math.pow(10, sf['40096'] - 3)			true	false	false	false
                40096	I_AC_Energie_WH_SF	AC Gesamtenergie Skalierungsfaktor	SF	uint16be	1	1	0				true	false	false	true
                40097	I_DC_Strom	DC-Stromwert	A	uint16be	1	1	0	x * Math.pow(10, sf['40098'])			true	false	false	false
                40098	I_DC_Strom_SF	DC-Strom Skalierungsfaktor	SF	int16be	1	1	0				true	false	false	true
                40099	I_DC_Spannung	DC-Spannungswert	V	uint16be	1	1	0	x * Math.pow(10, sf['40100'])			true	false	false	false
                40100	I_DC_Spannung_SF	DC-Spannung Skalierungsfaktor	SF	int16be	1	1	0				true	false	false	true
                40101	I_DC_Leistung	DC-Leistungswert	W	uint16be	1	1	0	x * Math.pow(10, sf['40102'])			true	false	false	false
                40102	I_DC_Leistung_SF	DC-Leistung Skalierungsfaktor	SF	int16be	1	1	0				true	false	false	true
                40104	I_Temp_Kühler	Kühlkörpertemperatur	°C	uint16be	1	1	0	x * Math.pow(10, sf['40107'])			true	false	false	false
                40107	I_Temp_SF	Kühlkörpertemperatur Skalierungsfaktor	SF	int16be	1	1	0				true	false	false	true
                40108	I_Status	Betriebszustand (1 = Aus, 2 = Schlafen (Automatisches Herunterfahren) – Nachtmodus, 3 = Aufwachen/Starten, 4 = Wechselrichter ist AN und wandelt Energie, 5 = Begrenzte Produktion, 6 = Herunterfahren, 7 = Fehler, 8 = Wartung/Setup)		uint16be	1	1	0				true	false	false	false
                40109	I_Status_Anbieter	Anbieter-spezifischer Betriebszustand sowie Fehlercodes: 1 = Aus, 2 = Schlafen (Automatisches Herunterfahren) – Nachtmodus, 3 = Aufwachen/Starten, 4 = Wechselrichter ist AN und wandelt Energie, 5 = Begrenzte Produktion, 6 = Herunterfahren, 7 = Fehler, 8 = Wartung/Setup		uint16be	1	1	0				true	false	false	false
                40124	C_Manufacturer	Meter manufacturer		string	32	1	0				true	false	false	false
                40140	C_Model	Meter model		string	32	1	0				true	false	false	false
                40156	C_Option	Export + Import, Production, consumption		string	16	1	0				true	false	false	false
                40191	M_AC_Current	AC Current (sum of active phases)	A	uint16be	1	1	0	x * Math.pow(10, sf['40195'])			true	false	false	false
                40195	M_AC_Current_S F	AC Current Scale Factor	SF	int16be	1	1	0				true	false	false	true
                40207	M_AC_Power	Total Real Power (sum of active phases)	W	int16be	1	1	0	x * Math.pow(10, sf['40211'])			true	false	false	false
                40211	M_AC_Power_SF	AC Real Power Scale Factor	SF	int16be	1	1	0				true	false	false	true
                40227	M_Exported	Total Exported Real Energy	kWh	uint32be	2	1	0	x * Math.pow(10, sf['40243'] - 3)			true	false	false	false
                40235	M_Imported	Total Imported Real Energy	kWh	uint32be	2	1	0	x * Math.pow(10, sf['40243'] - 3)			true	false	false	false
                40243	M_Energy_W_SF	Real Energy Scale Factor	SF	int16be	1	1	0				true	false	false	true
                

                Beste Grüße,
                Joachim

                W 1 Reply Last reply Reply Quote 1
                • S
                  Strobi last edited by

                  Ich habe nochmal eine Frage an die Experten:

                  1. Ich berechnet mir jede Sekunde den internen Status, ob der Speicher geladen wird oder nicht - das funktioniert soweit.
                  2. Nun möchte ich mir diesen internen Status gerne in einen Datunpunkt ausgeben lassen - aber nur dann, wenn der Status sich ändert (damit nicht ständig der Datenpunkt aktualisiert wird) - das funktioniert mit der unten angegeben Logik leider nicht.
                    Habt Ihr eine Idee, was ich falsch mache bzw. wie ich es ändern müsste, damit der Datenpunkt nur dann geschrieben wird, wenn sich der Status von wahr / falsch ändert?

                  538c0e21-c618-405e-a724-36df6dd50181-grafik.png

                  Besten Dank!

                  Glasfaser 1 Reply Last reply Reply Quote 0
                  • Glasfaser
                    Glasfaser @Strobi last edited by

                    @strobi

                    internen Status, ob der Speicher geladen wird oder nicht

                    Dafür gibt es doch dieses Register !?

                    57734	Battery 1 Status	Batterie Zustand (0 = Aus, 1 = Standby, 2 = Initialisierung, 3 = Laden, 4 = Entladen, 5 = Fehler, 6 = Leerlauf)		uint32sw	2	1	0		value		true	false	false	false
                    
                    1 Reply Last reply Reply Quote 0
                    • S
                      Strobi last edited by

                      @glasfaser sagte in [Tutorial] SolarEdge -> Modbus -> ioBroker -> Grafana:

                      Dafür gibt es doch dieses Register !?

                      Korrekt - vielleicht war mein Beispiel schlecht gewählt - diesen Status gibt es schon.

                      Mir geht es generell darum, wie man einen Status, der jede Sekunde via Variable berechnet wird, nur dann ausgibt und in einen Datenpunkt schreibt, wenn er den Zustand ändert?

                      Homoran 1 Reply Last reply Reply Quote 0
                      • Homoran
                        Homoran Global Moderator Administrators @Strobi last edited by Homoran

                        @strobi sagte in [Tutorial] SolarEdge -> Modbus -> ioBroker -> Grafana:

                        Mir geht es generell darum, wie man einen Status, der jede Sekunde via Variable berechnet wird, nur dann ausgibt und in einen Datenpunkt schreibt, wenn er den Zustand ändert?

                        ich weiß nicht was du mit berechnetem Status und dessen Zustand meinst.

                        aber üblicherweise kann man einen Wert in eine Variable schreiben und nach der erneuten Berechnung das Ergebnis mit dieser Variable vergleichen.
                        Nur wenn das unterschiedlich ist, wird dann geschrieben.

                        K 1 Reply Last reply Reply Quote 0
                        • K
                          Kanumouse @Homoran last edited by

                          @homoran

                          Ich muss hier noch einmal das Thema des "Hausverbrauchs" aufgreifen.
                          Bei mir wir generell zu wenig Hausverbrauch angezeigt (Berechnung Hausverbrauch=I-AC_Power - M_AC_Power).
                          Die Werte für die Hausverbrauchsleistung stimmen mit denen im SE-Portal überein.
                          Mit steigender Moduleingangsleistung am Wechselrichter steigt auch meine Hausverbrauchsleistung obwohl die Lasten im Haus konstant sind.
                          Das kann doch nicht richtig sein?
                          Das Ganze ist auch 1:1 im SE-Monitoring Portal zu beobachten.

                          Hat dieses Problem auch noch jemand beobachtet und vielleicht einen Tipp für mich?

                          Geprüft habe ich auch schon die Einbaurichtung der Stromwandler, da ich hier den Fehler vermutete. Aber Nachts, wenn keine Einspeisung vorliegt, sind richtigerweise die Leistungswerte auf allen drei Phasen negativ (Bezug) und der Bezug stimmt auch der Hausverbrauchsleistung überein.
                          Ich hatte auch schon gelesen, dass der WR die ID=1 haben muss. Bei mir hat er die ID=3. Kann das eventuell die Berechnung der Hausverbrauchsleistung beeinflussen?

                          K 1 Reply Last reply Reply Quote 0
                          • K
                            Kanumouse @Kanumouse last edited by

                            @kanumouse

                            Hat denn keiner das gleiche Problem?
                            Ich habe schon in anderen Foren gelesen, dass ähnliche Probleme bestehen.
                            Leider hat auch Solaredge mir auf eine aufgegebene Fehlermeldung noch nicht geantwortet.

                            K 1 Reply Last reply Reply Quote 0
                            • K
                              Kanumouse @Kanumouse last edited by

                              @kanumouse

                              Gelöst - ich habe heute mit Solaredge gechatet. Dabei hat sich herausgestellt, dass im Wechselrichter die falsche Wandlergröße durch den Installateur eingestellt wurde. Parametriert waren 50A-Wandler, eingebaut waren aber 70A-Wandler.
                              Inhaltlich ist damit das Ergebnis des höheren Hausverbrauchs bei steigender Modul-Einspeiseleistung auch nachvollziehbar, da der Hausverbrauch ja eine rein rechnerische Größe ist.

                              1 Reply Last reply Reply Quote 2
                              • S
                                Smidl last edited by

                                Vielen Dank für das super Tutorial. Bei mir hat soweit alles funktioniert.
                                Ich habe den WR SolarEdge SE10K - RWS und den BYD LVS 8.0 Speicher.
                                Ein Problem bei der Kombination ist der Wert für die aktuelle PV-Leistung vom Dach. Der sollte in der Nacht ja bei ~0W stehen. Tut er aber nicht sondern liefert mir den Wert (annähernd) meines Hausverbrauches, welcher ja nachts aus dem Speicher entladen wird.
                                c5422d01-f258-4ac9-a52c-430406cf312c-image.png
                                4739d714-89b7-4118-a822-9926935577a9-image.png
                                Den Wert sollte es doch aber geben? Zumindest im Portal oder in der mySolarEdge App ist der Wert ja bekannt.
                                a262691d-0223-4c6a-9135-81aed806f4f1-image.png

                                Hat jemand von euch eine Idee, wie ich den Wert raus bekomme?
                                Das gleiche Problem habe ich beim Laden des Speichers. Einen zuverlässigen Wert für 40083_I_AC_Leistung bekomme ich erst, sobald der Speicher voll ist.
                                2dcd1d36-5c8d-4842-8f0b-f58a445fe78f-image.png
                                Ich könnte das ja auch berechnen, indem ich die Lade-/Entlade-Leistung abhängig vom 57734_Battery Register mit einbeziehe, nur ist das ja nicht gerade gewollt.

                                Hat jemand das selbe Problem?

                                D S 3 Replies Last reply Reply Quote 0
                                • Longbow
                                  Longbow @TJ1973 last edited by

                                  @tj1973

                                  Hallo

                                  also ich habe die 3 Wert übernommen, bei mir wie bei Batterieladestand 100% an, was auch gerade stimmt, der ist Voll.
                                  Muss ich mal sehen, was später anzeigt, wenn dieser leer wird.
                                  Batteriestatus ist bei mir eine 6, was bedeutet das?

                                  Batterieleistung macht der Modbus zu, spricht sagt das wäre eine falsche adresse... was kann ich machen?

                                  L 1 Reply Last reply Reply Quote 0
                                  • Longbow
                                    Longbow @hardy_01 last edited by

                                    @hardy_01 wie legt man die bitte an?

                                    1 Reply Last reply Reply Quote 0
                                    • L
                                      lisalisa @Longbow last edited by lisalisa

                                      @longbow sagte in [Tutorial] SolarEdge -> Modbus -> ioBroker -> Grafana:

                                      @tj1973
                                      ....Batteriestatus ist bei mir eine 6, was bedeutet das? ...

                                      Habe ich mal irgendwo aus einem Forum kopiert:

                                      57734 Battery 1 Status
                                      0 = Aus, 1 = Standby, 2 = Initialisierung, 3 = Laden, 4 = Entladen, 5 = Fehler, 6 = Leerlauf

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

                                        Hallo liebe Gemeinde,

                                        also ich habe mit der Unterstützung von Herni alles prima zulaufen bekommen.

                                        Jetzt habe ich aber mal einige Fragen, zu erst einmal hier meine Hardware:

                                        • SolarEdge Wechselrichter SE8K
                                        • LG Chem Resu 6,5 Batteriespeicher
                                        • Zappi Ladebox

                                        Ich lese die Daten der PV Anlage über den Modbus aus, das läuft super.
                                        Nur hackt es bei der Auswertung, wenn die Anlage produziert, zeigt die Grafik dann minus an.
                                        Hier muss das Script von Herni angepasst werde, nur ich bin wohl noch zu blöde dazu.
                                        Hat das einer von Euch schon umgesetzt?

                                        Dann wäre ich neugierig, wie es läuft mit dem Auslesen und das grafisch umzusetzen mit dem Punkt, Wallbox.
                                        Wie man das umsetzten könnte, finde die grafikisch die Lösung von Herni super, möchte es nur umsetzen, das es mit meinem
                                        Geräten klappt.

                                        Ich bin was iobroker betrifft total Neuling, aber lerne täglich dazu 🙂

                                        Ach und hab noch, das Script mit der Sonne, das passt um genau 2 Stunden nicht, wie kommt das zustandenß

                                        1 Reply Last reply Reply Quote 0
                                        • C
                                          cybtrash last edited by cybtrash

                                          Hallo,
                                          ich wollte hier nochmal fragen, ob es jemanden mit Solaredge Wechselrichter und angeschlossener Batterie gibt, bei dem nachts abwechselnde I_AC_POWER Werte vorkommen (bei mir immer ~30Wh und 600Wh abwechselnd).

                                          Bei mir ist das jede Nacht, sobald die Batterie leer ist (also 10% Ladestand erreicht).

                                          Hier ein Beispiel (habe den SE4000H Wechselrichter und eine LG Batterie) :

                                          Beispiel01.png

                                          Die gelben Punkte sind der Ladestand der Batterie in %. Sobald der 10% erreicht geht es los.

                                          Und hier noch ein Beispiel:

                                          Beispiel02_A.png

                                          mal reingezoomt:

                                          Beispiel02_B.png

                                          und noch weiter reingezoomt:

                                          Beispiel02_C.png

                                          Das ganze hört auf, sobald es hell wird und die PV-Anlage etwas Strom produziert.

                                          Da das so schwankt lässt sich das schlecht filtern. So zeigt mir iobroker nachts quasi an dass die PV-Anlage Strom erzeugt was Quatsch ist.

                                          Bin ich echt der einzige mit dem Problem?

                                          Könnt ihr mir bitte zeigen, wie der I_AC_POWER Wert nachts bei euch ist? Natürlich nur bei denen die eine Batterie haben. Zum Vergleich.

                                          F D 3 Replies Last reply Reply Quote 0
                                          • F
                                            Foradh 0 @cybtrash last edited by

                                            @cybtrash
                                            Das kann ich bei mir nicht bestätigen. (SE10K-RWS + LG RESU 10)
                                            Grafana PV Analage.jpg

                                            Hast du die aktuelle Firmware für deinen Wechselrichter installiert. Ich kenne zumindest ein Problem bei meinem Wechselrichter mit dem Standby/Nachtmodus bei leerer Batterie...dies wurde allerdings per FirmwareUpdate behoben.

                                            Dann hätte ich auch nochmal eine Frage...
                                            Wie lasst ihr die Daten wie z.B. aktueller Verbrauch, Einspeisung, Batterie Ladeleistung etc. in Grafana anzeigen. Ist der einzige Weg diese Werte ebenfalls in die InfluxDB schreiben zu lassen um sie in Grafana dann als aktuellen Wert anzeigen zu lassen? Die Daten möchte ich ja eigentlich garnicht aufzeichnen sondern eben nur den aktuellen Wert in Grafana angezeigt bekommen.

                                            Beste Grüße
                                            Foradh

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            991
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            grafana modbus solaredge
                                            90
                                            603
                                            134443
                                            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