Inhoudsopgave:
- Stap 1: Bereid de computer voor
- Stap 2: Schrijf en debug een PowerShell-bestand
- Stap 3: Een batchbestand schrijven en debuggen
- Stap 4: Inpakken
Video: Automatisch e-mail verzenden met foto uit batchbestand met behulp van oude desktop en XP: 4 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:18
Ik heb het geluk dat ik een geweldig uitzicht heb vanuit het raam van mijn thuiskantoor. Als ik weg ben, wil ik zien wat ik mis en ik ben vaak weg. Ik had vroeger mijn eigen website en een weerstation voor thuis dat via ftp alle weergegevens en een foto uit het raam zou uploaden, maar de website-hostprovider maakte het onderhoud van de website lastig, dus na vele jaren stopte ik het. Ik was van plan een vervangende methode te vinden om uit het raam te kijken, b.v. gratis websites, blogs, e-mail… maar in de meeste gevallen werden geautomatiseerde ftp-overdrachten naar deze mogelijke oplossingen geblokkeerd. Een extra complicatie is dat ik vaak maanden achtereen weg ben, dus welke oplossing dan ook, die moet betrouwbaar zijn.
Ik werd geïnspireerd door Instructables-auteur Olivi3r en zijn Instructable voor het maken van een beveiligingscamera. Na een dag of zo met de hand te wringen, had ik het werkend. Dit Instructable voegt een paar belangrijke details toe.
Kortom, het doel is om elke ochtend een foto te maken met de webcam en de foto vervolgens via Gmail naar mezelf te sturen als bijlage. Dit zal als volgt gebeuren:
- De wisselstroom wordt gedurende 15 minuten ingeschakeld met behulp van een 110VAC-timer
- Computer zal opstarten
- Webcamsoftware maakt een foto
- Er wordt een Windows-batchbestand uitgevoerd dat:
- Voer een PowerShell-scriptbestand uit dat de e-mail en bijlage zal verzenden
- De opdracht Batchbestand zal de computer afsluiten
- De wisselstroom wordt uitgeschakeld
Waarschuwingen: ik ben geen Windows-programmeur - vraag me niet of het niet werkt. Ik kreeg deze aanpak werkend door via internet te snorkelen totdat ik het benodigde inzicht vond in het debuggen van mijn bestanden. Ten tweede wilde ik dat dit op een Windows XP-machine zou draaien, ik weet zeker dat er betere oplossingen zijn op een Windows 10-computer. In feite zijn er waarschijnlijk betere oplossingen op een XP-machine. Als je er een vindt, plak ze dan in de reacties. Het uitvoeren van deze aanpak op een laptop kan lastig zijn, omdat de computer moet worden ingeschakeld wanneer de netvoeding wordt ingeschakeld. De code-editor van Instructables heeft de vervelende gewoonte om en andere HTML-tags in de code in te voegen (inclusief de code van Olivi3r). Ik denk dat ik deze allemaal heb bewerkt, maar pas op.. Ten slotte zou de knop "Volledig voorbeeld" van Instructables me alleen een lege witte pagina geven - dus WYSIWYG!
Dit doen we in 4 stappen:
- Bereid de computer voor
- Een PowerShell-script schrijven en debuggen
- Een batchbestand schrijven en debuggen
- Pak het allemaal in en Bob is je oom!
Stap 1: Bereid de computer voor
Graaf eerst een oude desktop uit de kast. Als het op Windows XP (SP3) draait, zal het werken. Deze Instructable is ontworpen voor XP, maar de aanpak zou hetzelfde moeten zijn op Windows 10. Start het op en roep het BIOS op (meestal F1, del of F2 tijdens het opstartproces). Zoek iets als "Energiebeheer" en verander het in "AC Power Recovery - ON". Hierdoor zal de computer opstarten wanneer de netstroom wordt ingeschakeld. Test het.
U moet alle wachtwoorden uitschakelen en u aanmelden als beheerder. Dit komt omdat de computer het opstartproces zonder toezicht moet voltooien. Ga naar Configuratiescherm, Gebruikersaccounts en breng indien nodig de nodige wijzigingen aan.
Vervolgens hebt u een webcam en een webcamtoepassing nodig die een foto maakt en deze opslaat. Ik gebruik Dorgem - eenvoudig en gratis. Stel Dorgem in om een foto te maken en deze op het bureaublad op te slaan. Wijzig de naam van de foto niet wanneer u een nieuwe foto maakt, maar overschrijf de laatste foto. In dit voorbeeld is de afbeelding Pic.jpg. Houd er ook rekening mee dat ik de afbeelding op het bureaublad opsla. Dit is belangrijk omdat het directorypad eenvoudig is. Sleep het Dorgem-pictogram naar de map STARTUP van Windows.
Nu - een paar lastige stukjes:
U moet uw Chrome-account wijzigen om minder veilige apps toe te staan. Goggle "chrome less secure apps" en selecteer de eerste optie - waarschijnlijk deze. Schakel deze functie in. U ontvangt een e-mailwaarschuwing die u informeert over de gevaren van deze instelling. Mogelijk hoeft u dit niet te doen als u een andere e-mailserver gebruikt, b.v. Yahoo, AOL…
Vervolgens moet u de uitvoering van PowerShell-scripts inschakelen. Als u Windows 10 gebruikt, is dit eenvoudiger - klik op het Windows-pictogram (linksonder in het scherm), blader door de lijst met programma's naar Windows PowerShell, vouw uit, klik met de rechtermuisknop op PowerShell en selecteer "Als administrator uitvoeren". Hierdoor wordt het PowerShell-venster geopend. Op XP is het proces een beetje ingewikkelder - gebruik Verkenner, zoek de PowerShell-directory (zoiets als C:\Windows\system32\WindowsPowerShell\v1.0), klik met de rechtermuisknop op het PowerShell-pictogram en selecteer "Pin to start menu". Nu heb je toegang tot PowerShell door op het Start-pictogram (linksonder) te klikken en op het PowerShell-pictogram te klikken. Klik op het PowerShell-pictogram en typ de volgende opdracht in het venster dat verschijnt:
set-executionpolicy remotesigned
U wordt gevraagd om te bevestigen door "y" te typen.
bevestig dat u het uitvoeringsbeleid met succes hebt gewijzigd door te typen:
uitvoeringsbeleid
OK! Uw computer is klaar.
Stap 2: Schrijf en debug een PowerShell-bestand
Kopieer en plak deze tekst in Kladblok:
$EmailTo = "[email protected]"
$EmailFrom = "[email protected]" $Subject = "View" $Body = "x" $SMTPServer = "smtp.gmail.com" $SMTPMessage = New-Object System. Net. Mail. MailMessage ($EmailFrom, $ EmailTo, $Subject, $Body) $attachment = New-Object System. Net. Mail. Attachment("C:\Documents and Settings\Administrator\Desktop\pic.jpg") $SMTPMessage. Attachments. Add($attachment) $ SMTPClient = Nieuw-Object Net. Mail. SmtpClient($SmtpServer, 587) $SMTPClient. EnableSsl = $True $SMTPClient. Credentials = Nieuw-Object System. Net. NetworkCredential("userID", "password"); $SMTPClient. Send($SMTPBericht)
Sla dit bestand op het bureaublad op als "SendPic.ps1".
Breng de nodige wijzigingen aan in; u, gebruikersnaam en wachtwoord. Meestal is uw gebruikers-ID hetzelfde als uw volledige Gmail-adres.
Als u Gmail niet gebruikt, moet u op internet rooten om de poort te vinden die is gekoppeld aan uw Smtp-server en de "587" wijzigen in de juiste poort, b.v. smtp.mail.yahoo.com en de poort is 465.
In plaats van Kladblok te gebruiken, is de PowerShell-editor beschikbaar.
Nu voor de grote - klik met de rechtermuisknop op het SendPic PowerShell-bestand en selecteer "Uitvoeren met PowerShell". Als het werkt, ontvang je binnen enkele seconden een e-mail. Als dit niet het geval is, moet u beginnen met debuggen.
Debuggen
Maak een nieuw PowerShell-bestand op uw bureaublad met de naam test1 dat een e-mail verzendt zonder bijlage:
$EmailTo = "[email protected]"
$EmailFrom = "[email protected]" $Subject = "test" $Body = "x" $SMTPServer = "smtp.gmail.com" $SMTPMessage = New-Object System. Net. Mail. MailMessage ($EmailFrom, $ EmailTo, $Subject, $Body) $SMTPClient = New-Object Net. Mail. SmtpClient($SmtpServer, 587) $SMTPClient. EnableSsl = $True $SMTPClient. Credentials = New-Object System. Net. NetworkCredential("userID", "wachtwoord"); $SMTPClient. Send($SMTPBericht)
Open het bestand met de PowerShell-editor door met de rechtermuisknop op het bestand te klikken en "Bewerken" te selecteren. Door vanuit de editor te draaien, kunnen we de foutmeldingen lezen die voorbij flitsen wanneer u dubbelklikt op het bestand.
cd.\bureaublad
.\test1.ps1
Als dit niet lukt, is dit waarschijnlijk te wijten aan een directoryprobleem. Zorg ervoor dat PowerShell naar de bureaubladmap verwijst. De opdrachtprompt ziet er ongeveer zo uit:
PS C:\Gebruikers\u\Desktop>
Als dat niet het geval is, moet u al uw oude DOS-commando's onthouden; cd, dir,.\, enz. om PowerShell naar het bureaublad te laten wijzen. Probeer het opnieuw, als het niet werkt, lees dan de foutmelding om het probleem te helpen ontdekken
.\test1
Stap 3: Een batchbestand schrijven en debuggen
Open Kladblok en kopieer de volgende tekst:
PING localhost -n 180 >NUL
powershell.exe.\SendPic.ps1 afsluiten -s -t 100
Het PING-statement is een echte hack die 180 keer per seconde een communicatieverzoek verstuurt. De vertraging zou lang genoeg moeten zijn om de computer op te starten, internetverbinding tot stand te brengen en een webcamfoto te maken. Nieuwere versies van Windows ondersteunen TIMEOUT - veel schoner.
De volgende instructie voert het PowerShell-bestand uit dat de e-mail met de bijgevoegde foto verzendt.
De laatste instructie zorgt ervoor dat de computer wordt uitgeschakeld na een vertraging van 100 seconden. Deze tijd is voldoende gekozen om de e-mail te verzenden.
Sla het bestand op uw bureaublad op als SendPic.bat (niet. TXT zoals zal gebeuren als u de extensie niet aan de bestandsnaam toevoegt. Sleep het bestand naar de STARTUP-map van Windows.
Dubbelklik op het batchbestand-pictogram. U zou de e-mail moeten ontvangen. Wauw! Te makkelijk. Ja, er kan veel mis gaan.
Debuggen
Het probleem met het debuggen van zowel dit.bat-bestand als het vorige.ps1-bestand is dat de fouten veel te snel knipperen om te lezen. Je kunt het vertragen met:
PAUZE
PING localhost -n 180 >NUL PAUZE powershell.exe.\SendPic.ps1 PAUZE afsluiten -s -t 100 PAUZE
PAUSE wacht totdat u op de ENTER-toets drukt. Lees de foutmelding. Nogmaals, het is waarschijnlijk een directory-probleem. Nadat u het probleem hebt opgelost, verwijdert u de PAUSE-instructies, anders loopt het programma vast.
Als u het batchbestand wilt beëindigen terwijl het wordt uitgevoerd, klikt u in het open cmd-venster en voert u ^C in (Ctrl C).
Stap 4: Inpakken
Oude desktops met Windows staan niet bekend om hun betrouwbaarheid. Wat is het eerste dat u doet als uw computer vol zit? Schakel de stroom uit! Dat is dus wat we gaan doen. Zoek een AC-tijdschakelaar bij Walmart of Amazon. De goedkope zijn mechanisch (minder dan $ 10), de duurdere zijn elektronisch (meer dan $ 20). Programmeer de schakelaar om bijvoorbeeld om 8 uur 's ochtends in te schakelen en 15 minuten later uit te schakelen. Sluit uw computer aan op het stopcontact van de timer.
Wanneer de tijdschakelaar stroom naar uw computer stuurt, wordt de volgende reeks gebeurtenissen gestart:
- BIOS detecteert wisselstroom, computer start op
- Windows start (zonder wachtwoordaanmelding)
- Webcamprogramma start en maakt foto
-
Uitvoering van batchbestanden begint
- Vertraging voor het voltooien van het opstartproces, het vastleggen van foto's en aanmelden via internet
- PowerShell-bestand uitvoeren om e-mail met bijlage te verzenden
- Vertraging voor voltooiing van e-mail
- Zet de computer uit
De tijdschakelaar zal dan de stroom van de computer verwijderen. Dit is essentieel voor een betrouwbare werking zonder toezicht. Ik heb intermitterende storingen van de harde schijf, het vastlopen van programma's en andere computerstops overleefd, maar wanneer het systeem uitvalt, komt het terug na een stroomcyclus.
Deze aanpak is eenvoudig aan te passen aan beveiligingsmonitoring, gebruik bijvoorbeeld iSpy om een korte videoclip vast te leggen wanneer beweging wordt gedetecteerd en stuur een e-mail met een videobijlage. Het concept zou zelfs kunnen worden uitgebreid om een e-mailwaarschuwing te sturen bij de detectie van een gebeurtenis en met de toevoeging van een Arduino en de fysieke sensoren die in dat universum beschikbaar zijn - de hemel is de limiet!
Aanbevolen:
Upgrade de achtergrondverlichting van een VU-meter naar blauwe led met behulp van oude CFL-lamponderdelen: 3 stappen
Upgrade een VU-meterachtergrondverlichting naar blauwe led met behulp van oude CFL-lamponderdelen.: Tijdens het repareren van een oude Sony TC630 reel-to-reel bandrecorder, merkte ik dat een van de glazen bollen voor de achtergrondverlichting van de VU-meter kapot was. Geen hoeveelheid geleidende verf werkte omdat het lood onder het glasoppervlak was afgebroken. De enige vervanger die ik
Afbeeldingen vastleggen en verzenden met ESP32-Cam met behulp van ESP8266 WeMos D1 R1 wifi-processor met Uno - Ajarnpa
Afbeeldingen vastleggen en verzenden met ESP32-Cam met ESP8266 WeMos D1 R1 wifi-processor met Uno: afbeelding vastleggen met ESP32-Cam (OV2640) met ESP8266 WeMos D1 R1 wifi-processor met Uno en naar e-mail verzenden, opslaan in Google Drive en verzenden naar Whatsapp met Twilio. Vereisten: ESP8266 WeMos D1 R1 WiFI-processor met Uno (https://protosupplies
Deel uw wifi-wachtwoord automatisch met behulp van QR-codes: 4 stappen
Deel uw wifi-wachtwoord automatisch met behulp van QR-codes: in deze Instructable leren we hoe u een QR-code kunt maken die uw gasten moeiteloos met wifi verbindt. Internet is een noodzaak. Zodra we naar een plaats gaan, is het eerste dat we nodig hebben wifi-toegang. Of het nu gaat om het hosten van een vriendelijke
Aanwezigheidssysteem door RFID-gegevens naar MySQL-server te verzenden met behulp van Python met Arduino - Ajarnpa
Aanwezigheidssysteem door RFID-gegevens naar MySQL-server te verzenden met behulp van Python met Arduino: in dit project heb ik RFID-RC522 gekoppeld aan Arduino en vervolgens stuur ik gegevens van RFID naar de phpmyadmin-database. In tegenstelling tot onze eerdere projecten gebruiken we in dit geval geen ethernet-schild, hier lezen we alleen de seriële gegevens afkomstig van ar
Automatisch grijpen met behulp van een lasersensor en spraakopdrachten: 5 stappen (met afbeeldingen)
Automatisch grijpen met behulp van een lasersensor en spraakopdrachten: Het grijpen van objecten die ons eenvoudig en natuurlijk lijken om te doen, is in feite een complexe taak. De mens gebruikt het gezichtsvermogen om de afstand te bepalen tot het object dat hij wil grijpen. De hand gaat automatisch open als deze zich in de buurt van de