Archive for the ‘Programmierung’ Category.

Fritzing

Von Fritzing ist schon vor einem knappen Monat Version 0.3.8. alpha erschienen. Mit Fritzing lassen sich elektronische Schaltungen im Arduino-Umfeld sehr gut und einfach darstellen.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Mit Arduino Temperaturen in eine Datenbank speichern

Mein Arduiono hat bisher nur die Temperatur meines Wohnzimmers in einer Textdatei auf dem Server gespeichert, für Auswertungszwecke ist eine Datenbank natürlich besser. Daher hab ich den PHP-Code so erweitert, dass er eine der MySQL-Datenbanken meines Providers nutzt. Hier mal der Code für das setTemperature-Skript:

<?php
header('Content-type: text/plain');
echo date("d.m.Y-H:i:s") . " Temperatur= " . $_GET['t'];
 
$link = mysql_connect("<serverhost>", "<username>", "<password>") or die("Keine Verbindung möglich: " . mysql_error());
mysql_select_db("<Datenbank>") or die("Auswahl der Datenbank fehlgeschlagen");
$query = "INSERT INTO temperature(`temperature`) values(" . $_GET['t'] . ")";
$result = mysql_query($query) or die("Anfrage fehlgeschlagen: " . mysql_error());
 
mysql_close($link);
?>

Im nächsten Schritt baue ich noch eine passende Auswertung, die den Temperaturverlauf auch grafisch darstellt.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Mit Powershell die installierte Software auslesen

Unter http://myitforum.com/cs2/blogs/yli628/archive/2008/01/16/powershell-script-to-list-installed-software-on-local-computer.aspx habe ich ein Skript gefunden, das anhand der Registry die installierte Software ausliest und in einer Excel-Datei auflistet.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

C# und Powershell mischen

Von Doug Finke gibt es ein interessantes Video, in dem er beschreibt wie man C# Code in Powershell Skripten direkt ausführen kann.

http://dougfinke.com/blog/?p=414

Extrem genial ist die Möglichkeit, den C# Code direkt in der Powershell laufen zu lassen, die einzige Erweiterung war das „public“ Setzen von Klasse und Methode und der passende Aufruf:

