Connect with us

Künstliche Intelligenz

PV-Vorhersage für Home Assistant: E-Auto und smarte Geräte effizient laden


„Ich denke niemals an die Zukunft. Sie kommt früh genug“, soll Albert Einstein gesagt haben. Und er lag natürlich falsch. Denn wer über die Zukunft seiner PV-Erträge nachdenkt, kann seine smarten Geräte besser steuern. So läuft die Waschmaschine erst, wenn genug Sonnenstrom vorhanden ist und das E-Auto pausiert das Laden, wenn die Prognose schlecht aussieht.

  • Mit dem Dienst Forecast.Solar lassen sich PV-Ertragsprognosen direkt in die Smart-Home-Zentrale Home Assistant einbinden.
  • Für eine präzise Berechnung müssen spezifische Anlagendaten wie Standort, Neigungswinkel, Ausrichtung und Gesamtspitzenleistung hinterlegt werden.
  • Um Fehler und Systemausfälle zu vermeiden, sollte man mit einfachen Automationslogiken starten, anstatt das System direkt zu überfremden.

Dafür benötigt man präzise Ertragsprognosen. Diese liefert der Dienst Forecast.Solar: Er sagt vorher, wie viel Strom die eigene PV-Anlage in den nächsten Stunden oder Tagen produzieren könnte. Bindet man diese Daten in die kostenlose Smart-Home-Zentrale Home Assistant ein, lassen sich große Verbraucher wie E-Autos, Waschmaschinen oder Wärmepumpen besser steuern.

Wir zeigen, wie man Forecast.Solar einrichtet, die passende Integration in Home Assistant hinzufügt und im Energie-Dashboard verwendet. Als Beispiel erstellen wir eine simple Automation, wie Home Assistant eine Push-Nachricht aufs Handy schickt und den Nutzer über die aktuelle Prognose für morgen informiert. Schließlich gehen wir noch darauf ein, wie man anhand der Prognose sein E-Auto effizient laden kann.


Das war die Leseprobe unseres heise-Plus-Artikels „PV-Vorhersage für Home Assistant: E-Auto und smarte Geräte effizient laden“.
Mit einem heise-Plus-Abo können Sie den ganzen Artikel lesen.



Source link

Künstliche Intelligenz

C-Libraries in Java nutzen 3: Komplexe Anwendung, Fallstricke und Best Practices


close notice

This article is also available in
English.

It was translated with technical assistance and editorially reviewed before publication.

Javas Foreign Function & Memory API (FFM) dient dazu, auf Code in einer Shared Library beziehungsweise DLL zuzugreifen, der in einer Programmiersprache wie C oder Rust geschrieben ist. Allerdings muss der Code dazu einige Voraussetzungen erfüllen.

Weiterlesen nach der Anzeige




Rudolf Ziegaus ist Software-Entwickler, Java-Trainer und Geschäftsführer der IO Software GmbH. Seine Lieblingsthemen sind PKi, Kryptographie und systemnahe Programmierung.

Diese dreiteilige Artikelserie zeigt anhand einer in C geschriebenen Demo-Library, wie eine Java-Anwendung die Funktionen der Bibliothek aufruft, welche Vorbereitungen erforderlich sind und welche Regeln zu beachten sind.

Nachdem die ersten beiden Teile die wichtigsten Begriffe und Techniken beim Zugriff von Java auf nativen Code via der FFM-API gezeigt haben, behandelt dieser dritte und letzte Teil einige Spezialitäten, die zu beachten sind.

Es gibt Anwendungen, die nicht das vollständige MemorySegment benutzen sollen, sondern nur einen Teil davon – beispielsweise wenn sie eine Liste übergeben bekommen, aber nur Teile davon benötigen. Dann ist es praktisch, wenn man nicht immer auf das komplette Array zugreifen muss, sondern sich eine Art View über den Speicherbereich legen kann – genau das leistet die Methode asSlice. Sie schneidet einen Bereich aus dem Segment aus und liefert ein neues Segment für diesen Bereich.

