<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki-dev.pumpingstationone.org/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Djwells</id>
	<title>PS:1 Wiki Dev - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-dev.pumpingstationone.org/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Djwells"/>
	<link rel="alternate" type="text/html" href="https://wiki-dev.pumpingstationone.org/wiki/Special:Contributions/Djwells"/>
	<updated>2026-04-10T11:35:20Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://wiki-dev.pumpingstationone.org/mediawiki/index.php?title=Get_Help&amp;diff=49339</id>
		<title>Get Help</title>
		<link rel="alternate" type="text/html" href="https://wiki-dev.pumpingstationone.org/mediawiki/index.php?title=Get_Help&amp;diff=49339"/>
		<updated>2026-03-23T12:35:02Z</updated>

		<summary type="html">&lt;p&gt;Djwells: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mbox |type=warning |text=&#039;&#039;&#039;FOR LIFE-THREATENING EMERGENCIES DIAL [tel:911 911]&#039;&#039;&#039;.}}&lt;br /&gt;
&lt;br /&gt;
This is a list of different ways you can contact PS1, get help from the organization, and get general help in an emergency.&lt;br /&gt;
&lt;br /&gt;
=== New Members and Public Inquiries ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Tuesday Night Open House&#039;&#039;&#039; - Come join us at &#039;&#039;&#039;8 PM every Tuesday night&#039;&#039;&#039; for our open house and shop tour. Get answers to all of your questions and become a member! Find us at [https://duckduckgo.com/?t=ffab&amp;amp;q=pumping%20station%20one&amp;amp;iaxm=maps&amp;amp;bbox=-87.70836905218115%2C41.9462433639542%2C-87.7041106923302%2C41.94432245649106&amp;amp;strict_bbox=1 3519 N. Elston Ave, Chicago, IL 60618], parking on Elston is free.&lt;br /&gt;
* &#039;&#039;&#039;[mailto:info@pumpingstationone.org E-mail]&#039;&#039;&#039; - Someone will get back to you in a business day or two.&lt;br /&gt;
&lt;br /&gt;
=== Member Assistance ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[Discord]]&#039;&#039;&#039; - Key not working? Where is something? Tool broken? Someone bugging you? Discord is the fastest way to connect and get help.&lt;br /&gt;
* &#039;&#039;&#039;[mailto:info@pumpingstationone.org E-mail]&#039;&#039;&#039; - Can help with all and any matters related to membership and the space, it might take a day for someone to get back to you.&lt;br /&gt;
* [[:Category:Hosted Areas|&#039;&#039;&#039;Area Hosts&#039;&#039;&#039;]] - Can answer questions about the space, equipment, area rules, and restocking supplies.&lt;br /&gt;
* [[Dispute Resolution Committee|&#039;&#039;&#039;Harassment and Disputes&#039;&#039;&#039;]] - Want to report something weird or uncomfortable, or needing help to resolve a conflict? [mailto:drc@pumpingstationone.org Contact the DRC].&lt;br /&gt;
* [mailto:board@pumpingstationone.org &#039;&#039;&#039;Board of Directors&#039;&#039;&#039;] - Direct email to the board.&lt;br /&gt;
* &#039;&#039;&#039;[tel:+1-260-358-7321 Call The PS1 Vulture (260) 358-7321]&#039;&#039;&#039; - In case of emergency that is confusing and non-fatal such that you are uncomfortable calling emergency lines, you may call or text The Vulture.&lt;br /&gt;
&lt;br /&gt;
=== Injury and Life-threatening Emergencies ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Help Right Now!&#039;&#039;&#039; - Yelling for help is ok! Ask for help from other members, area hosts and volunteers in the space.&lt;br /&gt;
* &#039;&#039;&#039;Life-threatening Emergencies dial [tel:911 911]&#039;&#039;&#039; - Please report to Discord as soon as you&#039;re safe. We like knowing what has happened.&lt;br /&gt;
* [[:Category:Hosted_Areas|&#039;&#039;&#039;Area Host&#039;&#039;&#039;]] - Always report injuries to the appropriate area host.&lt;br /&gt;
* &#039;&#039;&#039;[tel:+1-800-222-1222 Poison Control Center (800) 222-1222]&#039;&#039;&#039; - Free 24/7, for emergencies involving suspected poisoning, overdose, or exposure to toxic substances.&lt;br /&gt;
* &#039;&#039;&#039;[tel:988 Suicide &amp;amp; Crisis Lifeline 988]&#039;&#039;&#039; - Free 24/7 service for anyone experiencing a mental health crisis, suicidal thoughts, or emotional distress. You can call or text it.&lt;br /&gt;
&lt;br /&gt;
=== Physical Issues, Building, Street, Utilities ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Tool Issues&#039;&#039;&#039; - Contact the appropriate [[:Category:Hosted Areas|&#039;&#039;&#039;Area Host&#039;&#039;&#039;]] and post on Discord.  Please let us know when a tool breaks so we can fix it.&lt;br /&gt;
* &#039;&#039;&#039;[tel:311 City Services Non‐emergency dial 311]&#039;&#039;&#039; - City services, non-urgent complaints, infrastructure requests, stuff involving the sidewalk or street.&lt;br /&gt;
* &#039;&#039;&#039;[tel:+1-312-742-4410 Police Non‐emergency (312) 742-4410]&#039;&#039;&#039; - Report recurring, non-emergency community concerns, neighborhood complaints, to our local police district.&lt;br /&gt;
* &#039;&#039;&#039;[tel:+1-866-556-6002 People&#039;s Gas (866) 556-6002]&#039;&#039;&#039; - Report gas leaks. Leave the building, don&#039;t operate any electrical switches. Report to Discord as soon as you&#039;re out.&lt;br /&gt;
* &#039;&#039;&#039;[tel:+1-800-334-7661 ComEd Electric (800) 334-7661]&#039;&#039;&#039; - Report downed power lines and outages.&lt;br /&gt;
&lt;br /&gt;
=== Mental Health and Housing Support ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[tel:988 Suicide &amp;amp; Crisis Lifeline 988]&#039;&#039;&#039; - Free 24/7 service for anyone experiencing a mental health crisis, suicidal thoughts, or emotional distress. You can call or text it.&lt;br /&gt;
* &#039;&#039;&#039;[tel:+1-800-656-4673 National Sexual Assault Hotline (800) 656-4673]&#039;&#039;&#039; - Free, confidential 24/7 support for survivors of sexual assault and their loved ones, connecting callers to local resources. https://rainn.org/get-help&lt;br /&gt;
* &#039;&#039;&#039;[tel:+1-866-488-7386 LGBTQ+ Hotline (866) 488-7386]&#039;&#039;&#039; - The Trevor Project&#039;s 24/7 crisis intervention and suicide prevention line for LGBTQ+ youth.&lt;br /&gt;
* &#039;&#039;&#039;[tel:+1-877-565-8860 Trans Crisis Hotline (877) 565-8860]&#039;&#039;&#039; - Trans Lifeline, a peer support crisis line staffed by trans people, for trans and questioning individuals in distress.&lt;br /&gt;
* [http://mefiwiki.com/wiki/Homeless_Survival_Guide &#039;&#039;&#039;Homeless Survival Guide&#039;&#039;&#039;] - A directory of local food, housing, healthcare, and public benefits resources for people experiencing or at risk of homelessness.&lt;br /&gt;
&lt;br /&gt;
=== Free Legal Advice ===&lt;br /&gt;
* &#039;&#039;&#039;[tel:855-805-9200 IL Pride Connect Legal Hotline (855-805-9200)]&#039;&#039;&#039; - a 9-4 PM, Monday through Friday free and confidential service offering legal information in Illinois. https://www.ilprideconnect.org/legal-hotline&lt;br /&gt;
&lt;br /&gt;
=== Social Networks ===&lt;br /&gt;
&lt;br /&gt;
* See [[Social Media]].&lt;/div&gt;</summary>
		<author><name>Djwells</name></author>
	</entry>
	<entry>
		<id>https://wiki-dev.pumpingstationone.org/mediawiki/index.php?title=Get_Help&amp;diff=49338</id>
		<title>Get Help</title>
		<link rel="alternate" type="text/html" href="https://wiki-dev.pumpingstationone.org/mediawiki/index.php?title=Get_Help&amp;diff=49338"/>
		<updated>2026-03-23T12:33:10Z</updated>

		<summary type="html">&lt;p&gt;Djwells: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mbox |type=warning |text=FOR LIFE-THREATENING EMERGENCIES DIAL [tel:911 911].}}&lt;br /&gt;
&lt;br /&gt;
This is a list of different ways you can contact PS1, get help from the organization, and get general help in an emergency.&lt;br /&gt;
&lt;br /&gt;
=== New Members and Public Inquiries ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Tuesday Night Open House&#039;&#039;&#039; - Come join us at &#039;&#039;&#039;8 PM every Tuesday night&#039;&#039;&#039; for our open house and shop tour. Get answers to all of your questions and become a member! Find us at [https://duckduckgo.com/?t=ffab&amp;amp;q=pumping%20station%20one&amp;amp;iaxm=maps&amp;amp;bbox=-87.70836905218115%2C41.9462433639542%2C-87.7041106923302%2C41.94432245649106&amp;amp;strict_bbox=1 3519 N. Elston Ave, Chicago, IL 60618], parking on Elston is free.&lt;br /&gt;
* &#039;&#039;&#039;[mailto:info@pumpingstationone.org E-mail]&#039;&#039;&#039; - Someone will get back to you in a business day or two.&lt;br /&gt;
&lt;br /&gt;
=== Member Assistance ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[Discord]]&#039;&#039;&#039; - Key not working? Where is something? Tool broken? Someone bugging you? Discord is the fastest way to connect and get help.&lt;br /&gt;
* &#039;&#039;&#039;[mailto:info@pumpingstationone.org E-mail]&#039;&#039;&#039; - Can help with all and any matters related to membership and the space, it might take a day for someone to get back to you.&lt;br /&gt;
* [[:Category:Hosted Areas|&#039;&#039;&#039;Area Hosts&#039;&#039;&#039;]] - Can answer questions about the space, equipment, area rules, and restocking supplies.&lt;br /&gt;
* [[Dispute Resolution Committee|&#039;&#039;&#039;Harassment and Disputes&#039;&#039;&#039;]] - Want to report something weird or uncomfortable, or needing help to resolve a conflict? [mailto:drc@pumpingstationone.org Contact the DRC].&lt;br /&gt;
* [mailto:board@pumpingstationone.org &#039;&#039;&#039;Board of Directors&#039;&#039;&#039;] - Direct email to the board.&lt;br /&gt;
* &#039;&#039;&#039;[tel:+1-260-358-7321 Call The PS1 Vulture (260) 358-7321]&#039;&#039;&#039; - In case of emergency that is confusing and non-fatal such that you are uncomfortable calling emergency lines, you may call or text The Vulture.&lt;br /&gt;
&lt;br /&gt;
=== Injury and Life-threatening Emergencies ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Help Right Now!&#039;&#039;&#039; - Yelling for help is ok! Ask for help from other members, area hosts and volunteers in the space.&lt;br /&gt;
* &#039;&#039;&#039;Life-threatening Emergencies dial [tel:911 911]&#039;&#039;&#039; - Please report to Discord as soon as you&#039;re safe. We like knowing what has happened.&lt;br /&gt;
* [[:Category:Hosted_Areas|&#039;&#039;&#039;Area Host&#039;&#039;&#039;]] - Always report injuries to the appropriate area host.&lt;br /&gt;
* &#039;&#039;&#039;[tel:+1-800-222-1222 Poison Control Center (800) 222-1222]&#039;&#039;&#039; - Free 24/7, for emergencies involving suspected poisoning, overdose, or exposure to toxic substances.&lt;br /&gt;
* &#039;&#039;&#039;[tel:988 Suicide &amp;amp; Crisis Lifeline 988]&#039;&#039;&#039; - Free 24/7 service for anyone experiencing a mental health crisis, suicidal thoughts, or emotional distress. You can call or text it.&lt;br /&gt;
&lt;br /&gt;
=== Physical Issues, Building, Street, Utilities ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Tool Issues&#039;&#039;&#039; - Contact the appropriate [[:Category:Hosted Areas|&#039;&#039;&#039;Area Host&#039;&#039;&#039;]] and post on Discord.  Please let us know when a tool breaks so we can fix it.&lt;br /&gt;
* &#039;&#039;&#039;[tel:311 City Services Non‐emergency dial 311]&#039;&#039;&#039; - City services, non-urgent complaints, infrastructure requests, stuff involving the sidewalk or street.&lt;br /&gt;
* &#039;&#039;&#039;[tel:+1-312-742-4410 Police Non‐emergency (312) 742-4410]&#039;&#039;&#039; - Report recurring, non-emergency community concerns, neighborhood complaints, to our local police district.&lt;br /&gt;
* &#039;&#039;&#039;[tel:+1-866-556-6002 People&#039;s Gas (866) 556-6002]&#039;&#039;&#039; - Report gas leaks. Leave the building, don&#039;t operate any electrical switches. Report to Discord as soon as you&#039;re out.&lt;br /&gt;
* &#039;&#039;&#039;[tel:+1-800-334-7661 ComEd Electric (800) 334-7661]&#039;&#039;&#039; - Report downed power lines and outages.&lt;br /&gt;
&lt;br /&gt;
=== Mental Health and Housing Support ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[tel:988 Suicide &amp;amp; Crisis Lifeline 988]&#039;&#039;&#039; - Free 24/7 service for anyone experiencing a mental health crisis, suicidal thoughts, or emotional distress. You can call or text it.&lt;br /&gt;
* &#039;&#039;&#039;[tel:+1-800-656-4673 National Sexual Assault Hotline (800) 656-4673]&#039;&#039;&#039; - Free, confidential 24/7 support for survivors of sexual assault and their loved ones, connecting callers to local resources. https://rainn.org/get-help&lt;br /&gt;
* &#039;&#039;&#039;[tel:+1-866-488-7386 LGBTQ+ Hotline (866) 488-7386]&#039;&#039;&#039; - The Trevor Project&#039;s 24/7 crisis intervention and suicide prevention line for LGBTQ+ youth.&lt;br /&gt;
* &#039;&#039;&#039;[tel:+1-877-565-8860 Trans Crisis Hotline (877) 565-8860]&#039;&#039;&#039; - Trans Lifeline, a peer support crisis line staffed by trans people, for trans and questioning individuals in distress.&lt;br /&gt;
* [http://mefiwiki.com/wiki/Homeless_Survival_Guide &#039;&#039;&#039;Homeless Survival Guide&#039;&#039;&#039;] - A directory of local food, housing, healthcare, and public benefits resources for people experiencing or at risk of homelessness.&lt;br /&gt;
&lt;br /&gt;
=== Free Legal Advice ===&lt;br /&gt;
* &#039;&#039;&#039;[tel:855-805-9200 IL Pride Connect Legal Hotline (855-805-9200)]&#039;&#039;&#039; - a 9-4 PM, Monday through Friday free and confidential service offering legal information in Illinois. https://www.ilprideconnect.org/legal-hotline&lt;br /&gt;
&lt;br /&gt;
=== Social Networks ===&lt;br /&gt;
&lt;br /&gt;
* See [[Social Media]].&lt;/div&gt;</summary>
		<author><name>Djwells</name></author>
	</entry>
	<entry>
		<id>https://wiki-dev.pumpingstationone.org/mediawiki/index.php?title=Get_Help&amp;diff=49337</id>
		<title>Get Help</title>
		<link rel="alternate" type="text/html" href="https://wiki-dev.pumpingstationone.org/mediawiki/index.php?title=Get_Help&amp;diff=49337"/>
		<updated>2026-03-23T12:16:09Z</updated>

		<summary type="html">&lt;p&gt;Djwells: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;FOR LIFE-THREATENING EMERGENCIES DIAL [tel:911 911].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is a list of different ways you can contact PS1, get help from the organization, and get general help in an emergency.&lt;br /&gt;
&lt;br /&gt;
=== New Members and Public Inquiries ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Tuesday Night Open House&#039;&#039;&#039; - Come join us at &#039;&#039;&#039;8 PM every Tuesday night&#039;&#039;&#039; for our open house and shop tour. Get answers to all of your questions and become a member! Find us at [https://duckduckgo.com/?t=ffab&amp;amp;q=pumping%20station%20one&amp;amp;iaxm=maps&amp;amp;bbox=-87.70836905218115%2C41.9462433639542%2C-87.7041106923302%2C41.94432245649106&amp;amp;strict_bbox=1 3519 N. Elston Ave, Chicago, IL 60618], parking on Elston is free.&lt;br /&gt;
* &#039;&#039;&#039;[mailto:info@pumpingstationone.org E-mail]&#039;&#039;&#039; - Someone will get back to you in a business day or two.&lt;br /&gt;
&lt;br /&gt;
=== Member Assistance ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[Discord]]&#039;&#039;&#039; - Key not working? Where is something? Tool broken? Someone bugging you? Discord is the fastest way to connect and get help.&lt;br /&gt;
* &#039;&#039;&#039;[mailto:info@pumpingstationone.org E-mail]&#039;&#039;&#039; - Can help with all and any matters related to membership and the space, it might take a day for someone to get back to you.&lt;br /&gt;
* [[:Category:Hosted Areas|&#039;&#039;&#039;Area Hosts&#039;&#039;&#039;]] - Can answer questions about the space, equipment, area rules, and restocking supplies.&lt;br /&gt;
* [[Dispute Resolution Committee|&#039;&#039;&#039;Harassment and Disputes&#039;&#039;&#039;]] - Want to report something weird or uncomfortable, or needing help to resolve a conflict? [mailto:drc@pumpingstationone.org Contact the DRC].&lt;br /&gt;
* [mailto:board@pumpingstationone.org &#039;&#039;&#039;Board of Directors&#039;&#039;&#039;] - Direct email to the board.&lt;br /&gt;
* &#039;&#039;&#039;[tel:+1-260-358-7321 Call The PS1 Vulture (260) 358-7321]&#039;&#039;&#039; - In case of emergency that is confusing and non-fatal such that you are uncomfortable calling emergency lines, you may call or text The Vulture.&lt;br /&gt;
&lt;br /&gt;
=== Injury and Life-threatening Emergencies ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Help Right Now!&#039;&#039;&#039; - Yelling for help is ok! Ask for help from other members, area hosts and volunteers in the space.&lt;br /&gt;
* &#039;&#039;&#039;Life-threatening Emergencies dial [tel:911 911]&#039;&#039;&#039; - Please report to Discord as soon as you&#039;re safe. We like knowing what has happened.&lt;br /&gt;
* [[:Category:Hosted_Areas|&#039;&#039;&#039;Area Host&#039;&#039;&#039;]] - Always report injuries to the appropriate area host.&lt;br /&gt;
* &#039;&#039;&#039;[tel:+1-800-222-1222 Poison Control Center (800) 222-1222]&#039;&#039;&#039; - Free 24/7, for emergencies involving suspected poisoning, overdose, or exposure to toxic substances.&lt;br /&gt;
* &#039;&#039;&#039;[tel:988 Suicide &amp;amp; Crisis Lifeline 988]&#039;&#039;&#039; - Free 24/7 service for anyone experiencing a mental health crisis, suicidal thoughts, or emotional distress. You can call or text it.&lt;br /&gt;
&lt;br /&gt;
=== Physical Issues, Building, Street, Utilities ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Tool Issues&#039;&#039;&#039; - Contact the appropriate [[:Category:Hosted Areas|&#039;&#039;&#039;Area Host&#039;&#039;&#039;]] and post on Discord.  Please let us know when a tool breaks so we can fix it.&lt;br /&gt;
* &#039;&#039;&#039;[tel:311 City Services Non‐emergency dial 311]&#039;&#039;&#039; - City services, non-urgent complaints, infrastructure requests, stuff involving the sidewalk or street.&lt;br /&gt;
* &#039;&#039;&#039;[tel:+1-312-742-4410 Police Non‐emergency (312) 742-4410]&#039;&#039;&#039; - Report recurring, non-emergency community concerns, neighborhood complaints, to our local police district.&lt;br /&gt;
* &#039;&#039;&#039;[tel:+1-866-556-6002 People&#039;s Gas (866) 556-6002]&#039;&#039;&#039; - Report gas leaks. Leave the building, don&#039;t operate any electrical switches. Report to Discord as soon as you&#039;re out.&lt;br /&gt;
* &#039;&#039;&#039;[tel:+1-800-334-7661 ComEd Electric (800) 334-7661]&#039;&#039;&#039; - Report downed power lines and outages.&lt;br /&gt;
&lt;br /&gt;
=== Mental Health and Housing Support ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[tel:988 Suicide &amp;amp; Crisis Lifeline 988]&#039;&#039;&#039; - Free 24/7 service for anyone experiencing a mental health crisis, suicidal thoughts, or emotional distress. You can call or text it.&lt;br /&gt;
* &#039;&#039;&#039;[tel:+1-800-656-4673 National Sexual Assault Hotline (800) 656-4673]&#039;&#039;&#039; - Free, confidential 24/7 support for survivors of sexual assault and their loved ones, connecting callers to local resources. https://rainn.org/get-help&lt;br /&gt;
* &#039;&#039;&#039;[tel:+1-866-488-7386 LGBTQ+ Hotline (866) 488-7386]&#039;&#039;&#039; - The Trevor Project&#039;s 24/7 crisis intervention and suicide prevention line for LGBTQ+ youth.&lt;br /&gt;
* &#039;&#039;&#039;[tel:+1-877-565-8860 Trans Crisis Hotline (877) 565-8860]&#039;&#039;&#039; - Trans Lifeline, a peer support crisis line staffed by trans people, for trans and questioning individuals in distress.&lt;br /&gt;
* [http://mefiwiki.com/wiki/Homeless_Survival_Guide &#039;&#039;&#039;Homeless Survival Guide&#039;&#039;&#039;] - A directory of local food, housing, healthcare, and public benefits resources for people experiencing or at risk of homelessness.&lt;br /&gt;
&lt;br /&gt;
=== Free Legal Advice ===&lt;br /&gt;
* &#039;&#039;&#039;[tel:855-805-9200 IL Pride Connect Legal Hotline (855-805-9200)]&#039;&#039;&#039; - a 9-4 PM, Monday through Friday free and confidential service offering legal information in Illinois. https://www.ilprideconnect.org/legal-hotline&lt;br /&gt;
&lt;br /&gt;
=== Social Networks ===&lt;br /&gt;
&lt;br /&gt;
* See [[Social Media]].&lt;/div&gt;</summary>
		<author><name>Djwells</name></author>
	</entry>
	<entry>
		<id>https://wiki-dev.pumpingstationone.org/mediawiki/index.php?title=Category:CNC&amp;diff=45954</id>
		<title>Category:CNC</title>
		<link rel="alternate" type="text/html" href="https://wiki-dev.pumpingstationone.org/mediawiki/index.php?title=Category:CNC&amp;diff=45954"/>
		<updated>2023-01-20T14:11:24Z</updated>

		<summary type="html">&lt;p&gt;Djwells: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox HostedArea&lt;br /&gt;
| image   = Equipment-no-photo.jpg&lt;br /&gt;
| areaname   = CNC&lt;br /&gt;
| hostedsince = &lt;br /&gt;
| location = All over&lt;br /&gt;
| toolcategory = [[:Category:CNC]]&lt;br /&gt;
| hostname = &lt;br /&gt;
&lt;br /&gt;
David Ditzler [[#2D Printing]]&lt;br /&gt;
2dprinting at pumpingstationone.org&lt;br /&gt;
----&lt;br /&gt;
Sam Donohue (authorizations) and Matt Keith (hardware-software) [[#3D Printing]]&lt;br /&gt;
3dprinting at pumpingstationone.org&lt;br /&gt;
----&lt;br /&gt;
Will Garza or Ray Doeksen [[#3D Scanning]]&lt;br /&gt;
cnc at pumpingstationone.org&lt;br /&gt;
----&lt;br /&gt;
Jordan Kessel [[#Laser Cutter/Engravers]]&lt;br /&gt;
lasers at pumpingstationone.org&lt;br /&gt;
----&lt;br /&gt;
David Earl [[Shopbot_PRS_CNC_router]]&lt;br /&gt;
dlwearl at pumpingstationone.org&lt;br /&gt;
----&lt;br /&gt;
[[User:NewFatMike|Mike Thompson]] [[ShapeOko2 CNC Router]] and [[Tormach_1100_series_CNC_mill]]&lt;br /&gt;
cnc at pumpingstationone.org&lt;br /&gt;
----&lt;br /&gt;
Ron Olsen [[CNC Plasma Cutter]]&lt;br /&gt;
hotmetals@pumpingstationone.org&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
| hostemail = &lt;br /&gt;
|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Computer Numeric Control: computerized tools for manufacturing and crafting.&lt;br /&gt;
&lt;br /&gt;
== Rules ==&lt;br /&gt;
&lt;br /&gt;
===Clean Up===&lt;br /&gt;
* Please allot time for your project to clean up after yourselves. Throw away scrap, and store usable materials in the file cabinet.&lt;br /&gt;
* Empty Laser Engraver catch trays. &lt;br /&gt;
* Please return all tools from where you found them.&lt;br /&gt;
* Empty the trash when it is full&lt;br /&gt;
&lt;br /&gt;
===Conserving Energy===&lt;br /&gt;
* Turn off the exhaust after a project. Do not cycle the exhaust rapidly.&lt;br /&gt;
* Turn off the Lights and A/C at the end of the day.&lt;br /&gt;
* Turn off 3D printers when prints are done.&lt;br /&gt;
&lt;br /&gt;
===Storage===&lt;br /&gt;
* There is absolutely no member storage in the CNC area. Please clean up all projects when you are done. Left over projects without any documentation will be thrown away.&lt;br /&gt;
&lt;br /&gt;
== Safety ==&lt;br /&gt;
&lt;br /&gt;
Lasers are known to cause fire. If you leave your laser unattended, anyone else SHOULD halt or cancel it immediately, no questions asked, no excuses. DO not pass go, do not collect $200, go to laser jail. &lt;br /&gt;
Lasers are more liable to cause fire if the material is too thick, has air pockets in it (like multi-layer cardboard) &lt;br /&gt;
Lasers can cause toxic fumes if they are used with unsafe materials. There&#039;s a page of safe and unsafe materials linked from each laser&#039;s wiki page, and that is covered in authorizations.&lt;br /&gt;
There is one halon fire extinguisher in the CNC room that is first choice for putting out fires associated with the laser cutters.&lt;br /&gt;
As long as the lids are closed, you do not need to wear additional protective eye wear to operate the lasers. &lt;br /&gt;
Don&#039;t mess with the safety interlocks that detect if the lid is closed.&lt;br /&gt;
Do not ever laser humans or animals.&lt;br /&gt;
&lt;br /&gt;
== Tools Available ==&lt;br /&gt;
&lt;br /&gt;
There is an automatically built list of CNC-tagged equipment at the bottom of this page. If a thing does not show up on the automatically populated list, please edit that equipment&#039;s wiki page to make it happen. &lt;br /&gt;
&lt;br /&gt;
===2D Printing===&lt;br /&gt;
* [[Xerox_Workcentre_7855_Printer_/_Scanner_/_Copier]]&lt;br /&gt;
* [[HP DesignJet T520 Large Format Color Printer]]&lt;br /&gt;
* [[HP DesignJet 755CM Large Format Printer]] (no longer at the space)&lt;br /&gt;
* [[Brother_DCP-7065DN_Printer]]&lt;br /&gt;
* [[Vinyl_Cutter]]&lt;br /&gt;
&lt;br /&gt;
===Fused Filament Fabrication===&lt;br /&gt;
&lt;br /&gt;
* [[Prusa i3 MK3S A 3D Printer]] - There are three of these, and they&#039;re among the best 3D printers right now, since they have automatic bed-leveling technology. Direct drive printing, filament sensor.&lt;br /&gt;
* [[Prusa i3 MK2S A 3D Printer]] - There is one of these. Older version of MK3S (Not in service)&lt;br /&gt;
* [[Creality Ender 3 A 3D Printer]] - There are two of these. Manual bed leveling. Capable of excellent prints.  &lt;br /&gt;
&lt;br /&gt;
* [[MakerBot Replicator]] - Removed from the space? Gone? At the best it&#039;s offline, broken, not usable unless you like tinkering. &lt;br /&gt;
* Jellybox - New to PS1, broken at the moment (needs a hot-end repair) and skimpy wiki page https://wiki.pumpingstationone.org/Jellybox&lt;br /&gt;
* [[LulzBot 3D Printer|LulzBot AO-100 3D printer]] - Larger volume. Works. Regular extruder cannot do flexible filament. Flexistruder needs a firmware update to use, then you have to change the firmware back to use regular filament, which is lame but ... maybe that can be fixed/updated someday.&lt;br /&gt;
* [[Lulzbot Taz3|Lulzbot TAZ3 3D printer]] &lt;br /&gt;
* [[3dSystems CubePro|3dSystems CubeProTrio 3D printer]] - Usable, but has a weird history of using proprietary filament so then we hacked it so that it can use any old filament but ... read the CubePro wiki page, the backstory is needed if you intend to use it.&lt;br /&gt;
&lt;br /&gt;
===StereoLithography Additive Manufacturing===&lt;br /&gt;
* [[FormLabs Form 1+ SLA 3D Printer]] - Stereolithography-type printer, resin-based. No longer active&lt;br /&gt;
* [[Formlabs Form 3 SLA Printer]] - Stereolithography-type printer, resin-based. Active machine&lt;br /&gt;
&lt;br /&gt;
===3D Scanning===&lt;br /&gt;
* [[Cubify Sense 3d Scanner]] - Hacked to use non-proprietary filament but has never been quite as good since the hack. &lt;br /&gt;
* [[Matter and Form 3D Scanner]] - Mostly sucks. Count on it taking an hour to scan a medium sized thing, too. Really, really sucks.&lt;br /&gt;
&lt;br /&gt;
===Laser Cutter/Engravers===&lt;br /&gt;
* [[Epilog 30w Mini 24 Laser Engraver]]&lt;br /&gt;
* [[BOSS LS-3655 150w Laser Engraver]]&lt;br /&gt;
* [[Universal PLS6.150D 150W Laser Engraver]]&lt;br /&gt;
&lt;br /&gt;
===CNC Routers===&lt;br /&gt;
* [[ShapeOko2 CNC Router]]&lt;br /&gt;
* [[CNC Plasma Cutter]]&lt;br /&gt;
* [[Shopbot PRS CNC router]]&lt;br /&gt;
&lt;br /&gt;
===CNC Mills===&lt;br /&gt;
* [[Tormach 1100 series CNC mill]]&lt;br /&gt;
&lt;br /&gt;
===Misc Equipment===&lt;br /&gt;
* [[Vinyl Cutter]]&lt;br /&gt;
* [[Gingery Plastic Injection Machine]]&lt;br /&gt;
&lt;br /&gt;
== Supplies ==&lt;br /&gt;
&lt;br /&gt;
Supplies are generally not provided. There are some PS1-owned bits in the drawer for the ShopBot, but you may wish to purchase your own bits if you want to be confident that you&#039;ll have a good, sharp bit of the appropriate size for your project. If you break a shop-owned bit, please tell the area host and post a note to the wiki and Google group.&lt;br /&gt;
&lt;br /&gt;
There is often some common-use filament available for the TAZ3, AO-100 or Replicator 3D printers, but you may also used your own if you want to be confident that you&#039;ll have enough high-quality filament for your project. Filament can be purchased at MicroCenter and other retailers for about $20 per spool. Filament can be purchased for the Cube printer for about $100 per cartridge. &lt;br /&gt;
&lt;br /&gt;
All machines, including the vinyl cutter and large format printers, should have information about their consumables listed on their respective wiki page. &lt;br /&gt;
&lt;br /&gt;
There is a donation box next to the Cube printer for filament; suggested donation for Cube filament is 30 cents per gram.&lt;br /&gt;
&lt;br /&gt;
== Authorization ==&lt;br /&gt;
&lt;br /&gt;
Authorization for the &#039;&#039;&#039;[[Shopbot_PRS_CNC_router]]&#039;&#039;&#039; will appear as a [https://www.meetup.com/Pumping-Station-One Meetup event], and on the [http://pumpingstationone.org/events/ PS1 event calendar].&lt;br /&gt;
&lt;br /&gt;
Authorization for other equipment varies, the policy may be listed on the tool&#039;s own wiki page. Some authorization events may be listed as Meetup events, Signup.com events, on the PS1 event calendar (which is mirrored on the PS1 web site &amp;quot;Events&amp;quot; page) or may be announced on the PS1 Google Group (generally the private one, not the public one). &lt;br /&gt;
&lt;br /&gt;
For authorization for the Laser Cutters, please email laser-auths@pumpingstationone.org.&lt;br /&gt;
&lt;br /&gt;
To be able to log in on the lasers or ShopBot PCs you must have your member login account modified by a member who has admin privileges. Once you are authorized, you will use the same username and password you would use on any other PS1 computer.&lt;br /&gt;
&lt;br /&gt;
[https://pumpingstationone.skedda.com/register?key=11373bf&amp;amp;payload=CfDJ8AhWcCKz7g1DjwN6myjap4cdIEdLCUN78whkwElLjg7vhdI_Fm7_PGyoWzpgWFi1yae6LzzqVdM8dC7bNqpUHlonT2HhMFbiBWr5rLkaT2cXgL-GZPhljdRVuCTgnUUd2g CNC TOOL SIGNUP PAGE]&lt;br /&gt;
&lt;br /&gt;
[[Category:Hosted Areas]]&lt;br /&gt;
[[Category:Member Manual]]&lt;br /&gt;
[[Category:Equipment]]&lt;br /&gt;
[[Category:Projects]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
[[Category:3D Printing]]&lt;/div&gt;</summary>
		<author><name>Djwells</name></author>
	</entry>
	<entry>
		<id>https://wiki-dev.pumpingstationone.org/mediawiki/index.php?title=3d_print_remote_status_testing&amp;diff=44166</id>
		<title>3d print remote status testing</title>
		<link rel="alternate" type="text/html" href="https://wiki-dev.pumpingstationone.org/mediawiki/index.php?title=3d_print_remote_status_testing&amp;diff=44166"/>
		<updated>2021-08-31T05:11:10Z</updated>

		<summary type="html">&lt;p&gt;Djwells: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cliff Notes ==&lt;br /&gt;
&lt;br /&gt;
* It would be super-useful if we could check the status of the 3D printers remotely&lt;br /&gt;
* I explored two options for remote viewing of the status of the 3D printers:  OctoSlack and OctoFarm&lt;br /&gt;
* The OctoSlack plug-in fits our use case and is very promising&lt;br /&gt;
* If that doesn&#039;t pan out, OctoFarm is a viable alternative&lt;br /&gt;
* I am requesting permission to experiment on one of the Enders as a trial&lt;br /&gt;
* I would also like to install an RPi Camera on the Ender so we can get screenshots&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
Since getting authorized on the 3D printers, I have driven to the space a couple times only to find all the printers I wanted to use occupied.  Naturally, this is a frustrating experience.  Once you do find an empty printer, you set your print job and come back hours later to see if the print succeeded.  If the print failed, you probably have a mess to clean up and are out time and filament.&lt;br /&gt;
&lt;br /&gt;
If we could remotely view the status of the printers, both of these problems would be significantly reduced.  As I thought about this problem, I realized that remote viewing must be a common need for 3D printer owners.  I set out to find an existing solution in the community that is low cost and low impact.&lt;br /&gt;
&lt;br /&gt;
== Goals and Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Remote viewing of print status, bed temperature, estimated time of completion, and so on&lt;br /&gt;
* Easily accessible to all members&lt;br /&gt;
* NO exposure of OctoPrint or other computers to the open internet&lt;br /&gt;
* Low cost / free&lt;br /&gt;
* Authenticated access&lt;br /&gt;
* BONUS:  Display images of the print bed&lt;br /&gt;
* BONUS:  Remote control (more on this in a bit)&lt;br /&gt;
&lt;br /&gt;
== Options Explored ==&lt;br /&gt;
&lt;br /&gt;
I looked at the various plug-ins and servers available in the community.  After some research I chose the &#039;&#039;&#039;OctoSlack&#039;&#039;&#039; plug-in and the &#039;&#039;&#039;OctoFarm&#039;&#039;&#039; server software as the front-runners.  Testing was done at home using OctoPrint running a virtual printer on an RPi 4B.&lt;br /&gt;
&lt;br /&gt;
== OctoSlack ==&lt;br /&gt;
&lt;br /&gt;
OctoSlack (https://github.com/fraschetti/Octoslack) is an OctoPrint plug-in that allows you to push printer status to a Slack channel.  The plug-in has been around for about 4 years and is open source and MIT licensed.  No additional hardware is needed to run the plug-in (assuming the RPi is powerful enough to handle the additional plug-in processing).&lt;br /&gt;
&lt;br /&gt;
Setting up the plug-in is simple.  You create a Slack App with the correct scopes (see the first half of this page for details: https://api.slack.com/authentication/basics).  Once you install the Slack App to your Slack workspace, you are issued an API token that is entered into the plug-in configuration screen in OctoPrint.&lt;br /&gt;
&lt;br /&gt;
After setting a couple more settings, you are ready to go.  OctoSlack will automatically start pushing print status to a channel of your choosing.  Users can also direct message the app to query the current status at any time.&lt;br /&gt;
&lt;br /&gt;
If we were to use OctoSlack at PS:One, we would create one Slack App for each printer.  We could then configure each printer to post updates to a channel.  In my testing with my personal Slack workspace, the plug-in worked very well.  Response times were snappy.  The messages are clean and presentable.&lt;br /&gt;
&lt;br /&gt;
There are additional cool things about the plug-in.  If you have a camera connected to OctoPrint, your status updates will include screenshots of the print.  You can choose which notifications you want to send to the channel.  In addition, OctoSlack has the (optional) capability of allowing users to pause and stop the printers using Slack messages.  This feature could be very useful if an active print is failing.  The command feature can be restricted to specific users or left open to any Slack user.  At a minimum, I could see the stop print feature being useful for 3D area hosts who notice something is not right with a printer.&lt;br /&gt;
&lt;br /&gt;
The only downside I can tell is the risk of the plug-in interfering with the printer itself.  OctoSlack does its work on background threads so as to not interrupt the main OctoPrint thread.  However, we still need to perform field testing on a real printer to verify that OctoSlack does not cause intermittent command buffer underrun on the printer.  I also want to test that the plug-in behaves gracefully when the internet connection is not working.&lt;br /&gt;
&lt;br /&gt;
If we do take screenshots, we will need somewhere to host them.  I recommend we use Azure BLOB storage for this purpose.  The hosting costs should be minimal, and we can set a retention period on the BLOB storage container so that images are automatically deleted after a few days.&lt;br /&gt;
&lt;br /&gt;
== OctoFarm ==&lt;br /&gt;
&lt;br /&gt;
OctoFarm (https://github.com/OctoFarm/OctoFarm) is a standalone server for monitoring and controlling multiple printers from a single interface.  It has been in development for about 18 months and is open source with an AGPL 3.0 license.&lt;br /&gt;
&lt;br /&gt;
I ran the server on my MacOS desktop under Docker.  In production we would run the server on an RPi.  The server requires MongoDB and some software dependencies, but these are easy enough to get going.  I was able to get a server running in a container and connected to my OctoPrint machine in less than 15 minutes.&lt;br /&gt;
&lt;br /&gt;
Connecting the server to OctoPrint is simple.  The primary configuration requirement is to create an API key so OctoFarm can connect to the print server api.  Configuration and printer registration is simple and painless.&lt;br /&gt;
&lt;br /&gt;
The user interface of OctoFarm is nice and polished.  There are several &amp;quot;views&amp;quot; of your printers that come out of the box.  The view I was most interested in was the Panel View, which displays all of your printers with live stats and screenshots in tiles on a single screen.  The Panel View is a really nice way to see all the printers at a glance.&lt;br /&gt;
&lt;br /&gt;
One of my requirements is to not directly expose any server to the internet.  Thus, we cannot use OctoFarm directly to view the printers from a remote location.  The solution I came up with was to take an automated screenshot of the panel view using headless Chrome.  This works fairly reliably.  I had to fiddle with the command-line settings to ensure the html page was rendered completely, but once I got the settings worked out, the screenshots were clear and reliable.&lt;br /&gt;
&lt;br /&gt;
If we implement OctoFarm, I would put a cron job on the RPi running OctoFarm to take a screenshot every few minutes and upload it to Azure.  We could then serve up the latest screenshot and protect it using our AD accounts (I need to double-check with the Tech Team, but I believe this is possible with our current Azure setup).  Members could then use their normal network credentials to access the printer status.  Hosting and traffic costs for serving a single PNG to the membership would be insignificant.  There may also be other ways to host the image (wiki, existing web server in the space, etc).&lt;br /&gt;
&lt;br /&gt;
== Recommendation ==&lt;br /&gt;
&lt;br /&gt;
I really like the OctoSlack plug-in:&lt;br /&gt;
* Simple&lt;br /&gt;
* Does what we need&lt;br /&gt;
* Does not require any additional hardware&lt;br /&gt;
* All members have access to Slack (or can easily register)&lt;br /&gt;
&lt;br /&gt;
I&#039;d like to experiment with OctoSlack on a single printer and collect real-world feedback.  One of the Enders would be a good option because those printers are not used as often (if something goes wrong, it is less disruptive).  I would also like to add in RPi camera to the Ender so we get screenshots with the notifications.  As long as we are going through the effort to connect the printer to Slack, we might as well slap a $25 camera on there and get images as well.&lt;br /&gt;
&lt;br /&gt;
As part of the testing, I would take a backup of the SD card that contains OctoPrint.  If something goes wrong, we can always restore to a known good state.&lt;br /&gt;
&lt;br /&gt;
== Next Steps ==&lt;br /&gt;
&lt;br /&gt;
* GET FEEDBACK from the area hosts and community&lt;br /&gt;
* IF APPROVAL is granted, work with the area hosts to set up an Ender for testing&lt;br /&gt;
* AFTER TESTING is successful, figure out next steps to get the plug-in installed on the other printers and purchase cameras for the other printers&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OctoSlack&#039;&#039;&#039;&lt;br /&gt;
[[File:octoslackexample.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OctoFarm&#039;&#039;&#039;&lt;br /&gt;
[[File:octofarmexample1.png]]&lt;/div&gt;</summary>
		<author><name>Djwells</name></author>
	</entry>
	<entry>
		<id>https://wiki-dev.pumpingstationone.org/mediawiki/index.php?title=File:Octofarmexample1.png&amp;diff=44165</id>
		<title>File:Octofarmexample1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-dev.pumpingstationone.org/mediawiki/index.php?title=File:Octofarmexample1.png&amp;diff=44165"/>
		<updated>2021-08-31T05:04:38Z</updated>

		<summary type="html">&lt;p&gt;Djwells: Djwells uploaded a new version of File:Octofarmexample1.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Djwells</name></author>
	</entry>
	<entry>
		<id>https://wiki-dev.pumpingstationone.org/mediawiki/index.php?title=File:Octofarmexample1.png&amp;diff=44164</id>
		<title>File:Octofarmexample1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-dev.pumpingstationone.org/mediawiki/index.php?title=File:Octofarmexample1.png&amp;diff=44164"/>
		<updated>2021-08-31T05:04:07Z</updated>

		<summary type="html">&lt;p&gt;Djwells: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Djwells</name></author>
	</entry>
	<entry>
		<id>https://wiki-dev.pumpingstationone.org/mediawiki/index.php?title=3d_print_remote_status_testing&amp;diff=44163</id>
		<title>3d print remote status testing</title>
		<link rel="alternate" type="text/html" href="https://wiki-dev.pumpingstationone.org/mediawiki/index.php?title=3d_print_remote_status_testing&amp;diff=44163"/>
		<updated>2021-08-31T05:03:48Z</updated>

		<summary type="html">&lt;p&gt;Djwells: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cliff Notes ==&lt;br /&gt;
&lt;br /&gt;
* It would be super-useful if we could check the status of the 3D printers remotely&lt;br /&gt;
* I explored two options for remote viewing of the status of the 3D printers:  OctoSlack and OctoFarm&lt;br /&gt;
* The OctoSlack plug-in fits our use case and is very promising&lt;br /&gt;
* If that doesn&#039;t pan out, OctoFarm is a viable alternative&lt;br /&gt;
* I am requesting permission to experiment on one of the Enders as a trial&lt;br /&gt;
* I would also like to install an RPi Camera on the Ender so we can get screenshots&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
Since getting authorized on the 3D printers, I have driven to the space a couple times only to find all the printers I wanted to use occupied.  Naturally, this is a frustrating experience.  Once you do find an empty printer, you set your print job and come back hours later to see if the print succeeded.  If the print failed, you probably have a mess to clean up and are out time and filament.&lt;br /&gt;
&lt;br /&gt;
If we could remotely view the status of the printers, both of these problems would be significantly reduced.  As I thought about this problem, I realized that remote viewing must be a common need for 3D printer owners.  I set out to find an existing solution in the community that is low cost and low impact.&lt;br /&gt;
&lt;br /&gt;
== Goals and Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Remote viewing of print status, bed temperature, estimated time of completion, and so on&lt;br /&gt;
* Easily accessible to all members&lt;br /&gt;
* NO exposure of OctoPrint or other computers to the open internet&lt;br /&gt;
* Low cost / free&lt;br /&gt;
* Authenticated access&lt;br /&gt;
* BONUS:  Display images of the print bed&lt;br /&gt;
* BONUS:  Remote control (more on this in a bit)&lt;br /&gt;
&lt;br /&gt;
== Options Explored ==&lt;br /&gt;
&lt;br /&gt;
I looked at the various plug-ins and servers available in the community.  After some research I chose the &#039;&#039;&#039;OctoSlack&#039;&#039;&#039; plug-in and the &#039;&#039;&#039;OctoFarm&#039;&#039;&#039; server software as the front-runners.  Testing was done at home using OctoPrint running a virtual printer on an RPi 4B.&lt;br /&gt;
&lt;br /&gt;
== OctoSlack ==&lt;br /&gt;
&lt;br /&gt;
OctoSlack (https://github.com/fraschetti/Octoslack) is an OctoPrint plug-in that allows you to push printer status to a Slack channel.  The plug-in has been around for about 4 years and is open source and MIT licensed.  No additional hardware is needed to run the plug-in (assuming the RPi is powerful enough to handle the additional plug-in processing).&lt;br /&gt;
&lt;br /&gt;
Setting up the plug-in is simple.  You create a Slack App with the correct scopes (see the first half of this page for details: https://api.slack.com/authentication/basics).  Once you install the Slack App to your Slack workspace, you are issued an API token that is entered into the plug-in configuration screen in OctoPrint.&lt;br /&gt;
&lt;br /&gt;
After setting a couple more settings, you are ready to go.  OctoSlack will automatically start pushing print status to a channel of your choosing.  Users can also direct message the app to query the current status at any time.&lt;br /&gt;
&lt;br /&gt;
If we were to use OctoSlack at PS:One, we would create one Slack App for each printer.  We could then configure each printer to post updates to a channel.  In my testing with my personal Slack workspace, the plug-in worked very well.  Response times were snappy.  The messages are clean and presentable.&lt;br /&gt;
&lt;br /&gt;
There are additional cool things about the plug-in.  If you have a camera connected to OctoPrint, your status updates will include screenshots of the print.  You can choose which notifications you want to send to the channel.  In addition, OctoSlack has the (optional) capability of allowing users to pause and stop the printers using Slack messages.  This feature could be very useful if an active print is failing.  The command feature can be restricted to specific users or left open to any Slack user.  At a minimum, I could see the stop print feature being useful for 3D area hosts who notice something is not right with a printer.&lt;br /&gt;
&lt;br /&gt;
The only downside I can tell is the risk of the plug-in interfering with the printer itself.  OctoSlack does its work on background threads so as to not interrupt the main OctoPrint thread.  However, we still need to perform field testing on a real printer to verify that OctoSlack does not cause intermittent command buffer underrun on the printer.  I also want to test that the plug-in behaves gracefully when the internet connection is not working.&lt;br /&gt;
&lt;br /&gt;
If we do take screenshots, we will need somewhere to host them.  I recommend we use Azure BLOB storage for this purpose.  The hosting costs should be minimal, and we can set a retention period on the BLOB storage container so that images are automatically deleted after a few days.&lt;br /&gt;
&lt;br /&gt;
== OctoFarm ==&lt;br /&gt;
&lt;br /&gt;
OctoFarm (https://github.com/OctoFarm/OctoFarm) is a standalone server for monitoring and controlling multiple printers from a single interface.  It has been in development for about 18 months and is open source with an AGPL 3.0 license.&lt;br /&gt;
&lt;br /&gt;
I ran the server on my MacOS desktop under Docker.  In production we would run the server on an RPi.  The server requires MongoDB and some software dependencies, but these are easy enough to get going.  I was able to get a server running in a container and connected to my OctoPrint machine in less than 15 minutes.&lt;br /&gt;
&lt;br /&gt;
Connecting the server to OctoPrint is simple.  The primary configuration requirement is to create an API key so OctoFarm can connect to the print server api.  Configuration and printer registration is simple and painless.&lt;br /&gt;
&lt;br /&gt;
The user interface of OctoFarm is nice and polished.  There are several &amp;quot;views&amp;quot; of your printers that come out of the box.  The view I was most interested in was the Panel View, which displays all of your printers with live stats and screenshots in tiles on a single screen.  The Panel View is a really nice way to see all the printers at a glance.&lt;br /&gt;
&lt;br /&gt;
One of my requirements is to not directly expose any server to the internet.  Thus, we cannot use OctoFarm directly to view the printers from a remote location.  The solution I came up with was to take an automated screenshot of the panel view using headless Chrome.  This works fairly reliably.  I had to fiddle with the command-line settings to ensure the html page was rendered completely, but once I got the settings worked out, the screenshots were clear and reliable.&lt;br /&gt;
&lt;br /&gt;
If we implement OctoFarm, I would put a cron job on the RPi running OctoFarm to take a screenshot every few minutes and upload it to Azure.  We could then serve up the latest screenshot and protect it using our AD accounts (I need to double-check with the Tech Team, but I believe this is possible with our current Azure setup).  Members could then use their normal network credentials to access the printer status.  Hosting and traffic costs for serving a single PNG to the membership would be insigificant.&lt;br /&gt;
&lt;br /&gt;
== Recommendation ==&lt;br /&gt;
&lt;br /&gt;
I really like the OctoSlack plug-in:&lt;br /&gt;
* Simple&lt;br /&gt;
* Does what we need&lt;br /&gt;
* Does not require any additional hardware&lt;br /&gt;
* All members have access to Slack (or can easily register)&lt;br /&gt;
&lt;br /&gt;
I&#039;d like to experiment with OctoSlack on a single printer and collect real-world feedback.  One of the Enders would be a good option because those printers are not used as often (if something goes wrong, it is less disruptive).  I would also like to add in RPi camera to the Ender so we get screenshots with the notifications.  As long as we are going through the effort to connect the printer to Slack, we might as well slap a $25 camera on there and get images as well.&lt;br /&gt;
&lt;br /&gt;
As part of the testing, I would take a backup of the SD card that contains OctoPrint.  If something goes wrong, we can always restore to a known good state.&lt;br /&gt;
&lt;br /&gt;
== Next Steps ==&lt;br /&gt;
&lt;br /&gt;
* GET FEEDBACK from the area hosts and community&lt;br /&gt;
* IF APPROVAL is granted, work with the area hosts to set up an Ender for testing&lt;br /&gt;
* AFTER TESTING is successful, figure out next steps to get the plug-in installed on the other printers and purchase cameras for the other printers&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OctoSlack&#039;&#039;&#039;&lt;br /&gt;
[[File:octoslackexample.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OctoFarm&#039;&#039;&#039;&lt;br /&gt;
[[File:octofarmexample1.png]]&lt;/div&gt;</summary>
		<author><name>Djwells</name></author>
	</entry>
	<entry>
		<id>https://wiki-dev.pumpingstationone.org/mediawiki/index.php?title=File:Octoslackexample.png&amp;diff=44162</id>
		<title>File:Octoslackexample.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-dev.pumpingstationone.org/mediawiki/index.php?title=File:Octoslackexample.png&amp;diff=44162"/>
		<updated>2021-08-31T05:02:40Z</updated>

		<summary type="html">&lt;p&gt;Djwells: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Djwells</name></author>
	</entry>
	<entry>
		<id>https://wiki-dev.pumpingstationone.org/mediawiki/index.php?title=3d_print_remote_status_testing&amp;diff=44161</id>
		<title>3d print remote status testing</title>
		<link rel="alternate" type="text/html" href="https://wiki-dev.pumpingstationone.org/mediawiki/index.php?title=3d_print_remote_status_testing&amp;diff=44161"/>
		<updated>2021-08-31T04:59:48Z</updated>

		<summary type="html">&lt;p&gt;Djwells: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cliff Notes ==&lt;br /&gt;
&lt;br /&gt;
* It would be super-useful if we could check the status of the 3D printers remotely&lt;br /&gt;
* I explored two options for remote viewing of the status of the 3D printers:  OctoSlack and OctoFarm&lt;br /&gt;
* The OctoSlack plug-in fits our use case and is very promising&lt;br /&gt;
* If that doesn&#039;t pan out, OctoFarm is a viable alternative&lt;br /&gt;
* I am requesting permission to experiment on one of the Enders as a trial&lt;br /&gt;
* I would also like to install an RPi Camera on the Ender so we can get screenshots&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
Since getting authorized on the 3D printers, I have driven to the space a couple times only to find all the printers I wanted to use occupied.  Naturally, this is a frustrating experience.  Once you do find an empty printer, you set your print job and come back hours later to see if the print succeeded.  If the print failed, you probably have a mess to clean up and are out time and filament.&lt;br /&gt;
&lt;br /&gt;
If we could remotely view the status of the printers, both of these problems would be significantly reduced.  As I thought about this problem, I realized that remote viewing must be a common need for 3D printer owners.  I set out to find an existing solution in the community that is low cost and low impact.&lt;br /&gt;
&lt;br /&gt;
== Goals and Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Remote viewing of print status, bed temperature, estimated time of completion, and so on&lt;br /&gt;
* Easily accessible to all members&lt;br /&gt;
* NO exposure of OctoPrint or other computers to the open internet&lt;br /&gt;
* Low cost / free&lt;br /&gt;
* Authenticated access&lt;br /&gt;
* BONUS:  Display images of the print bed&lt;br /&gt;
* BONUS:  Remote control (more on this in a bit)&lt;br /&gt;
&lt;br /&gt;
== Options Explored ==&lt;br /&gt;
&lt;br /&gt;
I looked at the various plug-ins and servers available in the community.  After some research I chose the &#039;&#039;&#039;OctoSlack&#039;&#039;&#039; plug-in and the &#039;&#039;&#039;OctoFarm&#039;&#039;&#039; server software as the front-runners.  Testing was done at home using OctoPrint running a virtual printer on an RPi 4B.&lt;br /&gt;
&lt;br /&gt;
== OctoSlack ==&lt;br /&gt;
&lt;br /&gt;
OctoSlack (https://github.com/fraschetti/Octoslack) is an OctoPrint plug-in that allows you to push printer status to a Slack channel.  The plug-in has been around for about 4 years and is open source and MIT licensed.  No additional hardware is needed to run the plug-in (assuming the RPi is powerful enough to handle the additional plug-in processing).&lt;br /&gt;
&lt;br /&gt;
Setting up the plug-in is simple.  You create a Slack App with the correct scopes (see the first half of this page for details: https://api.slack.com/authentication/basics).  Once you install the Slack App to your Slack workspace, you are issued an API token that is entered into the plug-in configuration screen in OctoPrint.&lt;br /&gt;
&lt;br /&gt;
After setting a couple more settings, you are ready to go.  OctoSlack will automatically start pushing print status to a channel of your choosing.  Users can also direct message the app to query the current status at any time.&lt;br /&gt;
&lt;br /&gt;
If we were to use OctoSlack at PS:One, we would create one Slack App for each printer.  We could then configure each printer to post updates to a channel.  In my testing with my personal Slack workspace, the plug-in worked very well.  Response times were snappy.  The messages are clean and presentable.&lt;br /&gt;
&lt;br /&gt;
There are additional cool things about the plug-in.  If you have a camera connected to OctoPrint, your status updates will include screenshots of the print.  You can choose which notifications you want to send to the channel.  In addition, OctoSlack has the (optional) capability of allowing users to pause and stop the printers using Slack messages.  This feature could be very useful if an active print is failing.  The command feature can be restricted to specific users or left open to any Slack user.  At a minimum, I could see the stop print feature being useful for 3D area hosts who notice something is not right with a printer.&lt;br /&gt;
&lt;br /&gt;
The only downside I can tell is the risk of the plug-in interfering with the printer itself.  OctoSlack does its work on background threads so as to not interrupt the main OctoPrint thread.  However, we still need to perform field testing on a real printer to verify that OctoSlack does not cause intermittent command buffer underrun on the printer.  I also want to test that the plug-in behaves gracefully when the internet connection is not working.&lt;br /&gt;
&lt;br /&gt;
If we do take screenshots, we will need somewhere to host them.  I recommend we use Azure BLOB storage for this purpose.  The hosting costs should be minimal, and we can set a retention period on the BLOB storage container so that images are automatically deleted after a few days.&lt;br /&gt;
&lt;br /&gt;
== OctoFarm ==&lt;br /&gt;
&lt;br /&gt;
OctoFarm (https://github.com/OctoFarm/OctoFarm) is a standalone server for monitoring and controlling multiple printers from a single interface.  It has been in development for about 18 months and is open source with an AGPL 3.0 license.&lt;br /&gt;
&lt;br /&gt;
I ran the server on my MacOS desktop under Docker.  In production we would run the server on an RPi.  The server requires MongoDB and some software dependencies, but these are easy enough to get going.  I was able to get a server running in a container and connected to my OctoPrint machine in less than 15 minutes.&lt;br /&gt;
&lt;br /&gt;
Connecting the server to OctoPrint is simple.  The primary configuration requirement is to create an API key so OctoFarm can connect to the print server api.  Configuration and printer registration is simple and painless.&lt;br /&gt;
&lt;br /&gt;
The user interface of OctoFarm is nice and polished.  There are several &amp;quot;views&amp;quot; of your printers that come out of the box.  The view I was most interested in was the Panel View, which displays all of your printers with live stats and screenshots in tiles on a single screen.  The Panel View is a really nice way to see all the printers at a glance.&lt;br /&gt;
&lt;br /&gt;
One of my requirements is to not directly expose any server to the internet.  Thus, we cannot use OctoFarm directly to view the printers from a remote location.  The solution I came up with was to take an automated screenshot of the panel view using headless Chrome.  This works fairly reliably.  I had to fiddle with the command-line settings to ensure the html page was rendered completely, but once I got the settings worked out, the screenshots were clear and reliable.&lt;br /&gt;
&lt;br /&gt;
If we implement OctoFarm, I would put a cron job on the RPi running OctoFarm to take a screenshot every few minutes and upload it to Azure.  We could then serve up the latest screenshot and protect it using our AD accounts (I need to double-check with the Tech Team, but I believe this is possible with our current Azure setup).  Members could then use their normal network credentials to access the printer status.  Hosting and traffic costs for serving a single PNG to the membership would be insigificant.&lt;br /&gt;
&lt;br /&gt;
== Recommendation ==&lt;br /&gt;
&lt;br /&gt;
I really like the OctoSlack plug-in:&lt;br /&gt;
* Simple&lt;br /&gt;
* Does what we need&lt;br /&gt;
* Does not require any additional hardware&lt;br /&gt;
* All members have access to Slack (or can easily register)&lt;br /&gt;
&lt;br /&gt;
I&#039;d like to experiment with OctoSlack on a single printer and collect real-world feedback.  One of the Enders would be a good option because those printers are not used as often (if something goes wrong, it is less disruptive).  I would also like to add in RPi camera to the Ender so we get screenshots with the notifications.  As long as we are going through the effort to connect the printer to Slack, we might as well slap a $25 camera on there and get images as well.&lt;br /&gt;
&lt;br /&gt;
As part of the testing, I would take a backup of the SD card that contains OctoPrint.  If something goes wrong, we can always restore to a known good state.&lt;br /&gt;
&lt;br /&gt;
== Next Steps ==&lt;br /&gt;
&lt;br /&gt;
* GET FEEDBACK from the area hosts and community&lt;br /&gt;
* IF APPROVAL is granted, work with the area hosts to set up an Ender for testing&lt;br /&gt;
* AFTER TESTING is successful, figure out next steps to get the plug-in installed on the other printers and purchase cameras for the other printers&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OctoSlack&#039;&#039;&#039;&lt;br /&gt;
[[File:octoslackexample.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OctoFarm&#039;&#039;&#039;&lt;br /&gt;
[[File:octofarmexample.png]]&lt;/div&gt;</summary>
		<author><name>Djwells</name></author>
	</entry>
	<entry>
		<id>https://wiki-dev.pumpingstationone.org/mediawiki/index.php?title=File:Octoslack_example.png&amp;diff=44160</id>
		<title>File:Octoslack example.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-dev.pumpingstationone.org/mediawiki/index.php?title=File:Octoslack_example.png&amp;diff=44160"/>
		<updated>2021-08-31T04:58:34Z</updated>

		<summary type="html">&lt;p&gt;Djwells: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Djwells</name></author>
	</entry>
	<entry>
		<id>https://wiki-dev.pumpingstationone.org/mediawiki/index.php?title=File:Octofarm_example.png&amp;diff=44159</id>
		<title>File:Octofarm example.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-dev.pumpingstationone.org/mediawiki/index.php?title=File:Octofarm_example.png&amp;diff=44159"/>
		<updated>2021-08-31T04:56:23Z</updated>

		<summary type="html">&lt;p&gt;Djwells: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Djwells</name></author>
	</entry>
	<entry>
		<id>https://wiki-dev.pumpingstationone.org/mediawiki/index.php?title=3d_print_remote_status_testing&amp;diff=44158</id>
		<title>3d print remote status testing</title>
		<link rel="alternate" type="text/html" href="https://wiki-dev.pumpingstationone.org/mediawiki/index.php?title=3d_print_remote_status_testing&amp;diff=44158"/>
		<updated>2021-08-31T04:55:16Z</updated>

		<summary type="html">&lt;p&gt;Djwells: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cliff Notes ==&lt;br /&gt;
&lt;br /&gt;
* It would be super-useful if we could check the status of the 3D printers remotely&lt;br /&gt;
* I explored two options for remote viewing of the status of the 3D printers:  OctoSlack and OctoFarm&lt;br /&gt;
* The OctoSlack plug-in fits our use case and is very promising&lt;br /&gt;
* If that doesn&#039;t pan out, OctoFarm is a viable alternative&lt;br /&gt;
* I am requesting permission to experiment on one of the Enders as a trial&lt;br /&gt;
* I would also like to install an RPi Camera on the Ender so we can get screenshots&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
Since getting authorized on the 3D printers, I have driven to the space a couple times only to find all the printers I wanted to use occupied.  Naturally, this is a frustrating experience.  Once you do find an empty printer, you set your print job and come back hours later to see if the print succeeded.  If the print failed, you probably have a mess to clean up and are out time and filament.&lt;br /&gt;
&lt;br /&gt;
If we could remotely view the status of the printers, both of these problems would be significantly reduced.  As I thought about this problem, I realized that remote viewing must be a common need for 3D printer owners.  I set out to find an existing solution in the community that is low cost and low impact.&lt;br /&gt;
&lt;br /&gt;
== Goals and Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Remote viewing of print status, bed temperature, estimated time of completion, and so on&lt;br /&gt;
* Easily accessible to all members&lt;br /&gt;
* NO exposure of OctoPrint or other computers to the open internet&lt;br /&gt;
* Low cost / free&lt;br /&gt;
* Authenticated access&lt;br /&gt;
* BONUS:  Display images of the print bed&lt;br /&gt;
* BONUS:  Remote control (more on this in a bit)&lt;br /&gt;
&lt;br /&gt;
== Options Explored ==&lt;br /&gt;
&lt;br /&gt;
I looked at the various plug-ins and servers available in the community.  After some research I chose the &#039;&#039;&#039;OctoSlack&#039;&#039;&#039; plug-in and the &#039;&#039;&#039;OctoFarm&#039;&#039;&#039; server software as the front-runners.  Testing was done at home using OctoPrint running a virtual printer on an RPi 4B.&lt;br /&gt;
&lt;br /&gt;
== OctoSlack ==&lt;br /&gt;
&lt;br /&gt;
OctoSlack (https://github.com/fraschetti/Octoslack) is an OctoPrint plug-in that allows you to push printer status to a Slack channel.  The plug-in has been around for about 4 years and is open source and MIT licensed.  No additional hardware is needed to run the plug-in (assuming the RPi is powerful enough to handle the additional plug-in processing).&lt;br /&gt;
&lt;br /&gt;
Setting up the plug-in is simple.  You create a Slack App with the correct scopes (see the first half of this page for details: https://api.slack.com/authentication/basics).  Once you install the Slack App to your Slack workspace, you are issued an API token that is entered into the plug-in configuration screen in OctoPrint.&lt;br /&gt;
&lt;br /&gt;
After setting a couple more settings, you are ready to go.  OctoSlack will automatically start pushing print status to a channel of your choosing.  Users can also direct message the app to query the current status at any time.&lt;br /&gt;
&lt;br /&gt;
If we were to use OctoSlack at PS:One, we would create one Slack App for each printer.  We could then configure each printer to post updates to a channel.  In my testing with my personal Slack workspace, the plug-in worked very well.  Response times were snappy.  The messages are clean and presentable.&lt;br /&gt;
&lt;br /&gt;
There are additional cool things about the plug-in.  If you have a camera connected to OctoPrint, your status updates will include screenshots of the print.  You can choose which notifications you want to send to the channel.  In addition, OctoSlack has the (optional) capability of allowing users to pause and stop the printers using Slack messages.  This feature could be very useful if an active print is failing.  The command feature can be restricted to specific users or left open to any Slack user.  At a minimum, I could see the stop print feature being useful for 3D area hosts who notice something is not right with a printer.&lt;br /&gt;
&lt;br /&gt;
The only downside I can tell is the risk of the plug-in interfering with the printer itself.  OctoSlack does its work on background threads so as to not interrupt the main OctoPrint thread.  However, we still need to perform field testing on a real printer to verify that OctoSlack does not cause intermittent command buffer underrun on the printer.  I also want to test that the plug-in behaves gracefully when the internet connection is not working.&lt;br /&gt;
&lt;br /&gt;
If we do take screenshots, we will need somewhere to host them.  I recommend we use Azure BLOB storage for this purpose.  The hosting costs should be minimal, and we can set a retention period on the BLOB storage container so that images are automatically deleted after a few days.&lt;br /&gt;
&lt;br /&gt;
== OctoFarm ==&lt;br /&gt;
&lt;br /&gt;
OctoFarm (https://github.com/OctoFarm/OctoFarm) is a standalone server for monitoring and controlling multiple printers from a single interface.  It has been in development for about 18 months and is open source with an AGPL 3.0 license.&lt;br /&gt;
&lt;br /&gt;
I ran the server on my MacOS desktop under Docker.  In production we would run the server on an RPi.  The server requires MongoDB and some software dependencies, but these are easy enough to get going.  I was able to get a server running in a container and connected to my OctoPrint machine in less than 15 minutes.&lt;br /&gt;
&lt;br /&gt;
Connecting the server to OctoPrint is simple.  The primary configuration requirement is to create an API key so OctoFarm can connect to the print server api.  Configuration and printer registration is simple and painless.&lt;br /&gt;
&lt;br /&gt;
The user interface of OctoFarm is nice and polished.  There are several &amp;quot;views&amp;quot; of your printers that come out of the box.  The view I was most interested in was the Panel View, which displays all of your printers with live stats and screenshots in tiles on a single screen.  The Panel View is a really nice way to see all the printers at a glance.&lt;br /&gt;
&lt;br /&gt;
One of my requirements is to not directly expose any server to the internet.  Thus, we cannot use OctoFarm directly to view the printers from a remote location.  The solution I came up with was to take an automated screenshot of the panel view using headless Chrome.  This works fairly reliably.  I had to fiddle with the command-line settings to ensure the html page was rendered completely, but once I got the settings worked out, the screenshots were clear and reliable.&lt;br /&gt;
&lt;br /&gt;
If we implement OctoFarm, I would put a cron job on the RPi running OctoFarm to take a screenshot every few minutes and upload it to Azure.  We could then serve up the latest screenshot and protect it using our AD accounts (I need to double-check with the Tech Team, but I believe this is possible with our current Azure setup).  Members could then use their normal network credentials to access the printer status.  Hosting and traffic costs for serving a single PNG to the membership would be insigificant.&lt;br /&gt;
&lt;br /&gt;
== Recommendation ==&lt;br /&gt;
&lt;br /&gt;
I really like the OctoSlack plug-in:&lt;br /&gt;
* Simple&lt;br /&gt;
* Does what we need&lt;br /&gt;
* Does not require any additional hardware&lt;br /&gt;
* All members have access to Slack (or can easily register)&lt;br /&gt;
&lt;br /&gt;
I&#039;d like to experiment with OctoSlack on a single printer and collect real-world feedback.  One of the Enders would be a good option because those printers are not used as often (if something goes wrong, it is less disruptive).  I would also like to add in RPi camera to the Ender so we get screenshots with the notifications.  As long as we are going through the effort to connect the printer to Slack, we might as well slap a $25 camera on there and get images as well.&lt;br /&gt;
&lt;br /&gt;
As part of the testing, I would take a backup of the SD card that contains OctoPrint.  If something goes wrong, we can always restore to a known good state.&lt;br /&gt;
&lt;br /&gt;
== Next Steps ==&lt;br /&gt;
&lt;br /&gt;
* GET FEEDBACK from the area hosts and community&lt;br /&gt;
* IF APPROVAL is granted, work with the area hosts to set up an Ender for testing&lt;br /&gt;
* AFTER TESTING is successful, figure out next steps to get the plug-in installed on the other printers and purchase cameras for the other printers&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OctoSlack&#039;&#039;&#039;&lt;br /&gt;
[[File:octoslack_example.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OctoFarm&#039;&#039;&#039;&lt;br /&gt;
[[File:octosfarm_example.png]]&lt;/div&gt;</summary>
		<author><name>Djwells</name></author>
	</entry>
	<entry>
		<id>https://wiki-dev.pumpingstationone.org/mediawiki/index.php?title=3d_print_remote_status_testing&amp;diff=44157</id>
		<title>3d print remote status testing</title>
		<link rel="alternate" type="text/html" href="https://wiki-dev.pumpingstationone.org/mediawiki/index.php?title=3d_print_remote_status_testing&amp;diff=44157"/>
		<updated>2021-08-31T04:54:23Z</updated>

		<summary type="html">&lt;p&gt;Djwells: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cliff Notes ==&lt;br /&gt;
&lt;br /&gt;
* It would be super-useful if we could check the status of the 3D printers remotely&lt;br /&gt;
* I explored two options for remote viewing of the status of the 3D printers:  OctoSlack and OctoFarm&lt;br /&gt;
* The OctoSlack plug-in fits our use case and is very promising&lt;br /&gt;
* If that doesn&#039;t pan out, OctoFarm is a viable alternative&lt;br /&gt;
* I am requesting permission to experiment on one of the Enders as a trial&lt;br /&gt;
* I would also like to install an RPi Camera on the Ender so we can get screenshots&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
Since getting authorized on the 3D printers, I have driven to the space a couple times only to find all the printers I wanted to use occupied.  Naturally, this is a frustrating experience.  Once you do find an empty printer, you set your print job and come back hours later to see if the print succeeded.  If the print failed, you probably have a mess to clean up and are out time and filament.&lt;br /&gt;
&lt;br /&gt;
If we could remotely view the status of the printers, both of these problems would be significantly reduced.  As I thought about this problem, I realized that remote viewing must be a common need for 3D printer owners.  I set out to find an existing solution in the community that is low cost and low impact.&lt;br /&gt;
&lt;br /&gt;
== Goals and Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Remote viewing of print status, bed temperature, estimated time of completion, and so on&lt;br /&gt;
* Easily accessible to all members&lt;br /&gt;
* NO exposure of OctoPrint or other computers to the open internet&lt;br /&gt;
* Low cost / free&lt;br /&gt;
* Authenticated access&lt;br /&gt;
* BONUS:  Display images of the print bed&lt;br /&gt;
* BONUS:  Remote control (more on this in a bit)&lt;br /&gt;
&lt;br /&gt;
== Options Explored ==&lt;br /&gt;
&lt;br /&gt;
I looked at the various plug-ins and servers available in the community.  After some research I chose the &#039;&#039;&#039;OctoSlack&#039;&#039;&#039; plug-in and the &#039;&#039;&#039;OctoFarm&#039;&#039;&#039; server software as the front-runners.  Testing was done at home using OctoPrint running a virtual printer on an RPi 4B.&lt;br /&gt;
&lt;br /&gt;
== OctoSlack ==&lt;br /&gt;
&lt;br /&gt;
OctoSlack (https://github.com/fraschetti/Octoslack) is an OctoPrint plug-in that allows you to push printer status to a Slack channel.  The plug-in has been around for about 4 years and is open source and MIT licensed.  No additional hardware is needed to run the plug-in (assuming the RPi is powerful enough to handle the additional plug-in processing).&lt;br /&gt;
&lt;br /&gt;
Setting up the plug-in is simple.  You create a Slack App with the correct scopes (see the first half of this page for details: https://api.slack.com/authentication/basics).  Once you install the Slack App to your Slack workspace, you are issued an API token that is entered into the plug-in configuration screen in OctoPrint.&lt;br /&gt;
&lt;br /&gt;
After setting a couple more settings, you are ready to go.  OctoSlack will automatically start pushing print status to a channel of your choosing.  Users can also direct message the app to query the current status at any time.&lt;br /&gt;
&lt;br /&gt;
If we were to use OctoSlack at PS:One, we would create one Slack App for each printer.  We could then configure each printer to post updates to a channel.  In my testing with my personal Slack workspace, the plug-in worked very well.  Response times were snappy.  The messages are clean and presentable.&lt;br /&gt;
&lt;br /&gt;
There are additional cool things about the plug-in.  If you have a camera connected to OctoPrint, your status updates will include screenshots of the print.  You can choose which notifications you want to send to the channel.  In addition, OctoSlack has the (optional) capability of allowing users to pause and stop the printers using Slack messages.  This feature could be very useful if an active print is failing.  The command feature can be restricted to specific users or left open to any Slack user.  At a minimum, I could see the stop print feature being useful for 3D area hosts who notice something is not right with a printer.&lt;br /&gt;
&lt;br /&gt;
The only downside I can tell is the risk of the plug-in interfering with the printer itself.  OctoSlack does its work on background threads so as to not interrupt the main OctoPrint thread.  However, we still need to perform field testing on a real printer to verify that OctoSlack does not cause intermittent command buffer underrun on the printer.  I also want to test that the plug-in behaves gracefully when the internet connection is not working.&lt;br /&gt;
&lt;br /&gt;
If we do take screenshots, we will need somewhere to host them.  I recommend we use Azure BLOB storage for this purpose.  The hosting costs should be minimal, and we can set a retention period on the BLOB storage container so that images are automatically deleted after a few days.&lt;br /&gt;
&lt;br /&gt;
== OctoFarm ==&lt;br /&gt;
&lt;br /&gt;
OctoFarm (https://github.com/OctoFarm/OctoFarm) is a standalone server for monitoring and controlling multiple printers from a single interface.  It has been in development for about 18 months and is open source with an AGPL 3.0 license.&lt;br /&gt;
&lt;br /&gt;
I ran the server on my MacOS desktop under Docker.  In production we would run the server on an RPi.  The server requires MongoDB and some software dependencies, but these are easy enough to get going.  I was able to get a server running in a container and connected to my OctoPrint machine in less than 15 minutes.&lt;br /&gt;
&lt;br /&gt;
Connecting the server to OctoPrint is simple.  The primary configuration requirement is to create an API key so OctoFarm can connect to the print server api.  Configuration and printer registration is simple and painless.&lt;br /&gt;
&lt;br /&gt;
The user interface of OctoFarm is nice and polished.  There are several &amp;quot;views&amp;quot; of your printers that come out of the box.  The view I was most interested in was the Panel View, which displays all of your printers with live stats and screenshots in tiles on a single screen.  The Panel View is a really nice way to see all the printers at a glance.&lt;br /&gt;
&lt;br /&gt;
One of my requirements is to not directly expose any server to the internet.  Thus, we cannot use OctoFarm directly to view the printers from a remote location.  The solution I came up with was to take an automated screenshot of the panel view using headless Chrome.  This works fairly reliably.  I had to fiddle with the command-line settings to ensure the html page was rendered completely, but once I got the settings worked out, the screenshots were clear and reliable.&lt;br /&gt;
&lt;br /&gt;
If we implement OctoFarm, I would put a cron job on the RPi running OctoFarm to take a screenshot every few minutes and upload it to Azure.  We could then serve up the latest screenshot and protect it using our AD accounts (I need to double-check with the Tech Team, but I believe this is possible with our current Azure setup).  Members could then use their normal network credentials to access the printer status.  Hosting and traffic costs for serving a single PNG to the membership would be insigificant.&lt;br /&gt;
&lt;br /&gt;
== Recommendation ==&lt;br /&gt;
&lt;br /&gt;
I really like the OctoSlack plug-in:&lt;br /&gt;
* Simple&lt;br /&gt;
* Does what we need&lt;br /&gt;
* Does not require any additional hardware&lt;br /&gt;
* All members have access to Slack (or can easily register)&lt;br /&gt;
&lt;br /&gt;
I&#039;d like to experiment with OctoSlack on a single printer and collect real-world feedback.  One of the Enders would be a good option because those printers are not used as often (if something goes wrong, it is less disruptive).  I would also like to add in RPi camera to the Ender so we get screenshots with the notifications.  As long as we are going through the effort to connect the printer to Slack, we might as well slap a $25 camera on there and get images as well.&lt;br /&gt;
&lt;br /&gt;
As part of the testing, I would take a backup of the SD card that contains OctoPrint.  If something goes wrong, we can always restore to a known good state.&lt;br /&gt;
&lt;br /&gt;
== Next Steps ==&lt;br /&gt;
&lt;br /&gt;
* GET FEEDBACK from the area hosts and community&lt;br /&gt;
* IF APPROVAL is granted, work with the area hosts to set up an Ender for testing&lt;br /&gt;
* AFTER TESTING is successful, figure out next steps to get the plug-in installed on the other printers and purchase cameras for the other printers&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OctoSlack&#039;&#039;&#039;&lt;br /&gt;
[[File:octoslack.png]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OctoFarm&#039;&#039;&#039;&lt;br /&gt;
[[File:octosfarm.png]]&lt;/div&gt;</summary>
		<author><name>Djwells</name></author>
	</entry>
	<entry>
		<id>https://wiki-dev.pumpingstationone.org/mediawiki/index.php?title=3d_print_remote_status_testing&amp;diff=44156</id>
		<title>3d print remote status testing</title>
		<link rel="alternate" type="text/html" href="https://wiki-dev.pumpingstationone.org/mediawiki/index.php?title=3d_print_remote_status_testing&amp;diff=44156"/>
		<updated>2021-08-31T04:50:44Z</updated>

		<summary type="html">&lt;p&gt;Djwells: Created page with &amp;quot;== Cliff Notes ==  * It would be super-useful if we could check the status of the 3D printers remotely * I explored two options for remote viewing of the status of the 3D prin...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cliff Notes ==&lt;br /&gt;
&lt;br /&gt;
* It would be super-useful if we could check the status of the 3D printers remotely&lt;br /&gt;
* I explored two options for remote viewing of the status of the 3D printers:  OctoSlack and OctoFarm&lt;br /&gt;
* The OctoSlack plug-in fits our use case and is very promising&lt;br /&gt;
* If that doesn&#039;t pan out, OctoFarm is a viable alternative&lt;br /&gt;
* I am requesting permission to experiment on one of the Enders as a trial&lt;br /&gt;
* I would also like to install an RPi Camera on the Ender so we can get screenshots&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
Since getting authorized on the 3D printers, I have driven to the space a couple times only to find all the printers I wanted to use occupied.  Naturally, this is a frustrating experience.  Once you do find an empty printer, you set your print job and come back hours later to see if the print succeeded.  If the print failed, you probably have a mess to clean up and are out time and filament.&lt;br /&gt;
&lt;br /&gt;
If we could remotely view the status of the printers, both of these problems would be significantly reduced.  As I thought about this problem, I realized that remote viewing must be a common need for 3D printer owners.  I set out to find an existing solution in the community that is low cost and low impact.&lt;br /&gt;
&lt;br /&gt;
== Goals and Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Remote viewing of print status, bed temperature, estimated time of completion, and so on&lt;br /&gt;
* Easily accessible to all members&lt;br /&gt;
* NO exposure of OctoPrint or other computers to the open internet&lt;br /&gt;
* Low cost / free&lt;br /&gt;
* Authenticated access&lt;br /&gt;
* BONUS:  Display images of the print bed&lt;br /&gt;
* BONUS:  Remote control (more on this in a bit)&lt;br /&gt;
&lt;br /&gt;
== Options Explored ==&lt;br /&gt;
&lt;br /&gt;
I looked at the various plug-ins and servers available in the community.  After some research I chose the &#039;&#039;&#039;OctoSlack&#039;&#039;&#039; plug-in and the &#039;&#039;&#039;OctoFarm&#039;&#039;&#039; server software as the front-runners.  Testing was done at home using OctoPrint running a virtual printer on an RPi 4B.&lt;br /&gt;
&lt;br /&gt;
== OctoSlack ==&lt;br /&gt;
&lt;br /&gt;
OctoSlack (https://github.com/fraschetti/Octoslack) is an OctoPrint plug-in that allows you to push printer status to a Slack channel.  The plug-in has been around for about 4 years and is open source and MIT licensed.  No additional hardware is needed to run the plug-in (assuming the RPi is powerful enough to handle the additional plug-in processing).&lt;br /&gt;
&lt;br /&gt;
Setting up the plug-in is simple.  You create a Slack App with the correct scopes (see the first half of this page for details: https://api.slack.com/authentication/basics).  Once you install the Slack App to your Slack workspace, you are issued an API token that is entered into the plug-in configuration screen in OctoPrint.&lt;br /&gt;
&lt;br /&gt;
After setting a couple more settings, you are ready to go.  OctoSlack will automatically start pushing print status to a channel of your choosing.  Users can also direct message the app to query the current status at any time.&lt;br /&gt;
&lt;br /&gt;
If we were to use OctoSlack at PS:One, we would create one Slack App for each printer.  We could then configure each printer to post updates to a channel.  In my testing with my personal Slack workspace, the plug-in worked very well.  Response times were snappy.  The messages are clean and presentable.&lt;br /&gt;
&lt;br /&gt;
There are additional cool things about the plug-in.  If you have a camera connected to OctoPrint, your status updates will include screenshots of the print.  You can choose which notifications you want to send to the channel.  In addition, OctoSlack has the (optional) capability of allowing users to pause and stop the printers using Slack messages.  This feature could be very useful if an active print is failing.  The command feature can be restricted to specific users or left open to any Slack user.  At a minimum, I could see the stop print feature being useful for 3D area hosts who notice something is not right with a printer.&lt;br /&gt;
&lt;br /&gt;
The only downside I can tell is the risk of the plug-in interfering with the printer itself.  OctoSlack does its work on background threads so as to not interrupt the main OctoPrint thread.  However, we still need to perform field testing on a real printer to verify that OctoSlack does not cause intermittent command buffer underrun on the printer.  I also want to test that the plug-in behaves gracefully when the internet connection is not working.&lt;br /&gt;
&lt;br /&gt;
If we do take screenshots, we will need somewhere to host them.  I recommend we use Azure BLOB storage for this purpose.  The hosting costs should be minimal, and we can set a retention period on the BLOB storage container so that images are automatically deleted after a few days.&lt;br /&gt;
&lt;br /&gt;
== OctoFarm ==&lt;br /&gt;
&lt;br /&gt;
OctoFarm (https://github.com/OctoFarm/OctoFarm) is a standalone server for monitoring and controlling multiple printers from a single interface.  It has been in development for about 18 months and is open source with an AGPL 3.0 license.&lt;br /&gt;
&lt;br /&gt;
I ran the server on my MacOS desktop under Docker.  In production we would run the server on an RPi.  The server requires MongoDB and some software dependencies, but these are easy enough to get going.  I was able to get a server running in a container and connected to my OctoPrint machine in less than 15 minutes.&lt;br /&gt;
&lt;br /&gt;
Connecting the server to OctoPrint is simple.  The primary configuration requirement is to create an API key so OctoFarm can connect to the print server api.  Configuration and printer registration is simple and painless.&lt;br /&gt;
&lt;br /&gt;
The user interface of OctoFarm is nice and polished.  There are several &amp;quot;views&amp;quot; of your printers that come out of the box.  The view I was most interested in was the Panel View, which displays all of your printers with live stats and screenshots in tiles on a single screen.  The Panel View is a really nice way to see all the printers at a glance.&lt;br /&gt;
&lt;br /&gt;
One of my requirements is to not directly expose any server to the internet.  Thus, we cannot use OctoFarm directly to view the printers from a remote location.  The solution I came up with was to take an automated screenshot of the panel view using headless Chrome.  This works fairly reliably.  I had to fiddle with the command-line settings to ensure the html page was rendered completely, but once I got the settings worked out, the screenshots were clear and reliable.&lt;br /&gt;
&lt;br /&gt;
If we implement OctoFarm, I would put a cron job on the RPi running OctoFarm to take a screenshot every few minutes and upload it to Azure.  We could then serve up the latest screenshot and protect it using our AD accounts (I need to double-check with the Tech Team, but I believe this is possible with our current Azure setup).  Members could then use their normal network credentials to access the printer status.  Hosting and traffic costs for serving a single PNG to the membership would be insigificant.&lt;br /&gt;
&lt;br /&gt;
== Recommendation ==&lt;br /&gt;
&lt;br /&gt;
I really like the OctoSlack plug-in:&lt;br /&gt;
* Simple&lt;br /&gt;
* Does what we need&lt;br /&gt;
* Does not require any additional hardware&lt;br /&gt;
* All members have access to Slack (or can easily register)&lt;br /&gt;
&lt;br /&gt;
I&#039;d like to experiment with OctoSlack on a single printer and collect real-world feedback.  One of the Enders would be a good option because those printers are not used as often (if something goes wrong, it is less disruptive).  I would also like to add in RPi camera to the Ender so we get screenshots with the notifications.  As long as we are going through the effort to connect the printer to Slack, we might as well slap a $25 camera on there and get images as well.&lt;br /&gt;
&lt;br /&gt;
As part of the testing, I would take a backup of the SD card that contains OctoPrint.  If something goes wrong, we can always restore to a known good state.&lt;br /&gt;
&lt;br /&gt;
== Next Steps ==&lt;br /&gt;
&lt;br /&gt;
* GET FEEDBACK from the area hosts and community&lt;br /&gt;
* IF APPROVAL is granted, work with the area hosts to set up an Ender for testing&lt;br /&gt;
* AFTER TESTING is successful, figure out next steps to get the plug-in installed on the other printers and purchase cameras for the other printers&lt;/div&gt;</summary>
		<author><name>Djwells</name></author>
	</entry>
</feed>