Add-Type `
@"
using System;
namespace ConsoleApplication1
{
    public class Program
    {
        public static void Main(string[] args)
        {
            Console.WriteLine("Hallo Welt");
            Console.ReadLine();
        }
    }
}
"@
[ConsoleApplication1.Program]::Main($null)

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Powershell Commandlets mit Visual Studio 2008 erstellen

Heute Nachmittag hab ich mich mal aufgemacht, ein eigenes Commandlet mit Visual Studio C# zu programmieren. Dazu bin ich einfach dem Tutorial von Alan Bradley gefolgt: http://www.gangleri.net/2009/04/21/BuildingPowerShellCmdletsWithVisualStudio2008.aspx. Die Projekt Template konnten zuerst nicht installiert werden, da in meinem Dokumente-Ordner folgende Unterordner fehlten:

  • \Visual Studio 2008\Templates\ItemTemplates\Visual Basic
  • \Visual Studio 2008\Templates\ProjectTemplates\Visual Basic
  • \Visual Studio 2008\Templates\ItemTemplates\Visual C#
  • \Visual Studio 2008\Templates\ProjectTemplates\Visual C#

Der Rest war einfach, nur die Zeile Set-Alias installutil C:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe wollte ich auf .Net 3.5 anpassen, fand aber die InstallUtil.exe nicht im entsprechenden Verzeichnis. Googeln ergab dann, dass Version 3.0 und 3.5 nur Aufsätze für die Version 2.0 sind und daher der obige Pfad richtig ist.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Netzwerk-Einstellungen auslesen per Powershell

Folgende Zeile, gepostet in der Powershell-Newsgroup, gibt eine Übersicht über alle Netzwerkadapter des Systems:

get-wmiobject Win32_NetworkAdapterConfiguration

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Powershell in Action, 2. Auflage

März 2010 soll die zweite Ausgabe von Bruce Payettes Buch „Powershell in Action“ erscheinen. Auf der entsprechenden Homepage des Manning-Verlags gibt es ein paar Probekapitel: http://www.manning.com/payette2.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Powershell gci mit limitierter Rekursionstiefe

Standardmäßig hat Powershell keine Möglichkeit, die Rekursionstiefe von gci zu begrenzen. Über Textfilter bekommt man es aber doch hin, wie mir in der microsoft.public.windows.powershell Newsgroup gezeigt wurde. Der volle Pfad eines Items wird an den „\“ gesplittet, dann wird gezählt, in wieviele Elemente gesplittet wurde und nur die ausgegegeben, bei denen es weniger oder gleich 3 Splits (4 Elemente) waren. Ist man bereits in einem tiefen Verzeichnisbaum muss der Parameter entsprechend hoch angesetzt werden.

gci c:\powershelltest -recurse | where{
        if(
            ($_.fullname.split("\")).count -le 4){write-host $_.fullname}
 
        }

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Grafische Ausgabe der Temperaturen vom Arduino

Mit der pChart (http://pchart.sourceforge.net) Bibliothek habe ich eine einfache Möglichkeit gefunden, die Temperaturen grafisch darzustellen. Hier ein erstes Beispiel, anhand einer Vorlage aus der pChart Bibliothek. War recht einfach abzuändern, hat mich nur wenige Minuten gekostet, die Anpassungen vorzunehmen.

Example1.php

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Arduino übermittelt Temperaturen

Ausgehend von Mats Vanselows getTemperatur() Funktion (http://www.mats-vanselow.de/2009/03/25/temperaturen-messen-mit-arduino und einem Beispiel aus der Ethernet Library habe ich einen kleinen Client geschrieben, der alle 10 Minuten die Temperatur aus einem LM35 Sensor ausliest und per HTTP-Request an ein PHP-Skript auf meiner Homepage schickt. Da der LM35 nicht genau kalibriert ist und wohl sowieso maximal auf ein halbes Grad genau ist, habe ich mittels zwei anderer Thermometer (die wiederum selbst voneinander abweichen) die ungefähre Abweichung des LM35 bestimmt und ziehe die 2° Celsius einfach ab.

Hier der entsprechende Processing-Code:

#include <Ethernet.h>
bool connected = false;
 
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 0, 99 };
// IP-Adresse des Webservers
byte serverIP[] = {111,111,111,111};
 
Client client(serverIP,80);
 
 
int inPin = 5;          // input pin 1
float inValTotal;
int i;
int runs = 5;          // Anzahl der Durchläufe
int waittime = 20;     // ms zwischen Durchläufen
int delayVal = 1000;   // Intervall für Serial Output
 
float getTemperatur() {
 
  inValTotal = 0;
  for(i = 0;i<runs;i++){
    inValTotal = inValTotal + analogRead(inPin);
    delay(waittime);
  }
 
  inValTotal = inValTotal / runs / 2;
  return(inValTotal-2);
}
 
 
void setup()
{
  Ethernet.begin(mac, ip);
  Serial.begin(9600);
  Serial.println("setup done");
 
}
 
void loop()
{
  Serial.println("Entered loop");
if (!connected){ 
   Serial.println("Not connected");
  if (client.connect()){
      connected = true;
      Serial.println("Connected to Server");
      Serial.println("Sending request to server");
      client.print("GET /storetemp.php?t=");
      client.print(getTemperatur());
      client.println(" HTTP/1.1");
      client.println("Host: www.mydomain.com");
      client.println("User-Agent: Arduino");
      client.println("Accept: text/html");
      client.println();
     } else {
        Serial.println("Cannot connect to server");
      }
    }   
  else {
    delay(500);
    while (client.connected() && client.available()) {
        char c = client.read();
        Serial.print(c);
      }
      Serial.println();
       client.stop(); 
       connected=false;
}
 
  Serial.println("Done now");
  delay(600000);
}

Hier der Code des PHP-Skripts, es schickt als Antwort Zeit und erhaltene Temperatur zurück zum Arduino und speichert die Temperatur mit Zeitstempel in einer Textdatei. Im nächsten Schritt werde ich wohl sicher eine MySQL-Datenbank hintersetzen, für den Moment reicht es aber völlig aus.

<?php
header('Content-type: text/plain');
echo date("d.m.Y-H:i:s") . " Temperatur= " . $_GET['t'];
 
$myFile = "testFile.txt";
$fh = fopen($myFile, 'a') or die("can't open file");
fwrite($fh, date("d.m.Y-H:i:s") . " Temperatur= " . $_GET['t']."\n");
fclose($fh);
?>
</php>

Und abschließend ein Auszug aus der Textdatei:

04.10.2009-09:22:29 Temperatur= 21.00
04.10.2009-09:22:37 Temperatur= 21.00
04.10.2009-09:22:44 Temperatur= 21.00
04.10.2009-09:22:52 Temperatur= 21.00
04.10.2009-09:23:00 Temperatur= 21.00
04.10.2009-09:23:07 Temperatur= 20.90
04.10.2009-09:23:15 Temperatur= 21.00
04.10.2009-09:23:33 Temperatur= 21.00

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website