Wenn etwa ein MemorySegment 64 Byte lang ist, ließen sich folgendermaßen die letzten 16 Byte davon abrufen:

Weiterlesen nach der Anzeige


MemorySegment segment = arena.allocate(64);
MemorySegment info = segment.asSlice(48, 16);


segment enthält hier den gesamten Speicherbereich. Die Methode asSlice() schneidet die 16 Bytes ab Position 48 heraus.

Die Daten werden dabei aber nicht kopiert, sondern es entsteht eine View über den ausgewählten Bereich. Wenn sich der Inhalt des Bereichs ändert (im Beispiel der Bereich info), dann ändert sich auch der Originalspeicherbereich segment.

Ein Problem entsteht, wenn das Segment eine falsche Länge hat – mit reinterpret kann man die Länge des Segmentes neu festlegen. In manchen Fällen kann es vorkommen, dass das Segment mit der Länge 0 zurückgegeben wird, beispielsweise, wenn die native Funktion einen void*-Pointer zurückgibt. Ein Zugriff auf das Segment würde eine ArrayIndexOutOfBoundException auslösen. Daher muss man zunächst das Segment auf die richtige Länge setzen, was voraussetzt, dass sie bekannt ist.

Für folgendes Beispiel liefert die native Funktion getMemory() einen void*-Pointer auf einen Speicherbereich zurück. Außerdem ist bekannt, dass der Speicherbereich 100 Byte groß ist. Dann kann man folgendermaßen auf das Ergebnis zugreifen:


MemorySegment segment = (MemorySegment) method.invoke();
MemorySegment value = segment.reinterpret(100);
String result = value.getString(0);
System.out.println("Result getMemory:" + result);


Oft ist unklar, wie viele Byte ein Datentyp in C auf einer bestimmten Plattform belegt. Der folgende Code ruft die Größe des Datentyps auf der verwendeten Plattform ab. Der Code ermittelt alle unterstützten Datentypen und zeigt die benötigte Größe in Bytes und das Alignment für den Datentyp long an:


public void printTypeInfos()
{
  Map typeInfos = linker.canonicalLayouts();
  System.out.println("Canonical layout keys: " + 
                     typeInfos.keySet());
  printTypeInfo(typeInfos, "long");
}

private void printTypeInfo(Map typeInfos, 
                           String type)
{
  MemoryLayout typeLayout = typeInfos.get(type);
  if (typeLayout != null)
  {
    System.out.println("C '" + type + "' layout: " + typeLayout +  
                       ", size=" + typeLayout.byteSize() + ", 
                       align=" + typeLayout.byteAlignment());
  }
  else
  {
    System.out.println("Datentyp“ + type + " nicht in“  +  
    „canonicalLayouts() enthalten");
  }
}	


Wer eine Library auf mehreren Betriebssystemen plattformübergreifend nutzen möchte, sollte zunächst mit einem Betriebssystem beginnen und nach dem erfolgreichen Einsatz prüfen, ob die genutzten Funktionen sich auch unter den anderen Betriebssystemen problemlos verwenden lassen.

Ich musste beispielsweise bei meinem Projekt zum Zugriff auf das Hardware-Sicherheitsmodul (HSM) feststellen, dass die Portabilität zum Teil sehr problematisch ist, da sie von den verfügbaren Treibern und Shared Libraries abhängt. So war ein Zugriff auf ein HSM via opensc unter Linux kein Problem, während sich unter Windows einige Funktionen gar nicht nutzen ließen, sondern eine Access Violation in der JVM hervorriefen.

Falls es deutliche Unterschiede zwischen den Plattformen gibt, ist ein Weg, die Funktionen in einer gemeinsamen Basisklasse zu abstrahieren und dann in abgeleiteten Klassen für jede Plattform unterschiedlich zu gestalten.

Mögliche Probleme beim plattformübergreifenden Zugriff sind

  • unterschiedliche Größen der Datentypen,
  • unterschiedliche Größen von Strukturen,
  • unterschiedliches Alignment der Elemente in einer Struktur.

In diesem Fall ist der Zugriff auf den Sourcecode der Shared Library hilfreich. Sollte er nicht möglich sein, lassen sich bestimmte Informationen über die Größe der Datentypen auf der Zielplattform mithilfe der Methode printTypeInfos() ermitteln.

Während meiner Arbeit mit der Foreign Function & Memory API haben sich einige Best Practices herauskristallisiert. So ist es sinnvoll, zunächst mit einfachen Libraries und einfachen Funktionen anzufangen, bevor man sich an größere Libraries beziehungsweise komplexere Funktionen wagt.

Sinnvoll ist es Throwable abzufangen und in eigene Exceptions umzuwandeln, die von RuntimeException abgeleitet sind.

Wer die gleichen Funktionen aus der Library mehrfach benötigt, sollte Method-Handles in einer Map cachen, um nicht immer wieder dieselben Infos abrufen zu müssen. Strukturen sollte man immer per Adresse (ValueLayout.ADDRESS) übergeben und die Strukturen als eigene Klasse mappen, damit der Code übersichtlich bleibt.

Wenn Anwendungen Speicherbereiche allokieren müssen, sollte die Arena dafür möglichst weit oben in der Hierarchie stehen, und die Anwendung sollte die Arena mit try-with-resources erzeugen, damit die Freigabe des Speichers automatisch erfolgen kann.

Das Tool jextract sollte man besser meiden. Eine manuelle Implementierung ist einfacher zu verstehen und vor allem auch zu warten.

Wer den Sourcecode der Shared Library unter Kontrolle hat, sollte auf Datentypen wie int32_t und int64_t setzen, damit klar ist, wie viel Byte sie jeweils belegen.

Für größere Projekte kann es empfehlenswert sein, einen Basis-Layer für den Zugriff auf die C-Funktionen zu implementieren und in einem weiteren Layer die Zugriffschicht für Java draufzusetzen, die keinerlei FFM-spezifische Details mehr enthalten sollte. Bei sehr umfangreichen Projekten empfiehlt sich eine zusätzliche Komfortschicht, die die wichtigsten Use Cases kapselt.

Bei der Suche nach Fehlerursachen im Zusammenspiel zwischen Java und C mit der Foreign Function & Memory API helfen ein paar Fragen:

  • Ist der richtige Library-Pfad angegeben?
  • Ist es die richtige Shared Library (32 Bit oder 64 Bit)?
  • Lässt sich die Shared Library überhaupt laden?
  • Stimmen die Funktionsnamen?
  • Stimmen die Parameter (Anzahl und Datentypen) und der Rückgabewert überein?
  • Bei den Datentypen: Stimmen die Größen überein? Insbesondere der Datentyp long in C ist kritisch, da sich die Größe auf verschiedenen Plattformen unterscheidet – in Windows müssen Anwendungen ihn als JAVA_INT behandeln, unter Linux dagegen als ValueLayout.JAVA_LONG.



Source link

Weiterlesen

Künstliche Intelligenz

Crowdfunding: Eine Milliarde US-Dollar für „Star Citizen“ und „Squadron 42“


close notice

This article is also available in
English.

It was translated with technical assistance and editorially reviewed before publication.

Für die Multiplayer-Weltraumsimulation „Star Citizen“ und den Solospiel-Ableger „Squadron 42“ hat die Spielefirma von Chris Roberts jetzt mehr als eine Milliarde US-Dollar von den Fans eingesammelt. Das geht aus einer Übersichtsseite zum Crowdfunding von Cloud Imperium Games hervor, laut der die Marke am Sonntag überschritten wurde. Es handelt sich um eine enorme Summe, die sogar die Entwicklungskosten einiger der teuersten Titel überhaupt übertrifft, so hat etwa „Call of Duty: Black Ops Cold War“ gerade einmal rund 700 Millionen US-Dollar gekostet. „Star Citizen“ hat aber weiterhin kein Veröffentlichungsdatum und auch ob „Squadron 42“, wie angekündigt, in diesem Jahr erscheinen wird, ist noch unklar.

Weiterlesen nach der Anzeige

„Star Citizen“ wird seit über 14 Jahren entwickelt, seit Oktober 2012 läuft das Crowdfunding für das Spiel. Versprochen wurde schon damals ein gigantisches Weltraumspiel, nicht weniger als das „Wing Commander“ der Neuzeit, wollte Roberts erschaffen. Mit der Spieleserie war der Entwickler berühmt geworden. Sein Team arbeitet inzwischen auch schon mehr als zehn Jahre an einem Solo-Ableger von „Star Citizen“, der Titel mit dem Namen „Squadron 42“ sollte ursprünglich 2016 erscheinen. Während „Star Citizen“ aber schon lange zumindest im Early Access gespielt werden kann, ist das bei dem Ableger nicht der Fall. Gegenüber Variety hat Roberts aber nun einmal mehr versichert, dass dessen Veröffentlichung tatsächlich „kurz“ bevorstehe.

Fast so alt wie „Star Citizen“ ist längst auch die Kritik an dem Projekt und dem Geschäftsmodell von Cloud Imperium Games. So wurde die Entwicklung von „Squadron 42“ ursprünglich nur begonnen, um schneller einen fertigen Titel präsentieren zu können. Ein Jahr bevor im Dezember 2024 die Marke von 750 Millionen eingesammelten US-Dollar überschritten wurde, hieß es dann, dass das Spiel inhaltlich vollständig („feature complete“) sei. Seitdem sollte eigentlich nur noch an der Behebung von Fehlern und Optimierungen gearbeitet werden. Trotz dieser fast endlosen Aneinanderreihung von gerissenen Terminen bleibt die Fangemeinde dem Projekt aber treu und steckt weiterhin enorme Geldsummen in die Titel. Es sieht nicht so aus, als wäre die erste Milliarde dabei der letzte Meilenstein.


(mho)



Source link

Weiterlesen

Künstliche Intelligenz

Dienstag: Papst thematisiert KI, Trump stoppt wichtige KI-Verordnung


Am verlängerten Pfingstwochenende dreht sich vieles um Künstliche Intelligenz (KI). Den Papst treibt das Thema schon länger um. In seiner ersten Enzyklika, eine Art päpstlicher Regierungserklärung, fordert Leo XIV. nun strenge internationale Richtlinien für den Umgang mit KI. US-Präsident Donald Trump dagegen vertagt bis auf Weiteres eine neue Verordnung, die der US-Regierung die Prüfung neuer KI-Modelle vor deren Veröffentlichung ermöglicht hätte. Trump begründete seinen Schritt mit einem Verweis auf China. Und die Kryptowährungsplattform Tether wird in Georgien zusammen mit der dortigen Regierung einen offiziellen Stablecoin einführen – die wichtigsten Meldungen im kurzen Überblick.

Weiterlesen nach der Anzeige

Die erste Enzyklika des vor gut einem Jahr ins Amt gekommenen Papstes Leo XIV. ist mit Spannung erwartet worden. Das jetzt erschienene 100 Seiten lange „Rundschreiben“ – so die wörtliche Bedeutung – mit dem Titel „Magnifica Humanitas“ (Großartige Menschheit) gilt vielen Gläubigen als eine Art Regierungserklärung für Leos Pontifikat. In der Enzyklika, die den Untertitel „Über die Bewahrung des Menschen im Zeitalter der Künstlichen Intelligenz“ trägt, betont der Papst, dass KI vielfach eine „wertvolle Hilfe“ sein könne, warnt jedoch zugleich vor deren Risiken und fordert strenge internationale Richtlinien für den Umgang mit Künstlicher Intelligenz (KI). Erste Enzyklika von Papst Leo XIV. thematisiert Künstliche Intelligenz

In die entgegengesetzte Richtung bewegt sich allerdings US-Präsident Donald Trump. Nachdem das US-amerikanische KI-Unternehmen Anthropic von einer Veröffentlichung seines KI-Modell Claude Mythos Abstand genommen hatte, weil es dieses als zu gefährlich einstufte, um es der Allgemeinheit zugänglich zu machen, kamen in der US-Regierung Überlegungen auf, eine KI-Verordnung zu erlassen. Diese sollte es US-Bundesbehörden ermöglichen, neue KI-Modelle vor ihrer Veröffentlichung auf mögliche Cybersicherheitsrisiken unter die Lupe zu nehmen. Doch nun legte Trump die Unterzeichnung der neuen Verordnung vorerst auf Eis. Er glaube, die neue Verordnung könne der weltweiten Spitzenposition der USA in der KI-Entwicklung in die Quere kommen, begründete Trump den plötzlichen Kursschwenk in letzter Minute und verwies auf den Vorsprung vor China auf dem Gebiet. Trump stoppt wichtige Verordnung für KI-Modelle

Die US-Kryptowährungsplattform Tether emittiert mit dem USD₮ den weltweit größten Stablecoin. Nach eigenen Angaben hat dieser an den US-Dollar gekoppelte Kryptotoken heute eine Marktkapitalisierung von fast 190 Milliarden US-Dollar und sein tägliches Handelsvolumen übertrifft regelmäßig Zahlungsnetzwerke wie Visa und Mastercard. Gesichert ist der USD₮ durch Bargeld, Schuldverschreibungen, Unternehmensanleihen und andere Vermögenswerte in US-Dollar. Zuletzt war Tether auf großer Gold-Einkaufstour und sorgte damit für einiges Aufsehen. Nun wartet das Unternehmen mit einem ungewöhnlichen Projekt auf: Zusammen mit der Regierung Georgiens wird Tether einen offiziellen, an die Landeswährung Lari gekoppelten Stablecoin lancieren. Tether: Offizieller Stablecoin in Georgien vor der Einführung

Bereits im Jahr 2014 startete Facebook eine eigenständige Gruppen-App, stellte diese aber nur drei Jahre wieder ein. Jetzt unternimmt der Facebook-Mutterkonzern Meta einen zweiten Anlauf – dieses Mal mit deutlich mehr KI. Ohne großes Aufsehen wurde eine neue App für iOS veröffentlicht, die Facebook-Gruppen in den Mittelpunkt stellt. Die Anwendung namens „Forum“ richtet sich an Nutzer, die tiefere Diskussionen und Frage-Antwort-Formate suchen. Das Konzept erinnert stark an Reddit – inklusive KI und Pseudonymen. Meta testet Reddit-Konkurrenz: Neue App „Forum“ für Facebook-Gruppen

Der Sportwagenhersteller Porsche steckt in der Krise. Der Stuttgarter Autobauer kämpft mit rückläufigen Geschäften in China und Nordamerika, schwachen Verkäufen von Elektroautos sowie hohen Produktionskosten. Die Gewinnmarge des Konzerns schrumpfte im vergangenen Jahr auf einen mageren Prozentpunkt – verglichen mit 18 Prozent vor drei Jahren. Auch im ersten Quartal des laufenden Jahres verzeichnete Porsche deutliche Rückgänge bei Umsatz, Absatz und Gewinn. Werke wie Zuffenhausen oder Leipzig haben Überkapazitäten. Die Gemengelage zwingt zum Kurswechsel. Management, Strategie und Belegschaft – alles steht zur Disposition. Porsche-Chef Leiters plant umfassenden Konzernumbau

Auch noch wichtig:

Weiterlesen nach der Anzeige

  • Als Brücke zwischen Telefonie und Internet eingeführt, steht E.164 Number Mapping (ENUM) nun vor einer ungewissen Zukunft. Deutsche und niederländische Betreiber wehren sich gegen das Vorgehen. Streit über Zukunft von ENUM-Telefon-Domains
  • Die IT-Branche zeigt ein robusteres Einstellungsverhalten, doch HR-Trends verschieben sich. Mitarbeiterbindung verliert an Fokus. IT-Branche: HR-Trends verschieben sich


(akn)



Source link

Weiterlesen

Beliebt